From b4444cd5c30014125df44e54a317e38474446cbd Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 6 Aug 2010 17:01:52 +0000 Subject: Allow HeuristicPojoProcessor to differentiate implementation.java against other java based implementation types such as implementation.spring Check for duplicate import in spring xml definitions git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@983054 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/implementation/java/BaseJavaImplementation.java | 9 +++++++++ .../sca/implementation/java/impl/BaseJavaImplementationImpl.java | 5 +++++ .../java/introspect/impl/HeuristicPojoProcessor.java | 9 +++++++++ 3 files changed, 23 insertions(+) (limited to 'sca-java-2.x/trunk/modules/implementation-java') diff --git a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/BaseJavaImplementation.java b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/BaseJavaImplementation.java index c8b7c072ac..a3b0343d51 100644 --- a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/BaseJavaImplementation.java +++ b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/BaseJavaImplementation.java @@ -18,6 +18,8 @@ */ package org.apache.tuscany.sca.implementation.java; +import javax.xml.namespace.QName; + import org.apache.tuscany.sca.assembly.Extensible; import org.apache.tuscany.sca.assembly.Implementation; @@ -55,5 +57,12 @@ public interface BaseJavaImplementation extends Implementation, Extensible { * @param javaClass the Java implementation class */ void setJavaClass(Class javaClass); + + /** + * Customize the implementation type so that components are implemented using Java based framework such as + * implementation.spring or implementation.jaxrs can leverage the introspection + * @param type + */ + void setType(QName type); } diff --git a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/BaseJavaImplementationImpl.java b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/BaseJavaImplementationImpl.java index 0d9187c14f..7cbb4d7a0c 100644 --- a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/BaseJavaImplementationImpl.java +++ b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/BaseJavaImplementationImpl.java @@ -89,4 +89,9 @@ abstract class BaseJavaImplementationImpl extends ImplementationImpl implements return false; } } + + @Override + public void setType(QName type) { + this.type = type; + } } diff --git a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java index 16d8f4e67e..31cee72aa4 100644 --- a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java +++ b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java @@ -133,6 +133,11 @@ public class HeuristicPojoProcessor extends BaseJavaClassVisitor { evaluateConstructor(type, clazz); } + // Check if the implementation is implementation.java + private boolean isImplementationJava(JavaImplementation type) { + return JavaImplementation.TYPE.equals(type.getType()); + } + private void addService(JavaImplementation type, Class clazz) throws IntrospectionException { try { org.apache.tuscany.sca.assembly.Service service = createService(clazz); @@ -287,6 +292,10 @@ public class HeuristicPojoProcessor extends BaseJavaClassVisitor { explict = true; constructor = definition.getConstructor(); } else { + if (!isImplementationJava(type)) { + // FIXME: [rfeng] Don't process the constructors for non implementation.java types + return; + } // no definition, heuristically determine constructor Constructor[] constructors = clazz.getConstructors(); if (constructors.length == 0) { -- cgit v1.2.3