From e1539a531da3192dac843520d77c8c76e407a402 Mon Sep 17 00:00:00 2001 From: lresende Date: Sat, 21 Nov 2009 07:55:07 +0000 Subject: Moving 1.x tags git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@882849 13f79535-47bb-0310-9956-ffa450edef68 --- .../celtix/assembly/WebServiceAssemblyFactory.java | 32 + .../binding/celtix/assembly/WebServiceBinding.java | 80 ++ .../impl/WebServiceAssemblyFactoryImpl.java | 43 + .../assembly/impl/WebServiceBindingImpl.java | 184 +++ .../celtix/builder/ExternalWebServiceBuilder.java | 48 + .../builder/ExternalWebServiceWireBuilder.java | 35 + .../builder/WebServiceEntryPointBuilder.java | 47 + .../config/ExternalWebServiceContextFactory.java | 35 + .../config/WebServiceEntryPointContextFactory.java | 58 + .../handler/CeltixEntryPointContextImpl.java | 263 ++++ .../celtix/handler/ExternalWebServiceClient.java | 199 +++ .../handler/ExternalWebServiceTargetInvoker.java | 115 ++ .../binding/celtix/handler/io/NodeDataReader.java | 170 +++ .../binding/celtix/handler/io/NodeDataWriter.java | 179 +++ .../handler/io/RawByteArrayOutputStream.java | 28 + .../celtix/handler/io/SCADataBindingCallback.java | 91 ++ .../handler/io/SCAServerDataBindingCallback.java | 61 + .../binding/celtix/loader/TuscanyWSDLManager.java | 88 ++ .../celtix/loader/WebServiceBindingLoader.java | 99 ++ .../src/main/resources/META-INF/LICENSE.txt | 1277 ++++++++++++++++++++ .../src/main/resources/META-INF/NOTICE | 18 + .../src/main/resources/META-INF/README.txt | 35 + .../src/main/resources/system.fragment | 41 + .../WebServiceAssemblyFactoryTestCase.java | 110 ++ .../celtix/handler/io/NodeDataWriterTestCase.java | 103 ++ .../loader/WebServiceBindingLoaderTestCase.java | 54 + .../src/test/resources/wsdl/hello_world.wsdl | 178 +++ 27 files changed, 3671 insertions(+) create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactory.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceBinding.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceAssemblyFactoryImpl.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceBindingImpl.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceBuilder.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceWireBuilder.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/ExternalWebServiceContextFactory.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/TuscanyWSDLManager.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/LICENSE.txt create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/NOTICE create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/README.txt create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/system.fragment create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java create mode 100644 sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl (limited to 'sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src') diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactory.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactory.java new file mode 100644 index 0000000000..46d5cac4dd --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactory.java @@ -0,0 +1,32 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.assembly; + +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.model.assembly.AssemblyFactory; + +/** + * The Factory for the model. + */ +public interface WebServiceAssemblyFactory extends AssemblyFactory { + + /** + * Returns a new WebServiceBinding. + */ + WebServiceBinding createWebServiceBinding(WSDLDefinitionRegistry wsdlRegistry); + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceBinding.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceBinding.java new file mode 100644 index 0000000000..82dd08ef0d --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/WebServiceBinding.java @@ -0,0 +1,80 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.assembly; + +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.Service; + +import commonj.sdo.helper.TypeHelper; + +import org.apache.tuscany.common.resource.ResourceLoader; +import org.apache.tuscany.model.assembly.Binding; +import org.objectweb.celtix.Bus; + +/** + * Represents a Web service binding. + */ +public interface WebServiceBinding extends Binding { + + /** + * Set the URI of the WSDL port for this binding. + * + * @param portURI the URI of the WSDL port + */ + void setPortURI(String portURI); + + /** + * Returns the WSDL port defining this binding. + */ + Port getWSDLPort(); + + /** + * Returns the WSDL service defining this binding. + */ + Service getWSDLService(); + + /** + * Returns the WSDL definition containing the WSDL port. + * + * @return the WSDL definition containing the WSDL port + */ + Definition getWSDLDefinition(); + + /** + * Sets the WSDL port defining this binding. + */ + void setWSDLPort(Port value); + + /** + * Sets the WSDL definition containing the WSDL port. + * + * @param definition + */ + void setWSDLDefinition(Definition definition); + + TypeHelper getTypeHelper(); + + void setTypeHelper(TypeHelper typeHelper); + + ResourceLoader getResourceLoader(); + + void setResourceLoader(ResourceLoader resourceLoader); + + Bus getBus(); + void setBus(Bus b); +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceAssemblyFactoryImpl.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceAssemblyFactoryImpl.java new file mode 100644 index 0000000000..1288f67719 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceAssemblyFactoryImpl.java @@ -0,0 +1,43 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.assembly.impl; + +import org.apache.tuscany.binding.celtix.assembly.WebServiceAssemblyFactory; +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl; + +/** + * An implementation of the model Factory. + */ +public class WebServiceAssemblyFactoryImpl extends AssemblyFactoryImpl implements WebServiceAssemblyFactory { + + /** + * Creates an instance of the factory. + */ + public WebServiceAssemblyFactoryImpl() { + super(); + } + + /** + * @see org.apache.tuscany.binding.celtix.assembly.WebServiceAssemblyFactory#createWebServiceBinding() + */ + public WebServiceBinding createWebServiceBinding(WSDLDefinitionRegistry wsdlRegistry) { + return new WebServiceBindingImpl(wsdlRegistry); + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceBindingImpl.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceBindingImpl.java new file mode 100644 index 0000000000..477d2b656a --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/assembly/impl/WebServiceBindingImpl.java @@ -0,0 +1,184 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.assembly.impl; + +import java.util.Collection; +import java.util.List; +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.Service; +import javax.xml.namespace.QName; + +import commonj.sdo.helper.TypeHelper; +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.common.resource.ResourceLoader; +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.model.assembly.AssemblyContext; +import org.apache.tuscany.model.assembly.impl.BindingImpl; +import org.objectweb.celtix.Bus; + +/** + * An implementation of WebServiceBinding. + */ +public class WebServiceBindingImpl extends BindingImpl implements WebServiceBinding { + + private WSDLDefinitionRegistry wsdlRegistry; + + private Definition definition; + private Port port; + private Service service; + private String portURI; + private TypeHelper typeHelper; + private ResourceLoader resourceLoader; + private Bus bus; + + /** + * Constructor + */ + protected WebServiceBindingImpl(WSDLDefinitionRegistry reg) { + wsdlRegistry = reg; + } + + /** + * @see org.apache.tuscany.binding.celtix.assembly.WebServiceBinding#getWSDLPort() + */ + public Port getWSDLPort() { + return port; + } + + public Service getWSDLService() { + return service; + } + + + + /** + * @see org.apache.tuscany.binding.celtix.assembly.WebServiceBinding#setWSDLPort(javax.wsdl.Port) + */ + public void setWSDLPort(Port value) { + checkNotFrozen(); + port = value; + } + + /** + * @see org.apache.tuscany.binding.celtix.assembly.WebServiceBinding#getWSDLDefinition() + */ + public Definition getWSDLDefinition() { + return definition; + } + + /** + * @see WebServiceBinding#setWSDLDefinition(javax.wsdl.Definition) + */ + public void setWSDLDefinition(Definition def) { + checkNotFrozen(); + definition = def; + } + + /** + * @param uri The portURI to set. + */ + public void setPortURI(String uri) { + portURI = uri; + } + + public TypeHelper getTypeHelper() { + return typeHelper; + } + + public void setTypeHelper(TypeHelper pTypeHelper) { + this.typeHelper = pTypeHelper; + } + + public ResourceLoader getResourceLoader() { + return resourceLoader; + } + + public void setResourceLoader(ResourceLoader resourceLoader) { + this.resourceLoader = resourceLoader; + } + + /** + * @see BindingImpl#initialize(org.apache.tuscany.model.assembly.AssemblyContext) + */ + @SuppressWarnings("unchecked") + public void initialize(AssemblyContext modelContext) { + if (isInitialized()) { + return; + } + super.initialize(modelContext); + + // Get the WSDL port namespace and name + if (port == null && portURI != null) { + int h = portURI.indexOf('#'); + String portNamespace = portURI.substring(0, h); + String serviceName; + String portName; + + String fragment = portURI.substring(h + 1); + if (fragment.startsWith("wsdl.endpoint(") && fragment.endsWith(")")) { + fragment = fragment.substring(14, fragment.length() - 1); + int slash = fragment.indexOf('/'); + if (slash != -1) { + serviceName = fragment.substring(0, slash); + portName = fragment.substring(slash + 1); + } else { + serviceName = null; + portName = fragment; + } + } else { + serviceName = null; + portName = fragment; + } + + // Load the WSDL definitions for the given namespace + List definitions = wsdlRegistry.getDefinitionsForNamespace(portNamespace, resourceLoader); + if (definitions == null) { + throw new IllegalArgumentException("Cannot find WSDL definition for " + portNamespace); + } + for (Definition def : definitions) { + + // Find the port with the given name + for (Service serv : (Collection)def.getServices().values()) { + QName sqn = serv.getQName(); + if (serviceName != null + && !serviceName.equals(sqn.getLocalPart())) { + continue; + } + + Port p = serv.getPort(portName); + if (p != null) { + service = serv; + definition = def; + port = p; + return; + } + } + } + throw new IllegalArgumentException("Cannot find WSDL port " + portURI); + } + } + + public Bus getBus() { + return bus; + } + + public void setBus(Bus b) { + bus = b; + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceBuilder.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceBuilder.java new file mode 100644 index 0000000000..99ffaa5d8a --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceBuilder.java @@ -0,0 +1,48 @@ +/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.builder; + +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.binding.celtix.config.ExternalWebServiceContextFactory; +import org.apache.tuscany.binding.celtix.handler.ExternalWebServiceClient; +import org.apache.tuscany.core.extension.ExternalServiceBuilderSupport; +import org.apache.tuscany.core.extension.ExternalServiceContextFactory; +import org.apache.tuscany.core.injection.SingletonObjectFactory; +import org.apache.tuscany.model.assembly.ExternalService; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; + + +/** + * Creates a ContextFactoryBuilder for an external service configured with the {@link + * WebServiceBinding} + * + * @version $Rev$ $Date$ + */ +@Scope("MODULE") +public class ExternalWebServiceBuilder extends ExternalServiceBuilderSupport { + + @Init(eager = true) + public void init() throws Exception { + super.init(); + } + + protected ExternalServiceContextFactory createExternalServiceContextFactory( + ExternalService externalService) { + ExternalWebServiceClient externalWebServiceClient = new ExternalWebServiceClient(externalService); + return new ExternalWebServiceContextFactory(externalService.getName(), + new SingletonObjectFactory(externalWebServiceClient)); + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceWireBuilder.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceWireBuilder.java new file mode 100644 index 0000000000..e16456f80c --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/ExternalWebServiceWireBuilder.java @@ -0,0 +1,35 @@ +/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.builder; + +import java.lang.reflect.Method; + +import org.apache.tuscany.binding.celtix.config.ExternalWebServiceContextFactory; +import org.apache.tuscany.binding.celtix.handler.ExternalWebServiceTargetInvoker; +import org.apache.tuscany.core.context.QualifiedName; +import org.apache.tuscany.core.context.ScopeContext; +import org.apache.tuscany.core.extension.WireBuilderSupport; +import org.apache.tuscany.core.wire.TargetInvoker; +import org.osoa.sca.annotations.Scope; + + +@Scope("MODULE") +public class ExternalWebServiceWireBuilder extends WireBuilderSupport { + + protected TargetInvoker createInvoker(QualifiedName targetName, Method operation, + ScopeContext context, boolean downScope) { + return new ExternalWebServiceTargetInvoker(targetName, operation, context); + } +} \ No newline at end of file diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java new file mode 100644 index 0000000000..705b8c9784 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java @@ -0,0 +1,47 @@ +/* Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.builder; + +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.binding.celtix.config.WebServiceEntryPointContextFactory; + +import org.apache.tuscany.core.extension.EntryPointBuilderSupport; +import org.apache.tuscany.core.extension.EntryPointContextFactory; +import org.apache.tuscany.core.message.MessageFactory; +import org.apache.tuscany.core.system.annotation.Autowire; +import org.apache.tuscany.core.webapp.ServletHost; +import org.apache.tuscany.model.assembly.EntryPoint; +import org.osoa.sca.annotations.Scope; + +/** + * Creates a ContextFactory for an entry point configured with the {@link WebServiceBinding} + * + * @version $Rev$ $Date$ + */ +@Scope("MODULE") +public class WebServiceEntryPointBuilder extends EntryPointBuilderSupport { + ServletHost tomcatHost; + + @Autowire + public void setTomcatHost(ServletHost tomcatHost) { + this.tomcatHost = tomcatHost; + } + + + protected EntryPointContextFactory createEntryPointContextFactory(EntryPoint entryPoint, + MessageFactory msgFactory) { + return new WebServiceEntryPointContextFactory(tomcatHost, entryPoint, msgFactory); + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/ExternalWebServiceContextFactory.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/ExternalWebServiceContextFactory.java new file mode 100644 index 0000000000..52fedd4b56 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/ExternalWebServiceContextFactory.java @@ -0,0 +1,35 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.config; + +import org.apache.tuscany.core.builder.ObjectFactory; +import org.apache.tuscany.core.extension.ExternalServiceContextFactory; + +/** + * Creates instances of {@link org.apache.tuscany.core.context.ExternalServiceContext} configured with the + * appropriate invocation chains and bindings. This implementation serves as a marker for {@link + * org.apache.tuscany.binding.celtix.builder.ExternalWebServiceWireBuilder} + * + * @version $Rev$ $Date$ + */ +public class ExternalWebServiceContextFactory extends ExternalServiceContextFactory { + + public ExternalWebServiceContextFactory(String name, ObjectFactory objectFactory) { + super(name, objectFactory); + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java new file mode 100644 index 0000000000..39e0b10053 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java @@ -0,0 +1,58 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.config; + +import org.apache.tuscany.binding.celtix.handler.CeltixEntryPointContextImpl; +import org.apache.tuscany.core.builder.ContextCreationException; +import org.apache.tuscany.core.context.EntryPointContext; +import org.apache.tuscany.core.extension.EntryPointContextFactory; +import org.apache.tuscany.core.message.MessageFactory; +import org.apache.tuscany.core.webapp.ServletHost; +import org.apache.tuscany.model.assembly.EntryPoint; + +/** + * Creates instances of {@link org.apache.tuscany.core.context.EntryPointContext} configured with the + * appropriate invocation chains and bindings. This implementation serves as a marker for + * + * @version $Rev$ $Date$ + */ +public class WebServiceEntryPointContextFactory extends EntryPointContextFactory { + MessageFactory messageFactory; + EntryPoint entryPoint; + ServletHost servlet; + + public WebServiceEntryPointContextFactory(ServletHost tomcatHost, + EntryPoint entryPoint, + MessageFactory mf) { + super(entryPoint.getName(), mf); + messageFactory = mf; + this.entryPoint = entryPoint; + servlet = tomcatHost; + } + + public EntryPointContext createContext() throws ContextCreationException { + if (servlet == null) { + return new CeltixEntryPointContextImpl(entryPoint, + getSourceWireFactories().get(0), + messageFactory); + } else { + //REVISIT - running in tomcat + return null; + } + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java new file mode 100644 index 0000000000..5b2e0df3d6 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java @@ -0,0 +1,263 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler; + +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executor; + +import javax.jws.soap.SOAPBinding.Style; +import javax.wsdl.Binding; +import javax.wsdl.BindingInput; +import javax.wsdl.BindingOperation; +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.extensions.ExtensibilityElement; +import javax.wsdl.extensions.soap.SOAPAddress; +import javax.wsdl.extensions.soap.SOAPBody; +import javax.xml.namespace.QName; +import javax.xml.ws.WebServiceProvider; + +import commonj.sdo.helper.TypeHelper; + +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.binding.celtix.handler.io.SCAServerDataBindingCallback; +import org.apache.tuscany.core.builder.BuilderConfigException; +import org.apache.tuscany.core.context.ContextInitException; +import org.apache.tuscany.core.context.CoreRuntimeException; +import org.apache.tuscany.core.context.impl.EntryPointContextImpl; +import org.apache.tuscany.core.message.MessageFactory; +import org.apache.tuscany.core.wire.SourceWireFactory; +import org.apache.tuscany.model.assembly.EntryPoint; +import org.objectweb.celtix.Bus; +import org.objectweb.celtix.bindings.DataBindingCallback; +import org.objectweb.celtix.bindings.ServerBinding; +import org.objectweb.celtix.bindings.ServerBindingEndpointCallback; +import org.objectweb.celtix.bindings.ServerDataBindingCallback; +import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache; +import org.objectweb.celtix.bus.bindings.WSDLOperationInfo; +import org.objectweb.celtix.context.ObjectMessageContext; +import org.objectweb.celtix.ws.addressing.AttributedURIType; +import org.objectweb.celtix.ws.addressing.EndpointReferenceType; +import org.objectweb.celtix.wsdl.EndpointReferenceUtils; +import org.osoa.sca.annotations.Destroy; +import org.xmlsoap.schemas.wsdl.http.AddressType; + +public class CeltixEntryPointContextImpl extends EntryPointContextImpl + implements ServerBindingEndpointCallback { + + EntryPoint entry; + private Bus bus; + private Port port; + private TypeHelper typeHelper; + private WSDLMetaDataCache wsdlCache; + private ServerBinding serverBinding; + private Object entryPointProxy; + private WebServiceBinding wsBinding; + + private Map opMap = + new ConcurrentHashMap(); + + + public CeltixEntryPointContextImpl(EntryPoint entry, + SourceWireFactory sourceWireFactory, + MessageFactory messageFactory) + throws ContextInitException { + + super(entry.getName(), sourceWireFactory, messageFactory); + this.entry = entry; + } + + public void start() throws ContextInitException { + super.start(); + + entryPointProxy = getInstance(null); + wsBinding = (WebServiceBinding)entry.getBindings().get(0); + bus = wsBinding.getBus(); + typeHelper = wsBinding.getTypeHelper(); + Definition wsdlDef = wsBinding.getWSDLDefinition(); + port = wsBinding.getWSDLPort(); + wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort()); + + initOperationMap(wsdlDef); + + String key = wsdlDef.getDocumentBaseURI(); + URL url; + try { + url = new URL(key); + } catch (MalformedURLException e) { + throw new ContextInitException(e); + } + + EndpointReferenceType reference = EndpointReferenceUtils.getEndpointReference(url, + wsBinding.getWSDLService().getQName(), + wsBinding.getWSDLPort().getName()); + + AttributedURIType address = new AttributedURIType(); + + String bindingId = null; + Binding binding = wsBinding.getWSDLPort().getBinding(); + if (null != binding) { + List list = binding.getExtensibilityElements(); + if (!list.isEmpty()) { + bindingId = ((ExtensibilityElement)list.get(0)).getElementType().getNamespaceURI(); + } + } + List list = wsBinding.getWSDLPort().getExtensibilityElements(); + for (Object ep : list) { + ExtensibilityElement ext = (ExtensibilityElement)ep; + if (ext instanceof SOAPAddress) { + if (bindingId == null) { + bindingId = ((SOAPAddress)ext).getLocationURI(); + } + address.setValue(((SOAPAddress)ext).getLocationURI()); + } + if (ext instanceof AddressType) { + if (bindingId == null) { + bindingId = ((AddressType)ext).getLocation(); + } + address.setValue(((AddressType)ext).getLocation()); + } + } + if (reference.getAddress() == null) { + //REVIST - bug in Celtix that the HTTP transport won't find the address correctly + reference.setAddress(address); + } + + try { + serverBinding = bus.getBindingManager().getBindingFactory(bindingId).createServerBinding( + reference, this); + serverBinding.activate(); + } catch (Exception e) { + throw new ContextInitException(e); + } + } + + @Destroy + public void stop() throws CoreRuntimeException { + System.out.println("In stop"); + super.stop(); + } + + private void initOperationMap(Definition def) { + List ops = port.getBinding().getBindingOperations(); + Iterator opIt = ops.iterator(); + while (opIt.hasNext()) { + BindingOperation op = (BindingOperation)opIt.next(); + BindingInput bindingInput = op.getBindingInput(); + List elements = bindingInput.getExtensibilityElements(); + QName qn = new QName(def.getTargetNamespace(), op.getName()); + for (Iterator i = elements.iterator(); i.hasNext();) { + Object element = i.next(); + if (SOAPBody.class.isInstance(element)) { + SOAPBody body = (SOAPBody)element; + if (body.getNamespaceURI() != null) { + qn = new QName(body.getNamespaceURI(), op.getName()); + } + } + } + + ServerDataBindingCallback cb = getDataBindingCallback(qn, null, + DataBindingCallback.Mode.PARTS); + opMap.put(qn, cb); + if (!"".equals(cb.getRequestWrapperQName().getLocalPart())) { + opMap.put(cb.getRequestWrapperQName(), cb); + } + } + } + public ServerDataBindingCallback getDataBindingCallback(QName operationName, + ObjectMessageContext objContext, + DataBindingCallback.Mode mode) { + if (opMap.containsKey(operationName)) { + return opMap.get(operationName); + } + WSDLOperationInfo opInfo = wsdlCache.getOperationInfo(operationName.getLocalPart()); + if (opInfo == null) { + //REVISIT - really map the operation name to a WSDL operation + for (String opName : wsdlCache.getAllOperationInfo().keySet()) { + if (operationName.getLocalPart().equalsIgnoreCase(opName)) { + opInfo = wsdlCache.getOperationInfo(opName); + break; + } + } + } + boolean inout = false; + + + Class serviceInterface = getServiceInterface(); + Method meth = getMethod(serviceInterface, operationName.getLocalPart()); + + return new SCAServerDataBindingCallback(opInfo, + typeHelper, + wsBinding.getResourceLoader(), + inout, + meth, + entryPointProxy); + } + protected Method getMethod(Class serviceInterface, String operationName) { + // Note: this doesn't support overloaded operations + Method[] methods = serviceInterface.getMethods(); + for (Method m : methods) { + if (m.getName().equals(operationName)) { + return m; + } + // tolerate WSDL with capatalized operation name + StringBuilder sb = new StringBuilder(operationName); + sb.setCharAt(0, Character.toLowerCase(sb.charAt(0))); + if (m.getName().equals(sb.toString())) { + return m; + } + } + throw new BuilderConfigException("no operation named " + operationName + + " found on service interface: " + serviceInterface.getName()); + } + + + public DataBindingCallback getFaultDataBindingCallback(ObjectMessageContext objContext) { + // REVISIT - what to do about faults + return null; + } + + public Map getOperations() { + return opMap; + } + + public Style getStyle() { + return wsdlCache.getStyle(); + } + public DataBindingCallback.Mode getServiceMode() { + return DataBindingCallback.Mode.PARTS; + } + + public WebServiceProvider getWebServiceProvider() { + //not needed I think + return null; + } + + public Executor getExecutor() { + //Let the transport handle it (or it goes to the Bus default wq + //if the transport cannot handle it + return null; + } + +} + diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java new file mode 100644 index 0000000000..01c571a611 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java @@ -0,0 +1,199 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler; + + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.List; +import javax.jws.WebParam.Mode; +import javax.wsdl.Binding; +import javax.wsdl.Definition; +import javax.wsdl.WSDLException; +import javax.wsdl.extensions.ExtensibilityElement; +import javax.wsdl.extensions.soap.SOAPAddress; +import javax.xml.ws.Holder; +import javax.xml.ws.ProtocolException; + +import commonj.sdo.helper.TypeHelper; +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.binding.celtix.handler.io.SCADataBindingCallback; +import org.apache.tuscany.core.builder.BuilderException; +import org.apache.tuscany.core.builder.BuilderInitException; +import org.apache.tuscany.model.assembly.ExternalService; +import org.objectweb.celtix.Bus; +import org.objectweb.celtix.BusException; +import org.objectweb.celtix.bindings.ClientBinding; +import org.objectweb.celtix.bindings.DataBindingCallback; +import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache; +import org.objectweb.celtix.bus.bindings.WSDLOperationInfo; +import org.objectweb.celtix.context.ObjectMessageContext; +import org.objectweb.celtix.ws.addressing.EndpointReferenceType; +import org.objectweb.celtix.wsdl.EndpointReferenceUtils; +import org.xmlsoap.schemas.wsdl.http.AddressType; + + +/** + * An ExternalWebServiceClient using Celtix + */ +public class ExternalWebServiceClient { + + private Bus bus; + private TypeHelper typeHelper; + private WSDLMetaDataCache wsdlCache; + private ClientBinding clientBinding; + private WebServiceBinding wsBinding; + + + + public ExternalWebServiceClient(ExternalService externalService) throws BuilderException { + wsBinding = (WebServiceBinding)externalService.getBindings().get(0); + bus = wsBinding.getBus(); + typeHelper = wsBinding.getTypeHelper(); + Definition wsdlDef = wsBinding.getWSDLDefinition(); + wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort()); + + try { + String key = wsdlDef.getDocumentBaseURI(); + URL url = new URL(key); + + EndpointReferenceType reference = EndpointReferenceUtils.getEndpointReference(url, + wsBinding.getWSDLService().getQName(), + wsBinding.getWSDLPort().getName()); + + String bindingId = null; + Binding binding = wsBinding.getWSDLPort().getBinding(); + if (null != binding) { + List list = binding.getExtensibilityElements(); + if (!list.isEmpty()) { + bindingId = ((ExtensibilityElement)list.get(0)).getElementType().getNamespaceURI(); + } + } + if (bindingId == null) { + List list = wsBinding.getWSDLPort().getExtensibilityElements(); + for (Object ep : list) { + ExtensibilityElement ext = (ExtensibilityElement)ep; + if (ext instanceof SOAPAddress) { + bindingId = ((SOAPAddress)ext).getLocationURI(); + } + if (ext instanceof AddressType) { + bindingId = ((AddressType)ext).getLocation(); + } + } + + } + clientBinding = bus.getBindingManager().getBindingFactory(bindingId).createClientBinding( + reference); + } catch (MalformedURLException e) { + throw new BuilderInitException(e); + } catch (BusException e) { + throw new BuilderInitException(e); + } catch (WSDLException e) { + throw new BuilderInitException(e); + } catch (IOException e) { + throw new BuilderInitException(e); + } + } + + /** + * Invoke an operation on the external Web service. + * + * @param operationName the name of the WS operation to invoke + * @param args the Java object arguments to the WS operation + * @return the response from the WS as a Java object + */ + public Object invoke(String operationName, Object[] args) { + WSDLOperationInfo opInfo = wsdlCache.getOperationInfo(operationName); + if (opInfo == null) { + //REVISIT - really map the operation name to a WSDL operation + for (String opName : wsdlCache.getAllOperationInfo().keySet()) { + if (operationName.equalsIgnoreCase(opName)) { + opInfo = wsdlCache.getOperationInfo(opName); + break; + } + } + } + ObjectMessageContext objMsgContext = clientBinding.createObjectContext(); + + boolean hasInOut = false; + int inOutCount = 0; + Object realArgs[] = new Object[args.length]; + if (opInfo.getParamsLength() == 0) { + //REVISIT - opInfo doesn't return the needed info for the wrapped doc/lit case. + //Bug in Celtix + realArgs = args; + } else { + for (int x = 0; x < args.length; x++) { + if (opInfo.getWebParam(x).mode() == Mode.IN) { + realArgs[x] = args[x]; + } else { + realArgs[x] = new Holder(args[x]); + inOutCount++; + hasInOut = true; + } + } + } + + objMsgContext.setMessageObjects(realArgs); + + boolean isOneway = opInfo.isOneWay(); + DataBindingCallback callback = new SCADataBindingCallback(opInfo, typeHelper, + wsBinding.getResourceLoader(), + hasInOut); + + try { + if (isOneway) { + clientBinding.invokeOneWay(objMsgContext, + callback); + } else { + objMsgContext = clientBinding.invoke(objMsgContext, + callback); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + if (objMsgContext.getException() != null) { + //REVISIT - Exceptions + /* + if (isValidException(objMsgContext)) { + throw (Exception)objMsgContext.getException(); + } else { + throw new ProtocolException(objMsgContext.getException()); + } + */ + throw new ProtocolException(objMsgContext.getException()); + } + + if (hasInOut) { + Object ret[] = new Object[inOutCount + 1]; + ret[0] = objMsgContext.getReturn(); + inOutCount = 1; + for (int x = 0; x < args.length; x++) { + if (opInfo.getWebParam(x).mode() != Mode.IN) { + Holder holder = (Holder)realArgs[x]; + ret[inOutCount] = holder.value; + inOutCount++; + } + } + return ret; + } + return objMsgContext.getReturn(); + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java new file mode 100644 index 0000000000..06786ca76d --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java @@ -0,0 +1,115 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.apache.tuscany.core.context.Context; +import org.apache.tuscany.core.context.ExternalServiceContext; +import org.apache.tuscany.core.context.QualifiedName; +import org.apache.tuscany.core.context.ScopeContext; +import org.apache.tuscany.core.context.TargetException; +import org.apache.tuscany.core.message.Message; +import org.apache.tuscany.core.wire.Interceptor; +import org.apache.tuscany.core.wire.TargetInvoker; + + +/** + * Responsible for invoking an external web service + * + * @version $Rev$ $Date$ + */ +public class ExternalWebServiceTargetInvoker implements TargetInvoker { + + private QualifiedName serviceName; + private String esName; + private Method method; + private ScopeContext container; + + private ExternalServiceContext context; + + /** + * Constructs a new ExternalWebServiceTargetInvoker. + */ + public ExternalWebServiceTargetInvoker(QualifiedName servicename, + Method meth, + ScopeContext cont) { + assert servicename != null : "No service name specified"; + assert meth != null : "No method specified"; + assert cont != null : "No scope container specified"; + this.serviceName = servicename; + this.esName = serviceName.getPartName(); + this.method = meth; + this.container = cont; + } + + public Object invokeTarget(Object payload) throws InvocationTargetException { + if (context == null) { + Context iContext = container.getContext(esName); + if (!(iContext instanceof ExternalServiceContext)) { + TargetException te = new TargetException("Unexpected target context type"); + te.setIdentifier(iContext.getClass().getName()); + te.addContextName(iContext.getName()); + throw te; + } + context = (ExternalServiceContext)iContext; + } + ExternalWebServiceClient client = (ExternalWebServiceClient)context.getHandler(); + if (payload != null) { + return client.invoke(method.getName(), (Object[])payload); + } else { + return client.invoke(method.getName(), new Object[0]); + } + } + + public boolean isCacheable() { + return false; + } + + public Message invoke(Message msg) { + try { + Object resp = invokeTarget(msg.getBody()); + msg.setBody(resp); + } catch (InvocationTargetException e) { + msg.setBody(e.getCause()); + } catch (Throwable e) { + msg.setBody(e); + } + return msg; + } + + public void setNext(Interceptor next) { + throw new UnsupportedOperationException(); + } + + public Object clone() throws CloneNotSupportedException { + try { + ExternalWebServiceTargetInvoker invoker = (ExternalWebServiceTargetInvoker)super.clone(); + invoker.container = container; + invoker.context = this.context; + invoker.esName = this.esName; + invoker.method = this.method; + invoker.serviceName = this.serviceName; + return invoker; + } catch (CloneNotSupportedException e) { + // will not happen + return null; + } + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java new file mode 100644 index 0000000000..d1b13f6e17 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java @@ -0,0 +1,170 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.ws.WebServiceException; + +import org.w3c.dom.Node; +import org.w3c.dom.bootstrap.DOMImplementationRegistry; +import org.w3c.dom.ls.DOMImplementationLS; +import org.w3c.dom.ls.LSOutput; +import org.w3c.dom.ls.LSSerializer; +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.helper.XMLDocument; + +import org.apache.tuscany.databinding.sdo.SDOXMLHelper; +import org.apache.tuscany.sdo.helper.XMLHelperImpl; +import org.objectweb.celtix.bindings.DataReader; +import org.objectweb.celtix.context.ObjectMessageContext; + +public class NodeDataReader implements DataReader { + + SCADataBindingCallback callback; + + public NodeDataReader(SCADataBindingCallback cb) { + callback = cb; + } + + public Object read(int idx, Node input) { + return read(null, idx, input); + } + + public Object read(QName name, int idx, Node input) { + try { + byte bytes[] = getNodeBytes(input); + Object os[] = SDOXMLHelper.toObjects(callback.getResourceClassLoader(), + callback.getTypeHelper(), bytes, false); + return os[0]; + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new WebServiceException(e); + } + + } + + public void readWrapper(ObjectMessageContext objCtx, boolean isOutBound, Node input) { + try { + QName wrapperName; + if (isOutBound) { + wrapperName = callback.getOperationInfo().getResponseWrapperQName(); + } else { + wrapperName = callback.getOperationInfo().getRequestWrapperQName(); + } + + Node nd = input.getFirstChild(); + while (nd != null + && !wrapperName.getNamespaceURI().equals(nd.getNamespaceURI()) + && !wrapperName.getLocalPart().equals(nd.getLocalName())) { + nd = nd.getNextSibling(); + } + + //REVISIT - This is SUCH a HACK. This needs to be done with StAX or something + //a bit better than streaming and reparsing + InputStream in = getNodeStream(nd); + XMLDocument document = new XMLHelperImpl(callback.getTypeHelper()).load(in); + DataObject object = document.getRootObject(); + + List ips = object.getInstanceProperties(); + Object[] os = new Object[object.getInstanceProperties().size()]; + for (int i = 0; i < os.length; i++) { + os[i] = object.get((Property)ips.get(i)); + } + + if (callback.hasInOut()) { + //REVISIT - inOuts + } else { + if (isOutBound) { + objCtx.setReturn(os[0]); + } else { + objCtx.setMessageObjects(os); + } + } + } catch (IOException e) { + throw new WebServiceException(e); + } catch (ClassCastException e) { + throw new WebServiceException(e); + } catch (ClassNotFoundException e) { + throw new WebServiceException(e); + } catch (InstantiationException e) { + throw new WebServiceException(e); + } catch (IllegalAccessException e) { + throw new WebServiceException(e); + } + } + private byte[] getNodeBytes(Node node) + throws ClassCastException, ClassNotFoundException, + InstantiationException, IllegalAccessException { + + //This is also a hack, the JDK should already have this set, but it doesn't + DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); + if (registry == null) { + System.setProperty(DOMImplementationRegistry.PROPERTY, + "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); + registry = DOMImplementationRegistry.newInstance(); + } + DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); + if (impl == null) { + System.setProperty(DOMImplementationRegistry.PROPERTY, + "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); + registry = DOMImplementationRegistry.newInstance(); + impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); + } + LSOutput output = impl.createLSOutput(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + output.setByteStream(bout); + LSSerializer writer = impl.createLSSerializer(); + writer.write(node, output); + + return bout.toByteArray(); + } + + private InputStream getNodeStream(Node node) + throws ClassCastException, ClassNotFoundException, + InstantiationException, IllegalAccessException { + + DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); + if (registry == null) { + //This is also a hack, the JDK should already have this set, but it doesn't + System.setProperty(DOMImplementationRegistry.PROPERTY, + "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); + registry = DOMImplementationRegistry.newInstance(); + } + DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); + if (impl == null) { + System.setProperty(DOMImplementationRegistry.PROPERTY, + "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); + registry = DOMImplementationRegistry.newInstance(); + impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); + } + LSOutput output = impl.createLSOutput(); + RawByteArrayOutputStream bout = new RawByteArrayOutputStream(); + output.setByteStream(bout); + LSSerializer writer = impl.createLSSerializer(); + writer.write(node, output); + + return new ByteArrayInputStream(bout.getBytes(), 0, bout.size()); + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java new file mode 100644 index 0000000000..27c2276c2a --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java @@ -0,0 +1,179 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.ws.Holder; +import javax.xml.ws.WebServiceException; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XSDHelper; + +import org.apache.tuscany.databinding.sdo.SDOXMLHelper; +import org.apache.tuscany.sdo.helper.DataFactoryImpl; +import org.apache.tuscany.sdo.helper.XMLHelperImpl; +import org.apache.tuscany.sdo.helper.XSDHelperImpl; +import org.objectweb.celtix.bindings.DataWriter; +import org.objectweb.celtix.context.ObjectMessageContext; + +public class NodeDataWriter implements DataWriter { + SCADataBindingCallback callback; + + public NodeDataWriter(SCADataBindingCallback cb) { + callback = cb; + } + + public void write(Object obj, Node output) { + write(obj, null, output); + } + + public void write(Object obj, QName elName, Node output) { + byte bytes[] = SDOXMLHelper.toXMLBytes( + callback.getResourceClassLoader(), + callback.getTypeHelper(), + new Object[] {obj}, + elName, + false); + ByteArrayInputStream bin = new ByteArrayInputStream(bytes); + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + try { + SAXParser parser = factory.newSAXParser(); + parser.parse(bin, new NodeContentHandler(output)); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new WebServiceException(e); + } + + } + + public void writeWrapper(ObjectMessageContext objCtx, boolean isOutbound, Node nd) { + QName wrapperName; + if (isOutbound) { + wrapperName = callback.getOperationInfo().getResponseWrapperQName(); + } else { + wrapperName = callback.getOperationInfo().getRequestWrapperQName(); + } + + DataObject obj = toWrappedDataObject(callback.getTypeHelper(), + isOutbound ? objCtx.getReturn() : null, + objCtx.getMessageObjects(), + wrapperName); + + try { + //REVISIT - this is SUCH a hack. SDO needs to be able to + //go directly to some formats other than streams. They are working + //on stax, but not there yet. + RawByteArrayOutputStream bout = new RawByteArrayOutputStream(); + new XMLHelperImpl(callback.getTypeHelper()).save(obj, + wrapperName.getNamespaceURI(), + wrapperName.getLocalPart(), + bout); + + ByteArrayInputStream bin = new ByteArrayInputStream(bout.getBytes(), + 0, + bout.size()); + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + SAXParser parser = factory.newSAXParser(); + parser.parse(bin, new NodeContentHandler(nd)); + } catch (IOException e) { + throw new WebServiceException(e); + } catch (ParserConfigurationException e) { + throw new WebServiceException(e); + } catch (SAXException e) { + throw new WebServiceException(e); + } + } + + + public static DataObject toWrappedDataObject(TypeHelper typeHelper, + Object ret, + Object[] os, + QName typeQN) { + XSDHelper xsdHelper = new XSDHelperImpl(typeHelper); + Property property = xsdHelper.getGlobalProperty(typeQN.getNamespaceURI(), + typeQN.getLocalPart(), true); + DataObject dataObject = new DataFactoryImpl(typeHelper).create(property.getType()); + List ips = dataObject.getInstanceProperties(); + int offset = 0; + if (ret != null) { + dataObject.set(0, ret); + offset = 1; + } + for (int i = offset; i < ips.size(); i++) { + if (os[i - offset] instanceof Holder) { + Holder holder = (Holder)os[i - offset]; + dataObject.set(i, holder.value); + } else { + dataObject.set(i, os[i - offset]); + } + } + return dataObject; + } + + private class NodeContentHandler extends DefaultHandler { + Node current; + Document doc; + + public NodeContentHandler(Node nd) { + doc = nd.getOwnerDocument(); + if (doc == null && nd instanceof Document) { + doc = (Document)nd; + } + current = nd; + } + + public void characters(char[] ch, int start, int length) { + current.appendChild(doc.createTextNode(new String(ch, start, length))); + } + + public void startElement(String uri, String localName, + String qName, Attributes attributes) { + Element newEl = doc.createElementNS(uri, qName); + current.appendChild(newEl); + current = newEl; + for (int x = 0; x < attributes.getLength(); x++) { + newEl.setAttributeNS(attributes.getURI(x), + attributes.getQName(x), + attributes.getValue(x)); + } + } + + public void endElement(String uri, String localName, String qName) { + current = current.getParentNode(); + } + } + + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java new file mode 100644 index 0000000000..902a3e618c --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + +import java.io.ByteArrayOutputStream; + +/** + * Just to allow raw access to the byte[] to avoid a copy + */ +class RawByteArrayOutputStream extends ByteArrayOutputStream { + public byte[] getBytes() { + return buf; + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java new file mode 100644 index 0000000000..00dc403f2c --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java @@ -0,0 +1,91 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + + +import org.w3c.dom.Node; +import commonj.sdo.helper.TypeHelper; + +import org.apache.tuscany.common.resource.ResourceLoader; +import org.objectweb.celtix.bindings.DataReader; +import org.objectweb.celtix.bindings.DataWriter; +import org.objectweb.celtix.bus.bindings.AbstractWSDLOperationDataBindingCallback; +import org.objectweb.celtix.bus.bindings.WSDLOperationInfo; +import org.objectweb.celtix.context.ObjectMessageContext; + +public class SCADataBindingCallback extends AbstractWSDLOperationDataBindingCallback { + + protected TypeHelper typeHelper; + protected boolean hasInOut; + protected ResourceLoader loader; + + public SCADataBindingCallback(WSDLOperationInfo op, + TypeHelper helper, + ResourceLoader l, + boolean inout) { + super(op); + typeHelper = helper; + hasInOut = inout; + loader = l; + } + + public ResourceLoader getResourceLoader() { + return loader; + } + public ClassLoader getResourceClassLoader() { + return loader.getClassLoader(); + } + + public TypeHelper getTypeHelper() { + return typeHelper; + } + + public boolean hasInOut() { + return hasInOut; + } + + public Mode getMode() { + return Mode.PARTS; + } + + public Class[] getSupportedFormats() { + return new Class[]{Node.class}; + } + + @SuppressWarnings("unchecked") + public DataWriter createWriter(Class cls) { + if (cls == Node.class) { + return (DataWriter)new NodeDataWriter(this); + } + return null; + } + + @SuppressWarnings("unchecked") + public DataReader createReader(Class cls) { + if (cls == Node.class) { + return (DataReader)new NodeDataReader(this); + } + //REVISIT - need to figure out what to do with Faults + return null; + } + + public void initObjectContext(ObjectMessageContext octx) { + //REVISIT - is this even used? + } + + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java new file mode 100644 index 0000000000..5926e066c2 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java @@ -0,0 +1,61 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import commonj.sdo.helper.TypeHelper; + +import org.apache.tuscany.common.resource.ResourceLoader; +import org.objectweb.celtix.bindings.ServerDataBindingCallback; +import org.objectweb.celtix.bus.bindings.WSDLOperationInfo; +import org.objectweb.celtix.context.ObjectMessageContext; + +public class SCAServerDataBindingCallback extends SCADataBindingCallback + implements ServerDataBindingCallback { + Method method; + Object targetObject; + + public SCAServerDataBindingCallback(WSDLOperationInfo op, TypeHelper helper, + ResourceLoader l, + boolean inout, Method meth, Object target) { + super(op, helper, l, inout); + method = meth; + targetObject = target; + } + + + public void invoke(ObjectMessageContext octx) throws InvocationTargetException { + Object ret; + try { + ret = method.invoke(targetObject, octx.getMessageObjects()); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new InvocationTargetException(e); + } + octx.setReturn(ret); + } + + public void initObjectContext(ObjectMessageContext octx) { + Object o[] = new Object[method.getParameterTypes().length]; + //REVIST - holders? + octx.setMessageObjects(o); + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/TuscanyWSDLManager.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/TuscanyWSDLManager.java new file mode 100644 index 0000000000..913b43cfeb --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/TuscanyWSDLManager.java @@ -0,0 +1,88 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.loader; + +import java.io.IOException; +import java.net.URL; + +import javax.wsdl.Definition; +import javax.wsdl.WSDLException; +import javax.wsdl.extensions.ExtensionRegistry; +import javax.wsdl.factory.WSDLFactory; + +import org.w3c.dom.Element; + +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; + +import org.objectweb.celtix.BusException; +import org.objectweb.celtix.wsdl.WSDLManager; + +public class TuscanyWSDLManager implements WSDLManager { + WSDLDefinitionRegistry wsdlDefinitionRegistry; + + public TuscanyWSDLManager(WSDLDefinitionRegistry w) throws BusException { + wsdlDefinitionRegistry = w; + } + + public WSDLFactory getWSDLFactory() { + //Not supported + return null; + } + + public ExtensionRegistry getExtenstionRegistry() { + return wsdlDefinitionRegistry.getExtensionRegistry(); + } + + public Definition getDefinition(URL url) throws WSDLException { + try { + //FIXME pass the current ResourceLoader + return wsdlDefinitionRegistry.loadDefinition(null, url, null); + } catch (IOException e) { + throw new WSDLException(WSDLException.CONFIGURATION_ERROR, e.getMessage()); + } + } + + public Definition getDefinition(String url) throws WSDLException { + try { + //The namespace is the wsdl targetNamesapce, it is only used + //when the wsdl is created into cache. we are ok here to set it to null. + //FIXME pass the current ResourceLoader + return wsdlDefinitionRegistry.loadDefinition(null, new URL(url), null); + } catch (IOException e) { + throw new WSDLException(WSDLException.CONFIGURATION_ERROR, e.getMessage()); + } + } + + public Definition getDefinition(Element el) throws WSDLException { + //Not supported + return null; + } + + public Definition getDefinition(Class sei) throws WSDLException { + //Not supported + return null; + } + + public void addDefinition(Object key, Definition wsdl) { + //Not supported + } + + public void shutdown() { + } + + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java new file mode 100644 index 0000000000..3520203523 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java @@ -0,0 +1,99 @@ +/** + * + * Copyright 2005 The Apache Software Foundation + * + * Licensed 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.binding.celtix.loader; + +import java.util.Map; +import java.util.WeakHashMap; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +import org.apache.tuscany.binding.celtix.assembly.WebServiceAssemblyFactory; +import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding; +import org.apache.tuscany.binding.celtix.assembly.impl.WebServiceAssemblyFactoryImpl; +import org.apache.tuscany.core.config.ConfigurationLoadException; +import org.apache.tuscany.core.loader.LoaderContext; +import org.apache.tuscany.core.loader.StAXElementLoader; +import org.apache.tuscany.core.loader.StAXLoaderRegistry; +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.core.system.annotation.Autowire; +import org.objectweb.celtix.Bus; +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; + + +/** + * @version $Rev$ $Date$ + */ +@Scope("MODULE") +public class WebServiceBindingLoader implements StAXElementLoader { + public static final QName BINDING_WS = new QName("http://www.osoa.org/xmlns/sca/0.9", "binding.ws"); + + private static final WebServiceAssemblyFactory WS_FACTORY = new WebServiceAssemblyFactoryImpl(); + + protected StAXLoaderRegistry registry; + protected WSDLDefinitionRegistry wsdlRegistry; + + private Bus bus; + + @Autowire + public void setRegistry(StAXLoaderRegistry reg) { + this.registry = reg; + } + + @Autowire + public void setWsdlRegistry(WSDLDefinitionRegistry wsdlReg) { + try { + Map properties = new WeakHashMap(); + properties.put("celtix.WSDLManager", new TuscanyWSDLManager(wsdlReg)); + bus = Bus.init(new String[0], properties); + wsdlRegistry = wsdlReg; + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Init(eager = true) + public void start() { + registry.registerLoader(BINDING_WS, this); + } + + @Destroy + public void stop() { + try { + registry.unregisterLoader(BINDING_WS, this); + bus.shutdown(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SuppressWarnings("deprecation") + public WebServiceBinding load(XMLStreamReader reader, LoaderContext loaderContext) + throws XMLStreamException, ConfigurationLoadException { + + WebServiceBinding binding = WS_FACTORY.createWebServiceBinding(wsdlRegistry); + binding.setURI(reader.getAttributeValue(null, "uri")); + binding.setPortURI(reader.getAttributeValue(null, "port")); + binding.setTypeHelper(registry.getContext().getTypeHelper()); + binding.setResourceLoader(loaderContext.getResourceLoader()); + binding.setBus(bus); + return binding; + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/LICENSE.txt b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/LICENSE.txt new file mode 100644 index 0000000000..25d78feeac --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/LICENSE.txt @@ -0,0 +1,1277 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + + +APACHE TUSCANY SUBCOMPONENTS: + +The Apache Tuscany distribution includes a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the following licenses. + +=============================================================================== + +For the Eclipse Modeling Framework component and the Celtix binding: + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the +Program under their own license agreement, and (ii) are not derivative +works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor +which are necessarily infringed by the use or sale of its Contribution +alone or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this +Agreement, including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent +license under Licensed Patents to make, use, sell, offer to sell, +import and otherwise transfer the Contribution of such Contributor, if +any, in source code and object code form. This patent license shall +apply to the combination of the Contribution and the Program if, at +the time the Contribution is added by the Contributor, such addition +of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other +combinations which include the Contribution. No hardware per se is +licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility +to secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow +Recipient to distribute the Program, it is Recipient's responsibility +to acquire that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or +conditions of title and non-infringement, and implied warranties or +conditions of merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability +for damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the +Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use +of the Program, the Contributor who includes the Program in a +commercial product offering should do so in a manner which does not +create potential liability for other Contributors. Therefore, if a +Contributor includes the Program in a commercial product offering, +such Contributor ("Commercial Contributor") hereby agrees to defend +and indemnify every other Contributor ("Indemnified Contributor") +against any losses, damages and costs (collectively "Losses") arising +from claims, lawsuits and other legal actions brought by a third party +against the Indemnified Contributor to the extent caused by the acts +or omissions of such Commercial Contributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. +In order to qualify, an Indemnified Contributor must: a) promptly +notify the Commercial Contributor in writing of such claim, and b) +allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such +claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY +WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to +the risks and costs of program errors, compliance with applicable +laws, damage to or loss of data, programs or equipment, and +unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that +the Program itself (excluding combinations of the Program with other +software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of +the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign +the responsibility to serve as the Agreement Steward to a suitable +separate entity. Each new version of the Agreement will be given a +distinguishing version number. The Program (including Contributions) +may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives +no rights or licenses to the intellectual property of any Contributor +under this Agreement, whether expressly, by implication, estoppel or +otherwise. All rights in the Program not expressly granted under this +Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No +party to this Agreement will bring a legal action under this Agreement +more than one year after the cause of action arose. Each party waives +its rights to a jury trial in any resulting litigation. + +=============================================================================== + +For the Rhino JavaScript container component: + +Mozilla Public License 1.1 (MPL 1.1) + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the +Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to +the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original Code, +prior Modifications used by a Contributor, and the Modifications made by that +particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the +combination of the Original Code and Modifications, in each case including +portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally +accepted in the software development community for the electronic transfer of +data. + + 1.5. "Executable" means Covered Code in any form other than Source +Code. + + 1.6. "Initial Developer" means the individual or entity identified as +the Initial Developer in the Source Code notice required by Exhibit A. + + 1.7. "Larger Work" means a work which combines Covered Code or +portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum +extent possible, whether at the time of the initial grant or subsequently +acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the +substance or structure of either the Original Code or any previous +Modifications. When Covered Code is released as a series of files, a +Modification is: + A. Any addition to or deletion from the contents of a file +containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or +previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code +which is described in the Source Code notice required by Exhibit A as Original +Code, and which, at the time of its release under this License is not already +Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or +hereafter acquired, including without limitation, method, process, and +apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for +making modifications to it, including all modules it contains, plus any +associated interface definition files, scripts used to control compilation and +installation of an Executable, or source code differential comparisons against +either the Original Code or another well known, available Covered Code of the +Contributor's choice. The Source Code can be in a compressed or archival form, +provided the appropriate decompression or de-archiving software is widely +available for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity +exercising rights under, and complying with all of the terms of, this License +or a future version of this License issued under Section 6.1. For legal +entities, "You" includes any entity which controls, is controlled by, or is +under common control with You. For purposes of this definition, "control" +means (a) the power, direct or indirect, to cause the direction or management +of such entity, whether by contract or otherwise, or (b) ownership of more +than fifty percent (50%) of the outstanding shares or beneficial ownership of +such entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, +non-exclusive license, subject to third party intellectual property claims: + (a) under intellectual property rights (other than patent or +trademark) Licensable by Initial Developer to use, reproduce, modify, display, +perform, sublicense and distribute the Original Code (or portions thereof) +with or without Modifications, and/or as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or selling +of Original Code, to make, have made, use, practice, sell, and offer for sale, +and/or otherwise dispose of the Original Code (or portions thereof). + (c) the licenses granted in this Section 2.1(a) and +(b) are effective on the date Initial Developer first distributes Original +Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is +granted: 1) for code that You delete from the Original Code; 2) separate from +the Original Code; or 3) for infringements caused by: i) the modification of +the Original Code or ii) the combination of the Original Code with other +software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor +hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or +trademark) Licensable by Contributor, to use, reproduce, modify, display, +perform, sublicense and distribute the Modifications created by such +Contributor (or portions thereof) either on an unmodified basis, with other +Modifications, as Covered Code and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling +of Modifications made by that Contributor either alone and/or in combination +with its Contributor Version (or portions of such combination), to make, use, +sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications +made by that Contributor (or portions thereof); and 2) the combination of +Modifications made by that Contributor with its Contributor Version (or +portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are +effective on the date Contributor first makes Commercial Use of the Covered +Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is +granted: 1) for any code that Contributor has deleted from the Contributor +Version; 2) separate from the Contributor Version; 3) for infringements +caused by: i) third party modifications of Contributor Version or ii) the +combination of Modifications made by that Contributor with other software +(except as part of the Contributor Version) or other devices; or 4) under +Patent Claims infringed by Covered Code in the absence of Modifications made +by that Contributor. + + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are +governed by the terms of this License, including without limitation Section +2.2. The Source Code version of Covered Code may be distributed only under the +terms of this License or a future version of this License released under +Section 6.1, and You must include a copy of this License with every copy of +the Source Code You distribute. You may not offer or impose any terms on any +Source Code version that alters or restricts the applicable version of this +License or the recipients' rights hereunder. However, You may include an +additional document offering the additional rights described in Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be +made available in Source Code form under the terms of this License either on +the same media as an Executable version or via an accepted Electronic +Distribution Mechanism to anyone to whom you made an Executable version +available; and if made available via Electronic Distribution Mechanism, must +remain available for at least twelve (12) months after the date it initially +became available, or at least six (6) months after a subsequent version of +that particular Modification has been made available to such recipients. You +are responsible for ensuring that the Source Code version remains available +even if the Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a +file documenting the changes You made to create that Covered Code and the date +of any change. You must include a prominent statement that the Modification is +derived, directly or indirectly, from Original Code provided by the Initial +Developer and including the name of the Initial Developer in (a) the Source +Code, and (b) in any notice in an Executable version or related documentation +in which You describe the origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's +intellectual property rights is required to exercise the rights granted by +such Contributor under Sections 2.1 or 2.2, Contributor must include a text +file with the Source Code distribution titled "LEGAL" which describes the +claim and the party making the claim in sufficient detail that a recipient +will know whom to contact. If Contributor obtains such knowledge after the +Modification is made available as described in Section 3.2, Contributor shall +promptly modify the LEGAL file in all copies Contributor makes available +thereafter and shall take other steps (such as notifying appropriate mailing +lists or newsgroups) reasonably calculated to inform those who received the +Covered Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming +interface and Contributor has knowledge of patent licenses which are +reasonably necessary to implement that API, Contributor must also include this +information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to +Section 3.4(a) above, Contributor believes that Contributor's Modifications +are Contributor's original creation(s) and/or Contributor has sufficient +rights to grant the rights conveyed by this License. + + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source +Code. If it is not possible to put such notice in a particular Source Code +file due to its structure, then You must include such notice in a location +(such as a relevant directory) where a user would be likely to look for such a +notice. If You created one or more Modification(s) You may add your name as a +Contributor to the notice described in Exhibit A. You must also duplicate +this License in any documentation for the Source Code where You describe +recipients' rights or ownership rights relating to Covered Code. You may +choose to offer, and to charge a fee for, warranty, support, indemnity or +liability obligations to one or more recipients of Covered Code. However, You +may do so only on Your own behalf, and not on behalf of the Initial Developer +or any Contributor. You must make it absolutely clear than any such warranty, +support, indemnity or liability obligation is offered by You alone, and You +hereby agree to indemnify the Initial Developer and every Contributor for any +liability incurred by the Initial Developer or such Contributor as a result of +warranty, support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the +requirements of Section 3.1-3.5 have been met for that Covered Code, and if +You include a notice stating that the Source Code version of the Covered Code +is available under the terms of this License, including a description of how +and where You have fulfilled the obligations of Section 3.2. The notice must +be conspicuously included in any notice in an Executable version, related +documentation or collateral in which You describe recipients' rights relating +to the Covered Code. You may distribute the Executable version of Covered Code +or ownership rights under a license of Your choice, which may contain terms +different from this License, provided that You are in compliance with the +terms of this License and that the license for the Executable version does not +attempt to limit or alter the recipient's rights in the Source Code version +from the rights set forth in this License. If You distribute the Executable +version under a different license You must make it absolutely clear that any +terms which differ from this License are offered by You alone, not by the +Initial Developer or any Contributor. You hereby agree to indemnify the +Initial Developer and every Contributor for any liability incurred by the +Initial Developer or such Contributor as a result of any such terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code +not governed by the terms of this License and distribute the Larger Work as a +single product. In such a case, You must make sure the requirements of this +License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Code due to statute, +judicial order, or regulation then You must: (a) comply with the terms of this +License to the maximum extent possible; and (b) describe the limitations and +the code they affect. Such description must be included in the LEGAL file +described in Section 3.4 and must be included with all distributions of the +Source Code. Except to the extent prohibited by statute or regulation, such +description must be sufficiently detailed for a recipient of ordinary skill to +be able to understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has attached +the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised +and/or new versions of the License from time to time. Each version will be +given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the +License, You may always continue to use it under the terms of that version. +You may also choose to use such Covered Code under the terms of any subsequent +version of the License published by Netscape. No one other than Netscape has +the right to modify the terms applicable to Covered Code created under this +License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may +only do in order to apply it to code which is not already Covered Code +governed by this License), You must (a) rename Your license so that the +phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or +any confusingly similar phrase do not appear in your license (except to note +that your license differs from this License) and (b) otherwise make it clear +that Your version of the license contains terms which differ from the Mozilla +Public License and Netscape Public License. (Filling in the name of the +Initial Developer, Original Code or Contributor in the notice described in +Exhibit A shall not of themselves be deemed to be modifications of this +License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT +LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, +FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE +QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED +CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY +OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR +CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS +LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS +DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate +automatically if You fail to comply with terms herein and fail to cure such +breach within 30 days of becoming aware of the breach. All sublicenses to the +Covered Code which are properly granted shall survive any termination of this +License. Provisions which, by their nature, must remain in effect beyond the +termination of this License shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement +claim (excluding declatory judgment actions) against Initial Developer or a +Contributor (the Initial Developer or Contributor against whom You file such +action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly +infringes any patent, then any and all rights granted by such Participant to +You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice +from Participant terminate prospectively, unless if within 60 days after +receipt of notice You either: (i) agree in writing to pay Participant a +mutually agreeable reasonable royalty for Your past and future use of +Modifications made by such Participant, or (ii) withdraw Your litigation claim +with respect to the Contributor Version against such Participant. If within +60 days of notice, a reasonable royalty and payment arrangement are not +mutually agreed upon in writing by the parties or the litigation claim is not +withdrawn, the rights granted by Participant to You under Sections 2.1 and/or +2.2 automatically terminate at the expiration of the 60 day notice period +specified above. + + (b) any software, hardware, or device, other than such Participant's +Contributor Version, directly or indirectly infringes any patent, then any +rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are +revoked effective as of the date You first made, used, sold, distributed, or +had made, Modifications made by that Participant. + + 8.3. If You assert a patent infringement claim against Participant +alleging that such Participant's Contributor Version directly or indirectly +infringes any patent where such claim is resolved (such as by license or +settlement) prior to the initiation of patent infringement litigation, then +the reasonable value of the licenses granted by such Participant under +Sections 2.1 or 2.2 shall be taken into account in determining the amount or +value of any payment or license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, all +end user license agreements (excluding distributors and resellers) which have +been validly granted by You or any distributor hereunder prior to termination +shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT +(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL +DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY +SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, +SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, +WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER +FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, +EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH +DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH +OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT +APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE +EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS +EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in 48 +C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and +"commercial computer software documentation," as such terms are used in 48 +C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. +227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users +acquire Covered Code with only those rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter +hereof. If any provision of this License is held to be unenforceable, such +provision shall be reformed only to the extent necessary to make it +enforceable. This License shall be governed by California law provisions +(except to the extent applicable law, if any, provides otherwise), excluding +its conflict-of-law provisions. With respect to disputes in which at least one +party is a citizen of, or an entity chartered or registered to do business in +the United States of America, any litigation relating to this License shall be +subject to the jurisdiction of the Federal Courts of the Northern District of +California, with venue lying in Santa Clara County, California, with the +losing party responsible for costs, including without limitation, court costs +and reasonable attorneys' fees and expenses. The application of the United +Nations Convention on Contracts for the International Sale of Goods is +expressly excluded. Any law or regulation which provides that the language of +a contract shall be construed against the drafter shall not apply to this +License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is +responsible for claims and damages arising, directly or indirectly, out of its +utilization of rights under this License and You agree to work with Initial +Developer and Contributors to distribute such responsibility on an equitable +basis. Nothing herein is intended or shall be deemed to constitute any +admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as +Multiple-Licensed. Multiple-Licensed means that the Initial Developer permits +you to utilize portions of the Covered Code under Your choice of the MPL or +the alternative licenses, if any, specified by the Initial Developer in the +file described in Exhibit A. + + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License +Version 1.1 (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.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" +basis, WITHOUT WARRANTY OF + ANY KIND, either express or implied. See the License for the specific +language governing rights and + limitations under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. +Portions created by + ______________________ are Copyright (C) ______ +_______________________. All Rights + Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms of +the _____ license (the [___] License), in which case the provisions of +[______] License are applicable instead of those above. If you wish to allow +use of your version of this file only under the terms of the [____] License +and not to allow others to use your version of this file under the MPL, +indicate your decision by deleting the provisions above and replace them +with the notice and other provisions required by the [___] License. If you do +not delete the provisions above, a recipient may use your version of this file +under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of +the notices in the Source Code files of the Original Code. You should use the +text of this Exhibit A rather than the text found in the Original Code Source +Code for Your Modifications.] + + +=============================================================================== + +For the JAX-WS Reference Implementation component: + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + + + 1. Definitions. + + 1.1. "Contributor" means each individual or entity that + creates or contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the + Original Software, prior Modifications used by a + Contributor (if any), and the Modifications made by that + particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or + (b) Modifications, or (c) the combination of files + containing Original Software with files containing + Modifications, in each case including portions thereof. + + 1.4. "Executable" means the Covered Software in any form + other than Source Code. + + 1.5. "Initial Developer" means the individual or entity + that first makes Original Software available under this + License. + + 1.6. "Larger Work" means a work which combines Covered + Software or portions thereof with code not governed by the + terms of this License. + + 1.7. "License" means this document. + + 1.8. "Licensable" means having the right to grant, to the + maximum extent possible, whether at the time of the initial + grant or subsequently acquired, any and all of the rights + conveyed herein. + + 1.9. "Modifications" means the Source Code and Executable + form of any of the following: + + A. Any file that results from an addition to, + deletion from or modification of the contents of a + file containing Original Software or previous + Modifications; + + B. Any new file that contains any part of the + Original Software or previous Modification; or + + C. Any new file that is contributed or otherwise made + available under the terms of this License. + + 1.10. "Original Software" means the Source Code and + Executable form of computer software code that is + originally released under this License. + + 1.11. "Patent Claims" means any patent claim(s), now owned + or hereafter acquired, including without limitation, + method, process, and apparatus claims, in any patent + Licensable by grantor. + + 1.12. "Source Code" means (a) the common form of computer + software code in which modifications are made and (b) + associated documentation included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal + entity exercising rights under, and complying with all of + the terms of, this License. For legal entities, "You" + includes any entity which controls, is controlled by, or is + under common control with You. For purposes of this + definition, "control" means (a) the power, direct or + indirect, to cause the direction or management of such + entity, whether by contract or otherwise, or (b) ownership + of more than fifty percent (50%) of the outstanding shares + or beneficial ownership of such entity. + + 2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, the + Initial Developer hereby grants You a world-wide, + royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than + patent or trademark) Licensable by Initial Developer, + to use, reproduce, modify, display, perform, + sublicense and distribute the Original Software (or + portions thereof), with or without Modifications, + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, + using or selling of Original Software, to make, have + made, use, practice, sell, and offer for sale, and/or + otherwise dispose of the Original Software (or + portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) + are effective on the date Initial Developer first + distributes or otherwise makes the Original Software + available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent + license is granted: (1) for code that You delete from + the Original Software, or (2) for infringements + caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original + Software with other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, each + Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + (a) under intellectual property rights (other than + patent or trademark) Licensable by Contributor to + use, reproduce, modify, display, perform, sublicense + and distribute the Modifications created by such + Contributor (or portions thereof), either on an + unmodified basis, with other Modifications, as + Covered Software and/or as part of a Larger Work; and + + + (b) under Patent Claims infringed by the making, + using, or selling of Modifications made by that + Contributor either alone and/or in combination with + its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, + have made, and/or otherwise dispose of: (1) + Modifications made by that Contributor (or portions + thereof); and (2) the combination of Modifications + made by that Contributor with its Contributor Version + (or portions of such combination). + + (c) The licenses granted in Sections 2.2(a) and + 2.2(b) are effective on the date Contributor first + distributes or otherwise makes the Modifications + available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent + license is granted: (1) for any code that Contributor + has deleted from the Contributor Version; (2) for + infringements caused by: (i) third party + modifications of Contributor Version, or (ii) the + combination of Modifications made by that Contributor + with other software (except as part of the + Contributor Version) or other devices; or (3) under + Patent Claims infringed by Covered Software in the + absence of Modifications made by that Contributor. + + 3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make + available in Executable form must also be made available in + Source Code form and that Source Code form must be + distributed only under the terms of this License. You must + include a copy of this License with every copy of the + Source Code form of the Covered Software You distribute or + otherwise make available. You must inform recipients of any + such Covered Software in Executable form as to how they can + obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used + for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You + contribute are governed by the terms of this License. You + represent that You believe Your Modifications are Your + original creation(s) and/or You have sufficient rights to + grant the rights conveyed by this License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications + that identifies You as the Contributor of the Modification. + You may not remove or alter any copyright, patent or + trademark notices contained within the Covered Software, or + any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered + Software in Source Code form that alters or restricts the + applicable version of this License or the recipients' + rights hereunder. You may choose to offer, and to charge a + fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Software. + However, you may do so only on Your own behalf, and not on + behalf of the Initial Developer or any Contributor. You + must make it absolutely clear that any such warranty, + support, indemnity or liability obligation is offered by + You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred + by the Initial Developer or such Contributor as a result of + warranty, support, indemnity or liability terms You offer. + + + 3.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered + Software under the terms of this License or under the terms + of a license of Your choice, which may contain terms + different from this License, provided that You are in + compliance with the terms of this License and that the + license for the Executable form does not attempt to limit + or alter the recipient's rights in the Source Code form + from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a + different license, You must make it absolutely clear that + any terms which differ from this License are offered by You + alone, not by the Initial Developer or Contributor. You + hereby agree to indemnify the Initial Developer and every + Contributor for any liability incurred by the Initial + Developer or such Contributor as a result of any such terms + You offer. + + 3.6. Larger Works. + + You may create a Larger Work by combining Covered Software + with other code not governed by the terms of this License + and distribute the Larger Work as a single product. In such + a case, You must make sure the requirements of this License + are fulfilled for the Covered Software. + + 4. Versions of the License. + + 4.1. New Versions. + + Sun Microsystems, Inc. is the initial license steward and + may publish revised and/or new versions of this License + from time to time. Each version will be given a + distinguishing version number. Except as provided in + Section 4.3, no one other than the license steward has the + right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise + make the Covered Software available under the terms of the + version of the License under which You originally received + the Covered Software. If the Initial Developer includes a + notice in the Original Software prohibiting it from being + distributed or otherwise made available under any + subsequent version of the License, You must distribute and + make the Covered Software available under the terms of the + version of the License under which You originally received + the Covered Software. Otherwise, You may also choose to + use, distribute or otherwise make the Covered Software + available under the terms of any subsequent version of the + License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a + new license for Your Original Software, You may create and + use a modified version of this License if You: (a) rename + the license and remove any references to the name of the + license steward (except to note that the license differs + from this License); and (b) otherwise make it clear that + the license contains terms which differ from this License. + + + 5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" + BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, + INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED + SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR + PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY + COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE + INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF + ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF + WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS + DISCLAIMER. + + 6. TERMINATION. + + 6.1. This License and the rights granted hereunder will + terminate automatically if You fail to comply with terms + herein and fail to cure such breach within 30 days of + becoming aware of the breach. Provisions which, by their + nature, must remain in effect beyond the termination of + this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or + a Contributor (the Initial Developer or Contributor against + whom You assert such claim is referred to as "Participant") + alleging that the Participant Software (meaning the + Contributor Version where the Participant is a Contributor + or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any + patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial + Developer (if the Initial Developer is not the Participant) + and all Contributors under Sections 2.1 and/or 2.2 of this + License shall, upon 60 days notice from Participant + terminate prospectively and automatically at the expiration + of such 60 day notice period, unless if within such 60 day + period You withdraw Your claim with respect to the + Participant Software against such Participant either + unilaterally or pursuant to a written agreement with + Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 + above, all end user licenses that have been validly granted + by You or any distributor hereunder prior to termination + (excluding licenses granted to You by any distributor) + shall survive termination. + + 7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE + INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF + COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE + LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK + STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL + INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO + NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR + CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT + APPLY TO YOU. + + 8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is + defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial + computer software" (as that term is defined at 48 C.F.R. + 252.227-7014(a)(1)) and "commercial computer software + documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. + 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users + acquire Covered Software with only those rights set forth herein. + This U.S. Government Rights clause is in lieu of, and supersedes, + any other FAR, DFAR, or other clause or provision that addresses + Government rights in computer software under this License. + + 9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the + extent necessary to make it enforceable. This License shall be + governed by the law of the jurisdiction specified in a notice + contained within the Original Software (except to the extent + applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation + relating to this License shall be subject to the jurisdiction of + the courts located in the jurisdiction and venue specified in a + notice contained within the Original Software, with the losing + party responsible for costs, including, without limitation, court + costs and reasonable attorneys' fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or + regulation which provides that the language of a contract shall + be construed against the drafter shall not apply to this License. + You agree that You alone are responsible for compliance with the + United States export administration regulations (and the export + control laws and regulation of any other countries) when You use, + distribute or otherwise make available any Covered Software. + + 10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or + indirectly, out of its utilization of rights under this License + and You agree to work with Initial Developer and Contributors to + distribute such responsibility on an equitable basis. Nothing + herein is intended or shall be deemed to constitute any admission + of liability. + diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/NOTICE b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/NOTICE new file mode 100644 index 0000000000..d48810c0ec --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/NOTICE @@ -0,0 +1,18 @@ +========================================================================= +== NOTICE file corresponding to the section 4 d of == +== the Apache License, Version 2.0, == +== in this case for the Apache Tuscany distribution. == +========================================================================= + +This product includes software developed by the Apache Software Foundation +(http://www.apache.org/). + +This product also includes software developed by: +- the Eclipse Modeling Framework project (http://www.eclipse.org/emf/) +- the Celtix project (http://celtix.objectweb.org/) +- the Mozilla Rhino project (http://www.mozilla.org/rhino/) +- the GlassFish JAX-WS project (https://jax-ws.dev.java.net/) + +Please read the LICENSE.txt file present in the root directory of this +distribution. + diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/README.txt b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/README.txt new file mode 100644 index 0000000000..9b26d1690a --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/META-INF/README.txt @@ -0,0 +1,35 @@ +Apache Tuscany M1 build (May, 2006) +=================================== + +http://incubator.apache.org/tuscany/ + +Tuscany is an effort undergoing incubation at the Apache Software Foundation +(ASF), sponsored by the Web Services PMC. + +Incubation is required of all newly accepted projects until a further review +indicates that the infrastructure, communications, and decision making process +have stabilized in a manner consistent with other successful ASF projects. + +While incubation status is not necessarily a reflection of the completeness or +stability of the code, it does indicate that the project has yet to be fully +endorsed by the ASF. + + +Support +------- + +Any problem with this release can be reported to the Tuscany mailing list +or in the JIRA issue tracker. + +Mailing list subscription: + tuscany-dev-subscribe@ws.apache.org + +Jira: + http://issues.apache.org/jira/browse/Tuscany + + +Thank you for using Tuscany! + + +The Tuscany Team. + diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/system.fragment b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/system.fragment new file mode 100644 index 0000000000..2c89c47dd0 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/main/resources/system.fragment @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java new file mode 100644 index 0000000000..dc6389ef93 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java @@ -0,0 +1,110 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.assembly; + +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import javax.wsdl.Definition; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; + +import junit.framework.TestCase; + +import org.apache.tuscany.binding.celtix.assembly.impl.WebServiceAssemblyFactoryImpl; +import org.apache.tuscany.binding.celtix.assembly.impl.WebServiceBindingImpl; +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.model.assembly.AssemblyContext; +import org.easymock.EasyMock; + +public class WebServiceAssemblyFactoryTestCase extends TestCase { + + + private void setupMocks(WSDLDefinitionRegistry reg, + List wsdlList) { + EasyMock.reset(new Object[] {reg}); + + //FIXME pass the current ResourceLoader + reg.getDefinitionsForNamespace("http://objectweb.org/hello_world_soap_http", null); + EasyMock.expectLastCall().andReturn(wsdlList); + + EasyMock.replay(new Object[] {reg}); + } + + public void testCreate() throws Exception { + WSDLDefinitionRegistry reg = EasyMock.createNiceMock(WSDLDefinitionRegistry.class); + + WebServiceAssemblyFactoryImpl impl = new WebServiceAssemblyFactoryImpl(); + WebServiceBinding bind = impl.createWebServiceBinding(reg); + assertNotNull("Did not create the binding", bind); + assertTrue("bind object wrong class: " + bind.getClass(), + bind instanceof WebServiceBindingImpl); + + assertNull("Should be initialized with null WSDL", bind.getWSDLDefinition()); + assertNull("Should be initialized with null port", bind.getWSDLPort()); + assertNull("Should be initialized with null service", bind.getWSDLService()); + assertNull("Should be initialized with null URI", bind.getURI()); + assertNull("Should be initialized with null TypeHelper", + bind.getTypeHelper()); + assertNull("Should be initialized with null ResourceLoader", + bind.getResourceLoader()); + + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#SoapPort"); + + AssemblyContext modelContext = EasyMock.createNiceMock(AssemblyContext.class); + + WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); + reader.setFeature("javax.wsdl.verbose", false); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + Definition definition = reader.readWSDL(url.toString()); + + List wsdlList = new ArrayList(); + + setupMocks(reg, wsdlList); + try { + bind.initialize(modelContext); + fail("Should have failed getting the wsdl"); + } catch (IllegalArgumentException ex) { + //expected + } + + setupMocks(reg, wsdlList); + + + wsdlList.add(definition); + bind = impl.createWebServiceBinding(reg); + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#SoapPort"); + bind.initialize(modelContext); + + setupMocks(reg, wsdlList); + + wsdlList.add(definition); + bind = impl.createWebServiceBinding(reg); + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#FooPort"); + + try { + bind.initialize(modelContext); + fail("Should have failed finding the port"); + } catch (IllegalArgumentException ex) { + //expected + } + } +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java new file mode 100644 index 0000000000..be4d910069 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java @@ -0,0 +1,103 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.handler.io; + +import java.net.URL; + +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; +import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + + +import commonj.sdo.helper.TypeHelper; + +import junit.framework.TestCase; + +import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl; +import org.apache.tuscany.sdo.helper.XSDHelperImpl; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.apache.tuscany.sdo.util.SDOUtil; +import org.objectweb.celtix.bindings.DataReader; +import org.objectweb.celtix.bindings.DataWriter; +import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache; +import org.objectweb.celtix.context.ObjectMessageContext; +import org.objectweb.celtix.context.ObjectMessageContextImpl; + + + +public class NodeDataWriterTestCase extends TestCase { + + private TypeHelper typeHelper; + + protected void setUp() throws Exception { + super.setUp(); + DataObjectUtil.initRuntime(); + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); + typeHelper = SDOUtil.createTypeHelper(); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + new XSDHelperImpl(typeHelper).define(url.openStream(), null); + } finally { + Thread.currentThread().setContextClassLoader(cl); + } + + + } + + public void testWriteWrapper() throws Exception { + WSDLReader wreader = WSDLFactory.newInstance().newWSDLReader(); + wreader.setFeature("javax.wsdl.verbose", false); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + Definition definition = wreader.readWSDL(url.toString()); + Port port = definition.getService(new QName("http://objectweb.org/hello_world_soap_http", + "SOAPService")).getPort("SoapPort"); + + WSDLMetaDataCache wsdlCache = new WSDLMetaDataCache(definition, + port); + + + ResourceLoaderImpl loader = new ResourceLoaderImpl(getClass().getClassLoader()); + SCADataBindingCallback callback = new SCADataBindingCallback(wsdlCache.getOperationInfo("greetMe"), + typeHelper, + loader, + false); + + DataWriter writer = callback.createWriter(Node.class); + Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element element = doc.createElement("ROOT"); + + ObjectMessageContext objCtx = new ObjectMessageContextImpl(); + objCtx.setMessageObjects(new Object[] {"Hello"}); + writer.writeWrapper(objCtx , false, element); + + assertEquals("Value not written", "Hello", element.getFirstChild().getTextContent().trim()); + + DataReader reader = callback.createReader(Node.class); + reader.readWrapper(objCtx , true, element); + + assertEquals("Hello", objCtx.getReturn()); + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java new file mode 100644 index 0000000000..a27d866191 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java @@ -0,0 +1,54 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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.binding.celtix.loader; + +import javax.xml.stream.XMLStreamReader; + +import junit.framework.TestCase; + +import org.apache.tuscany.core.loader.LoaderContext; +import org.apache.tuscany.core.loader.StAXLoaderRegistry; +import org.apache.tuscany.model.assembly.AssemblyContext; +import org.easymock.EasyMock; + +public class WebServiceBindingLoaderTestCase extends TestCase { + + @SuppressWarnings("deprecation") + public void testLoad() throws Exception { + + WebServiceBindingLoader loader = new WebServiceBindingLoader(); + StAXLoaderRegistry reg = EasyMock.createNiceMock(StAXLoaderRegistry.class); + reg.getContext(); + EasyMock.expectLastCall().andReturn(EasyMock.createNiceMock(AssemblyContext.class)); + EasyMock.replay(reg); + + loader.setRegistry(reg); + + XMLStreamReader reader = EasyMock.createNiceMock(XMLStreamReader.class); + reader.getAttributeValue(null, "uri"); + EasyMock.expectLastCall().andReturn("http://objectweb.org/hello_world_soap_http"); + reader.getAttributeValue(null, "port"); + EasyMock.expectLastCall().andReturn("SoapPort"); + EasyMock.replay(reader); + + LoaderContext loaderContext = new LoaderContext(null); + + assertNotNull("Did not load binding", loader.load(reader, loaderContext)); + + } + +} diff --git a/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl new file mode 100644 index 0000000000..a1d40daf26 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3