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/11/18 23:08:32 UTC

svn commit: r881960 - in /tuscany/java/sca/modules: binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/ binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/ implementation-widget-runtime-dojo...

Author: lresende
Date: Wed Nov 18 22:08:31 2009
New Revision: 881960

URL: http://svn.apache.org/viewvc?rev=881960&view=rev
Log:
Updating implementation.widget to properly resolve targetEndpoints to find binding information and properly generate JavaScript client proxies

Modified:
    tuscany/java/sca/modules/binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/AtomBindingJavascriptProxyFactoryImpl.java
    tuscany/java/sca/modules/binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/JSONRPCBindingJavascriptProxyFactoryImpl.java
    tuscany/java/sca/modules/implementation-widget-runtime-dojo/src/main/java/org/apache/tuscany/sca/implementation/widget/dojo/DojoJavaScriptComponentGeneratorImpl.java
    tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/Widget.java
    tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationIntrospector.java
    tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
    tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationFactoryImpl.java
    tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationImpl.java

Modified: tuscany/java/sca/modules/binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/AtomBindingJavascriptProxyFactoryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/AtomBindingJavascriptProxyFactoryImpl.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/AtomBindingJavascriptProxyFactoryImpl.java (original)
+++ tuscany/java/sca/modules/binding-atom-js-dojo/src/main/java/org/apache/tuscany/sca/binding/atom/js/dojo/AtomBindingJavascriptProxyFactoryImpl.java Wed Nov 18 22:08:31 2009
@@ -27,7 +27,10 @@
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.binding.atom.AtomBinding;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
 import org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory;
 
 public class AtomBindingJavascriptProxyFactoryImpl implements JavascriptProxyFactory {
@@ -50,7 +53,17 @@
     }
 
     public String createJavascriptReference(ComponentReference componentReference) throws IOException {
-        Binding binding = componentReference.getBindings().get(0);
+        EndpointReference epr = componentReference.getEndpointReferences().get(0);
+        Endpoint targetEndpoint = epr.getTargetEndpoint();
+        if (targetEndpoint.isUnresolved()) {
+            //force resolution and targetEndpoint binding calculations
+            //by calling the getInvocationChain
+            ((RuntimeEndpointReference) epr).getInvocationChains();
+            targetEndpoint = epr.getTargetEndpoint();
+        }
+        
+        Binding binding = targetEndpoint.getBinding();
+        
         URI targetURI = URI.create(binding.getURI());
         String targetPath = targetURI.getPath();
         

Modified: tuscany/java/sca/modules/binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/JSONRPCBindingJavascriptProxyFactoryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/JSONRPCBindingJavascriptProxyFactoryImpl.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/JSONRPCBindingJavascriptProxyFactoryImpl.java (original)
+++ tuscany/java/sca/modules/binding-jsonrpc-js-dojo/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/js/dojo/JSONRPCBindingJavascriptProxyFactoryImpl.java Wed Nov 18 22:08:31 2009
@@ -27,7 +27,10 @@
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBinding;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
 import org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory;
 
 public class JSONRPCBindingJavascriptProxyFactoryImpl implements JavascriptProxyFactory {
@@ -50,7 +53,17 @@
     }
     
     public String createJavascriptReference(ComponentReference componentReference) throws IOException {
-        Binding binding = componentReference.getBindings().get(0);
+        EndpointReference epr = componentReference.getEndpointReferences().get(0);
+        Endpoint targetEndpoint = epr.getTargetEndpoint();
+        if (targetEndpoint.isUnresolved()) {
+            //force resolution and targetEndpoint binding calculations
+            //by calling the getInvocationChain
+            ((RuntimeEndpointReference) epr).getInvocationChains();
+            targetEndpoint = epr.getTargetEndpoint();
+        }
+        
+        Binding binding = targetEndpoint.getBinding();
+        
         URI targetURI = URI.create(binding.getURI());
         String targetPath = targetURI.getPath();
         

Modified: tuscany/java/sca/modules/implementation-widget-runtime-dojo/src/main/java/org/apache/tuscany/sca/implementation/widget/dojo/DojoJavaScriptComponentGeneratorImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget-runtime-dojo/src/main/java/org/apache/tuscany/sca/implementation/widget/dojo/DojoJavaScriptComponentGeneratorImpl.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget-runtime-dojo/src/main/java/org/apache/tuscany/sca/implementation/widget/dojo/DojoJavaScriptComponentGeneratorImpl.java (original)
+++ tuscany/java/sca/modules/implementation-widget-runtime-dojo/src/main/java/org/apache/tuscany/sca/implementation/widget/dojo/DojoJavaScriptComponentGeneratorImpl.java Wed Nov 18 22:08:31 2009
@@ -30,8 +30,11 @@
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.ComponentProperty;
 import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
 import org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGenerator;
 import org.apache.tuscany.sca.web.javascript.JavascriptProxyFactory;
 import org.apache.tuscany.sca.web.javascript.JavascriptProxyFactoryExtensionPoint;
@@ -39,11 +42,14 @@
 import org.w3c.dom.Element;
 
 public class DojoJavaScriptComponentGeneratorImpl implements ComponentJavaScriptGenerator {
-    private static final QName NAME = new QName("http://tuscany.apache.org/xmlns/sca/1.0", "component.script.generator.dojo");
+    private static final QName NAME = new QName("http://tuscany.apache.org/xmlns/sca/1.1", "component.script.generator.dojo");
+
+    private ExtensionPointRegistry extensionPoints;
 
     private JavascriptProxyFactoryExtensionPoint javascriptProxyFactories;
 
     public DojoJavaScriptComponentGeneratorImpl(ExtensionPointRegistry extensionPoints) {
+        this.extensionPoints = extensionPoints;        
         this.javascriptProxyFactories = extensionPoints.getExtensionPoint(JavascriptProxyFactoryExtensionPoint.class);
     }
     
@@ -59,19 +65,29 @@
         Map<String, Boolean> bindingClientProcessed = new HashMap<String, Boolean>();
 
         for(ComponentReference reference : component.getReferences()) {
-            for(Binding binding : reference.getBindings()) {
-                JavascriptProxyFactory jsProxyFactory = javascriptProxyFactories.getProxyFactory(binding.getClass());
-
-                String bindingProxyName = jsProxyFactory.getJavascriptProxyFile();
-                //check if binding client code was already processed and inject to the generated script
-                if(bindingProxyName != null) {
-                    Boolean processedFlag = bindingClientProcessed.get(bindingProxyName);
-                    if( processedFlag == null || processedFlag.booleanValue() == false) {
-                        generateJavaScriptBindingProxy(jsProxyFactory, pw);
-                        bindingClientProcessed.put(bindingProxyName, Boolean.TRUE);
-                    }
+            for(EndpointReference epr : reference.getEndpointReferences()) {
+                Endpoint targetEndpoint = epr.getTargetEndpoint();
+                if (targetEndpoint.isUnresolved()) {
+                    //force resolution and targetEndpoint binding calculations
+                    //by calling the getInvocationChain
+                    ((RuntimeEndpointReference) epr).getInvocationChains();
+                    targetEndpoint = epr.getTargetEndpoint();
+                }
+                
+                Binding binding = targetEndpoint.getBinding();
+                if (binding != null) {
+                    JavascriptProxyFactory jsProxyFactory = javascriptProxyFactories.getProxyFactory(binding.getClass());
+
+                    String bindingProxyName = jsProxyFactory.getJavascriptProxyFile();
+                    //check if binding client code was already processed and inject to the generated script
+                    if(bindingProxyName != null) {
+                        Boolean processedFlag = bindingClientProcessed.get(bindingProxyName);
+                        if( processedFlag == null || processedFlag.booleanValue() == false) {
+                            generateJavaScriptBindingProxy(jsProxyFactory, pw);
+                            bindingClientProcessed.put(bindingProxyName, Boolean.TRUE);
+                        }
+                    }                    
                 }
-
             }
         }
         
@@ -188,15 +204,22 @@
         
         pw.println("__tus.sca.referenceMap = {};");
         for(ComponentReference reference : component.getReferences()) {
-            Binding binding = reference.getBindings().get(0);
-           
-            if (binding != null) {
-
-                String referenceName = reference.getName();
-                JavascriptProxyFactory jsProxyFactory = javascriptProxyFactories.getProxyFactory(binding.getClass());
-                
-                pw.println("__tus.sca.referenceMap." + referenceName + " = new " + jsProxyFactory.createJavascriptReference(reference) + ";");
+            for(EndpointReference epr : reference.getEndpointReferences()) {
+                Endpoint targetEndpoint = epr.getTargetEndpoint();
+                if (targetEndpoint.isUnresolved()) {
+                    //force resolution and targetEndpoint binding calculations
+                    //by calling the getInvocationChain
+                    ((RuntimeEndpointReference) epr).getInvocationChains();
+                    targetEndpoint = epr.getTargetEndpoint();
+                }
                 
+                Binding binding = targetEndpoint.getBinding();
+                if (binding != null) {
+                    String referenceName = reference.getName();
+                    JavascriptProxyFactory jsProxyFactory = javascriptProxyFactories.getProxyFactory(binding.getClass());
+                    
+                    pw.println("__tus.sca.referenceMap." + referenceName + " = new " + jsProxyFactory.createJavascriptReference(reference) + ";");
+                }
             }
         }
         

Modified: tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/Widget.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/Widget.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/Widget.java (original)
+++ tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/Widget.java Wed Nov 18 22:08:31 2009
@@ -22,6 +22,7 @@
 import java.io.InputStream;
 
 import org.apache.tuscany.sca.data.collection.Collection;
+import org.oasisopen.sca.annotation.Remotable;
 
 /**
  * The service interface of widget implementations. This is not an API for application
@@ -30,6 +31,8 @@
  * 
  * @version $Rev$ $Date$
  */
+
+@Remotable
 public interface Widget extends Collection<String, InputStream> {
 
 }

Modified: tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationIntrospector.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationIntrospector.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationIntrospector.java (original)
+++ tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationIntrospector.java Wed Nov 18 22:08:31 2009
@@ -26,6 +26,8 @@
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 
 /**
  * A HTML Widget Introspector used to introspect references and property
@@ -40,9 +42,10 @@
     private AssemblyFactory assemblyFactory;
     private WidgetImplementation widgetImplementation;
     
-    WidgetImplementationIntrospector(AssemblyFactory assemblyFactory, WidgetImplementation widgetImplementation) {
+    WidgetImplementationIntrospector(ExtensionPointRegistry registry, WidgetImplementation widgetImplementation ) {
+        FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
         this.widgetImplementation = widgetImplementation;
-        this.assemblyFactory = assemblyFactory;
     }
     
     

Modified: tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java (original)
+++ tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java Wed Nov 18 22:08:31 2009
@@ -28,7 +28,6 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.contribution.Artifact;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
@@ -38,6 +37,7 @@
 import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.Problem;
@@ -50,45 +50,17 @@
  * @version $Rev$ $Date$
  */
 public class WidgetImplementationProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<WidgetImplementation> {
-    private AssemblyFactory assemblyFactory;
+    private ExtensionPointRegistry registry;
     private ContributionFactory contributionFactory;
     private WidgetImplementationFactory implementationFactory;
-    private Monitor monitor;
 
-    public WidgetImplementationProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) {
-    	assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+    public WidgetImplementationProcessor(ExtensionPointRegistry registry) {
+        this.registry = registry;
+        FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
         contributionFactory = modelFactories.getFactory(ContributionFactory.class);
         implementationFactory = modelFactories.getFactory(WidgetImplementationFactory.class);
-        this.monitor = monitor;
-    }
-
-    /**
-     * 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(), "impl-widget-validation-messages", Severity.ERROR, model, message, ex);
-            monitor.problem(problem);
-        }
-    }
-
-    /**
-     * Report a error.
-     *
-     * @param problems
-     * @param message
-     * @param model
-     */
-    private void error(String message, Object model, Object... messageParameters) {
-        if (monitor != null) {
-            Problem problem = monitor.createProblem(this.getClass().getName(), "impl-widget-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters);
-            monitor.problem(problem);
-        }
     }
+ 
 
     public QName getArtifactType() {
         // Returns the QName of the XML element processed by this processor
@@ -114,7 +86,7 @@
             implementation.setLocation(location);
             implementation.setUnresolved(true);
         } else {
-            error("LocationAttributeMissing", reader);
+            error(context.getMonitor(), "LocationAttributeMissing", reader);
             //throw new ContributionReadException(MSG_LOCATION_MISSING);
         }
 
@@ -141,17 +113,17 @@
 
                     //introspect implementation
                     WidgetImplementationIntrospector widgetIntrospector =
-                    	new WidgetImplementationIntrospector(assemblyFactory, implementation);
+                    	new WidgetImplementationIntrospector(registry, implementation);
                     widgetIntrospector.introspectImplementation();
 
                     implementation.setUnresolved(false);
                 } catch (IOException e) {
                 	ContributionResolveException ce = new ContributionResolveException(e);
-                	error("ContributionResolveException", resolver, ce);
+                	error(context.getMonitor(), "ContributionResolveException", resolver, ce);
                     //throw ce;
                 }
             } else {
-                error("CouldNotResolveLocation", resolver, implementation.getLocation());
+                error(context.getMonitor(), "CouldNotResolveLocation", resolver, implementation.getLocation());
                 //throw new ContributionResolveException("Could not resolve implementation.widget location: " + implementation.getLocation());
             }
     	}
@@ -167,4 +139,50 @@
 
         writeEnd(writer);
     }
+    
+    /**
+     * Utility methods
+     */
+    
+    
+    /**
+     * Report a error.
+     *
+     * @param problems
+     * @param message
+     * @param model
+     */
+    private void error(Monitor monitor, String message, Object model, Object... messageParameters) {
+        if (monitor != null) {
+            Problem problem =
+                monitor.createProblem(this.getClass().getName(),
+                                      "impl-widget-validation-messages",
+                                      Severity.ERROR,
+                                      model,
+                                      message,
+                                      (Object[])messageParameters);
+            monitor.problem(problem);
+        }
+    }
+
+    /**
+     * Report a exception.
+     *
+     * @param problems
+     * @param message
+     * @param model
+     */
+    private void error(Monitor monitor, String message, Object model, Exception ex) {
+        if (monitor != null) {
+            Problem problem =
+                monitor.createProblem(this.getClass().getName(),
+                                      "impl-widget-validation-messages",
+                                      Severity.ERROR,
+                                      model,
+                                      message,
+                                      ex);
+            monitor.problem(problem);
+        }
+    }
+
 }

Modified: tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationFactoryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationFactoryImpl.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationFactoryImpl.java (original)
+++ tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationFactoryImpl.java Wed Nov 18 22:08:31 2009
@@ -19,11 +19,9 @@
 
 package org.apache.tuscany.sca.implementation.widget.impl;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.implementation.widget.WidgetImplementation;
 import org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
 
 /**
  * Factory for the widget implementation model.
@@ -32,16 +30,14 @@
  */
 public class WidgetImplementationFactoryImpl implements WidgetImplementationFactory {
     
-    private AssemblyFactory assemblyFactory;
-    private JavaInterfaceFactory javaFactory;
+    private ExtensionPointRegistry registry;
     
-    public WidgetImplementationFactoryImpl(FactoryExtensionPoint modelFactories) {
-        assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
-        javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
+    public WidgetImplementationFactoryImpl(ExtensionPointRegistry registry) {
+        this.registry = registry;
     }
 
     public WidgetImplementation createWidgetImplementation() {
-        return new WidgetImplementationImpl(assemblyFactory, javaFactory);
+        return new WidgetImplementationImpl(registry);
     }
 
 }

Modified: tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationImpl.java?rev=881960&r1=881959&r2=881960&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationImpl.java (original)
+++ tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/impl/WidgetImplementationImpl.java Wed Nov 18 22:08:31 2009
@@ -25,6 +25,8 @@
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.impl.ImplementationImpl;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.implementation.widget.Widget;
 import org.apache.tuscany.sca.implementation.widget.WidgetImplementation;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
@@ -47,11 +49,14 @@
     /**
      * Constructs a new resource implementation.
      */
-    WidgetImplementationImpl(AssemblyFactory assemblyFactory,
-                             JavaInterfaceFactory javaFactory) {
+    WidgetImplementationImpl(ExtensionPointRegistry registry) {
         
         super(TYPE);
         
+        FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+        JavaInterfaceFactory javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
+        
         // Resource implementation always provide a single service exposing
         // the Resource interface, and have no references and properties
         widgetService = assemblyFactory.createService();
@@ -67,6 +72,8 @@
         JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract();
         interfaceContract.setInterface(javaInterface);
         widgetService.setInterfaceContract(interfaceContract);
+        
+        this.getServices().add(widgetService);
     }
 
     public QName getType() {
@@ -99,6 +106,7 @@
         this.locationUrl = url;
     }
 
+    
     @Override
     public String toString() {
         return "Widget : " + getLocation();