summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java')
-rw-r--r--branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java245
1 files changed, 0 insertions, 245 deletions
diff --git a/branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java b/branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java
deleted file mode 100644
index aba5fd5984..0000000000
--- a/branches/sca-java-M2/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java
+++ /dev/null
@@ -1,245 +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 org.apache.tuscany.binding.celtix;
-
-import java.io.IOException;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-import javax.jws.WebParam;
-import javax.wsdl.Binding;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.soap.SOAPAddress;
-import javax.xml.namespace.QName;
-import javax.xml.ws.Holder;
-
-import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.wire.Interceptor;
-import org.apache.tuscany.spi.wire.Message;
-import org.apache.tuscany.spi.wire.TargetInvoker;
-
-import commonj.sdo.helper.TypeHelper;
-import org.apache.tuscany.binding.celtix.io.SCADataBindingCallback;
-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;
-
-
-/**
- * Responsible for dispatching a service operation invocation on a reference to the active Celtix <code>Bus</code>
- *
- * @version $Rev$ $Date$
- */
-public class CeltixInvoker implements TargetInvoker {
-
- private WSDLMetaDataCache wsdlCache;
-
- private ClientBinding clientBinding;
-
- private String operationName;
-
- private TypeHelper typeHelper;
-
- public CeltixInvoker(String operationName,
- Bus bus,
- Port port,
- Service wsdlService,
- Definition wsdlDef,
- TypeHelper theTypeHelper) throws BuilderException {
- this.wsdlCache = new WSDLMetaDataCache(wsdlDef, port);
- this.operationName = operationName;
- this.typeHelper = theTypeHelper;
- // Definition wsdlDef = wsBinding.getWSDLDefinition();
- // wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort());
-
- try {
- String key = wsdlDef.getDocumentBaseURI();
- URL url = new URL(key);
-
- QName qName = wsdlService.getQName();
- EndpointReferenceType reference = EndpointReferenceUtils.getEndpointReference(url, qName, port.getName());
-
- String bindingId = null;
- Binding binding = port.getBinding();
- if (null != binding) {
- List list = binding.getExtensibilityElements();
- if (!list.isEmpty()) {
- bindingId = ((ExtensibilityElement) list.get(0)).getElementType().getNamespaceURI();
- }
- }
- if (bindingId == null) {
- List<?> list = port.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 InvokerCreationException(e);
- } catch (BusException e) {
- throw new InvokerCreationException(e);
- } catch (WSDLException e) {
- throw new InvokerCreationException(e);
- } catch (IOException e) {
- throw new InvokerCreationException(e);
- }
- }
-
- /**
- * Invoke an operation on the external Web service.
- *
- * @param args the Java object arguments to the WS operation
- * @return the response from the WS as a Java object
- */
- public Object invokeTarget(final Object args) throws InvocationTargetException {
- 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[];
- Object argsArray[];
- if (args.getClass().isArray()) {
- argsArray = (Object[]) args;
- realArgs = new Object[Array.getLength(args)];
- } else {
- argsArray = new Object[0];
- realArgs = new Object[0];
- }
-
- if (opInfo.getParamsLength() == 0) {
- // REVISIT - opInfo doesn't return the needed info for the wrapped doc/lit case.
- // Bug in Celtix
- realArgs = argsArray;
- } else {
- for (int x = 0; x < argsArray.length; x++) {
- if (opInfo.getWebParam(x).mode() == WebParam.Mode.IN) {
- realArgs[x] = argsArray[x];
- } else {
- realArgs[x] = new Holder<Object>(argsArray[x]);
- inOutCount++;
- hasInOut = true;
- }
- }
- }
- objMsgContext.setMessageObjects(realArgs);
- boolean isOneway = opInfo.isOneWay();
- DataBindingCallback callback = new SCADataBindingCallback(opInfo, hasInOut, typeHelper);
- try {
- if (isOneway) {
- clientBinding.invokeOneWay(objMsgContext, callback);
- } else {
- objMsgContext = clientBinding.invoke(objMsgContext, callback);
- }
- } catch (IOException e) {
- throw new InvocationTargetException(e);
- }
-
- if (objMsgContext.getException() != null) {
- // REVISIT - Exceptions
- /*
- * if (isValidException(objMsgContext)) { throw
- * (Exception)objMsgContext.getException(); } else { throw new
- * ProtocolException(objMsgContext.getException()); }
- */
- throw new InvocationTargetException(objMsgContext.getException());
- }
-
- if (hasInOut) {
- Object ret[] = new Object[inOutCount + 1];
- ret[0] = objMsgContext.getReturn();
- inOutCount = 1;
- for (int x = 0; x < argsArray.length; x++) {
- if (opInfo.getWebParam(x).mode() != WebParam.Mode.IN) {
- Holder<?> holder = (Holder<?>) realArgs[x];
- ret[inOutCount] = holder.value;
- inOutCount++;
- }
- }
- return ret;
- }
- return objMsgContext.getReturn();
- }
-
- public Message invoke(Message msg) {
- try {
- Object resp = invokeTarget(msg.getBody());
- msg.setBody(resp);
- } catch (Throwable e) {
- msg.setBodyWithFault(e);
- }
- return msg;
- }
-
- public void setNext(Interceptor next) {
- throw new UnsupportedOperationException();
- }
-
- public CeltixInvoker clone() throws CloneNotSupportedException {
- try {
- return (CeltixInvoker) super.clone();
- } catch (CloneNotSupportedException e) {
- // will not happen
- return null;
- }
- }
-
- public boolean isCacheable() {
- return true;
- }
-
- public void setCacheable(boolean cacheable) {
-
- }
-
- public boolean isOptimizable() {
- return false;
- }
-
-}