You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2009/10/15 20:40:04 UTC

svn commit: r825612 - in /tuscany/java/sca/modules: binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/ core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/ core-databinding/src/main/java/org/apache/tus...

Author: lresende
Date: Thu Oct 15 18:40:03 2009
New Revision: 825612

URL: http://svn.apache.org/viewvc?rev=825612&view=rev
Log:
Enhancing extensibility to dinamycally load interface visitors

Added:
    tuscany/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
    tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
Modified:
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
    tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
    tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
    tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java
    tuscany/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java
    tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
    tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
    tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java

Modified: tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java (original)
+++ tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java Thu Oct 15 18:40:03 2009
@@ -59,7 +59,7 @@
         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 @@
         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);

Modified: tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java (original)
+++ tuscany/java/sca/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java Thu Oct 15 18:40:03 2009
@@ -52,11 +52,11 @@
     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);

Modified: tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java (original)
+++ tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java Thu Oct 15 18:40:03 2009
@@ -25,7 +25,6 @@
 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 @@
 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 @@
         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) {

Modified: tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java (original)
+++ tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java Thu Oct 15 18:40:03 2009
@@ -25,6 +25,7 @@
 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 @@
 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 {

Modified: tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java (original)
+++ tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/WrapperJavaInterfaceProcessor.java Thu Oct 15 18:40:03 2009
@@ -24,6 +24,7 @@
 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 @@
     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 {

Added: tuscany/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor?rev=825612&view=auto
==============================================================================
--- tuscany/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor (added)
+++ tuscany/java/sca/modules/core-databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor Thu Oct 15 18:40:03 2009
@@ -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

Modified: tuscany/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java (original)
+++ tuscany/java/sca/modules/core-databinding/src/test/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessorTestCase.java Thu Oct 15 18:40:03 2009
@@ -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 @@
      */
     @Test
     public final void testVisitInterface() throws InvalidInterfaceException {
-        DataBindingExtensionPoint registry = new DefaultDataBindingExtensionPoint();
+        ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
         DataBindingJavaInterfaceProcessor processor = new DataBindingJavaInterfaceProcessor(registry);
         JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
         

Modified: tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java (original)
+++ tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java Thu Oct 15 18:40:03 2009
@@ -78,6 +78,7 @@
         xmlAdapterExtensionPoint = registry.getExtensionPoint(XMLAdapterExtensionPoint.class);
     }
     
+    
     public JAXWSJavaInterfaceProcessor(DataBindingExtensionPoint dataBindingExtensionPoint,
                                        FaultExceptionMapper faultExceptionMapper,
                                        XMLAdapterExtensionPoint xmlAdapters) {

Added: tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor?rev=825612&view=auto
==============================================================================
--- tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor (added)
+++ tuscany/java/sca/modules/interface-java-jaxws/src/main/resources/META-INF/services/org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor Thu Oct 15 18:40:03 2009
@@ -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

Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java Thu Oct 15 18:40:03 2009
@@ -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 @@
  * @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<JavaInterfaceVisitor> getInterfaceVisitors() {
@@ -77,17 +111,26 @@
         
         // Load data bindings
         for (ServiceDeclaration visitorDeclaration: visitorDeclarations) {
-            JavaInterfaceVisitor visitor;
+            JavaInterfaceVisitor visitor = null;
             try {
                 Class<JavaInterfaceVisitor> visitorClass = (Class<JavaInterfaceVisitor>)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<JavaInterfaceVisitor> 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 @@
     }
 
     
-
+    /**
+     * 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);
+        }
+    }
 }

Modified: tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java?rev=825612&r1=825611&r2=825612&view=diff
==============================================================================
--- tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java (original)
+++ tuscany/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceIntrospectorImpl.java Thu Oct 15 18:40:03 2009
@@ -61,14 +61,20 @@
 
     private static final String UNKNOWN_DATABINDING = null;
 
+    private JavaInterfaceFactory javaFactory = null;
     private List<JavaInterfaceVisitor> visitors = new ArrayList<JavaInterfaceVisitor>();
+    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);