Author: wjaniszewski
Date: Sat Apr 18 15:48:01 2009
New Revision: 766345
URL: http://svn.apache.org/viewvc?rev=766345&view=rev
Log:
General improvements
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangInvoker.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ServiceExecutor.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/types/TypeHelpersProxy.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/MboxInterface.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ReferenceServiceTestCase.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceInterface.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponent.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImpl.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplClone.java
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplTimeout.java
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangInvoker.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangInvoker.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangInvoker.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangInvoker.java
Sat Apr 18 15:48:01 2009
@@ -62,6 +62,7 @@
} else {
// NOTE: don't throw exception if not declared
// TODO: externalize message?
+ msg.setBody(null);
logger
.log(Level.WARNING, "Problem while
sending/receiving data",
e);
@@ -82,7 +83,11 @@
node.setCookie(binding.getCookie());
}
tmpMbox = node.createMbox();
- Object[] args = msg.getBody();
+ // obtain args, make sure they aren't null
+ // NOTE: sending message with no content (but only with
senders PID)
+ // is possible
+ Object[] args = (Object[]) (msg.getBody() != null ?
msg.getBody()
+ : new Object[0]);
Method jmethod = ((JavaOperation) msg.getOperation())
.getJavaMethod();
// create and send msg with self pid in the beginning
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ServiceExecutor.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ServiceExecutor.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ServiceExecutor.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ServiceExecutor.java
Sat Apr 18 15:48:01 2009
@@ -152,10 +152,8 @@
&&
operation.getOutputType().getPhysical()
.isArray()) {
// output type is array
- Annotation[][] outNotes
= new Annotation[][] { jmethod
-
.getAnnotations() };
- response =
TypeHelpersProxy.toErlangAsList(result,
-
outNotes);
+ response =
TypeHelpersProxy.toErlangAsResultList(
+ result,
jmethod.getAnnotations());
} else if
(operation.getOutputType() == null) {
// output type is void,
create empty reply
Object[] arrArg = new
Object[] {};
@@ -248,8 +246,7 @@
msgNoSender = msg.getMsg();
}
} catch (Exception e) {
- // TODO: check when this exception can occur
- e.printStackTrace();
+ logger.log(Level.WARNING, "Unexpected error", e);
}
if (operations == null) {
@@ -294,10 +291,8 @@
&&
matchedOperation.getOutputType().getPhysical()
.isArray()) {
// result type is array
- Annotation[][] outNotes = new
Annotation[][] { jmethod
-
.getAnnotations() };
- response =
TypeHelpersProxy.toErlangAsList(result,
- outNotes);
+ response =
TypeHelpersProxy.toErlangAsResultList(
+ result,
jmethod.getAnnotations());
} else if
(matchedOperation.getOutputType() != null) {
// result type is not array and
not void
response =
TypeHelpersProxy.toErlang(result, jmethod
@@ -330,13 +325,10 @@
e1.printStackTrace();
}
} else {
- // unknown/unhandled error
- // TODO: decide what to do with
this exception
- e.printStackTrace();
+ logger.log(Level.WARNING,
"Unexpected error", e);
}
} catch (Exception e) {
- // FIXME: log this problem? use linking
feature? send error?
- e.printStackTrace();
+ logger.log(Level.WARNING, "Unexpected
error", e);
}
} else {
// TODO: externalize message?
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/types/TypeHelpersProxy.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/types/TypeHelpersProxy.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/types/TypeHelpersProxy.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/types/TypeHelpersProxy.java
Sat Apr 18 15:48:01 2009
@@ -72,13 +72,23 @@
for (int i = 0; i < notes.length; i++) {
typeHelper =
primitiveTypes.get(notes[i].annotationType());
if (typeHelper != null) {
- // annotation found, check if it points to array
- // FIXME: check if annotation points to proper
type
- // ie. ErlangAtom -> String. If not, then log?
exception?
- if (forClass.isArray()) {
- typeHelper = new
AnnotatedListTypeHelper(notes);
+ // get type which is annotated, reduce array if
needed
+ Class<?> annotatedType = forClass;
+ while (annotatedType.isArray()) {
+ annotatedType =
annotatedType.getComponentType();
+ }
+ if
(notes[i].annotationType().equals(ErlangAtom.class)
+ &&
!annotatedType.equals(String.class)) {
+ // NOTE: @ErlangAtom atom will be
ignored if not annotates
+ // string
+ typeHelper = null;
+ } else {
+ // check if annotation points to array
+ if (forClass.isArray()) {
+ typeHelper = new
AnnotatedListTypeHelper(notes);
+ }
+ break;
}
- break;
}
}
// check for standard types
@@ -145,24 +155,42 @@
* Creates Erlang list basing on unknown Java arrays
*
* @param array
+ * @param notes
* @return
*/
public static OtpErlangList toErlangAsList(Object array,
Annotation[][] notes) {
+ return toErlangAsList(array, notes, false);
+ }
+
+ /**
+ * Creates Erlang list of result elements
+ *
+ * @param array
+ * @param notes
+ * @return
+ */
+ public static OtpErlangList toErlangAsResultList(Object array,
+ Annotation[] notes) {
+ return toErlangAsList(array, new Annotation[][] { notes },
true);
+ }
+
+ /**
+ *
+ * @param array
+ * @param notes
+ * @param isArray
+ * @return
+ */
+ private static OtpErlangList toErlangAsList(Object array,
+ Annotation[][] notes, boolean isArray) {
OtpErlangList result = null;
if (array != null) {
List<OtpErlangObject> attrsList = new
ArrayList<OtpErlangObject>();
int i = 0;
while (true) {
try {
- // FIXME: if notes.length == 1 then its
used to annotate
- // array. Clean up.
- Annotation[] currNotes = null;
- if (notes.length == 1) {
- currNotes = notes[0];
- } else {
- currNotes = notes[i];
- }
+ Annotation[] currNotes = isArray ?
notes[0] : notes[i];
TypeHelper helper =
getTypeHelper(Array.get(array, i)
.getClass(), currNotes);
attrsList.add(helper.toErlang(Array.get(array, i)));
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/MboxInterface.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/MboxInterface.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/MboxInterface.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/MboxInterface.java
Sat Apr 18 15:48:01 2009
@@ -60,6 +60,6 @@
@ErlangAtom
String[][] sendArgs(@ErlangAtom String[][] arg1, int arg2);
- void sendArgs();
+ void sendArgs() throws Exception;
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ReferenceServiceTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ReferenceServiceTestCase.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ReferenceServiceTestCase.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ReferenceServiceTestCase.java
Sat Apr 18 15:48:01 2009
@@ -32,7 +32,6 @@
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -464,6 +463,30 @@
}
/**
+ * Tests Erlang Atom types on service side
+ *
+ * @throws Exception
+ */
+ @Test(timeout = 1000)
+ public void testServiceAtoms() throws Exception {
+ String[] args = { "Say", "Atoms" };
+ OtpErlangObject[] toList = new OtpErlangObject[2];
+ toList[0] = new OtpErlangString(args[0]);
+ toList[1] = new OtpErlangString(args[1]);
+ OtpErlangList list = new OtpErlangList(toList);
+ OtpErlangObject[] toTuple = new OtpErlangObject[2];
+ toTuple[0] = refMbox.self();
+ toTuple[1] = list;
+ refMbox.send("sayAtoms", "RPCServerMbox", new
OtpErlangTuple(toTuple));
+ OtpErlangObject result = refMbox.receiveMsg().getMsg();
+ assertEquals(args.length, ((OtpErlangList) result).arity());
+ for (int i = 0; i < args.length; i++) {
+ assertEquals(args[i], ((OtpErlangAtom) ((OtpErlangList)
result)
+ .elementAt(i)).atomValue());
+ }
+ }
+
+ /**
* Tests mismatched interface
*
* @throws Exception
@@ -886,12 +909,16 @@
cookieModuleReference.sayHellos();
}
+ /**
+ * Tests fix which allow to send message with no user specified content
(in
+ * fact always will be some content - senders PID at the content
beginning).
+ *
+ * @throws Exception
+ */
@Test(timeout = 1000)
- @Ignore("Nothing to test yet")
public void testMboxNoArgs() throws Exception {
- // FIXME: decide what to do while invoking mbox reference with
no params
- // exception? log?
mboxReference.sendArgs();
+ // no exception should occur
}
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceInterface.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceInterface.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceInterface.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceInterface.java
Sat Apr 18 15:48:01 2009
@@ -41,5 +41,5 @@
void notExistWithException() throws Exception;
void notExist();
-
+
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponent.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponent.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponent.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponent.java
Sat Apr 18 15:48:01 2009
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.binding.erlang.testing;
+import org.apache.tuscany.sca.binding.erlang.meta.ErlangAtom;
+
/**
* @version $Rev$ $Date$
*/
@@ -28,6 +30,9 @@
String[] sayHellos() throws Exception;
+ @ErlangAtom
+ String[] sayAtoms(@ErlangAtom String[] arg);
+
StructuredTuple passComplexArgs(StructuredTuple arg1, String[] arg2);
void doNothing();
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImpl.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImpl.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImpl.java
Sat Apr 18 15:48:01 2009
@@ -41,4 +41,8 @@
// doing nothing
}
+ public String[] sayAtoms(String[] arg) {
+ return arg;
+ }
+
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplClone.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplClone.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplClone.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplClone.java
Sat Apr 18 15:48:01 2009
@@ -41,4 +41,8 @@
}
+ public String[] sayAtoms(String[] arg) {
+ return arg;
+ }
+
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplTimeout.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplTimeout.java?rev=766345&r1=766344&r2=766345&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplTimeout.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-erlang-runtime/src/test/java/org/apache/tuscany/sca/binding/erlang/testing/ServiceTestComponentImplTimeout.java
Sat Apr 18 15:48:01 2009
@@ -25,7 +25,7 @@
public class ServiceTestComponentImplTimeout implements ServiceTestComponent {
private long duration = 1000;
-
+
public String sayHello(String arg1, String arg2) {
try {
Thread.sleep(duration);
@@ -58,4 +58,8 @@
}
+ public String[] sayAtoms(String[] arg) {
+ return arg;
+ }
+
}