You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2009/10/03 18:45:57 UTC

svn commit: r821362 - in /tuscany/java/sca/modules: assembly/src/main/java/org/apache/tuscany/sca/interfacedef/ assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/ interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/...

Author: lresende
Date: Sat Oct  3 16:45:57 2009
New Revision: 821362

URL: http://svn.apache.org/viewvc?rev=821362&view=rev
Log:
TUSCANY-3290 - Adding support for @Remote attribute in <interface.java>

Added:
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java
      - copied, changed from r821361, tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
Modified:
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
    tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
    tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
    tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java Sat Oct  3 16:45:57 2009
@@ -45,7 +45,17 @@
      * @param remotable indicates whether the interface is remotable or local
      */
     void setRemotable(boolean remotable);
-
+    
+    /**
+     * Returns true if the interface remotable property is set..
+     * 
+     * This is used to verify if a @remotable attribute is used in the 
+     * <interface.java> SCDL element. If true, use isRemotable to verify the
+     * current value
+     * 
+     * @return
+     */
+    boolean isRemotableSet();
 
     // FIXME: [rfeng] We need to re-consider the conversational as an intent
     /**

Copied: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java (from r821361, tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java)
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java?p2=tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java&p1=tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java&r1=821361&r2=821362&rev=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/InvalidAnnotationException.java Sat Oct  3 16:45:57 2009
@@ -16,20 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.interfacedef.java.xml;
 
-import javax.xml.namespace.QName;
+package org.apache.tuscany.sca.interfacedef;
 
-/**
- * Interface Java XML Constants.
- *
- * @version $Rev$ $Date$
- */
-public interface JavaConstants {
-    String SCA11_NS = "http://docs.oasis-open.org/ns/opencsa/sca/200903";
-    String INTERFACE_JAVA = "interface.java";
-    QName INTERFACE_JAVA_QNAME = new QName(SCA11_NS, "interface.java");
-    String INTERFACE = "interface";
-    String CALLBACK_INTERFACE = "callbackInterface";
-    
+
+public class InvalidAnnotationException extends InvalidInterfaceException {
+
+    private static final long serialVersionUID = 4923028138353415223L;
+    private final Class<?> clazz;
+
+    public InvalidAnnotationException(String message, Class<?> clazz) {
+        super(message);
+        this.clazz = clazz;
+    }
+
+    public Class<?> getAnnotation() {
+        return clazz;
+    }
 }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java Sat Oct  3 16:45:57 2009
@@ -39,7 +39,7 @@
  */
 public class InterfaceImpl implements Interface {
 
-    private boolean remotable;
+    private Boolean remotable;
     private boolean conversational;
     private OperationList operations = new OperationList();
     private boolean unresolved;
@@ -50,11 +50,19 @@
     private Map<Object, Object> attributes = new ConcurrentHashMap<Object, Object>();
 
     public boolean isRemotable() {
-        return remotable;
+        boolean value = false;
+        if (remotable != null && remotable.booleanValue()) {
+            value = true;
+        }
+        return value;
     }
 
-    public void setRemotable(boolean local) {
-        this.remotable = local;
+    public void setRemotable(boolean remotable) {
+        this.remotable = Boolean.valueOf(remotable);
+    }
+    
+    public boolean isRemotableSet() {
+        return remotable == null ? false : true;
     }
 
     public List<Operation> getOperations() {

Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java Sat Oct  3 16:45:57 2009
@@ -35,6 +35,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.InvalidAnnotationException;
 import org.apache.tuscany.sca.interfacedef.InvalidCallbackException;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
 import org.apache.tuscany.sca.interfacedef.InvalidOperationException;
@@ -71,6 +72,12 @@
         javaInterface.setJavaClass(clazz);
 
         boolean remotable = clazz.isAnnotationPresent(Remotable.class);
+        
+        if (remotable) {
+            if (javaInterface.isRemotableSet() && javaInterface.isRemotable() == false) {
+                throw new InvalidAnnotationException("@Remotable annotation present in a interface marked as not remotable in the SCDL", Remotable.class);
+            }
+        }
 
         // Consider @javax.ejb.Remote, java.rmi.Remote and javax.ejb.EJBObject
         // equivalent to @Remotable

Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaConstants.java Sat Oct  3 16:45:57 2009
@@ -31,5 +31,6 @@
     QName INTERFACE_JAVA_QNAME = new QName(SCA11_NS, "interface.java");
     String INTERFACE = "interface";
     String CALLBACK_INTERFACE = "callbackInterface";
+    String REMOTABLE = "remotable";
     
 }

Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java?rev=821362&r1=821361&r2=821362&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java Sat Oct  3 16:45:57 2009
@@ -63,11 +63,11 @@
      * @param model
      */
     private void error(String message, Object model, Exception ex) {
-    	 if (monitor != null) {
-    		 Problem problem = monitor.createProblem(this.getClass().getName(), "interface-javaxml-validation-messages", Severity.ERROR, model, message, ex);
-    	     monitor.problem(problem);
-    	 }        
-     }
+        if (monitor != null) {
+            Problem problem = monitor.createProblem(this.getClass().getName(), "interface-javaxml-validation-messages", Severity.ERROR, model, message, ex);
+            monitor.problem(problem);
+        }        
+    }
      
      /**
       * Report a error.
@@ -106,6 +106,12 @@
             javaInterfaceContract.setCallbackInterface(javaCallbackInterface);
         }
 
+        String remotable = reader.getAttributeValue(null, REMOTABLE);
+        if (remotable != null) {
+            javaInterfaceContract.getInterface().setRemotable(Boolean.parseBoolean(remotable));
+        }
+
+        
         // Skip to end element
         while (reader.hasNext()) {
             if (reader.next() == END_ELEMENT && INTERFACE_JAVA_QNAME.equals(reader.getName())) {