Author: rfeng
Date: Mon Jan 28 13:39:55 2008
New Revision: 616060
URL: http://svn.apache.org/viewvc?rev=616060&view=rev
Log:
Tolerate java generics in method<-->operation matching
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
incubator/tuscany/java/sca/modules/implementation-resource/src/test/java/org/apache/tuscany/sca/implementation/resource/ResourceImplementationTestCase.java
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaOperationImpl.java
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java?rev=616060&r1=616059&r2=616060&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKInvocationHandler.java
Mon Jan 28 13:39:55 2008
@@ -44,6 +44,7 @@
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.java.JavaOperation;
import org.apache.tuscany.sca.invocation.InvocationChain;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
@@ -180,6 +181,15 @@
*/
@SuppressWarnings("unchecked")
private static boolean match(Operation operation, Method method) {
+ if (!method.getName().equals(operation.getName())) {
+ return false;
+ }
+ if (operation instanceof JavaOperation) {
+ Method m = ((JavaOperation)operation).getJavaMethod();
+ if (method.equals(m)) {
+ return true;
+ }
+ }
Class<?>[] params = method.getParameterTypes();
DataType<List<DataType>> inputType = operation.getInputType();
List<DataType> types = inputType.getLogical();
Modified:
incubator/tuscany/java/sca/modules/implementation-resource/src/test/java/org/apache/tuscany/sca/implementation/resource/ResourceImplementationTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-resource/src/test/java/org/apache/tuscany/sca/implementation/resource/ResourceImplementationTestCase.java?rev=616060&r1=616059&r2=616060&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-resource/src/test/java/org/apache/tuscany/sca/implementation/resource/ResourceImplementationTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-resource/src/test/java/org/apache/tuscany/sca/implementation/resource/ResourceImplementationTestCase.java
Mon Jan 28 13:39:55 2008
@@ -26,7 +26,6 @@
import junit.framework.TestCase;
import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.implementation.data.collection.Collection;
/**
* @version $Rev$ $Date$
@@ -48,10 +47,10 @@
//FIXME Does not work yet as the proxy invocation handler does not handle
// generics properly
public void testResource() throws Exception {
-// Resource resource = scaDomain.getService(Resource.class,
"ResourceServiceComponent");
-// InputStream is = resource.get("test.html");
-// String document = read(is);
-// assertTrue(document.indexOf("<body><p>hello</body>") != -1);
+ Resource resource = scaDomain.getService(Resource.class,
"ResourceServiceComponent");
+ InputStream is = resource.get("test.html");
+ String document = read(is);
+ assertTrue(document.indexOf("<body><p>hello</body>") != -1);
}
/**
Modified:
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaOperationImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaOperationImpl.java?rev=616060&r1=616059&r2=616060&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaOperationImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaOperationImpl.java
Mon Jan 28 13:39:55 2008
@@ -30,7 +30,7 @@
* @version $Rev$ $Date$
*/
public class JavaOperationImpl extends OperationImpl implements JavaOperation {
-
+
private Method method;
public Method getJavaMethod() {
@@ -39,6 +39,35 @@
public void setJavaMethod(Method method) {
this.method = method;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((method == null) ? 0 : method.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final JavaOperationImpl other = (JavaOperationImpl)obj;
+ if (method == null) {
+ if (other.method != null)
+ return false;
+ } else if (!method.equals(other.method))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ return method == null ? "null" : method.toGenericString();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]