You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/06/20 19:38:31 UTC

svn commit: r549164 - in /incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed: module/ provider/

Author: jsdelfino
Date: Wed Jun 20 10:38:30 2007
New Revision: 549164

URL: http://svn.apache.org/viewvc?view=rev&rev=549164
Log:
Simplified the invocation of the feed.get() method, not requiring a service reference and proxy anymore.

Modified:
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/module/FeedModuleActivator.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingProviderFactory.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/module/FeedModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/module/FeedModuleActivator.java?view=diff&rev=549164&r1=549163&r2=549164
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/module/FeedModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/module/FeedModuleActivator.java Wed Jun 20 10:38:30 2007
@@ -26,8 +26,10 @@
 import org.apache.tuscany.sca.binding.feed.xml.RssBindingProcessor;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.core.ModuleActivator;
 import org.apache.tuscany.sca.http.ServletHost;
+import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
 
 /**
@@ -43,11 +45,12 @@
     public void start(ExtensionPointRegistry registry) {
 
         // Create the Feed model factory
+        ModelFactoryExtensionPoint factories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
         FeedBindingFactory factory = new DefaultFeedBindingFactory();
+        factories.addFactory(factory);
 
         // Add the AtomBindingProcessor and RSSBindingProcessor extensions
-        StAXArtifactProcessorExtensionPoint processors =
-            registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
         AtomBindingProcessor atomBindingProcessor = new AtomBindingProcessor(factory);
         processors.addArtifactProcessor(atomBindingProcessor);
         RssBindingProcessor rssBindingProcessor = new RssBindingProcessor(factory);
@@ -56,7 +59,8 @@
         // Add the Feed binding provider factory extension
         ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
         ServletHost servletHost = registry.getExtensionPoint(ServletHost.class);
-        providerFactories.addProviderFactory(new FeedBindingProviderFactory(servletHost));
+        MessageFactory messageFactory = factories.getFactory(MessageFactory.class);
+        providerFactories.addProviderFactory(new FeedBindingProviderFactory(servletHost, messageFactory));
     }
 
     public void stop(ExtensionPointRegistry registry) {

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java?view=diff&rev=549164&r1=549163&r2=549164
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java Wed Jun 20 10:38:30 2007
@@ -28,7 +28,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.tuscany.sca.binding.feed.Feed;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.invocation.MessageFactory;
 
 import com.sun.syndication.feed.synd.SyndFeed;
 import com.sun.syndication.io.FeedException;
@@ -41,15 +43,13 @@
 public class FeedBindingListener extends HttpServlet {
     private static final long serialVersionUID = 1L;
 
-    String serviceName;
-    Class<?> serviceInterface;
-    Object serviceInstance;
+    Invoker invoker;
+    MessageFactory messageFactory;
     String feedType;
 
-    public FeedBindingListener(String serviceName, Class<?> serviceInterface, Object serviceInstance, String feedType) {
-        this.serviceName = serviceName;
-        this.serviceInterface = serviceInterface;
-        this.serviceInstance = serviceInstance;
+    public FeedBindingListener(Invoker invoker, MessageFactory messageFactory, String feedType) {
+        this.invoker = invoker;
+        this.messageFactory = messageFactory;
         this.feedType = feedType;
     }
 
@@ -71,7 +71,16 @@
         // Assuming that the service provided by this binding implements the Feed
         // service interface, get the Feed from the service
         String uri = request.getRequestURL().toString();
-        SyndFeed syndFeed = ((Feed)serviceInstance).get(uri);
+        
+        Message requestMessage = messageFactory.createMessage();
+        requestMessage.setBody(new Object[] {uri});
+        // dispatch and get the response
+        Message responseMessage = invoker.invoke(requestMessage);
+        if (responseMessage.isFault()) {
+            throw new ServletException((Throwable)responseMessage.getBody());
+        }
+        
+        SyndFeed syndFeed = (SyndFeed)responseMessage.getBody();
         syndFeed.setFeedType(requestFeedType);
 
         // Write the Feed to the servlet output

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingProviderFactory.java?view=diff&rev=549164&r1=549163&r2=549164
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingProviderFactory.java Wed Jun 20 10:38:30 2007
@@ -21,6 +21,7 @@
 
 import org.apache.tuscany.sca.binding.feed.FeedBinding;
 import org.apache.tuscany.sca.http.ServletHost;
+import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.provider.BindingProviderFactory;
 import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
 import org.apache.tuscany.sca.provider.ServiceBindingProvider;
@@ -33,10 +34,12 @@
  */
 public class FeedBindingProviderFactory implements BindingProviderFactory<FeedBinding> {
 
+    MessageFactory messageFactory;
     ServletHost servletHost;
 
-    public FeedBindingProviderFactory(ServletHost servletHost) {
+    public FeedBindingProviderFactory(ServletHost servletHost, MessageFactory messageFactory) {
         this.servletHost = servletHost;
+        this.messageFactory = messageFactory;
     }
 
     public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component,
@@ -48,7 +51,7 @@
     public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component,
                                                                RuntimeComponentService service,
                                                                FeedBinding binding) {
-        return new FeedServiceBindingProvider(component, service, binding, servletHost);
+        return new FeedServiceBindingProvider(component, service, binding, servletHost, messageFactory);
     }
 
     public Class<FeedBinding> getModelType() {

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java?view=diff&rev=549164&r1=549163&r2=549164
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java Wed Jun 20 10:38:30 2007
@@ -21,12 +21,14 @@
 
 import org.apache.tuscany.sca.binding.feed.FeedBinding;
 import org.apache.tuscany.sca.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.Interface;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
+import org.apache.tuscany.sca.invocation.InvocationChain;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.provider.ServiceBindingProvider;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
 
 /**
  * Implementation of the Feed binding provider.
@@ -37,19 +39,22 @@
     private RuntimeComponentService service;
     private FeedBinding binding;
     private ServletHost servletHost;
+    private MessageFactory messageFactory;
     private String uri;
 
     public FeedServiceBindingProvider(RuntimeComponent component,
                                       RuntimeComponentService service,
                                       FeedBinding binding,
-                                      ServletHost servletHost) {
+                                      ServletHost servletHost,
+                                      MessageFactory messageFactory) {
         this.component = component;
         this.service = service;
         this.binding = binding;
         this.servletHost = servletHost;
+        this.messageFactory = messageFactory;
         uri = binding.getURI();
         if (uri == null) {
-            uri = "/" + component.getName();
+            uri = "/" + this.component.getName();
         }
     }
 
@@ -58,11 +63,13 @@
     }
 
     public void start() {
-        Class<?> aClass = getTargetJavaClass(service.getInterfaceContract().getInterface());
-        Object instance = component.createSelfReference(aClass).getService();
+        RuntimeComponentService componentService = (RuntimeComponentService) service;
+        RuntimeWire wire = componentService.getRuntimeWire(binding);
+        InvocationChain chain = wire.getInvocationChains().get(0);
+        Invoker invoker = chain.getHeadInvoker(); 
 
         FeedBindingListener servlet =
-            new FeedBindingListener(binding.getName(), aClass, instance, binding.getFeedType());
+            new FeedBindingListener(invoker, messageFactory, binding.getFeedType());
 
         servletHost.addServletMapping(uri, servlet);
     }
@@ -71,7 +78,4 @@
         servletHost.removeServletMapping(uri);
     }
 
-    private Class<?> getTargetJavaClass(Interface targetInterface) {
-        return ((JavaInterface)targetInterface).getJavaClass();
-    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org