Author: antelder
Date: Fri Nov 27 08:58:06 2009
New Revision: 884790
URL: http://svn.apache.org/viewvc?rev=884790&view=rev
Log:
Change implementation-web to have an extension point to support pluggable
clients instead of having impl-web-client be a replacement impl-web runtime
Added:
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint
- copied, changed from r884475,
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/ClientExtensionPoint.java
Removed:
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientImplementationProvider.java
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/ClientProviderFactory.java
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
Modified:
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/xml/WebImplementationProcessor.java
Added:
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java?rev=884790&view=auto
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java
(added)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/java/org/apache/tuscany/sca/implementation/web/client/JSClientExtensionPointImpl.java
Fri Nov 27 08:58:06 2009
@@ -0,0 +1,72 @@
+/*
+ * 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.util.List;
+
+import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
+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;
+
+public class JSClientExtensionPointImpl implements ClientExtensionPoint {
+
+ private ServletHost servletHost;
+
+ public JSClientExtensionPointImpl(ExtensionPointRegistry extensionPoints) {
+ ServletHostExtensionPoint servletHosts =
extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
+ List<ServletHost> hosts = servletHosts.getServletHosts();
+ if (!hosts.isEmpty()) {
+ this.servletHost = hosts.get(0);
+ }
+ }
+
+ 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()) {
+ clientServlet.addService(cr, component);
+ }
+ }
+
+ return new ImplementationProvider() {
+ public Invoker createInvoker(RuntimeComponentService arg0,
Operation arg1) {
+ return null;
+ }
+ public void start() {
+ }
+ public void stop() {
+ }
+ public boolean supportsOneWayInvocation() {
+ return false;
+ }
+ };
+ }
+}
Copied:
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint
(from r884475,
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory)
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint?p2=tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint&p1=tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory&r1=884475&r2=884790&rev=884790&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
(original)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web-client/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint
Fri Nov 27 08:58:06 2009
@@ -16,7 +16,7 @@
# under the License.
# Implementation class for the implementation extension
-org.apache.tuscany.sca.implementation.web.client.ClientProviderFactory;model=org.apache.tuscany.sca.implementation.web.WebImplementation;ranking=1234
+org.apache.tuscany.sca.implementation.web.client.JSClientExtensionPointImpl
Added:
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/ClientExtensionPoint.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/ClientExtensionPoint.java?rev=884790&view=auto
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/ClientExtensionPoint.java
(added)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/ClientExtensionPoint.java
Fri Nov 27 08:58:06 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.runtime;
+
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.apache.tuscany.sca.provider.ImplementationProvider;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+
+public interface ClientExtensionPoint {
+
+ public ImplementationProvider
createImplementationProvider(RuntimeComponent component, WebImplementation
implementation);
+
+}
Modified:
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java?rev=884790&r1=884789&r2=884790&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
Fri Nov 27 08:58:06 2009
@@ -34,6 +34,7 @@
public class WebImplementationProviderFactory implements
ImplementationProviderFactory<WebImplementation> {
private ServletHost servletHost;
+ private ClientExtensionPoint jsClient;
public WebImplementationProviderFactory(ExtensionPointRegistry
extensionPoints) {
ServletHostExtensionPoint servletHosts =
extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
@@ -41,25 +42,33 @@
if (!hosts.isEmpty()) {
this.servletHost = hosts.get(0);
}
+
+ jsClient =
extensionPoints.getExtensionPoint(ClientExtensionPoint.class);
}
public ImplementationProvider
createImplementationProvider(RuntimeComponent component, WebImplementation
implementation) {
servletHost.setAttribute("org.apache.tuscany.sca.implementation.web.RuntimeComponent",
component);
servletHost.setAttribute("org.oasisopen.sca.ComponentContext", new
ComponentContextProxy(component));
- return new ImplementationProvider() {
-
- public Invoker createInvoker(RuntimeComponentService arg0,
Operation arg1) {
- throw new UnsupportedOperationException("Components using
implementation.web have no services");
- }
- public void start() {
- }
- public void stop() {
- }
- public boolean supportsOneWayInvocation() {
- return false;
- }
- };
+ ImplementationProvider impl;
+ if (jsClient != null && implementation.getJSClient()) {
+ impl = jsClient.createImplementationProvider(component,
implementation);
+ } else {
+ impl = new ImplementationProvider() {
+
+ public Invoker createInvoker(RuntimeComponentService arg0,
Operation arg1) {
+ throw new UnsupportedOperationException("Components using
implementation.web have no services");
+ }
+ public void start() {
+ }
+ public void stop() {
+ }
+ public boolean supportsOneWayInvocation() {
+ return false;
+ }
+ };
+ }
+ return impl;
}
public Class<WebImplementation> getModelType() {
Modified:
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java?rev=884790&r1=884789&r2=884790&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/WebImplementation.java
Fri Nov 27 08:58:06 2009
@@ -42,4 +42,6 @@
*/
void setWebURI(String webappURI);
+ boolean getJSClient();
+ void setJSClient(boolean jsCLient);
}
Modified:
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java?rev=884790&r1=884789&r2=884790&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
Fri Nov 27 08:58:06 2009
@@ -42,6 +42,7 @@
private boolean unresolved;
private String webURI;
+ private boolean jsClient = true;
/**
* Constructs a new Web implementation.
@@ -132,4 +133,12 @@
return newProperty;
}
+ public boolean getJSClient() {
+ return jsClient;
+ }
+
+ public void setJSClient(boolean jsClient) {
+ this.jsClient = jsClient;
+ }
+
}
Modified:
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/xml/WebImplementationProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/xml/WebImplementationProcessor.java?rev=884790&r1=884789&r2=884790&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/xml/WebImplementationProcessor.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/xml/WebImplementationProcessor.java
Fri Nov 27 08:58:06 2009
@@ -81,6 +81,11 @@
implementation.setURI(webURI);
}
+ String jsClient = reader.getAttributeValue(Constants.SCA11_TUSCANY_NS,
"jsClient");
+ if (jsClient != null) {
+ implementation.setJSClient(Boolean.parseBoolean(jsClient));
+ }
+
// Skip to end element
while (reader.hasNext()) {
if (reader.next() == END_ELEMENT &&
IMPLEMENTATION_WEB.equals(reader.getName())) {