summaryrefslogtreecommitdiffstats
path: root/vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py
diff options
context:
space:
mode:
authorTibor Sirovatka <tsirovat@cisco.com>2016-05-18 14:54:50 +0200
committerDave Wallace <dwallacelf@gmail.com>2016-06-09 02:22:34 +0000
commit42bb61fd162b3dd469c9d98a9dc6d3e2b2eaffce (patch)
tree133e183e7b02d7d7e01f1ea1353421d8a65ddb2b /vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py
parentb10427e06077dbe3a9ea9922b97941204001f6b9 (diff)
HONEYCOMB-67 Introduce exception handling into JVPP
Send calls throws VppInvocationException on failure Failed requests (negative retval) reported over onError callback interface method Removed retval attributes from dto/xxxReply.java calls Change-Id: Ibd4e90c320d080e02d75b4bd056a7b11c8e37aa7 Signed-off-by: Tibor Sirovatka <tsirovat@cisco.com>
Diffstat (limited to 'vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py')
-rw-r--r--vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py30
1 files changed, 25 insertions, 5 deletions
diff --git a/vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py b/vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py
index e8de3fc10c1..acf29eb85b8 100644
--- a/vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py
+++ b/vpp-api/java/jvpp/gen/jvpp_callback_facade_gen.py
@@ -77,16 +77,17 @@ $methods
""")
method_template = Template(
- """ void $name($base_package.$dto_package.$request request, $base_package.$callback_package.$callback callback);""")
-method_impl_template = Template(""" public final void $name($base_package.$dto_package.$request request, $base_package.$callback_package.$callback callback) {
+ """ void $name($base_package.$dto_package.$request request, $base_package.$callback_package.$callback callback) throws org.openvpp.jvpp.VppInvocationException;""")
+
+method_impl_template = Template(""" public final void $name($base_package.$dto_package.$request request, $base_package.$callback_package.$callback callback) throws org.openvpp.jvpp.VppInvocationException {
synchronized (callbacks) {
callbacks.put(jvpp.$name(request), callback);
}
}
""")
-no_arg_method_template = Template(""" void $name($base_package.$callback_package.$callback callback);""")
-no_arg_method_impl_template = Template(""" public final void $name($base_package.$callback_package.$callback callback) {
+no_arg_method_template = Template(""" void $name($base_package.$callback_package.$callback callback) throws org.openvpp.jvpp.VppInvocationException;""")
+no_arg_method_impl_template = Template(""" public final void $name($base_package.$callback_package.$callback callback) throws org.openvpp.jvpp.VppInvocationException {
synchronized (callbacks) {
callbacks.put(jvpp.$name(), callback);
}
@@ -172,18 +173,37 @@ jvpp_facade_callback_template = Template("""
package $base_package.$callback_facade_package;
/**
- * <p>JVppGlobalCallback implementation for Java Callback API.
+ * <p>Implementation of JVppGlobalCallback interface for Java Callback API.
* <br>It was generated by jvpp_callback_facade_gen.py based on $inputfile
* <br>(python representation of vpe.api generated by vppapigen).
*/
public final class CallbackJVppFacadeCallback implements $base_package.$callback_package.JVppGlobalCallback {
private final java.util.Map<Integer, $base_package.$callback_package.JVppCallback> requests;
+ private static final java.util.logging.Logger LOG = java.util.logging.Logger.getLogger(CallbackJVppFacadeCallback.class.getName());
public CallbackJVppFacadeCallback(final java.util.Map<Integer, $base_package.$callback_package.JVppCallback> requestMap) {
this.requests = requestMap;
}
+ @Override
+ public void onError(org.openvpp.jvpp.VppCallbackException reply) {
+
+ $base_package.$callback_package.JVppCallback failedCall;
+ synchronized(requests) {
+ failedCall = requests.remove(reply.getCtxId());
+ }
+
+ if(failedCall != null) {
+ try {
+ failedCall.onError(reply);
+ } catch(RuntimeException ex) {
+ ex.addSuppressed(reply);
+ LOG.log(java.util.logging.Level.WARNING, String.format("Callback: %s failed while handling exception: %s", failedCall, reply), ex);
+ }
+ }
+ }
+
$methods
}
""")