blob: f0571009d66b0324ba6f28c867520ed391fabad8 [file] [log] [blame]
/*
* 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;
}
}