diff options
Diffstat (limited to '')
9 files changed, 0 insertions, 835 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/ImplUtil.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/ImplUtil.java deleted file mode 100644 index c30c784d64..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/ImplUtil.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.annotation.Annotation; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; - -import sample.api.Java; -import sample.api.WSDL; - -/** - * Utility functions to help develop a component implementation extension. - */ -class ImplUtil { - - /** - * Return a Sample implementation with the given name. - */ - static SampleAsyncImplementation implementation(String name) { - final SampleAsyncImplementation impl = new SampleAsyncImplementation(name); - impl.setUnresolved(true); - return impl; - } - - /** - * Return the Java class configured on an annotation. - */ - static Class<?> clazz(final Annotation a) { - return ((Java)a).value(); - } - - /** - * Return the WSDL QName configured on an annotation. - */ - static QName qname(final Annotation a) { - final String uri = ((WSDL)a).value(); - final int h = uri.indexOf('#'); - return new QName(uri.substring(0, h), uri.substring(h + 1)); - } - - /** - * Convert a Java class to an interface contract. - */ - static JavaInterfaceContract contract(final Class<?> c, final JavaInterfaceFactory jif) throws InvalidInterfaceException { - final JavaInterfaceContract ic = jif.createJavaInterfaceContract(); - ic.setInterface(jif.createJavaInterface(c)); - return ic; - } - - /** - * Convert a WSDL interface to an interface contract. - */ - static WSDLInterfaceContract contract(final WSDLInterface wi, final WSDLFactory wf) { - final WSDLInterfaceContract ic = wf.createWSDLInterfaceContract(); - ic.setInterface(wi); - return ic; - } - - /** - * Convert a Java class to a service. - */ - static Service service(final Class<?> c, final JavaInterfaceFactory jif, final AssemblyFactory af) throws InvalidInterfaceException { - Service s = af.createService(); - s.setName(c.getSimpleName()); - s.setInterfaceContract(contract(c, jif)); - return s; - } - - /** - * Convert a WSDL interface to a service. - */ - static Service service(final WSDLInterface wi, final WSDLFactory wf, final AssemblyFactory af) { - Service s = af.createService(); - s.setName(wi.getName().getLocalPart()); - s.setInterfaceContract(contract(wi, wf)); - return s; - } - - /** - * Convert a name and Java class to a reference. - */ - static Reference reference(final String name, final Class<?> c, final JavaInterfaceFactory jif, final AssemblyFactory af) throws InvalidInterfaceException { - final Reference r = af.createReference(); - r.setName(name); - r.setInterfaceContract(contract(c, jif)); - return r; - } - - /** - * Convert a name and WSDL interface to a reference. - */ - static Reference reference(final String name, final WSDLInterface wi, final WSDLFactory wf, final AssemblyFactory af) { - final Reference r = af.createReference(); - r.setName(name); - r.setInterfaceContract(contract(wi, wf)); - return r; - } - - /** - * Convert a WSDL qname to a WSDL interface. - */ - static WSDLInterface interfaze(final QName name, final WSDLFactory wif) { - final WSDLInterface wir = wif.createWSDLInterface(); - wir.setUnresolved(true); - wir.setName(name); - return wir; - } - - /** - * Convert a WSDL qname to a WSDL definition. - */ - static WSDLDefinition definition(final QName name, final WSDLFactory wif) { - final WSDLDefinition wdr = wif.createWSDLDefinition(); - wdr.setUnresolved(true); - wdr.setNamespace(name.getNamespaceURI()); - wdr.setNameOfPortTypeToResolve(name); - return wdr; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementation.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementation.java deleted file mode 100644 index e0abd72b84..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementation.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package sampleasync.impl; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.impl.ImplementationImpl; - -/** - * Model representing a Sample implementation in an SCA assembly. - * - * @version $Rev$ $Date$ - */ -public class SampleAsyncImplementation extends ImplementationImpl { - static final QName QN = new QName(SCA11_TUSCANY_NS, "implementation.sampleasync"); - - final String name; - Class<?> clazz; - - SampleAsyncImplementation(final String name) { - super(QN); - this.name = name; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementationProcessor.java deleted file mode 100644 index 03fe3da178..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncImplementationProcessor.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package sampleasync.impl; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static sampleasync.impl.SampleAsyncImplementation.QN; -import static sampleasync.impl.ImplUtil.clazz; -import static sampleasync.impl.ImplUtil.definition; -import static sampleasync.impl.ImplUtil.implementation; -import static sampleasync.impl.ImplUtil.interfaze; -import static sampleasync.impl.ImplUtil.qname; -import static sampleasync.impl.ImplUtil.reference; -import static sampleasync.impl.ImplUtil.service; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; -import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ClassReference; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.databinding.xml.DOMDataBinding; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject; - -import sample.api.Java; -import sample.api.WSDL; - -/** - * StAX artifact processor for Sample implementations. - * - * @version $Rev$ $Date$ - */ -public class SampleAsyncImplementationProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<SampleAsyncImplementation> { - final AssemblyFactory af; - final JavaInterfaceFactory jif; - final WSDLFactory wf; - - public SampleAsyncImplementationProcessor(final ExtensionPointRegistry ep) { - final FactoryExtensionPoint fep = ep.getExtensionPoint(FactoryExtensionPoint.class); - this.af = fep.getFactory(AssemblyFactory.class); - this.jif = fep.getFactory(JavaInterfaceFactory.class); - this.wf = fep.getFactory(WSDLFactory.class); - } - - public QName getArtifactType() { - return QN; - } - - public Class<SampleAsyncImplementation> getModelType() { - return SampleAsyncImplementation.class; - } - - public SampleAsyncImplementation read(final XMLStreamReader r, final ProcessorContext ctx) throws ContributionReadException, XMLStreamException { - // Read the component implementation element - final SampleAsyncImplementation impl = implementation(r.getAttributeValue(null, "class")); - while(r.hasNext() && !(r.next() == END_ELEMENT && QN.equals(r.getName()))) - ; - return impl; - } - - public void resolve(final SampleAsyncImplementation impl, final ModelResolver res, final ProcessorContext ctx) throws ContributionResolveException { - try { - // Resolve and introspect the implementation class - impl.clazz = resolve(impl.name, res, ctx); - - for(final Annotation a: impl.clazz.getAnnotations()) { - if(a instanceof Java) - impl.getServices().add(service(clazz(a), jif, af)); - else if(a instanceof WSDL) - impl.getServices().add(service(resolve(qname(a), res, ctx, wf), wf, af)); - } - - for(Field f: impl.clazz.getDeclaredFields()) { - for(final Annotation a: f.getAnnotations()) { - if(a instanceof Java) - impl.getReferences().add(reference(f.getName(), clazz(a), jif, af)); - else if(a instanceof WSDL) - impl.getReferences().add(reference(f.getName(), resolve(qname(a), res, ctx, wf), wf, af)); - } - } - - impl.setUnresolved(false); - } catch(InvalidInterfaceException e) { - throw new ContributionResolveException(e); - } - } - - public void write(final SampleAsyncImplementation impl, final XMLStreamWriter w, final ProcessorContext ctx) throws ContributionWriteException, XMLStreamException { - writeStart(w, QN.getNamespaceURI(), QN.getLocalPart(), new XAttr("class", impl.name)); - writeEnd(w); - } - - /** - * Resolve a Java class. - */ - static Class<?> resolve(final String name, final ModelResolver res, final ProcessorContext ctx) throws ContributionResolveException { - final ClassReference cr = res.resolveModel(ClassReference.class, new ClassReference(name), ctx); - if(cr.getJavaClass() != null) - return cr.getJavaClass(); - throw new ContributionResolveException(new ClassNotFoundException(name)); - } - - /** - * Resolve a WSDL interface. - */ - static WSDLInterface resolve(final QName name, final ModelResolver res, final ProcessorContext ctx, final WSDLFactory wif) throws ContributionResolveException { - final WSDLInterface wi = res.resolveModel(WSDLInterface.class, interfaze(name, wif), ctx); - if(!wi.isUnresolved()) - return domBound(wi); - - final WSDLDefinition wd = res.resolveModel(WSDLDefinition.class, definition(wi.getName(), wif), ctx); - if(wd.isUnresolved()) - throw new ContributionResolveException("Couldn't find " + name.getNamespaceURI()); - - WSDLObject<PortType> pt = wd.getWSDLObject(PortType.class, name); - if(pt == null) - throw new ContributionResolveException("Couldn't find " + name); - try { - final WSDLInterface nwi = wif.createWSDLInterface(pt.getElement(), wd, res, ctx.getMonitor()); - nwi.setWsdlDefinition(wd); - res.addModel(nwi, ctx); - return domBound(nwi); - } catch(InvalidInterfaceException e) { - throw new ContributionResolveException(e); - } - } - - /** - * Return a WSDL interface configured to use a DOM databinding. - */ - static WSDLInterface domBound(WSDLInterface wi) throws ContributionResolveException { - try { - final WSDLInterface domwi = (WSDLInterface)wi.clone(); - domwi.resetDataBinding(DOMDataBinding.NAME); - return domwi; - } catch(CloneNotSupportedException e) { - throw new ContributionResolveException(e); - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java deleted file mode 100644 index 10eb78f6c8..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaOperation; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.InvokerAsyncRequest; -import org.apache.tuscany.sca.invocation.InvokerAsyncResponse; -import org.apache.tuscany.sca.provider.ImplementationAsyncProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * Implementation provider for Sample component implementations. - * - * @version $Rev$ $Date$ - */ -class SampleAsyncProvider implements ImplementationAsyncProvider { - final RuntimeComponent comp; - final SampleAsyncImplementation impl; - final ProxyFactory pxf; - final ExtensionPointRegistry ep; - Object instance; - Map<String, Object> asyncMessageMap = new HashMap<String, Object>(); - - SampleAsyncProvider(final RuntimeComponent comp, final SampleAsyncImplementation impl, ProxyFactory pf, ExtensionPointRegistry ep) { - this.comp = comp; - this.impl = impl; - this.pxf = pf; - this.ep = ep; - } - - public void start() { - // Construct implementation instance and inject reference proxies - try { - instance = impl.clazz.newInstance(); - - for(ComponentReference r: comp.getReferences()) { - final Field f = impl.clazz.getDeclaredField(r.getName()); - f.setAccessible(true); - // Inject a Java or WSDLReference proxy - final Interface i = r.getInterfaceContract().getInterface(); - if(i instanceof JavaInterface) - f.set(instance, pxf.createProxy(comp.getComponentContext().getServiceReference(f.getType(), r.getName()))); - else - f.set(instance, new SampleWSDLProxy(asyncMessageMap, r.getEndpointReferences().get(0), i, ep)); - } - } catch(Exception e) { - throw new RuntimeException(e); - } - } - - public void stop() { - instance = null; - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public Invoker createInvoker(final RuntimeComponentService s, final Operation op) { - return (Invoker)createAsyncInvoker(s, op); - } - - public InvokerAsyncRequest createAsyncInvoker(final RuntimeComponentService s, final Operation op) { - try { - // Creating an invoker for a Java or WSDL-typed implementation - if(op instanceof JavaOperation) - return new SampleJavaInvoker((JavaOperation)op, impl.clazz, instance); - return new SampleWSDLInvoker((WSDLOperation)op, impl.clazz, instance); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - - public InvokerAsyncResponse createAsyncResponseInvoker(Operation operation) { - return new SampleAsyncResponseInvoker(asyncMessageMap, operation, impl.clazz, instance); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java deleted file mode 100644 index 2170313eec..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * Factory for Sample implementation providers. - * - * @version $Rev$ $Date$ - */ -public class SampleAsyncProviderFactory implements ImplementationProviderFactory<SampleAsyncImplementation> { - final ProxyFactory pxf; - final ExtensionPointRegistry ep; - - public SampleAsyncProviderFactory(final ExtensionPointRegistry ep) { - this.ep = ep; - pxf = ExtensibleProxyFactory.getInstance(ep); - } - - public ImplementationProvider createImplementationProvider(final RuntimeComponent comp, final SampleAsyncImplementation impl) { - return new SampleAsyncProvider(comp, impl, pxf, ep); - } - - public Class<SampleAsyncImplementation> getModelType() { - return SampleAsyncImplementation.class; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java deleted file mode 100644 index 2a7ad3f5bc..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncResponseInvoker.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.reflect.Method; -import java.util.Map; - -import org.apache.tuscany.sca.core.invocation.Constants; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.InvokerAsyncResponse; -import org.apache.tuscany.sca.invocation.Message; -import org.w3c.dom.Element; - -/** - * Invoker for Sample components that implement a WSDL interface using a generic - * call method. - * - * @version $Rev$ $Date$ - */ -class SampleAsyncResponseInvoker implements InvokerAsyncResponse { - final String name; - final Object instance; - final Operation op; - Map<String, Object> asyncMessageMap; - - SampleAsyncResponseInvoker(Map<String, Object> asyncMessageMap, final Operation op, final Class<?> clazz, final Object instance) { - this.asyncMessageMap = asyncMessageMap; - this.name = op.getName(); - this.instance = instance; - this.op = op; - } - - public void invokeAsyncResponse(final Message msg) { - try { - String messageID = (String) msg.getHeaders().get(Constants.MESSAGE_ID); - String forwardOpName = (String)asyncMessageMap.get(messageID); - - // process the async response - //Object response = ((Object[])msg.getBody())[0]; - Object response = msg.getBody(); - - Method method = instance.getClass().getMethod(forwardOpName + "Callback", Element.class); - method.invoke(instance, response); - } catch(Exception e) { - e.printStackTrace(); - // TODO - need to throw this to somewhere? - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleJavaInvoker.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleJavaInvoker.java deleted file mode 100644 index 063fe166eb..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleJavaInvoker.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.reflect.Method; - -import org.apache.tuscany.sca.interfacedef.java.JavaOperation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.InvokerAsyncRequest; -import org.apache.tuscany.sca.invocation.InvokerAsyncResponse; -import org.apache.tuscany.sca.invocation.Message; - -/** - * Invoker for Sample components that implement a Java interface. - * - * @version $Rev$ $Date$ - */ -class SampleJavaInvoker implements Invoker, InvokerAsyncRequest { - final Object instance; - final Method method; - - SampleJavaInvoker(final JavaOperation op, final Class<?> clazz, final Object instance) throws SecurityException, NoSuchMethodException { - this.instance = instance; - this.method = clazz.getMethod(op.getJavaMethod().getName(), op.getJavaMethod().getParameterTypes()); - } - - public Message invoke(final Message msg) { - return processRequest(msg); - } - - public void invokeAsyncRequest(Message msg) { - processRequest(msg); - // TODO - need to do something about exceptions - } - - public Message processRequest(Message msg) { - try { - // Call the method that implements the operation - msg.setBody(method.invoke(instance, (Object[])msg.getBody())); - } catch(Exception e) { - e.printStackTrace(); - msg.setFaultBody(e.getCause()); - } - return msg; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java deleted file mode 100644 index 26412ab281..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.reflect.Method; - -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.w3c.dom.Element; - -/** - * Invoker for Sample components that implement a WSDL interface using a generic - * call method. - * - * @version $Rev$ $Date$ - */ -class SampleWSDLInvoker extends InterceptorAsyncImpl { - final String name; - final Object instance; - final Method method; - - SampleWSDLInvoker(final WSDLOperation op, final Class<?> clazz, final Object instance) throws SecurityException, NoSuchMethodException { - this.name = op.getName(); - this.instance = instance; - this.method = clazz.getMethod("call", String.class, Element.class); - } - - public Invoker getNext() { - // Can't get next for an implementation invoker - return null; - } - - public Message invoke(final Message msg) { - return processRequest(msg); - } - - public void invokeAsyncRequest(Message msg) { - Message responseMsg = processRequest(msg); - - // in this sample programming model we make the async - // response from the implementation provider. The - // component implementation itself doesn't get a chance to - // do async responses. - - // At this point we could serialize the ??? and pick it up again - // later to send the async response - - ((RuntimeEndpoint)msg.getTo()).invokeAsyncResponse(responseMsg); - } - - public Message processRequest(Message msg) { - try { - //AsyncHeader asyncHeader = (String) message.getHeaders().get("ASYNC-HEADER"); - // Invoke the generic call method - Object response = method.invoke(instance, name, ((Object[])msg.getBody())[0]); - msg.setBody(response); - } catch(Exception e) { - e.printStackTrace(); - msg.setFaultBody(e.getCause()); - } - return msg; - } - - public Message processResponse(Message msg) { - return msg; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java b/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java deleted file mode 100644 index a02132ac9e..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package sampleasync.impl; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.invocation.Constants; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.w3c.dom.Element; - -import sample.api.WSDLReference; - -/** - * Proxy used to call operations on WSDL references. - */ -class SampleWSDLProxy implements WSDLReference { - final RuntimeEndpointReference repr; - final Map<String, Operation> ops; - final ExtensionPointRegistry ep; - final MessageFactory mf; - Map<String, Object> asyncMessageMap; - - SampleWSDLProxy(Map<String, Object> asyncMessageMap, EndpointReference epr, Interface wi, ExtensionPointRegistry ep) { - this.asyncMessageMap = asyncMessageMap; - this.ep = ep; - mf = ep.getExtensionPoint(MessageFactory.class); - - repr = (RuntimeEndpointReference)epr; - ops = new HashMap<String, Operation>(); - for(Operation o: wi.getOperations()) - ops.put(o.getName(), o); - } - - @Override - public Element call(String op, Element e) { - try { - // Invoke the named operation on the endpoint reference - return (Element)repr.invoke(ops.get(op), new Object[] {e}); - } catch(InvocationTargetException ex) { - throw new RuntimeException(ex); - } - } - - @Override - public void callAsync(String op, Element e) { - // Asynchronously invoke the named operation on the endpoint reference - Message message = mf.createMessage(); - message.setBody(new Object[]{e}); - - // We could MESSAGE_ID here if required. If not the infrastructure - // will generate a UUID - String messageID = "myuniqueid"; - message.getHeaders().put(Constants.MESSAGE_ID, messageID); - - // save the message id ready for when we process the response - asyncMessageMap.put(messageID, op); - - // We could add implementation specific headers here if required - //message.getHeaders().put(Constants.???, ???); - - try { - repr.invokeAsync(ops.get(op), message); - } catch (Throwable ex) { - ex.printStackTrace(); - } - - // if we don't provide a message id we can get the one the - // infrastructure generates - //String messageID = (String) message.getHeaders().get(Constants.MESSAGE_ID); - //asyncMessageMap.put(messageID, op); - - } -} |