/* * 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.ode.bpel.compiler.wsdl; import org.apache.ode.bpel.compiler.bom.PartnerLinkType; import org.apache.ode.bpel.compiler.bom.Property; import org.apache.ode.bpel.compiler.bom.PropertyAlias; import org.apache.ode.utils.stl.CollectionsX; import org.apache.ode.utils.stl.MemberOfFunction; import org.w3c.dom.Element; import javax.wsdl.Binding; import javax.wsdl.BindingFault; import javax.wsdl.BindingInput; import javax.wsdl.BindingOperation; import javax.wsdl.BindingOutput; import javax.wsdl.Definition; import javax.wsdl.Fault; import javax.wsdl.Import; import javax.wsdl.Input; import javax.wsdl.Message; import javax.wsdl.Operation; import javax.wsdl.Output; import javax.wsdl.Part; import javax.wsdl.Port; import javax.wsdl.PortType; import javax.wsdl.Service; import javax.wsdl.Types; import javax.wsdl.extensions.ExtensibilityElement; import javax.wsdl.extensions.ExtensionRegistry; import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Implementation of the {@link Definition4BPEL} wrapper. */ class Definition4BPELImpl implements Definition4BPEL { private static final long serialVersionUID = 1L; Definition _def; private String _bpwsNS; private String _plnkNS; private String _propNS; Definition4BPELImpl(Definition wsdlDef, String bpwsNS, String plnkNS, String propNS) { _def = wsdlDef; _bpwsNS = bpwsNS; _plnkNS = plnkNS; _propNS = propNS; } /** * Get a list of the defined {@link PartnerLinkType}s. * * @return {@link List} of {@link PartnerLinkType} objects */ public List<PartnerLinkType> getPartnerLinkTypes() { return getElementsForType(new QName(_plnkNS, "partnerLinkType"), PartnerLinkType.class); } /** * Get a list of the defined {@link PartnerLinkType}s. * * @return {@link List} of {@link PartnerLinkType} objects */ public List<Property> getProperties() { return getElementsForType(new QName(_propNS, "property"), Property.class); } /** * Get a list of the defined {@link PropertyAlias}es. * * @return {@link List} of {@link PropertyAlias} objects */ public List<PropertyAlias> getPropertyAliases() { return getElementsForType(new QName(_propNS, "propertyAlias"), PropertyAlias.class); } public Property getProperty(final QName name) { return CollectionsX.find_if(getProperties(), new MemberOfFunction<Property>() { public boolean isMember(Property o) { return o.getName().equals(name); } }); } public PartnerLinkType getPartnerLinkType(final QName partnerLinkTypeName) { return CollectionsX.find_if(getPartnerLinkTypes(), new MemberOfFunction<PartnerLinkType>() { public boolean isMember(PartnerLinkType o) { return o.getName().equals(partnerLinkTypeName); } }); } public PropertyAlias getPropertyAlias(final QName propertyName, final QName messageType) { return CollectionsX.find_if(getPropertyAliases(), new MemberOfFunction<PropertyAlias>() { public boolean isMember(PropertyAlias o) { return o.getPropertyName().equals(propertyName) && o.getMessageType().equals(messageType); } }); } /** * Get a list of the schema types defined in-line. * * @return {@link List} of {@link XMLSchemaType} objects */ @SuppressWarnings("unchecked") public List <XMLSchemaType> getSchemas() { return (List<XMLSchemaType>)getTypes().getExtensibilityElements(); } public void addBinding(Binding binding) { _def.addBinding(binding); } public void addExtensibilityElement(ExtensibilityElement extensibilityElement) { _def.addExtensibilityElement(extensibilityElement); } public void addImport(Import anImport) { _def.addImport(anImport); } public void addMessage(Message message) { _def.addMessage(message); } public void addNamespace(String s, String s1) { _def.addNamespace(s,s1); } public void addPortType(PortType portType) { _def.addPortType(portType); } public void addService(Service service) { _def.addService(service); } public Binding createBinding() { return _def.createBinding(); } public BindingFault createBindingFault() { return _def.createBindingFault(); } public BindingInput createBindingInput() { return _def.createBindingInput(); } public BindingOperation createBindingOperation() { return _def.createBindingOperation(); } public BindingOutput createBindingOutput() { return _def.createBindingOutput(); } public Fault createFault() { return _def.createFault(); } public Import createImport() { return _def.createImport(); } public Input createInput() { return _def.createInput(); } public Message createMessage() { return _def.createMessage(); } public Operation createOperation() { return _def.createOperation(); } public Output createOutput() { return _def.createOutput(); } public Part createPart() { return _def.createPart(); } public Port createPort() { return _def.createPort(); } public PortType createPortType() { return _def.createPortType(); } public Service createService() { return _def.createService(); } public Types createTypes() { return _def.createTypes(); } public Binding getBinding(QName qName) { return _def.getBinding(qName); } public Map getBindings() { return _def.getBindings(); } public String getDocumentBaseURI() { return _def.getDocumentBaseURI(); } public Element getDocumentationElement() { return _def.getDocumentationElement(); } public List getExtensibilityElements() { return _def.getExtensibilityElements(); } public ExtensionRegistry getExtensionRegistry() { return _def.getExtensionRegistry(); } public Map getImports() { return _def.getImports(); } public List getImports(String s) { return _def.getImports(s); } public Message getMessage(QName qName) { return _def.getMessage(qName); } public Map getMessages() { return _def.getMessages(); } public String getNamespace(String s) { return _def.getNamespace(s); } public Map getNamespaces() { return _def.getNamespaces(); } public PortType getPortType(QName qName) { return _def.getPortType(qName); } public Map getPortTypes() { return _def.getPortTypes(); } public String getPrefix(String s) { return _def.getPrefix(s); } public QName getQName() { return _def.getQName(); } public Service getService(QName qName) { return _def.getService(qName); } public Map getServices() { return _def.getServices(); } public String getTargetNamespace() { return _def.getTargetNamespace(); } public Types getTypes() { return _def.getTypes(); } public Binding removeBinding(QName qName) { return _def.removeBinding(qName); } public Message removeMessage(QName qName) { return _def.removeMessage(qName); } public PortType removePortType(QName qName) { return _def.removePortType(qName); } public Service removeService(QName qName) { return _def.removeService(qName); } public void setDocumentBaseURI(String s) { _def.setDocumentBaseURI(s); } public void setDocumentationElement(Element element) { _def.setDocumentationElement(element); } public void setExtensionRegistry(ExtensionRegistry extensionRegistry) { _def.setExtensionRegistry(extensionRegistry); } public void setQName(QName qName) { _def.setQName(qName); } public void setTargetNamespace(String s) { _def.setTargetNamespace(s); } public void setTypes(Types types) { _def.setTypes(types); } public Definition getDefinition() { return _def; } public Map getAllServices() { return _def.getAllServices(); } public Map getAllBindings() { return _def.getAllBindings(); } public Map getAllPortTypes() { return _def.getAllPortTypes(); } public Import removeImport(Import anImport) { return _def.removeImport(anImport); } public String removeNamespace(String string) { return _def.removeNamespace(string); } public Object getExtensionAttribute(QName qName) { return _def.getExtensionAttribute(qName); } public Map getExtensionAttributes() { return _def.getExtensionAttributes(); } public List getNativeAttributeNames() { return _def.getNativeAttributeNames(); } public void setExtensionAttribute(QName qName, Object object) { _def.setExtensionAttribute(qName, object); } public ExtensibilityElement removeExtensibilityElement(ExtensibilityElement e) { return _def.removeExtensibilityElement(e); } /** * Get all the extensibility elements of a certain name (element name that is). * @param type type of extensibility element * @return list of extensibility elements of the given type */ @SuppressWarnings("unchecked") private <T extends ExtensibilityElement> List<T> getElementsForType(final QName type, Class<T> cls) { List<T> ret = new ArrayList<T>(); CollectionsX.filter(ret, getExtensibilityElements(), new MemberOfFunction() { public boolean isMember(Object o) { return ((ExtensibilityElement)o).getElementType().equals(type); } }); return ret; } }