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