You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/07/07 09:34:41 UTC
[38/46] ignite git commit: IGNITE-5424: GridServiceProxy does not
unwraps exception message from InvocationTargetException. This closes #2168.
IGNITE-5424: GridServiceProxy does not unwraps exception message from InvocationTargetException. This closes #2168.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1130a87a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1130a87a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1130a87a
Branch: refs/heads/ignite-2.1
Commit: 1130a87a3157ce3a786994835fb927668c10d558
Parents: 4a169dc
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Fri Jun 30 14:38:54 2017 +0300
Committer: Andrey V. Mashenkov <an...@gmail.com>
Committed: Thu Jul 6 14:37:59 2017 +0300
----------------------------------------------------------------------
.../processors/service/GridServiceProxy.java | 9 ++-
.../GridServiceProcessorProxySelfTest.java | 65 ++++++++++++++++++++
2 files changed, 73 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1130a87a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
index d16a4c4..3a40b90 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
@@ -23,6 +23,7 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
@@ -413,7 +414,13 @@ public class GridServiceProxy<T> implements Serializable {
if (mtd == null)
throw new GridServiceMethodNotFoundException(svcName, mtdName, argTypes);
- return mtd.invoke(svcCtx.service(), args);
+ try {
+ return mtd.invoke(svcCtx.service(), args);
+ }
+ catch (InvocationTargetException e) {
+ // Get error message.
+ throw new IgniteCheckedException(e.getCause().getMessage(), e);
+ }
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/1130a87a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorProxySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorProxySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorProxySelfTest.java
index 9fd2d2c..d1c5294 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorProxySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorProxySelfTest.java
@@ -18,9 +18,11 @@
package org.apache.ignite.internal.processors.service;
import java.util.Map;
+import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.util.typedef.PA;
import org.apache.ignite.internal.util.typedef.X;
@@ -67,6 +69,31 @@ public class GridServiceProcessorProxySelfTest extends GridServiceProcessorAbstr
}
/**
+ * Unwraps error message from InvocationTargetException.
+ *
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("ThrowableNotThrown")
+ public void testException() throws Exception {
+ String name = "errorService";
+
+ Ignite ignite = grid(0);
+
+ ignite.services(ignite.cluster().forRemotes()).deployNodeSingleton(name, new ErrorServiceImpl());
+
+ final ErrorService svc = ignite.services().serviceProxy(name, ErrorService.class, false);
+
+ GridTestUtils.assertThrows(log, new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ svc.go();
+
+ return null;
+ }
+ }, IgniteException.class, "Test exception");
+
+ }
+
+ /**
* @throws Exception If failed.
*/
public void testClusterSingletonProxy() throws Exception {
@@ -371,6 +398,7 @@ public class GridServiceProcessorProxySelfTest extends GridServiceProcessorAbstr
map.clear();
}
+ /** {@inheritDoc} */
@Override public int size() {
return map.size();
}
@@ -390,4 +418,41 @@ public class GridServiceProcessorProxySelfTest extends GridServiceProcessorAbstr
X.println("Executing cache service: " + ctx.name());
}
}
+
+ /**
+ *
+ */
+ protected interface ErrorService extends Service {
+ /**
+ *
+ */
+ void go() throws Exception;
+ }
+
+ /**
+ *
+ */
+ protected class ErrorServiceImpl implements ErrorService {
+ /** {@inheritDoc} */
+ @Override public void cancel(ServiceContext ctx) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void init(ServiceContext ctx) throws Exception {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void execute(ServiceContext ctx) throws Exception {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void go() throws Exception {
+ throw new Exception("Test exception");
+ }
+ }
+
+
}