diff options
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLOperationElement.java')
-rw-r--r-- | bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLOperationElement.java | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLOperationElement.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLOperationElement.java deleted file mode 100644 index 147334da0..000000000 --- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLOperationElement.java +++ /dev/null @@ -1,396 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * yyyymmdd bug Email and other contact information - * -------- -------- ----------------------------------------------------------- - * 20070305 117034 makandre@ca.ibm.com - Andrew Mak, Web Services Explorer should support SOAP Headers - * 20070413 176493 makandre@ca.ibm.com - Andrew Mak, WSE: Make message/transport stack pluggable - * 20071024 206556 gilberta@ca.ibm.com - Gilbert Andrews - *******************************************************************************/ -package org.eclipse.wst.ws.internal.explorer.platform.wsdl.datamodel; - -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; -import javax.wsdl.Binding; -import javax.wsdl.BindingInput; -import javax.wsdl.BindingOperation; -import javax.wsdl.Definition; -import javax.wsdl.Input; -import javax.wsdl.Operation; -import javax.wsdl.Output; -import javax.wsdl.Part; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.soap.SOAPOperation; -import org.eclipse.wst.ws.internal.explorer.platform.perspective.TransportProviderRegistry; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.BindingTypes; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.FragmentConstants; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDFragment; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentConfiguration; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentController; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.impl.SOAPHeaderWrapperFragment; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.xsd.WSDLPartsToXSDTypeMapper; -import org.eclipse.wst.ws.internal.explorer.transport.ISOAPTransportProvider; -import org.eclipse.wst.ws.internal.explorer.transport.MessageContext; -import org.eclipse.wst.wsdl.binding.soap.SOAPHeader; -import org.eclipse.xsd.XSDNamedComponent; - -public class WSDLOperationElement extends WSDLCommonElement -{ - public static final int OPERATION_TYPE_SOAP = 0; - public static final int OPERATION_TYPE_HTTP_GET = 1; - public static final int OPERATION_TYPE_HTTP_POST = 2; - - private int operationType_; - private Operation operation_; - private WSDLPartsToXSDTypeMapper wsdlPartsToXsdTypeMapper_; - private XSDToFragmentController fragController_; - private boolean isDocumentStyle_; - private boolean isUseLiteral_; - private String soapAction_; - private String encodingStyle_; - private String encodingNamespace_; - - private Map headerCache; - - private MessageContext messageContext = null; - private ISOAPTransportProvider soapTransportProvider = null; - - private final void gatherSoapInformation(WSDLBindingElement bindingElement,SOAPBinding soapBinding) - { - // Initialize defaults. - isDocumentStyle_ = true; - soapAction_ = ""; - isUseLiteral_ = true; - encodingStyle_ = null; - encodingNamespace_ = null; - - if (soapBinding != null) - isDocumentStyle_ = "document".equals(soapBinding.getStyle()); - BindingOperation bindingOperation = getBindingOperation(bindingElement); - SOAPOperation soapOperation = null; - - for (Iterator i = bindingOperation.getExtensibilityElements().iterator();i.hasNext();) - { - ExtensibilityElement e = (ExtensibilityElement)i.next(); - if (e instanceof SOAPOperation) - { - soapOperation = (SOAPOperation)e; - soapAction_ = soapOperation.getSoapActionURI(); - if(soapAction_ == null) soapAction_ = ""; - - String style = soapOperation.getStyle(); - if (style != null) - isDocumentStyle_ = style.equals("document"); - break; - } - } - - BindingInput bindingInput = bindingOperation.getBindingInput(); - SOAPBody soapBody = null; - for (Iterator i = bindingInput.getExtensibilityElements().iterator();i.hasNext();) - { - ExtensibilityElement e = (ExtensibilityElement)i.next(); - if (e instanceof SOAPBody) - { - soapBody = (SOAPBody)e; - isUseLiteral_ = "literal".equals(soapBody.getUse()); - if (!isUseLiteral_) - { - // Encoded. - for (Iterator j = soapBody.getEncodingStyles().iterator();j.hasNext();) - { - encodingStyle_ = (String)j.next(); - encodingNamespace_ = soapBody.getNamespaceURI(); - break; - } - } - break; - } - } - } - - public WSDLOperationElement(String name,WSDLBindingElement bindingElement,Operation operation) - { - super(name, bindingElement.getModel()); - // Set the default operation type to be SOAP. - setOperation(bindingElement,operation); - } - - private Definition getDefinition(WSDLBindingElement bindingElement) { - WSDLServiceElement serviceElement = (WSDLServiceElement) bindingElement.getParentElement(); - WSDLElement wsdlElement = (WSDLElement) serviceElement.getParentElement(); - return wsdlElement.getDefinition(); - } - - private void setMessageContext(WSDLBindingElement bindingElement) { - messageContext = new MessageContext(); - messageContext.setDefinition(getDefinition(bindingElement)); - messageContext.setBindingOperation(getBindingOperation(bindingElement)); - messageContext.setBindingProtocol(bindingElement.getBindingExtensibilityElement()); - messageContext.setDocumentStyle(isDocumentStyle_); - } - - public MessageContext getMessageContext() { - return messageContext; - } - - private void setSOAPTransportProvider(SOAPBinding soapBinding) { - - String namespaceURI = soapBinding.getElementType().getNamespaceURI(); - String transportURI = soapBinding.getTransportURI(); - - soapTransportProvider = TransportProviderRegistry.getInstance() - .getSOAPTransportProvider(namespaceURI, transportURI); - } - - public ISOAPTransportProvider getSOAPTransportProvider() { - return soapTransportProvider; - } - - public void setOperation(WSDLBindingElement bindingElement,Operation operation) { - operation_ = operation; - setDocumentation(operation.getDocumentationElement()); - fragController_ = null; - wsdlPartsToXsdTypeMapper_ = null; - operationType_ = bindingElement.getBindingType(); - ExtensibilityElement bindingExtensibilityElement = bindingElement.getBindingExtensibilityElement(); - switch (operationType_) - { - case BindingTypes.SOAP: - gatherSoapInformation(bindingElement,(SOAPBinding)bindingExtensibilityElement); - setMessageContext(bindingElement); - setSOAPTransportProvider((SOAPBinding) bindingExtensibilityElement); - headerCache = new Hashtable(); - case BindingTypes.HTTP_GET: - case BindingTypes.HTTP_POST: - default: - break; - } - } - - public Operation getOperation() { - return operation_; - } - - public BindingOperation getBindingOperation() - { - return getBindingOperation((WSDLBindingElement)getParentElement()); - } - - private BindingOperation getBindingOperation(WSDLBindingElement bindingElement) - { - Binding binding = bindingElement.getBinding(); - String operationInputName = null; - String operationOutputName = null; - Input operationInput = operation_.getInput(); - Output operationOutput = operation_.getOutput(); - if (operationInput != null) - operationInputName = operationInput.getName(); - if (operationOutput != null) - operationOutputName = operationOutput.getName(); - BindingOperation bindingOperation = binding.getBindingOperation(operation_.getName(),operationInputName,operationOutputName); - if (bindingOperation == null) - bindingOperation = binding.getBindingOperation(operation_.getName(),null,null); - return bindingOperation; - } - - /** - * Return a list of input headers. - * - * @return A List - */ - public List getSOAPHeaders() { - return getSOAPHeaders(true); - } - - /** - * Return a list of headers. - * - * @param isInput If true, returns the input headers. If false, returns the output headers. - * @return A List - */ - public List getSOAPHeaders(boolean isInput) { - List headers = new Vector(); - - BindingOperation bindingOperation = getBindingOperation(); - List extensibilityElements = isInput ? - bindingOperation.getBindingInput().getExtensibilityElements() : - bindingOperation.getBindingOutput().getExtensibilityElements(); - - for (Iterator it = extensibilityElements.iterator(); it.hasNext();) { - - ExtensibilityElement e = (ExtensibilityElement) it.next(); - - if (e instanceof SOAPHeader && !headers.contains(e)) - headers.add(e); - } - - return headers; - } - - public List getOrderedBodyParts() - { - List parts = new Vector(operation_.getInput().getMessage().getOrderedParts(operation_.getParameterOrdering())); - BindingOperation bindingOperation = getBindingOperation(); - BindingInput bindingInput = bindingOperation.getBindingInput(); - for (Iterator it = bindingInput.getExtensibilityElements().iterator(); it.hasNext();) - { - ExtensibilityElement e = (ExtensibilityElement)it.next(); - if (e instanceof SOAPBody) - { - SOAPBody soapBody = (SOAPBody)e; - List bodyParts = soapBody.getParts(); - if (bodyParts != null) - { - for (int i = 0; i < parts.size(); i++) - { - Part part = (Part)parts.get(i); - if (!bodyParts.contains(part) && !bodyParts.contains(part.getName())) - { - parts.remove(i); - i--; - } - } - } - break; - } - } - return parts; - } - - private XSDToFragmentController getXSDToFragmentController() { - if (fragController_ == null) { - fragController_ = new XSDToFragmentController(); - fragController_.setWSDLPartsToXSDTypeMapper(wsdlPartsToXsdTypeMapper_); - } - return fragController_; - } - - private XSDNamedComponent getSchema(Part part, String id) { - if (wsdlPartsToXsdTypeMapper_ == null) { - wsdlPartsToXsdTypeMapper_ = new WSDLPartsToXSDTypeMapper(); - WSDLBindingElement bindingElement = (WSDLBindingElement)getParentElement(); - WSDLServiceElement serviceElement = (WSDLServiceElement)bindingElement.getParentElement(); - WSDLElement wsdlElement = (WSDLElement)serviceElement.getParentElement(); - wsdlPartsToXsdTypeMapper_.addSchemas(wsdlElement.getSchemaList()); - } - return wsdlPartsToXsdTypeMapper_.getXSDType(part, id); - } - - public IXSDFragment getHeaderFragment(SOAPHeader soapHeader) { - return getHeaderFragment(soapHeader, true); - } - - public IXSDFragment getHeaderFragment(SOAPHeader soapHeader, boolean isInput) { - StringBuffer id = new StringBuffer(); - Part part = soapHeader.getEPart(); - if (isInput) - id.append(FragmentConstants.INPUT_ID).append(soapHeader.getMessage()).append(FragmentConstants.PART_TOKEN); - else - id.append(FragmentConstants.OUTPUT_ID).append(soapHeader.getMessage()).append(FragmentConstants.PART_TOKEN); - - return getFragment(part, id, true, isInput); // only wrap input header fragments - } - - public IXSDFragment getFragment(Part part) { - return getFragment(part, true); - } - - public IXSDFragment getFragment(Part part, boolean isInput) { - StringBuffer id = new StringBuffer(); - if (isInput) - id.append(FragmentConstants.INPUT_ID); - else - id.append(FragmentConstants.OUTPUT_ID); - - return getFragment(part, id, false, false); - } - - private IXSDFragment getFragment(Part part, StringBuffer id, boolean isHeader, boolean useSOAPHeaderWrapper) { - String partName = part.getName(); - id.append(partName); - XSDToFragmentConfiguration config = new XSDToFragmentConfiguration(); - config.setIsWSDLPart(true); - config.setWSDLPartName(partName); - config.setXSDComponent(getSchema(part, id.toString())); - if (isDocumentStyle() || isHeader) - config.setStyle(FragmentConstants.STYLE_DOCUMENT); - else - config.setStyle(FragmentConstants.STYLE_RPC); - if (operationType_ == BindingTypes.SOAP) - { - if (!isUseLiteral_) - config.setPartEncoding(FragmentConstants.ENCODING_SOAP); - } - else - config.setPartEncoding(FragmentConstants.ENCODING_URL); - IXSDFragment fragment = getXSDToFragmentController().getFragment(config, id.toString(), part.getName()); - - // let's see if there's a corresponding wrapper for this fragment - if (useSOAPHeaderWrapper && !(fragment instanceof SOAPHeaderWrapperFragment)) { - SOAPHeaderWrapperFragment wrapper = (SOAPHeaderWrapperFragment) headerCache.get(fragment.getID()); - - // no wrapper, let's wrap it - if (wrapper == null) { - wrapper = new SOAPHeaderWrapperFragment(fragment); - headerCache.put(fragment.getID(), wrapper); - - // also put this wrapper fragment in the master cache - getXSDToFragmentController().addToCache(wrapper.getID(), wrapper); - } - - return wrapper; - } - - return fragment; - } - - public IXSDFragment getFragmentByID(String id) { - return getXSDToFragmentController().getCachedFragment(id); - } - - public void removeAllFragment() { - getXSDToFragmentController().emptyCache(); - } - - public boolean isDocumentStyle() - { - return isDocumentStyle_; - } - - public String getSoapAction() - { - return soapAction_; - } - - public boolean isUseLiteral() - { - return isUseLiteral_; - } - - public String getEncodingStyle() - { - return encodingStyle_; - } - - public String getEncodingNamespace() - { - return encodingNamespace_; - } - - public int getOperationType() - { - return operationType_; - } -} |