diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-06-05 05:17:47 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2010-06-05 05:17:47 +0000 |
commit | f052ca9d9dc273dc0f625c9a6ec6eb38d6bc0f3a (patch) | |
tree | c316c1a4a098d965f91aef6422aebb862a88a0f7 /sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org | |
parent | 8fde4cc2b0f89400b21744d67d91db49f1df8318 (diff) |
Setting svn:eol-style for java and xml files
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@951651 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org')
2 files changed, 329 insertions, 329 deletions
diff --git a/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientServlet.java b/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientServlet.java index 5316efeef0..f827c56241 100644 --- a/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientServlet.java +++ b/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientServlet.java @@ -1,259 +1,259 @@ -/*
- * 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.
- */
-
-package org.apache.tuscany.sca.implementation.web.client;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
-import org.directwebremoting.Container;
-import org.directwebremoting.create.AbstractCreator;
-import org.directwebremoting.extend.CreatorManager;
-import org.directwebremoting.extend.Handler;
-import org.directwebremoting.extend.Remoter;
-import org.directwebremoting.servlet.DwrServlet;
-import org.directwebremoting.servlet.EngineHandler;
-import org.directwebremoting.servlet.PathConstants;
-import org.directwebremoting.servlet.UrlProcessor;
-
-/**
- * Tuscany customized DWR Servlet to implement support for the DWR binding
- *
- * Handles requests for SCA services and references that use <binding.dwr>
- */
-public class ClientServlet extends DwrServlet {
- private static final long serialVersionUID = 1L;
-
- private transient Map<String, RuntimeEndpointReference> serviceRefs;
-// private transient List<String> referenceNames;
- private transient boolean initialized;
- private transient Map<String, String> initParams;
-
- public static final String SCRIPT_PATH = "/org.oasisopen.sca.componentContext.js";
-
- public ClientServlet() {
- this.serviceRefs = new HashMap<String, RuntimeEndpointReference>();
-// this.referenceNames = new ArrayList<String>();
-
- this.initParams = new HashMap<String, String>();
- // maybe use <binding.dwr> attributes to define the init params
- initParams.put("activeReverseAjaxEnabled", "true");
- }
-
- @Override
- public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
- super.service(req, res);
- }
-
- /**
- * Initialize the Servlet
- * There is a single instance of this Servlet which is registered
- * for multiple path mappings, but the init should only run once.
- */
- @Override
- public void init(ServletConfig servletConfig) throws ServletException {
- if (!initialized) {
- super.init(patchConfig(servletConfig));
- addScriptHandler();
- // initServices();
- initialized = true;
- }
- }
-
- /**
- * Add in the handler to process the HTTP get for /sca/scaDomain.js
- *
- * This wrappers the DWR Engine handler which returns the DWR engine.js script,
- * this wrappers that handler so as to add Tuscany specific header and footer code
- * to the DWR engine.js to define the Tuscany SCADomain control functions and
- * functions for each SCA service and reference that use <binding.dwr>.
- */
- private void addScriptHandler() {
-
- UrlProcessor urlProcessor = (UrlProcessor)getContainer().getBean(UrlProcessor.class.getName());
-
- final EngineHandler engineHandler =
- (EngineHandler)getContainer().getBean(PathConstants.URL_PREFIX + "/engine.js");
-
- final Handler scaDomainScriptHandler = new Handler() {
- public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
- PrintWriter out = response.getWriter();
- out.println("/** Apache Tuscany componentContext.js Header */");
-
- engineHandler.handle(request, response);
-
- tuscanyFooter(request, out);
- }
-
- };
-
- // add the scaDomainScriptHandler to the urlProcessor
- // bit of a hack, there's probably cleaner way to get it registered
- urlProcessor.afterContainerSetup(new Container() {
- public Object getBean(String name) {
- return scaDomainScriptHandler;
- }
- public Collection<?> getBeanNames() {
- return Arrays.asList(new String[] {PathConstants.URL_PREFIX + SCRIPT_PATH});
- }
- });
- }
-
- /**
- * Adds the JavaScript defining SCADomain, its control functions,
- * and functions for all the available SCA services and references.
- */
- private void tuscanyFooter(HttpServletRequest request, PrintWriter out) {
- out.println("if (SCA == undefined) var SCA = new Object();");
- out.println("if (SCA.componentContext == undefined) {");
- out.println(" SCA.componentContext = new Object();");
- out.println(" SCA.componentContext.serviceNames = [];");
- out.println(" SCA.componentContext.serviceProxys = [];");
- out.println(" SCA.componentContext.getService = function(serviceName){");
- out.println(" var i = SCA.componentContext.serviceNames.indexOf(serviceName);");
- out.println(" return SCA.componentContext.serviceProxys[i];");
- out.println(" };");
- out.println(" if (componentContext == undefined) var componentContext = SCA.componentContext;");
- out.println("}");
-
-// out.println("/** Apache Tuscany scaDomain.js Footer */");
-// out.println();
-// out.println("function scaDomain() { }");
-// out.println();
-// out.println("// SCA services");
-
- // Use the DWR remoter to generate the JavaScipt function for each SCA service
- Remoter remoter = (Remoter)getContainer().getBean(Remoter.class.getName());
-
-
- for (String serviceName : serviceRefs.keySet()) {
- String path = request.getServletPath() + "/" + serviceName;
- String serviceScript = remoter.generateInterfaceScript(serviceName, path);
- out.println(serviceScript);
- out.println("SCA.componentContext.serviceNames.push('" + serviceName + "');");
- out.println("SCA.componentContext.serviceProxys.push(" + serviceName + ");");
-// ServiceHolder s = services.get(serviceName);
-// final Class<?> iface = ((JavaInterface)s.cr.getInterfaceContract().getInterface()).getJavaClass();
-// for (Method m : iface.getMethods()) {
-// out.println("if (" + serviceName + " == null) var " + serviceName + " = {};");
-// out.println("SCA.componentContext.serviceNames.push('" + serviceName + "');");
-//// out.println("SCA.componentContext.serviceProxys.push(new JSONRpcClient('" + serviceName + "').Service);");
-// out.println(serviceName + "." + m.getName() + " = function(p0, callback) {");
-// out.println(" dwr.engine._execute(" + serviceName + "._path, '" + serviceName + "', '" + m.getName() + "', p0, callback);");
-// out.println(" }");
-// }
- }
-
-// if (referenceNames.size() > 0) {
-//
-// out.println("// SCA reverse ajax control functions");
-// out.println();
-// out.println("scaDomain.open = function() { dwr.engine.setActiveReverseAjax(true); };");
-// out.println("scaDomain.close = function() { dwr.engine.setActiveReverseAjax(false); };");
-//
-// out.println();
-// out.println("// SCA references");
-// out.println();
-//
-// // the JavaScript function for SCA references has an
-// // empty impl as it uses DWR severside "push"
-// for (String referenceName : referenceNames) {
-// out.println("function " + referenceName + "() { }");
-// }
-// }
-
- out.println();
- out.println("/** End of Apache Tuscany componentContext.js */");
- out.println();
- }
-
-// /**
-// * Add an SCA reference to be added to the DWR runtime
-// */
-// public void addReference(String name) {
-// referenceNames.add(name);
-// }
-
- /**
- * Add an SCA service to be added to the DWR runtime
- */
- public void addService(RuntimeEndpointReference epr) {
-
- CreatorManager creatorManager = (CreatorManager)getContainer().getBean(CreatorManager.class.getName());
- addService(creatorManager, epr);
- serviceRefs.put(epr.getReference().getName(), epr);
- }
-
- private void addService(CreatorManager creatorManager, final RuntimeEndpointReference epr) {
- final Class<?> iface = ((JavaInterface)epr.getComponentTypeReferenceInterfaceContract().getInterface()).getJavaClass();
-
- creatorManager.addCreator(epr.getReference().getName(), new AbstractCreator() {
- public Class<?> getType() {
- return iface;
- }
-
- public Object getInstance() throws InstantiationException {
- ExtensionPointRegistry registry = epr.getCompositeContext().getExtensionPointRegistry();
- ExtensibleProxyFactory proxyFactory = ExtensibleProxyFactory.getInstance(registry);
- return proxyFactory.createProxy(iface, epr);
- }
- });
- }
-
- /**
- * Patch the ServletConfig to enable setting init params for DWR
- * and so DWR can't see the Tuscany servlet's init params.
- */
- private ServletConfig patchConfig(final ServletConfig servletConfig) {
- ServletConfig patchedContext = new ServletConfig() {
- public String getInitParameter(String name) {
- return initParams.get(name);
- }
- public Enumeration<?> getInitParameterNames() {
- return Collections.enumeration(initParams.keySet());
- }
- public ServletContext getServletContext() {
- return servletConfig.getServletContext();
- }
- public String getServletName() {
- return servletConfig.getServletName();
- }
- };
- return patchedContext;
- }
-
-}
+/* + * 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. + */ + +package org.apache.tuscany.sca.implementation.web.client; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; +import org.apache.tuscany.sca.interfacedef.java.JavaInterface; +import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; +import org.directwebremoting.Container; +import org.directwebremoting.create.AbstractCreator; +import org.directwebremoting.extend.CreatorManager; +import org.directwebremoting.extend.Handler; +import org.directwebremoting.extend.Remoter; +import org.directwebremoting.servlet.DwrServlet; +import org.directwebremoting.servlet.EngineHandler; +import org.directwebremoting.servlet.PathConstants; +import org.directwebremoting.servlet.UrlProcessor; + +/** + * Tuscany customized DWR Servlet to implement support for the DWR binding + * + * Handles requests for SCA services and references that use <binding.dwr> + */ +public class ClientServlet extends DwrServlet { + private static final long serialVersionUID = 1L; + + private transient Map<String, RuntimeEndpointReference> serviceRefs; +// private transient List<String> referenceNames; + private transient boolean initialized; + private transient Map<String, String> initParams; + + public static final String SCRIPT_PATH = "/org.oasisopen.sca.componentContext.js"; + + public ClientServlet() { + this.serviceRefs = new HashMap<String, RuntimeEndpointReference>(); +// this.referenceNames = new ArrayList<String>(); + + this.initParams = new HashMap<String, String>(); + // maybe use <binding.dwr> attributes to define the init params + initParams.put("activeReverseAjaxEnabled", "true"); + } + + @Override + public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { + super.service(req, res); + } + + /** + * Initialize the Servlet + * There is a single instance of this Servlet which is registered + * for multiple path mappings, but the init should only run once. + */ + @Override + public void init(ServletConfig servletConfig) throws ServletException { + if (!initialized) { + super.init(patchConfig(servletConfig)); + addScriptHandler(); + // initServices(); + initialized = true; + } + } + + /** + * Add in the handler to process the HTTP get for /sca/scaDomain.js + * + * This wrappers the DWR Engine handler which returns the DWR engine.js script, + * this wrappers that handler so as to add Tuscany specific header and footer code + * to the DWR engine.js to define the Tuscany SCADomain control functions and + * functions for each SCA service and reference that use <binding.dwr>. + */ + private void addScriptHandler() { + + UrlProcessor urlProcessor = (UrlProcessor)getContainer().getBean(UrlProcessor.class.getName()); + + final EngineHandler engineHandler = + (EngineHandler)getContainer().getBean(PathConstants.URL_PREFIX + "/engine.js"); + + final Handler scaDomainScriptHandler = new Handler() { + public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException { + PrintWriter out = response.getWriter(); + out.println("/** Apache Tuscany componentContext.js Header */"); + + engineHandler.handle(request, response); + + tuscanyFooter(request, out); + } + + }; + + // add the scaDomainScriptHandler to the urlProcessor + // bit of a hack, there's probably cleaner way to get it registered + urlProcessor.afterContainerSetup(new Container() { + public Object getBean(String name) { + return scaDomainScriptHandler; + } + public Collection<?> getBeanNames() { + return Arrays.asList(new String[] {PathConstants.URL_PREFIX + SCRIPT_PATH}); + } + }); + } + + /** + * Adds the JavaScript defining SCADomain, its control functions, + * and functions for all the available SCA services and references. + */ + private void tuscanyFooter(HttpServletRequest request, PrintWriter out) { + out.println("if (SCA == undefined) var SCA = new Object();"); + out.println("if (SCA.componentContext == undefined) {"); + out.println(" SCA.componentContext = new Object();"); + out.println(" SCA.componentContext.serviceNames = [];"); + out.println(" SCA.componentContext.serviceProxys = [];"); + out.println(" SCA.componentContext.getService = function(serviceName){"); + out.println(" var i = SCA.componentContext.serviceNames.indexOf(serviceName);"); + out.println(" return SCA.componentContext.serviceProxys[i];"); + out.println(" };"); + out.println(" if (componentContext == undefined) var componentContext = SCA.componentContext;"); + out.println("}"); + +// out.println("/** Apache Tuscany scaDomain.js Footer */"); +// out.println(); +// out.println("function scaDomain() { }"); +// out.println(); +// out.println("// SCA services"); + + // Use the DWR remoter to generate the JavaScipt function for each SCA service + Remoter remoter = (Remoter)getContainer().getBean(Remoter.class.getName()); + + + for (String serviceName : serviceRefs.keySet()) { + String path = request.getServletPath() + "/" + serviceName; + String serviceScript = remoter.generateInterfaceScript(serviceName, path); + out.println(serviceScript); + out.println("SCA.componentContext.serviceNames.push('" + serviceName + "');"); + out.println("SCA.componentContext.serviceProxys.push(" + serviceName + ");"); +// ServiceHolder s = services.get(serviceName); +// final Class<?> iface = ((JavaInterface)s.cr.getInterfaceContract().getInterface()).getJavaClass(); +// for (Method m : iface.getMethods()) { +// out.println("if (" + serviceName + " == null) var " + serviceName + " = {};"); +// out.println("SCA.componentContext.serviceNames.push('" + serviceName + "');"); +//// out.println("SCA.componentContext.serviceProxys.push(new JSONRpcClient('" + serviceName + "').Service);"); +// out.println(serviceName + "." + m.getName() + " = function(p0, callback) {"); +// out.println(" dwr.engine._execute(" + serviceName + "._path, '" + serviceName + "', '" + m.getName() + "', p0, callback);"); +// out.println(" }"); +// } + } + +// if (referenceNames.size() > 0) { +// +// out.println("// SCA reverse ajax control functions"); +// out.println(); +// out.println("scaDomain.open = function() { dwr.engine.setActiveReverseAjax(true); };"); +// out.println("scaDomain.close = function() { dwr.engine.setActiveReverseAjax(false); };"); +// +// out.println(); +// out.println("// SCA references"); +// out.println(); +// +// // the JavaScript function for SCA references has an +// // empty impl as it uses DWR severside "push" +// for (String referenceName : referenceNames) { +// out.println("function " + referenceName + "() { }"); +// } +// } + + out.println(); + out.println("/** End of Apache Tuscany componentContext.js */"); + out.println(); + } + +// /** +// * Add an SCA reference to be added to the DWR runtime +// */ +// public void addReference(String name) { +// referenceNames.add(name); +// } + + /** + * Add an SCA service to be added to the DWR runtime + */ + public void addService(RuntimeEndpointReference epr) { + + CreatorManager creatorManager = (CreatorManager)getContainer().getBean(CreatorManager.class.getName()); + addService(creatorManager, epr); + serviceRefs.put(epr.getReference().getName(), epr); + } + + private void addService(CreatorManager creatorManager, final RuntimeEndpointReference epr) { + final Class<?> iface = ((JavaInterface)epr.getComponentTypeReferenceInterfaceContract().getInterface()).getJavaClass(); + + creatorManager.addCreator(epr.getReference().getName(), new AbstractCreator() { + public Class<?> getType() { + return iface; + } + + public Object getInstance() throws InstantiationException { + ExtensionPointRegistry registry = epr.getCompositeContext().getExtensionPointRegistry(); + ExtensibleProxyFactory proxyFactory = ExtensibleProxyFactory.getInstance(registry); + return proxyFactory.createProxy(iface, epr); + } + }); + } + + /** + * Patch the ServletConfig to enable setting init params for DWR + * and so DWR can't see the Tuscany servlet's init params. + */ + private ServletConfig patchConfig(final ServletConfig servletConfig) { + ServletConfig patchedContext = new ServletConfig() { + public String getInitParameter(String name) { + return initParams.get(name); + } + public Enumeration<?> getInitParameterNames() { + return Collections.enumeration(initParams.keySet()); + } + public ServletContext getServletContext() { + return servletConfig.getServletContext(); + } + public String getServletName() { + return servletConfig.getServletName(); + } + }; + return patchedContext; + } + +} diff --git a/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java b/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java index 049cda2eb8..9c95eaea3b 100644 --- a/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java +++ b/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java @@ -1,70 +1,70 @@ -/*
- * 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.
- */
-
-package org.apache.tuscany.sca.implementation.web.client;
-
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.host.http.ServletHostHelper;
-import org.apache.tuscany.sca.implementation.web.WebImplementation;
-import org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.provider.ImplementationProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
-
-public class JSClientExtensionPointImpl implements ClientExtensionPoint {
-
- private ServletHost servletHost;
-
- public JSClientExtensionPointImpl(ExtensionPointRegistry extensionPoints) {
- this.servletHost = ServletHostHelper.getServletHost(extensionPoints);
- }
-
- public ImplementationProvider createImplementationProvider(RuntimeComponent component, WebImplementation implementation) {
- ClientServlet clientServlet = new ClientServlet();
- servletHost.addServletMapping(ClientServlet.SCRIPT_PATH, clientServlet);
- servletHost.addServletMapping(ClientServlet.SCRIPT_PATH + "/" + component.getName() + "/*", clientServlet);
-
- if (component.getReferences().size() > 0) {
- for (ComponentReference cr : component.getReferences()) {
- for (EndpointReference epr : cr.getEndpointReferences()) {
- clientServlet.addService((RuntimeEndpointReference)epr);
- }
- }
- }
-
- return new ImplementationProvider() {
- public Invoker createInvoker(RuntimeComponentService arg0, Operation arg1) {
- return null;
- }
- public void start() {
- }
- public void stop() {
- }
- public boolean supportsOneWayInvocation() {
- return false;
- }
- };
- }
-}
+/* + * 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. + */ + +package org.apache.tuscany.sca.implementation.web.client; + +import org.apache.tuscany.sca.assembly.ComponentReference; +import org.apache.tuscany.sca.assembly.EndpointReference; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.host.http.ServletHost; +import org.apache.tuscany.sca.host.http.ServletHostHelper; +import org.apache.tuscany.sca.implementation.web.WebImplementation; +import org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.provider.ImplementationProvider; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentService; +import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; + +public class JSClientExtensionPointImpl implements ClientExtensionPoint { + + private ServletHost servletHost; + + public JSClientExtensionPointImpl(ExtensionPointRegistry extensionPoints) { + this.servletHost = ServletHostHelper.getServletHost(extensionPoints); + } + + public ImplementationProvider createImplementationProvider(RuntimeComponent component, WebImplementation implementation) { + ClientServlet clientServlet = new ClientServlet(); + servletHost.addServletMapping(ClientServlet.SCRIPT_PATH, clientServlet); + servletHost.addServletMapping(ClientServlet.SCRIPT_PATH + "/" + component.getName() + "/*", clientServlet); + + if (component.getReferences().size() > 0) { + for (ComponentReference cr : component.getReferences()) { + for (EndpointReference epr : cr.getEndpointReferences()) { + clientServlet.addService((RuntimeEndpointReference)epr); + } + } + } + + return new ImplementationProvider() { + public Invoker createInvoker(RuntimeComponentService arg0, Operation arg1) { + return null; + } + public void start() { + } + public void stop() { + } + public boolean supportsOneWayInvocation() { + return false; + } + }; + } +} |