diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-18 15:28:56 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-18 15:28:56 +0000 |
commit | 99107098916fecc8c788f441452e9608037ae425 (patch) | |
tree | a3e9f2ae065968c8944c199285635cb7208946c5 /sca-java-2.x/trunk/modules/contribution/src/main/java | |
parent | 0d9a353f01726808a0093a8d7524c1e1bc894138 (diff) |
TUSCANY-3653 - Read JAXWS annotations in Java interfaces (JAXWSJavaIntefaceProcessor) and, in the JavaIntefaceProcessor, post process these to reconfigure the Java interface based on what is found. The case where WSDL is referenced is tricky and still has holes. The WSDL is read and is attached to the Java interface as a normalized interface and is used during interface matching. Binding implementations that care about WSDL should really check the normalized interface rather than the service interface itself. This is still a TODO.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@986740 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/contribution/src/main/java')
-rw-r--r-- | sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java index 081fdac828..1ba394dde9 100644 --- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java +++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java @@ -49,6 +49,10 @@ public class ClassLoaderModelResolver extends URLClassLoader implements ModelRes private WeakReference<Contribution> contribution; private ProcessorContext context; private Map<String, ModelResolver> importResolvers = new HashMap<String, ModelResolver>(); + + // a space to pass back the contribution that was used to resolve + // a class via an import + private Contribution contributionContainingClass; private static ClassLoader parentClassLoader(Contribution contribution) { if (contribution.getClassLoader() != null) { @@ -107,10 +111,15 @@ public class ClassLoaderModelResolver extends URLClassLoader implements ModelRes try { this.context = context; + contributionContainingClass = contribution.get(); + // Load the class and return a class reference for it String className = ((ClassReference)unresolved).getClassName(); Class<?> clazz = Class.forName(className, false, this); - return modelClass.cast(new ClassReference(clazz)); + ClassReference classReference = new ClassReference(clazz); + classReference.setContributionContainingClass(contributionContainingClass); + contributionContainingClass = null; + return modelClass.cast(classReference); } catch (ClassNotFoundException e) { return unresolved; @@ -160,6 +169,7 @@ public class ClassLoaderModelResolver extends URLClassLoader implements ModelRes if (importResolver != null) { ClassReference classReference = importResolver.resolveModel(ClassReference.class, new ClassReference(name), context); if (!classReference.isUnresolved()) { + contributionContainingClass = classReference.getContributionContainingClass(); return classReference.getJavaClass(); } } |