From 7a647f04ea75592a23e6b4bf1d7eec61878948e0 Mon Sep 17 00:00:00 2001 From: lresende Date: Thu, 15 Oct 2009 18:40:03 +0000 Subject: Enhancing extensibility to dinamycally load interface visitors git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@825612 13f79535-47bb-0310-9956-ffa450edef68 --- .../ws/wsdlgen/BindingWSDLGeneratorTestCase.java | 4 +- .../wsdlgen/Interface2WSDLGeneratorTestCase.java | 4 +- .../module/DataBindingModuleActivator.java | 31 +++++++-- .../DataBindingJavaInterfaceProcessor.java | 5 +- .../processor/WrapperJavaInterfaceProcessor.java | 5 +- ...terfacedef.java.introspect.JavaInterfaceVisitor | 19 ++++++ .../DataBindingJavaInterfaceProcessorTestCase.java | 6 +- .../java/jaxws/JAXWSJavaInterfaceProcessor.java | 1 + ...terfacedef.java.introspect.JavaInterfaceVisitor | 18 +++++ .../java/DefaultJavaInterfaceFactory.java | 79 +++++++++++++++++++--- .../java/impl/JavaInterfaceIntrospectorImpl.java | 12 +++- 11 files changed, 155 insertions(+), 29 deletions(-) create mode 100644 java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor create mode 100644 java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor (limited to 'java') diff --git a/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java b/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java index 8e6dbeac3c..fe7b9abf58 100644 --- a/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java +++ b/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java @@ -59,7 +59,7 @@ public class BindingWSDLGeneratorTestCase extends TestCase { DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint(registry); JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null); new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface); + new DataBindingJavaInterfaceProcessor(registry).visitInterface(iface); javaIC.setInterface(iface); WSDLInterfaceContract wsdlIC = BindingWSDLGenerator.createWSDLInterfaceContract(javaIC, false, new XSDModelResolver(null, null, null), dataBindings, wsdlFactory, xsdFactory, documentBuilderFactory, null); assertNotNull(wsdlIC); @@ -72,7 +72,7 @@ public class BindingWSDLGeneratorTestCase extends TestCase { JavaInterfaceContract javaIC2 = factory.createJavaInterfaceContract(); JavaInterface iface2 = factory.createJavaInterface(TestJavaInterface.class); new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface2); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface2); + new DataBindingJavaInterfaceProcessor(registry).visitInterface(iface2); javaIC2.setInterface(iface2); WSDLInterfaceContract wsdlIC2 = BindingWSDLGenerator.createWSDLInterfaceContract(javaIC2, false, new XSDModelResolver(null, null, null), dataBindings, wsdlFactory, xsdFactory, documentBuilderFactory, null); assertNotNull(wsdlIC2); diff --git a/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java b/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java index 7b1088f64b..f34d5912c3 100644 --- a/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java +++ b/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java @@ -52,11 +52,11 @@ public class Interface2WSDLGeneratorTestCase { public void testGenerate() throws Exception { JavaInterfaceFactory iFactory = new DefaultJavaInterfaceFactory(); JavaInterface iface = iFactory.createJavaInterface(TestJavaInterface.class); + ExtensionPointRegistry registry = new DefaultExtensionPointRegistry(); DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint(new DefaultExtensionPointRegistry()); JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null); new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface); - new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface); - ExtensionPointRegistry registry = new DefaultExtensionPointRegistry(); + new DataBindingJavaInterfaceProcessor(registry).visitInterface(iface); DefaultFactoryExtensionPoint modelFactories = new DefaultFactoryExtensionPoint(registry); WSDLFactory wFactory = new DefaultWSDLFactory(registry); DocumentBuilderFactory documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class); diff --git a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java index b4d7bf1662..023d0b7904 100644 --- a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java +++ b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java @@ -25,7 +25,6 @@ import org.apache.tuscany.sca.core.ModuleActivator; import org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor; import org.apache.tuscany.sca.core.databinding.processor.WrapperJavaInterfaceProcessor; import org.apache.tuscany.sca.core.databinding.wire.DataBindingRuntimeWireProcessor; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor; import org.apache.tuscany.sca.interfacedef.java.jaxws.WebServiceInterfaceProcessor; @@ -37,7 +36,28 @@ import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint; public class DataBindingModuleActivator implements ModuleActivator { public void start(ExtensionPointRegistry registry) { + /* DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class); + TransformerExtensionPoint transformers = registry.getExtensionPoint(TransformerExtensionPoint.class); + */ + + /* + Input2InputTransformer input2InputTransformer = new Input2InputTransformer(registry); + transformers.addTransformer(input2InputTransformer, false); + + Output2OutputTransformer output2OutputTransformer = new Output2OutputTransformer(registry); + transformers.addTransformer(output2OutputTransformer, false); + + Exception2ExceptionTransformer exception2ExceptionTransformer = new Exception2ExceptionTransformer(registry); + transformers.addTransformer(exception2ExceptionTransformer, false); + + Array2ArrayTransformer array2ArrayTransformer = new Array2ArrayTransformer(registry); + transformers.addTransformer(array2ArrayTransformer, false); + + Group2GroupTransformer group2GroupTransformer = new Group2GroupTransformer(registry); + transformers.addTransformer(group2GroupTransformer, false); + */ + // dataBindings.addDataBinding(new CallableReferenceDataBinding()); // transformers.addTransformer(new CallableReference2XMLStreamReader(), true); // transformers.addTransformer(new XMLStreamReader2CallableReference(), false); @@ -45,17 +65,16 @@ public class DataBindingModuleActivator implements ModuleActivator { FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class); JavaInterfaceFactory javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class); // Add the WebServiceInterfaceProcessor to mark the interface remotable - javaFactory.addInterfaceVisitor(new WebServiceInterfaceProcessor()); + //javaFactory.addInterfaceVisitor(new WebServiceInterfaceProcessor()); // Introspect the data types - javaFactory.addInterfaceVisitor(new DataBindingJavaInterfaceProcessor(dataBindings)); - javaFactory.addInterfaceVisitor(new JAXWSJavaInterfaceProcessor(registry)); - javaFactory.addInterfaceVisitor(new WrapperJavaInterfaceProcessor(dataBindings)); + //javaFactory.addInterfaceVisitor(new DataBindingJavaInterfaceProcessor(registry)); + //javaFactory.addInterfaceVisitor(new JAXWSJavaInterfaceProcessor(registry)); + //javaFactory.addInterfaceVisitor(new WrapperJavaInterfaceProcessor(registry)); RuntimeWireProcessorExtensionPoint wireProcessorExtensionPoint = registry.getExtensionPoint(RuntimeWireProcessorExtensionPoint.class); if (wireProcessorExtensionPoint != null) { wireProcessorExtensionPoint.addWireProcessor(new DataBindingRuntimeWireProcessor(registry)); } - } public void stop(ExtensionPointRegistry registry) { diff --git a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java index c915f389ea..01a3c1813c 100644 --- a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java +++ b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java @@ -25,6 +25,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; import org.apache.tuscany.sca.databinding.annotation.DataBinding; import org.apache.tuscany.sca.interfacedef.DataType; @@ -42,9 +43,9 @@ import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor; public class DataBindingJavaInterfaceProcessor implements JavaInterfaceVisitor { private DataBindingExtensionPoint dataBindingRegistry; - public DataBindingJavaInterfaceProcessor(DataBindingExtensionPoint dataBindingRegistry) { + public DataBindingJavaInterfaceProcessor(ExtensionPointRegistry registry) { super(); - this.dataBindingRegistry = dataBindingRegistry; + this.dataBindingRegistry = registry.getExtensionPoint(DataBindingExtensionPoint.class); } public void visitInterface(JavaInterface javaInterface) throws InvalidInterfaceException { diff --git a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java index 7f2e3fa23d..a5526ab031 100644 --- a/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java +++ b/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java @@ -24,6 +24,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; import org.apache.tuscany.sca.databinding.WrapperHandler; import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding; @@ -44,9 +45,9 @@ public class WrapperJavaInterfaceProcessor implements JavaInterfaceVisitor { private static final String JAXB_DATABINDING = "javax.xml.bind.JAXBElement"; private DataBindingExtensionPoint dataBindingRegistry; - public WrapperJavaInterfaceProcessor(DataBindingExtensionPoint dataBindingRegistry) { + public WrapperJavaInterfaceProcessor(ExtensionPointRegistry registry) { super(); - this.dataBindingRegistry = dataBindingRegistry; + this.dataBindingRegistry = registry.getExtensionPoint(DataBindingExtensionPoint.class); } public void visitInterface(JavaInterface javaInterface) throws InvalidInterfaceException { diff --git a/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor b/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor new file mode 100644 index 0000000000..c9620f41d5 --- /dev/null +++ b/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor +org.apache.tuscany.sca.core.databinding.processor.WrapperJavaInterfaceProcessor \ No newline at end of file diff --git a/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java b/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java index 1905cfb217..c59b36c6c1 100644 --- a/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java +++ b/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java @@ -19,8 +19,8 @@ package org.apache.tuscany.sca.core.databinding.processor; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; -import org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.databinding.annotation.DataBinding; import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; import org.apache.tuscany.sca.interfacedef.Operation; @@ -44,7 +44,7 @@ public class DataBindingJavaInterfaceProcessorTestCase { */ @Test public final void testVisitInterface() throws InvalidInterfaceException { - DataBindingExtensionPoint registry = new DefaultDataBindingExtensionPoint(); + ExtensionPointRegistry registry = new DefaultExtensionPointRegistry(); DataBindingJavaInterfaceProcessor processor = new DataBindingJavaInterfaceProcessor(registry); JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory(); diff --git a/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java b/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java index 3d7d72d03f..1d6b002361 100644 --- a/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java +++ b/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java @@ -78,6 +78,7 @@ public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor { xmlAdapterExtensionPoint = registry.getExtensionPoint(XMLAdapterExtensionPoint.class); } + public JAXWSJavaInterfaceProcessor(DataBindingExtensionPoint dataBindingExtensionPoint, FaultExceptionMapper faultExceptionMapper, XMLAdapterExtensionPoint xmlAdapters) { diff --git a/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor b/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor new file mode 100644 index 0000000000..b109269328 --- /dev/null +++ b/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +org.apache.tuscany.sca.interfacedef.java.jaxws.WebServiceInterfaceProcessor +org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor \ No newline at end of file diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java index 41cf08d771..374cb2029a 100644 --- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java +++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java @@ -19,15 +19,24 @@ package org.apache.tuscany.sca.interfacedef.java; import java.io.IOException; +import java.lang.reflect.Constructor; import java.util.Collection; import java.util.List; +import java.util.logging.Logger; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.extensibility.ServiceDeclaration; import org.apache.tuscany.sca.extensibility.ServiceDiscovery; import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceFactoryImpl; import org.apache.tuscany.sca.interfacedef.java.impl.PolicyJavaInterfaceVisitor; import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor; +import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.MonitorFactory; +import org.apache.tuscany.sca.monitor.Problem; +import org.apache.tuscany.sca.monitor.Problem.Severity; import org.apache.tuscany.sca.policy.PolicyFactory; /** @@ -36,15 +45,40 @@ import org.apache.tuscany.sca.policy.PolicyFactory; * @version $Rev$ $Date$ */ public class DefaultJavaInterfaceFactory extends JavaInterfaceFactoryImpl implements JavaInterfaceFactory { + private static final Logger logger = Logger.getLogger(DefaultJavaInterfaceFactory.class.getName()); + + private ExtensionPointRegistry extensionPointRegistry; private FactoryExtensionPoint modelFactoryExtensionPoint; + private Monitor monitor = null; private boolean loadedVisitors; public DefaultJavaInterfaceFactory() { + super(); + this.extensionPointRegistry = new DefaultExtensionPointRegistry(); + + UtilityExtensionPoint utilities = this.extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class); + if (monitorFactory != null) { + this.monitor = monitorFactory.createMonitor(); + } + } + /* public DefaultJavaInterfaceFactory(FactoryExtensionPoint modelFactoryExtensionPoint) { + this.extensionPointRegistry = new DefaultExtensionPointRegistry(); + + this.extensionPointRegistry = new DefaultExtensionPointRegistry(); this.modelFactoryExtensionPoint = modelFactoryExtensionPoint; + + UtilityExtensionPoint utilities = this.extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class); + if (monitorFactory != null) { + this.monitor = monitorFactory.createMonitor(); + } + } + */ @Override public List getInterfaceVisitors() { @@ -77,17 +111,26 @@ public class DefaultJavaInterfaceFactory extends JavaInterfaceFactoryImpl implem // Load data bindings for (ServiceDeclaration visitorDeclaration: visitorDeclarations) { - JavaInterfaceVisitor visitor; + JavaInterfaceVisitor visitor = null; try { Class visitorClass = (Class)visitorDeclaration.loadClass(); - visitor = visitorClass.newInstance(); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException(e); - } catch (InstantiationException e) { - throw new IllegalArgumentException(e); - } catch (IllegalAccessException e) { - throw new IllegalArgumentException(e); + + try { + Constructor constructor = visitorClass.getConstructor(ExtensionPointRegistry.class); + visitor = constructor.newInstance(extensionPointRegistry); + } catch (NoSuchMethodException e) { + visitor = visitorClass.newInstance(); + } + + + } catch (Exception e) { + IllegalStateException ie = new IllegalStateException(e); + error("IllegalStateException", visitor, ie); + throw ie; } + + logger.fine("Adding Java Interface visitor: " + visitor.getClass().getName()); + addInterfaceVisitor(visitor); } @@ -95,5 +138,23 @@ public class DefaultJavaInterfaceFactory extends JavaInterfaceFactoryImpl implem } - + /** + * Report a exception. + * + * @param problems + * @param message + * @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.properties", + Severity.ERROR, + model, + message, + ex); + monitor.problem(problem); + } + } } diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java index 36f1fbe23e..6b8ea60517 100644 --- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java +++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java @@ -61,14 +61,20 @@ public class JavaInterfaceIntrospectorImpl { private static final String UNKNOWN_DATABINDING = null; + private JavaInterfaceFactory javaFactory = null; private List visitors = new ArrayList(); + private boolean loadedVisitors; public JavaInterfaceIntrospectorImpl(JavaInterfaceFactory javaFactory) { - this.visitors = javaFactory.getInterfaceVisitors(); + this.javaFactory = javaFactory; } - public void introspectInterface(JavaInterface javaInterface, Class clazz) - throws InvalidInterfaceException { + public void introspectInterface(JavaInterface javaInterface, Class clazz) throws InvalidInterfaceException { + + if(!loadedVisitors) { + this.visitors = javaFactory.getInterfaceVisitors(); + } + javaInterface.setJavaClass(clazz); boolean remotable = clazz.isAnnotationPresent(Remotable.class); -- cgit v1.2.3