You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/04/16 08:29:14 UTC

svn commit: r529141 - in /incubator/tuscany/java/sca/modules: interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/ interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/ interface/src/main/java/or...

Author: rfeng
Date: Sun Apr 15 23:29:13 2007
New Revision: 529141

URL: http://svn.apache.org/viewvc?view=rev&rev=529141
Log:
Add support for local method overloading

Modified:
    incubator/tuscany/java/sca/modules/interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/JavaInterfaceRuntimeModuleActivator.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/DefaultJavaInterfaceIntrospector.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java

Modified: incubator/tuscany/java/sca/modules/interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/JavaInterfaceRuntimeModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/JavaInterfaceRuntimeModuleActivator.java?view=diff&rev=529141&r1=529140&r2=529141
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/JavaInterfaceRuntimeModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-runtime/src/main/java/org/apache/tuscany/interfacedef/java/module/JavaInterfaceRuntimeModuleActivator.java Sun Apr 15 23:29:13 2007
@@ -19,9 +19,12 @@
 
 package org.apache.tuscany.interfacedef.java.module;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.interfacedef.java.introspect.DefaultJavaInterfaceIntrospector;
+import org.apache.tuscany.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint;
 import org.apache.tuscany.interfacedef.java.xml.JavaInterfaceProcessor;
 import org.apache.tuscany.spi.bootstrap.ExtensionPointRegistry;
 import org.apache.tuscany.spi.bootstrap.ModuleActivator;
@@ -32,7 +35,9 @@
 public class JavaInterfaceRuntimeModuleActivator implements ModuleActivator {
 
     public Map<Class, Object> getExtensionPoints() {
-        return null;
+        Map<Class, Object> map = new HashMap<Class, Object>();
+        map.put(JavaInterfaceIntrospectorExtensionPoint.class, new DefaultJavaInterfaceIntrospector());
+        return map;
     }
 
     /**

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/DefaultJavaInterfaceIntrospector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/DefaultJavaInterfaceIntrospector.java?view=diff&rev=529141&r1=529140&r2=529141
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/DefaultJavaInterfaceIntrospector.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/introspect/DefaultJavaInterfaceIntrospector.java Sun Apr 15 23:29:13 2007
@@ -20,9 +20,9 @@
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
+import java.util.Set;
 
 import org.apache.tuscany.interfacedef.DataType;
 import org.apache.tuscany.interfacedef.InvalidCallbackException;
@@ -84,7 +84,7 @@
         }
         javaInterface.setCallbackClass(callbackClass);
         
-        javaInterface.getOperations().addAll(getOperations(type, remotable, conversational).values());
+        javaInterface.getOperations().addAll(getOperations(type, remotable, conversational));
 
         for (JavaInterfaceIntrospectorExtension extension : extensions) {
             extension.visitInterface(javaInterface);
@@ -92,15 +92,19 @@
         return javaInterface;
     }
 
-    private <T> Map<String, Operation> getOperations(Class<T> type, boolean remotable, boolean conversational)
+    private <T> List<Operation> getOperations(Class<T> type, boolean remotable, boolean conversational)
         throws InvalidInterfaceException {
         Method[] methods = type.getMethods();
-        Map<String, Operation> operations = new HashMap<String, Operation>(methods.length);
+        List<Operation> operations = new ArrayList<Operation>(methods.length);
+        Set<String> names = remotable? new HashSet<String>() : null;
         for (Method method : methods) {
             String name = method.getName();
-            if (remotable && operations.containsKey(name)) {
+            if (remotable && names.contains(name)) {
                 throw new OverloadedOperationException(method);
             }
+            if(remotable) {
+                names.add(name);
+            }
 
             Class returnType = method.getReturnType();
             Class[] paramTypes = method.getParameterTypes();
@@ -136,7 +140,7 @@
             operation.setFaultTypes(faultDataTypes);
             operation.setConversationSequence(conversationSequence);
             operation.setNonBlocking(nonBlocking);
-            operations.put(name, operation);
+            operations.add(operation);
         }
         return operations;
     }

Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java?view=diff&rev=529141&r1=529140&r2=529141
==============================================================================
--- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java (original)
+++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java Sun Apr 15 23:29:13 2007
@@ -136,7 +136,7 @@
         }
 
         for (Operation operation : source.getInterface().getOperations()) {
-            Operation targetOperation = getOperation(target.getInterface().getOperations(), operation.getName());
+            Operation targetOperation = map(target.getInterface(), operation);
             if (targetOperation == null) {
                 if (!silent) {
                     throw new IncompatibleInterfaceContractException("Operation not found on target", source, target);



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org