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;
+       }
+
 }


Reply via email to