diff options
author | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
---|---|---|
committer | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
commit | bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch) | |
tree | 38a92061c0793434c4be189f1d70c3458b6bc41d /branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint |
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint')
2 files changed, 214 insertions, 0 deletions
diff --git a/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java b/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java new file mode 100644 index 0000000000..bb9f0e307a --- /dev/null +++ b/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointInOutSyncMessageReceiver.java @@ -0,0 +1,101 @@ +/** + * + * 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.axis2.entrypoint; + +import java.lang.reflect.Method; + +import org.apache.axiom.om.OMElement; +import org.apache.axiom.soap.SOAPEnvelope; +import org.apache.axis2.AxisFault; +import org.apache.axis2.Constants; +import org.apache.axis2.context.MessageContext; +import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver; +import org.apache.tuscany.binding.axis2.util.SDODataBinding; +import org.apache.tuscany.core.wire.InvocationRuntimeException; + +public class WebServiceEntryPointInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver { + + private Object entryPointProxy; + + protected Method operationMethod; + + protected SDODataBinding dataBinding; + + protected ClassLoader classLoader; + + public WebServiceEntryPointInOutSyncMessageReceiver(Object entryPointProxy, Method operationMethod, SDODataBinding dataBinding, ClassLoader classLoader) { + this.entryPointProxy = entryPointProxy; + this.operationMethod = operationMethod; + this.dataBinding = dataBinding; + this.classLoader = classLoader; + } + + @Override + public void invokeBusinessLogic(MessageContext inMC, MessageContext outMC) throws AxisFault { + try { + + OMElement requestOM = inMC.getEnvelope().getBody().getFirstElement(); + Object[] request; + if (requestOM != null) { + request = dataBinding.fromOMElement(requestOM); + } else { + request = new Object[0]; + } + + Object response; + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + try { + if (tccl != classLoader) { + Thread.currentThread().setContextClassLoader(classLoader); + } + + response = operationMethod.invoke(entryPointProxy, request); + + } finally { + if (tccl != classLoader) { + Thread.currentThread().setContextClassLoader(tccl); + } + } + + SOAPEnvelope soapEnvelope = getSOAPFactory(inMC).getDefaultEnvelope(); + + OMElement responseOM = null; + if (response != null) { + responseOM = dataBinding.toOMElement(new Object[] { response }); + soapEnvelope.getBody().addChild(responseOM); + } + + outMC.setEnvelope(soapEnvelope); + outMC.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE); + + } catch (InvocationRuntimeException e) { + // throw new InvocationRuntimeException(e); + Throwable t = e.getCause(); + if(t instanceof Exception) { + + throw AxisFault.makeFault((Exception)t); + + } + throw e; + + + } catch (Exception e) { + throw AxisFault.makeFault(e); + } + + } +} diff --git a/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java b/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java new file mode 100644 index 0000000000..4e6173b671 --- /dev/null +++ b/branches/java-post-M1/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/entrypoint/WebServiceEntryPointServlet.java @@ -0,0 +1,113 @@ +/** + * + * 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.axis2.entrypoint; + +import java.io.IOException; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.axis2.description.AxisService; +import org.apache.axis2.transport.http.AxisServlet; + +/** + * @version $Rev: 383148 $ $Date: 2006-03-04 08:07:17 -0800 (Sat, 04 Mar 2006) $ + */ +public class WebServiceEntryPointServlet extends AxisServlet { + + private static final long serialVersionUID = 1L; + + private AxisService axisService; + + public WebServiceEntryPointServlet(AxisService axisService) { + this.axisService = axisService; + } + + public void init(final ServletConfig config) throws ServletException { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + ClassLoader scl = this.getClass().getClassLoader(); + try { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(scl); + } + + try { + + super.init(config); + + configContext.getAxisConfiguration().addService(axisService); + + } catch (Exception e) { + throw new ServletException(e); + } + + } finally { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(tccl); + } + } + } + + @Override + protected void doGet(final HttpServletRequest arg0, final HttpServletResponse arg1) throws ServletException, IOException { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + ClassLoader scl = this.getClass().getClassLoader(); + try { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(scl); + } + + try { + super.doGet(arg0, arg1); + } catch (Exception e) { + e.printStackTrace(); + throw new ServletException(e); + } + + } finally { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(tccl); + } + } + } + + @Override + protected void doPost(final HttpServletRequest arg0, final HttpServletResponse arg1) throws ServletException, IOException { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + ClassLoader scl = this.getClass().getClassLoader(); + try { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(scl); + } + + try { + super.doPost(arg0, arg1); + } catch (Exception e) { + e.printStackTrace(); + throw new ServletException(e); + } + + } finally { + if (tccl != scl) { + Thread.currentThread().setContextClassLoader(tccl); + } + } + } +} |