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(); 


Reply via email to