diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2008-09-15 06:50:04 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2008-09-15 06:50:04 +0000 |
commit | 147ed48e86bb4a13e42df35f1d1d800a7b564f4b (patch) | |
tree | 2412db1dcc7b46a214d2b7b46d21349ac08aa9b8 /branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany | |
parent | 512771c8a42d2cde253f6df55ef552f7a0b4f792 (diff) |
Removed more modules as in Oscar's TUSCANY-2440 reduced-set patch. Also removed newer modules added since r643746 and are not required to run the minimum set that we are porting to android. Set svn ignore properties to ignore Manifest files produced by the build.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@695356 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany')
11 files changed, 0 insertions, 1892 deletions
diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELFactory.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELFactory.java deleted file mode 100644 index 9f8f9c0e9a..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELFactory.java +++ /dev/null @@ -1,42 +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.sca.implementation.bpel; - -/** - * A factory for the BPEL implementation model. - * - * @version $Rev$ $Date$ - */ -public interface BPELFactory { - - /** - * Creates a new BPEL implementation. - * - * @return - */ - BPELImplementation createBPELImplementation(); - - /** - * Creates a new BPEL Process Definition - * - * @return - */ - BPELProcessDefinition createBPELProcessDefinition(); -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELImplementation.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELImplementation.java deleted file mode 100644 index d54add5391..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELImplementation.java +++ /dev/null @@ -1,91 +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.sca.implementation.bpel; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Implementation; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; - -/** - * The model representing the BPEL implementation in an SCA assembly model. - * - * @version $Rev$ $Date$ - */ -public interface BPELImplementation extends Implementation { - - /** - * Get the BPEL process Name - * - * @return - */ - QName getProcess(); - - /** - * Set the BPEL process Name - * - * @param processName process QName - */ - void setProcess(QName processName); - - /** - * Get the BPEL process definition - * - * @return - */ - BPELProcessDefinition getProcessDefinition(); - - /** - * Set the BPEL process definition - * - * @param processDefinition - */ - void setProcessDefinition(BPELProcessDefinition processDefinition); - - /** - * Returns the componentType for this implementation. - * - * @return - */ - public ComponentType getComponentType(); - - /** - * Sets the componentType for this implementation - * - * @param componentType the component type to set - */ - public void setComponentType(ComponentType componentType); - - /** - * Returns the model resolver that can be used to resolve WSDLs and XSDs - * referenced by the BPEL process. - * - * @return - */ - ModelResolver getModelResolver(); - - /** - * Sets the model resolver that can be used to resolve WSDLs and XSDs referenced - * by the BPEL process. - * - * @param modelResolver - */ - void setModelResolver(ModelResolver modelResolver); -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELProcessDefinition.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELProcessDefinition.java deleted file mode 100644 index a6518ed11b..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/BPELProcessDefinition.java +++ /dev/null @@ -1,109 +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.sca.implementation.bpel; - -import java.net.URI; -import java.net.URL; -import java.util.List; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.implementation.bpel.xml.BPELImportElement; -import org.apache.tuscany.sca.implementation.bpel.xml.BPELPartnerLinkElement; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; - -/** - * The model representing a BPEL process definition. - * - * @version $Rev$ $Date$ - */ -public interface BPELProcessDefinition extends Base { - - /** - * Get the BPEL process Name - * - * @return - */ - QName getName(); - - /** - * Set the BPEL process Name - * - * @param processName process QName - */ - void setName(QName name); - - /** - * Get BPEL process URI - * - * @return URI for the process - */ - String getURI(); - - /** - * Set the BPEL process URI - * - * @param uri for the process - */ - void setURI(String uri); - - /** - * Get the URL for the process location - * - * @return - */ - String getLocation(); - - /** - * Set the URL for the process location - * - * @param url - */ - void setLocation(String location); - - /** - * Return the list of PartnerLinks for this process - * - * @return - */ - List<BPELPartnerLinkElement> getPartnerLinks(); - - /** - * Return the list of imports for this process - * - * @return - */ - List<BPELImportElement> getImports(); - - /** - * Return the collection of associated port types - * - * @return - */ - public List<PortType> getPortTypes() ; - - /** - * Return the collection of associated WSDL interfaces - * @return - */ - public List<WSDLInterface> getInterfaces() ; -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELFactoryImpl.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELFactoryImpl.java deleted file mode 100644 index ab53964fb3..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELFactoryImpl.java +++ /dev/null @@ -1,45 +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.sca.implementation.bpel.impl; - -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.implementation.bpel.BPELFactory; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.implementation.bpel.BPELProcessDefinition; - -/** - * A factory for the BPEL implementation model. - * - * @version $Rev$ $Date$ - */ -public class BPELFactoryImpl implements BPELFactory { - - public BPELFactoryImpl(ModelFactoryExtensionPoint modelFactories) { - } - - public BPELImplementation createBPELImplementation() { - return new BPELImplementationImpl(); - } - - public BPELProcessDefinition createBPELProcessDefinition() { - return new BPELProcessDefinitionImpl(); - } - -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELImplementationImpl.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELImplementationImpl.java deleted file mode 100644 index f1c943e49c..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELImplementationImpl.java +++ /dev/null @@ -1,132 +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.sca.implementation.bpel.impl; - -import java.util.Collections; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.ConstrainingType; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.assembly.impl.ImplementationImpl; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.implementation.bpel.BPELProcessDefinition; - -/** - * The model representing a BPEL implementation in an SCA assembly model. - * - * @version $Rev$ $Date$ - */ -class BPELImplementationImpl extends ImplementationImpl implements BPELImplementation { - - private QName processName; - private BPELProcessDefinition processDefinition; - private ComponentType componentType; - private ModelResolver modelResolver; - - public QName getProcess() { - return processName; - } - - public void setProcess(QName processName) { - this.processName = processName; - } - - public BPELProcessDefinition getProcessDefinition() { - return this.processDefinition; - } - - public void setProcessDefinition(BPELProcessDefinition processDefinition) { - this.processDefinition = processDefinition; - } - - @Override - public String getURI() { - // The BPEL implementation does not have a URI - return null; - } - - @Override - public void setURI(String uri) { - // The BPEL implementation does not have a URI - } - - @Override - public ConstrainingType getConstrainingType() { - // The BPEL implementation does not support constrainingTypes - return null; - } - - @Override - public List<Property> getProperties() { - // The BPEL implementation does not support properties - return Collections.emptyList(); - } - - public ComponentType getComponentType() { - return componentType; - } - - public void setComponentType(ComponentType componentType) { - this.componentType = componentType; - } - - public ModelResolver getModelResolver() { - return modelResolver; - } - - public void setModelResolver(ModelResolver modelResolver) { - this.modelResolver = modelResolver; - } - - @Override - public List<Service> getServices() { - return componentType.getServices(); - } - - @Override - public List<Reference> getReferences() { - return componentType.getReferences(); - } - - @Override - public int hashCode() { - return String.valueOf(this.getProcess()).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else if (obj instanceof BPELImplementation) { - if (getProcess() != null) { - return getProcess().equals(((BPELImplementation)obj).getProcess()); - } else { - return ((BPELImplementation)obj).getProcess() == null; - } - } else { - return false; - } - } -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELProcessDefinitionImpl.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELProcessDefinitionImpl.java deleted file mode 100644 index 5ce4f91376..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELProcessDefinitionImpl.java +++ /dev/null @@ -1,116 +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.sca.implementation.bpel.impl; - -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.implementation.bpel.BPELProcessDefinition; -import org.apache.tuscany.sca.implementation.bpel.xml.BPELImportElement; -import org.apache.tuscany.sca.implementation.bpel.xml.BPELPartnerLinkElement; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; - -/** - * The BPEL process definition implementation. - * - * @version $Rev$ $Date$ - */ -class BPELProcessDefinitionImpl implements BPELProcessDefinition { - private QName name; - private String uri; - private String location; - private boolean unresolved; - private List<BPELPartnerLinkElement> partnerLinks = new ArrayList<BPELPartnerLinkElement>(); - private List<BPELImportElement> imports = new ArrayList<BPELImportElement>(); - private List<PortType> thePortTypes = new ArrayList<PortType>(); - private List<WSDLInterface> theInterfaces = new ArrayList<WSDLInterface>(); - - public QName getName() { - return name; - } - - public void setName(QName name) { - this.name = name; - } - - public String getURI() { - return uri; - } - - public void setURI(String uri) { - this.uri = uri; - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public boolean isUnresolved() { - return unresolved; - } - - public void setUnresolved(boolean undefined) { - this.unresolved = undefined; - } - - public List<BPELPartnerLinkElement> getPartnerLinks() { - return partnerLinks; - } - - public List<BPELImportElement> getImports() { - return imports; - } - - public List<PortType> getPortTypes() { - return thePortTypes; - } - - public List<WSDLInterface> getInterfaces() { - return theInterfaces; - } - - @Override - public int hashCode() { - return String.valueOf(getName()).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else if (obj instanceof BPELProcessDefinition) { - if (getName() != null) { - return getName().equals(((BPELProcessDefinition)obj).getName()); - } else { - return ((BPELProcessDefinition)obj).getName() == null; - } - } else { - return false; - } - } -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELDocumentProcessor.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELDocumentProcessor.java deleted file mode 100644 index cde6fc4fc5..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELDocumentProcessor.java +++ /dev/null @@ -1,532 +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.sca.implementation.bpel.xml; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; - -import java.io.InputStream; -import java.net.URI; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.implementation.bpel.BPELFactory; -import org.apache.tuscany.sca.implementation.bpel.BPELProcessDefinition; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject; -import org.apache.tuscany.sca.interfacedef.wsdl.xml.BPELPartnerLinkTypeExt; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.Problem.Severity; - -/** - * BPEL document processor responsible for reading a BPEL file and producing necessary model info about it - * - * TODO: The namespaces for WS-BPEL include 2 versions - only the earlier BPEL 1.1 versions are - * supported at present - the BPEL 2.0 namespaces also need support. This will require inspection - * of both BPEL process files and of WSDL files for their BPEL namespaces - * @version $Rev$ $Date$ - */ -public class BPELDocumentProcessor extends BaseStAXArtifactProcessor implements URLArtifactProcessor<BPELProcessDefinition> { - public final static QName BPEL_PROCESS_DEFINITION = new QName("http://schemas.xmlsoap.org/ws/2004/03/business-process/", "process"); - public final static QName BPEL_EXECUTABLE_DEFINITION = new QName("http://docs.oasis-open.org/wsbpel/2.0/process/executable", "process"); - private static final String SCA_BPEL_NS = "http://docs.oasis-open.org/ns/opencsa/sca-bpel/200801"; - private static final String BPEL_NS = "http://schemas.xmlsoap.org/ws/2004/03/business-process/"; - private static final String BPEL_PLINK_NS = "http://schemas.xmlsoap.org/ws/2004/03/partner-link/"; - private static final String WSDL_NS = "http://schemas.xmlsoap.org/wsdl/"; - private static final QName PROCESS_ELEMENT = new QName(BPEL_NS, "process"); - private static final QName PARTNERLINK_ELEMENT = new QName(BPEL_NS, "partnerLink"); - private static final QName ONEVENT_ELEMENT = new QName(BPEL_NS, "onEvent"); - private static final QName RECEIVE_ELEMENT = new QName(BPEL_NS, "receive"); - private static final QName ONMESSAGE_ELEMENT = new QName(BPEL_NS, "onMessage"); - private static final QName INVOKE_ELEMENT = new QName(BPEL_NS, "invoke"); - private static final QName IMPORT_ELEMENT = new QName(BPEL_NS, "import"); - private static final String LINKTYPE_NAME = "partnerLinkType"; - private static final QName LINKTYPE_ELEMENT = new QName(BPEL_PLINK_NS, LINKTYPE_NAME); - public final static String NAME_ELEMENT = "name"; - - private final static XMLInputFactory inputFactory = XMLInputFactory.newInstance(); - - private final BPELFactory factory; - private WSDLFactory WSDLfactory; - private Monitor monitor; - - public BPELDocumentProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { - this.factory = modelFactories.getFactory(BPELFactory.class); - this.WSDLfactory = modelFactories.getFactory(WSDLFactory.class); - this.monitor = monitor; - } - - public String getArtifactType() { - return "*.bpel"; - } - - public Class<BPELProcessDefinition> getModelType() { - return BPELProcessDefinition.class; - } - - public BPELProcessDefinition read(URL contributionURL, URI artifactURI, URL artifactURL) throws ContributionReadException { - BPELProcessDefinition processDefinition = null; - try { - // for now we are just using process name - // and relying on componentType file for service definition - // so it's OK to set resolved for now - processDefinition = readProcessDefinition(artifactURL); - processDefinition.setURI(artifactURI.toString()); - processDefinition.setUnresolved(false); - } catch (Exception e) { - ContributionReadException ce = new ContributionReadException(e); - error("ContributionReadException", artifactURL, ce); - } - - return processDefinition; - } - - public void resolve(BPELProcessDefinition model, ModelResolver resolver) throws ContributionResolveException { - // FIXME - serious resolving needs to happen here - - // Step 1 is to resolve the WSDL files referenced from this BPEL process - // - one complexity here is that the WSDL definitions hold BPEL extension elements for - // the partnerLinkType declarations - and these must be used in later steps - // - // Step 2 is to take all the partnerLink definitions and establish the PortType being - // used, by tracing through the related partnerLinkType declarations - the PortType is - // effectively a definition of the interface used by the partnerLink. - // - another consideration here is that each partnerLink can involve 2 interfaces, one - // for the forward calls to the process, the other for calls from the process - depending - // on whether the partnerLink is a reference or a service, one of these interfaces is a - // callback interface. - - List<BPELImportElement> theImports = model.getImports(); - for (BPELImportElement theImport : theImports) { - - // Deal with WSDL imports - if (theImport.getImportType().equals(WSDL_NS)) { - String wsdlLocation = theImport.getLocation(); - String wsdlNamespace = theImport.getNamespace(); - - // Resolve the WSDL definition - WSDLDefinition proxy = WSDLfactory.createWSDLDefinition(); - proxy.setUnresolved(true); - proxy.setNamespace(wsdlNamespace); - if (wsdlLocation != null) { - proxy.setLocation(URI.create(wsdlLocation)); - } - WSDLDefinition resolved = resolver.resolveModel(WSDLDefinition.class, proxy); - if (resolved != null && !resolved.isUnresolved()) { - theImport.setWSDLDefinition(resolved); - } else { - error("CannotResolveWSDLReference", resolver, wsdlLocation, wsdlNamespace); - return; - } // end if - } // end if - } // end for - - // Fetch the sets of partner links, port types and interfaces - List<BPELPartnerLinkTypeElement> thePLinkTypes = getPartnerLinkTypes( theImports ); - Collection<WSDLInterface> theInterfaces = (Collection<WSDLInterface>)new ArrayList<WSDLInterface>(); - Collection<PortType> thePortTypes = getAllPortTypes( theImports, theInterfaces, resolver ); - - // Store the Port Types and the Interfaces for later calculation of the component type... - model.getPortTypes().addAll(thePortTypes); - model.getInterfaces().addAll(theInterfaces); - - // Now, for each partnerLink in the BPEL process, find the related partnerLinkType - // element - List<BPELPartnerLinkElement> thePartnerLinks = model.getPartnerLinks(); - for (BPELPartnerLinkElement thePartnerLink : thePartnerLinks) { - QName partnerLinkType = thePartnerLink.getPartnerLinkType(); - BPELPartnerLinkTypeElement pLinkType = findPartnerLinkType(partnerLinkType, thePLinkTypes); - if (pLinkType == null) { - error("PartnerLinkNoMatchingType", thePartnerLink, thePartnerLink.getName()); - } else - thePartnerLink.setPartnerLinkType(pLinkType); - } // end for - - } // end resolve - - /** - * Retrieve all the Partner Link types defined in the imported WSDL files - * - * @param theImports - */ - private List<BPELPartnerLinkTypeElement> getPartnerLinkTypes( List<BPELImportElement> theImports) throws ContributionResolveException { - - List<BPELPartnerLinkTypeElement> thePLinks = new ArrayList<BPELPartnerLinkTypeElement>(); - - // We must find the partner link type elements from amongst the imported - // WSDLs - for (BPELImportElement theImport : theImports) { - if (theImport.getImportType().equals(WSDL_NS)) { - - // Find all the WSDL definitions matching the imported namespace - List<Definition> wsdlDefinitions = new ArrayList<Definition>(); - WSDLDefinition theWSDL = theImport.getWSDLDefinition(); - wsdlDefinitions.add(theWSDL.getDefinition()); - for (WSDLDefinition importedWSDL: theWSDL.getImportedDefinitions()) { - wsdlDefinitions.add(importedWSDL.getDefinition()); - } - - // The BPEL partnerLinkType elements are extension elements within - // the WSDL definitions - for (Definition wsdlDefinition: wsdlDefinitions) { - for (ExtensibilityElement theElement : (List<ExtensibilityElement>)wsdlDefinition.getExtensibilityElements()) { - QName elementType = theElement.getElementType(); - if (elementType.equals(LINKTYPE_ELEMENT)) { - BPELPartnerLinkTypeExt pLinkExt = (BPELPartnerLinkTypeExt)theElement; - - // Fetch the name of the partnerLinkType - String name = pLinkExt.getName(); - QName qName = new QName(wsdlDefinition.getTargetNamespace(), name); - BPELPartnerLinkTypeElement pLinkElement = new BPELPartnerLinkTypeElement(qName); - - // The partnerLinkType must have one and may have 2 role - // child elements - int count = 0; - for (int i = 0; i < 2; i++) { - if (pLinkExt.getRoleName(i) == null) - continue; - PortType pType = wsdlDefinition.getPortType(pLinkExt.getRolePortType(i)); - if (count == 0) { - pLinkElement.setRole1(pLinkExt.getRoleName(i), pLinkExt.getRolePortType(i), pType); - count++; - } else if (count == 1) { - pLinkElement.setRole2(pLinkExt.getRoleName(i), pLinkExt.getRolePortType(i), pType); - count++; - } else { - break; - } // end if - } // end for - - if (count == 0) { - error("PartnerLinkTypeNoRoles", theElement, pLinkElement.getName()); - throw new ContributionResolveException("partnerLinkType " + pLinkElement.getName() + " has no Roles defined"); - } else - thePLinks.add(pLinkElement); - } // end if - - } // end for - } - } - } // end for - return thePLinks; - } // end getPartnerLinkTypes - - /** - * Returns all the portTypes referenced by the process. - * - * @param theImports - * @param theInterfaces - * @param resolver - * @return - * @throws ContributionResolveException - */ - private Collection<PortType> getAllPortTypes(List<BPELImportElement> theImports, - Collection<WSDLInterface> theInterfaces, ModelResolver resolver) throws ContributionResolveException { - - Collection<PortType> thePortTypes = (Collection<PortType>)new ArrayList<PortType>(); - for (BPELImportElement theImport : theImports) { - if (theImport.getImportType().equals(WSDL_NS)) { - - // Find all the WSDL definitions matching the imported namespace - List<Definition> wsdlDefinitions = new ArrayList<Definition>(); - WSDLDefinition theWSDL = theImport.getWSDLDefinition(); - wsdlDefinitions.add(theWSDL.getDefinition()); - for (WSDLDefinition importedWSDL: theWSDL.getImportedDefinitions()) { - wsdlDefinitions.add(importedWSDL.getDefinition()); - } - for (Definition wsdlDefinition: wsdlDefinitions) { - - Collection<PortType> portTypes = (Collection<PortType>)wsdlDefinition.getPortTypes().values(); - thePortTypes.addAll(portTypes); - - // Create WSDLInterface elements for each PortType found - for (PortType portType : portTypes) { - WSDLObject<PortType> wsdlPortType = theWSDL.getWSDLObject(PortType.class, portType.getQName()); - WSDLInterface wsdlInterface; - if (wsdlPortType != null) { - // Introspect the WSDL portType and add the resulting - // WSDLInterface to the resolver - try { - theWSDL.setDefinition(wsdlPortType.getDefinition()); - wsdlInterface = WSDLfactory.createWSDLInterface(wsdlPortType.getElement(), theWSDL, resolver); - wsdlInterface.setWsdlDefinition(theWSDL); - } catch (InvalidInterfaceException e) { - ContributionResolveException ce = new ContributionResolveException(e); - error("ContributionResolveException", resolver, ce); - throw ce; - } // end try - resolver.addModel(wsdlInterface); - theInterfaces.add(wsdlInterface); - } // end if - } // end for - } - } - } // end for - - return thePortTypes; - } // end getAllPortTypes - - /** - * Finds a partnerLinkType definition within the WSDLs imported by the BPEL - * process. - * - * @param partnerLinkTypeName - the name of the partnerLinkType - * @param theImports a list of the WSDL import declarations - * @return a BPELPartnerLinkTypeElement for the partnerLinkType or null if it cannot be - * found - */ - private BPELPartnerLinkTypeElement findPartnerLinkType( QName partnerLinkTypeName, - List<BPELPartnerLinkTypeElement> thePLinkTypes) { - // We must find the partner link type element from amongst the imported WSDLs - for ( BPELPartnerLinkTypeElement thePLinkType : thePLinkTypes ){ - if( thePLinkType.getName().equals(partnerLinkTypeName) ) return thePLinkType; - } // end for - return null; - } // end findPartnerLinkType - - - /** - * Read a process definition. - * - * @param doc - * @return - * @throws Exception - */ - private BPELProcessDefinition readProcessDefinition(URL doc) throws Exception { - BPELProcessDefinition processDefinition = factory.createBPELProcessDefinition(); - processDefinition.setUnresolved(true); - processDefinition.setLocation(doc.toString()); - - InputStream is = doc.openStream(); - XMLStreamReader reader = null; - try { - reader = inputFactory.createXMLStreamReader(is); - - /* - * The principle here is to look for partnerLink elements, which - * form either services or references. A partnerLink can be EITHER - - * the algorithm for deciding is: 1) Explicit marking with - * sca:reference or sca:service attribute 2) "first use" of the - * partnerLink by specific BPEL activity elements: <onEvent../>, - * <receive../> or <pick../> elements imply a service <invoke../> - * implies a reference - */ - - // TODO - need to handle <scope../> elements as kind of "nested" processes - // - and scopes introduce the possibility of partnerLinks with the - // same name at different levels of scope.... (yuk!!) - boolean completed = false; - while (!completed) { - switch (reader.next()) { - case START_ELEMENT: - QName qname = reader.getName(); - if (BPEL_PROCESS_DEFINITION.equals(qname) || BPEL_EXECUTABLE_DEFINITION.equals(qname)) { - QName processName = new QName(getString(reader, org.apache.tuscany.sca.assembly.xml.Constants.TARGET_NAMESPACE), getString(reader, NAME_ELEMENT)); - processDefinition.setName(processName); - } else if (PARTNERLINK_ELEMENT.equals(qname)) { - processDefinition.getPartnerLinks().add(processPartnerLinkElement(reader)); - } else if (ONEVENT_ELEMENT.equals(qname) || RECEIVE_ELEMENT.equals(qname) || ONMESSAGE_ELEMENT.equals(qname)) { - processPartnerLinkAsService(reader.getAttributeValue(null, "partnerLink"), processDefinition.getPartnerLinks()); - } else if (INVOKE_ELEMENT.equals(qname)) { - processPartnerLinkAsReference(reader.getAttributeValue(null, "partnerLink"), processDefinition.getPartnerLinks()); - } else if (IMPORT_ELEMENT.equals(qname)) { - processDefinition.getImports().add(processImportElement(reader)); - } // end if - break; - case END_ELEMENT: - if (PROCESS_ELEMENT.equals(reader.getName())) { - completed = true; - break; - } // end if - } // end switch - } // end while - } finally { - if (reader != null) - reader.close(); - is.close(); - } // end try - - return processDefinition; - } // end readProcessDefinition - - /** - * Processes a partnerLink element from the BPEL process and creates a - * BPELPartnerLink object - * - * @param reader - */ - private BPELPartnerLinkElement processPartnerLinkElement(XMLStreamReader reader) throws ContributionReadException { - BPELPartnerLinkElement partnerLink = new BPELPartnerLinkElement( - reader.getAttributeValue(null, "name"), - getQNameValue(reader, reader.getAttributeValue(null, "partnerLinkType")), - reader.getAttributeValue(null, "myRole"), - reader.getAttributeValue(null, "partnerRole")); - - // See if there are any SCA extension attributes - String scaService = reader.getAttributeValue(SCA_BPEL_NS, "service"); - String scaReference = reader.getAttributeValue(SCA_BPEL_NS, "reference"); - if ((scaService != null) && (scaReference != null)) { - // It is incorrect to set both service & reference attributes - error("PartnerLinkHasBothAttr", partnerLink, reader.getAttributeValue(null, "name")); - throw new ContributionReadException("BPEL PartnerLink " + reader.getAttributeValue(null, "name") + " has both sca:reference and sca:service attributes set"); - } - - // Set the SCA type and the related name, if present - if (scaService != null) - partnerLink.setAsService(scaService); - else if (scaReference != null) - partnerLink.setAsReference(scaReference); - return partnerLink; - - } // end processPartnerLinkElement - - /** - * Processes an <import../> element from the BPEL process and creates a - * BPELImportElement object - * - * @param reader - */ - private BPELImportElement processImportElement(XMLStreamReader reader) { - return (new BPELImportElement(reader.getAttributeValue(null, "location"), - reader.getAttributeValue(null, "importType"), - reader.getAttributeValue(null, "namespace"))); - - } // end processImportElement - - /** - * Mark a named partnerLink as a Service, unless it is already marked as a - * Reference - * - * @param partnerLinkName - * @param partnerLinks - */ - private void processPartnerLinkAsService(String partnerLinkName, List<BPELPartnerLinkElement> partnerLinks) { - BPELPartnerLinkElement partnerLink = findPartnerLinkByName(partnerLinks, partnerLinkName); - if (partnerLink == null) { - warning("ReferencePartnerLinkNotInList", partnerLinkName, partnerLinkName); - } else { - // Set the type of the partnerLink to "service" if not already - // set... - if (!partnerLink.isSCATyped()) - partnerLink.setAsService(partnerLinkName); - } // endif - } // end processPartnerLinkAsReference - - /** - * Mark a named partnerLink as a Reference, unless it is already marked as a - * Service - * - * @param partnerLinkName - * @param partnerLinks - */ - private void processPartnerLinkAsReference(String partnerLinkName, List<BPELPartnerLinkElement> partnerLinks) { - BPELPartnerLinkElement partnerLink = findPartnerLinkByName(partnerLinks, partnerLinkName); - if (partnerLink == null) { - warning("ReferencePartnerLinkNotInList", partnerLinkName, partnerLinkName); - } else { - // Set the type of the partnerLink to "service" if not already - // set... - if (!partnerLink.isSCATyped()) - partnerLink.setAsReference(partnerLinkName); - } // endif - } // end processPartnerLinkAsReference - - /** - * Finds a PartnerLink by name from a List of PartnerLinks returns null if - * there is no partnerLink with a matching name - returns the PartnerLink - * with a matching name - * - * @param partnerLinks - * @param partnerLinkName - */ - private BPELPartnerLinkElement findPartnerLinkByName(List<BPELPartnerLinkElement> partnerLinks, String partnerLinkName) { - // Scan the list looking for a partner link with the supplied name - Iterator<BPELPartnerLinkElement> it = partnerLinks.iterator(); - while (it.hasNext()) { - BPELPartnerLinkElement thePartnerLink = it.next(); - if (thePartnerLink.getName().equals(partnerLinkName)) - return thePartnerLink; - } - return null; - } // end method findPartnerLinkByName - - /** - * Report a warning. - * - * @param problems - * @param message - * @param model - */ - private void warning(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "impl-bpel-validation-messages", Severity.WARNING, model, message, (Object[])messageParameters); - monitor.problem(problem); - } - } - - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "impl-bpel-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } - } - - /** - * Report a exception. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "impl-bpel-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } - } -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImplementationProcessor.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImplementationProcessor.java deleted file mode 100644 index ce1c22e641..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImplementationProcessor.java +++ /dev/null @@ -1,518 +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.sca.implementation.bpel.xml; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; - -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Multiplicity; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; -import org.apache.tuscany.sca.assembly.xml.Constants; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; -import org.apache.tuscany.sca.databinding.xml.DOMDataBinding; -import org.apache.tuscany.sca.implementation.bpel.BPELFactory; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.implementation.bpel.BPELProcessDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.Problem.Severity; - -/** - * Implements a StAX artifact processor for BPEL implementations. - * - * The artifact processor is responsible for processing <implementation.bpel> - * elements in SCA assembly XML composite files and populating the BPEL - * implementation model, resolving its references to other artifacts in the SCA - * contribution, and optionally write the model back to SCA assembly XML. - * - * @version $Rev$ $Date$ - */ -public class BPELImplementationProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<BPELImplementation> { - private static final String PROCESS = "process"; - private static final String IMPLEMENTATION_BPEL = "implementation.bpel"; - private static final QName IMPLEMENTATION_BPEL_QNAME = new QName(Constants.SCA10_NS, IMPLEMENTATION_BPEL); - - private AssemblyFactory assemblyFactory; - private BPELFactory bpelFactory; - private WSDLFactory wsdlFactory; - private Monitor monitor; - - public BPELImplementationProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { - this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class); - this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class); - this.bpelFactory = modelFactories.getFactory(BPELFactory.class); - this.monitor = monitor; - } - - public QName getArtifactType() { - // Returns the QName of the XML element processed by this processor - return IMPLEMENTATION_BPEL_QNAME; - } - - public Class<BPELImplementation> getModelType() { - // Returns the type of model processed by this processor - return BPELImplementation.class; - } - - public BPELImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { - assert IMPLEMENTATION_BPEL_QNAME.equals(reader.getName()); - - // Read an <implementation.bpel> element - BPELImplementation implementation = null; - - // Read the process attribute. - QName process = getAttributeValueNS(reader, PROCESS); - if (process == null) { - return implementation; - } - - // Create and initialize the BPEL implementation model - implementation = bpelFactory.createBPELImplementation(); - implementation.setProcess(process); - implementation.setUnresolved(true); - - // Skip to end element - while (reader.hasNext()) { - if (reader.next() == END_ELEMENT && IMPLEMENTATION_BPEL_QNAME.equals(reader.getName())) { - break; - } - } - - return implementation; - } - - public void resolve(BPELImplementation implementation, ModelResolver resolver) throws ContributionResolveException { - - if( implementation != null && implementation.isUnresolved()) - { - implementation.setModelResolver(resolver); - - BPELProcessDefinition processDefinition = resolveBPELProcessDefinition(implementation, resolver); - if(processDefinition.isUnresolved()) { - error("BPELProcessNotFound", implementation, processDefinition.getName()); - } else { - implementation.setProcessDefinition(processDefinition); - - // Get the component type from the process definition - generateComponentType( implementation ); - - //resolve component type - mergeComponentType(resolver, implementation); - - //set current implementation resolved - implementation.setUnresolved(false); - } - } - - } // end resolve - - public void write( BPELImplementation bpelImplementation, - XMLStreamWriter writer ) throws ContributionWriteException, XMLStreamException { - //FIXME Deal with policy processing... - // Write <implementation.bpel process="..."/> - // policyProcessor.writePolicyPrefixes(bpelImplementation, writer); - writer.writeStartElement(Constants.SCA10_NS, IMPLEMENTATION_BPEL); - // policyProcessor.writePolicyAttributes(bpelImplementation, writer); - - if (bpelImplementation.getProcess() != null) { - writer.writeAttribute(PROCESS, bpelImplementation.getProcess().toString() ); - } - - writer.writeEndElement(); - - } // end write - - private BPELProcessDefinition resolveBPELProcessDefinition(BPELImplementation impl, ModelResolver resolver) throws ContributionResolveException { - QName processName = impl.getProcess(); - BPELProcessDefinition processDefinition = this.bpelFactory.createBPELProcessDefinition(); - processDefinition.setName(processName); - processDefinition.setUnresolved(true); - - return resolver.resolveModel(BPELProcessDefinition.class, processDefinition); - } // end resolveBPELProcessDefinition - - /** - * Calculates the component type of the supplied implementation and attaches it to the - * implementation. - * - * @param impl - * @throws ContributionResolveException - */ - private void generateComponentType(BPELImplementation impl) throws ContributionResolveException { - - // Create a ComponentType and mark it unresolved - ComponentType componentType = assemblyFactory.createComponentType(); - componentType.setUnresolved(true); - impl.setComponentType(componentType); - - // Each partner link in the process represents either a service or a - // reference - // - or both, in the sense of involving a callback - BPELProcessDefinition theProcess = impl.getProcessDefinition(); - List<BPELPartnerLinkElement> partnerLinks = theProcess.getPartnerLinks(); - - for (BPELPartnerLinkElement pLink : partnerLinks) { - - // check that the partner link has been designated as service or - // reference in SCA terms - if (pLink.isSCATyped()) { - String scaName = pLink.getSCAName(); - if (pLink.querySCAType().equals("reference")) { - componentType.getReferences().add(generateReference(scaName, pLink.getMyRolePortType(), pLink.getPartnerRolePortType(), theProcess.getInterfaces())); - } else { - componentType.getServices().add(generateService(scaName, pLink.getMyRolePortType(), pLink.getPartnerRolePortType(), theProcess.getInterfaces())); - } // end if - } // end if - } // end for - - } // end getComponentType - - /** - * Create an SCA reference for a partnerLink - * @param name - name of the reference - * @param myRolePT - partner link type of myRole - * @param partnerRolePT - partner link type of partnerRole - * @param theInterfaces - list of WSDL interfaces associated with the BPEL process - * @return - */ - private Reference generateReference( String name, PortType myRolePT, - PortType partnerRolePT, Collection<WSDLInterface> theInterfaces) throws ContributionResolveException { - - Reference reference = assemblyFactory.createReference(); - WSDLInterfaceContract interfaceContract = wsdlFactory.createWSDLInterfaceContract(); - reference.setInterfaceContract(interfaceContract); - - // Establish whether there is just a call interface or a call + callback - // interface - PortType callPT = null; - PortType callbackPT = null; - if (myRolePT != null) { - callPT = myRolePT; - // If the 2 port types are not the same one, there is a callback... - if (partnerRolePT != null) { - if (!myRolePT.getQName().equals(partnerRolePT.getQName())) { - callbackPT = partnerRolePT; - } // end if - } // end if - } else if (partnerRolePT != null) { - callPT = partnerRolePT; - } // end if - - // No interfaces mean an error - if (callPT == null && callbackPT == null) { - error("MyRolePartnerRoleNull", theInterfaces); - } // end if - - // Set the name of the reference to the supplied name and the - // multiplicity of the reference - // to 1..1 - // TODO: support other multiplicities - reference.setName(name); - reference.setMultiplicity(Multiplicity.ONE_ONE); - - if (callPT != null) { - // Set the call interface and, if present, the callback interface - WSDLInterface callInterface = null; - for (WSDLInterface anInterface : theInterfaces) { - if (anInterface.getPortType().getQName().equals(callPT.getQName())) - callInterface = anInterface; - } // end for - if (callInterface == null) { - error("NoInterfaceForPortType", theInterfaces, callPT.getQName().toString()); - } else - reference.getInterfaceContract().setInterface(callInterface); - } - - // There is a callback if the partner role is not null and if the - // partner role port type - // is not the same as the port type for my role - if (callbackPT != null) { - WSDLInterface callbackInterface = null; - for (WSDLInterface anInterface : theInterfaces) { - if (anInterface.getPortType().getQName().equals(callbackPT.getQName())) - callbackInterface = anInterface; - } // end for - if (callbackInterface == null) { - error("NoInterfaceForPortType", theInterfaces, callbackPT.getQName().toString()); - } else - reference.getInterfaceContract().setCallbackInterface(callbackInterface); - } // end if - - return reference; - } // end generateReference - - /** - * Create an SCA service for a partnerLink - * @param name - name of the reference - * @param myRolePT - partner link type of myRole - * @param partnerRolePT - partner link type of partnerRole - * @param theInterfaces - list of WSDL interfaces associated with the BPEL process - * @return - */ - private Service generateService( String name, PortType myRolePT, - PortType partnerRolePT, Collection<WSDLInterface> theInterfaces ) - throws ContributionResolveException { - Service service = assemblyFactory.createService(); - WSDLInterfaceContract interfaceContract = wsdlFactory.createWSDLInterfaceContract(); - service.setInterfaceContract(interfaceContract); - - // Set the name of the service to the supplied name - service.setName(name); - - // Establish whether there is just a call interface or a call + callback - // interface - PortType callPT = null; - PortType callbackPT = null; - if (myRolePT != null) { - callPT = myRolePT; - // If the 2 port types are not the same one, there is a callback... - if (partnerRolePT != null) { - if (!myRolePT.getQName().equals(partnerRolePT.getQName())) { - callbackPT = partnerRolePT; - } // end if - } // end if - } else if (partnerRolePT != null) { - callPT = partnerRolePT; - } // end if - - // No interfaces mean an error - if (callPT == null && callbackPT == null) { - error("MyRolePartnerRoleNull", theInterfaces); - } // end if - - if (callPT != null) { - // Set the call interface and, if present, the callback interface - WSDLInterface callInterface = null; - for (WSDLInterface anInterface : theInterfaces) { - if (anInterface.getPortType().getQName().equals(callPT.getQName())) - callInterface = anInterface; - } // end for - if (callInterface == null) { - error("NoInterfaceForPortType", theInterfaces, callPT.getQName().toString()); - } else - service.getInterfaceContract().setInterface(callInterface); - } // end if - - // There is a callback if the partner role is not null and if the - // partner role port type - // is not the same as the port type for my role - if (callbackPT != null) { - WSDLInterface callbackInterface = null; - for (WSDLInterface anInterface : theInterfaces) { - if (anInterface.getPortType().getQName().equals(callbackPT.getQName())) - callbackInterface = anInterface; - } // end for - if (callbackInterface == null) { - error("NoInterfaceForPortType", theInterfaces, callbackPT.getQName().toString()); - } else - service.getInterfaceContract().setCallbackInterface(callbackInterface); - } // end if - - return service; - } // end generateService - - /** - * Merge the componentType from introspection and from external file - * - * Note the setting of the DataBinding for both Services and References to DOM, since this is - * the data format expected by the ODE BPEL implementation code. - * - * @param resolver - * @param impl - */ - private void mergeComponentType(ModelResolver resolver, BPELImplementation impl) { - - // Load the component type from a component type file, if any - ComponentType componentType = getComponentType(resolver, impl); - if (componentType != null && !componentType.isUnresolved()) { - - // References... - Map<String, Reference> refMap = new HashMap<String, Reference>(); - for (Reference reference : componentType.getReferences()) { - refMap.put(reference.getName(), reference); - } // end for - - // For the present, overwrite anything arising from the component - // type sidefile if - // equivalent services are defined in the implementation. - // TODO - a more careful merge must be done, using the - // implementation introspection data - // as the master but adding any additional and non-conflicting - // information from the - // sidefile - for (Reference ref : impl.getReferences()) { - refMap.put(ref.getName(), ref); - } // end for - - impl.getReferences().clear(); - impl.getReferences().addAll(refMap.values()); - - // Services..... - Map<String, Service> serviceMap = new HashMap<String, Service>(); - for (Service service : componentType.getServices()) { - serviceMap.put(service.getName(), service); - } // end for - - // For the present, overwrite anything arising from the component - // type sidefile if - // equivalent services are defined in the implementation. - // TODO - a more careful merge must be done, using the - // implementation introspection data - // as the master but adding any additional and non-conflicting - // information from the - // sidefile - for (Service svc : impl.getServices()) { - serviceMap.put(svc.getName(), svc); - } // end for - - impl.getServices().clear(); - impl.getServices().addAll(serviceMap.values()); - - // Properties - Map<String, Property> propMap = new HashMap<String, Property>(); - for (Property property : componentType.getProperties()) { - propMap.put(property.getName(), property); - } // end for - - // A simple overwrite of any equivalent properties from the - // component type sidefile - for (Property prop : impl.getProperties()) { - propMap.put(prop.getName(), prop); - } - } - } - - - /** - * Find the componentType side file based on the BPEL implementation artifact - * @param resolver - * @param impl - * @return - */ - private ComponentType getComponentType(ModelResolver resolver, BPELImplementation impl) { - String bpelProcessURI = impl.getProcessDefinition().getURI().toString(); - - // Get the component type definition contained in the componentType file, if any - String componentTypeURI = bpelProcessURI.replace(".bpel", ".componentType"); - ComponentType componentType = assemblyFactory.createComponentType(); - componentType.setUnresolved(true); - componentType.setURI(componentTypeURI); - componentType = resolver.resolveModel(ComponentType.class, componentType); - if (!componentType.isUnresolved()) { - return componentType; - } - return null; - } // end getComponentType - - /** - * Returns a QName from its string representation in a named attribute of an XML element - * supplied in an XMLStreamReader - * - * QName attributes of an XML element (such as BPEL process) is presented in one of - * two alternative formats: - * 1) In the form of a local name with a prefix, with the prefix referencing a namespace - * URI declaration elsewhere in the composite (typically on the composite element) - * - * ie: nms:SomeName - * xmlns:nms="http://example.com/somenamespace" - * - * 2) In the XML Namespaces recommendation format (see http://jclark.com/xml/xmlns.htm ) - * where the namespace URI and the local name are encoded into a single string, with the - * namespace URI enclosed between a pair of braces {...} - * - * ie: {http://example.com/somenamespace}SomeName - */ - private QName getAttributeValueNS(XMLStreamReader reader, String attribute) { - String fullValue = reader.getAttributeValue(null, attribute); - if (fullValue == null) { - error("AttributeProcessMissing", reader); - return null; - } - - // Deal with the attribute in the XML Namespaces recommendation format - // - trim off any leading/trailing spaces and check that the first - // character is '{' - if (fullValue.trim().charAt(0) == '{') { - try { - // Attempt conversion to a QName object - QName theProcess = QName.valueOf(fullValue); - return theProcess; - } catch (IllegalArgumentException e) { - // This exception happens if the attribute begins with '{' but - // doesn't conform - // to the XML Namespaces recommendation format - error("AttributeWithoutNamespace", reader, attribute, fullValue); - return null; - } - } // endif - - // Deal with the attribute in the local name + prefix format - if (fullValue.indexOf(":") < 0) { - error("AttributeWithoutPrefix", reader, attribute, fullValue); - return null; - } - String prefix = fullValue.substring(0, fullValue.indexOf(":")); - String name = fullValue.substring(fullValue.indexOf(":") + 1); - String nsUri = reader.getNamespaceContext().getNamespaceURI(prefix); - if (nsUri == null) { - error("AttributeUnrecognizedNamespace", reader, attribute, fullValue); - return null; - } - return new QName(nsUri, name, prefix); - } - - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "impl-bpel-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } - } - -} diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImportElement.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImportElement.java deleted file mode 100644 index bf0020323c..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELImportElement.java +++ /dev/null @@ -1,65 +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.sca.implementation.bpel.xml;
-
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
-
-/**
- * Represents an <import.../> element in a BPEL process
- * - this has attributes:
- * location
- * importType
- * namespace
- *
- * @version $Rev$ $Date$
- */
-public class BPELImportElement {
-
- private String location;
- private String importType;
- private String namespace;
- private WSDLDefinition theWSDL = null;
-
- public BPELImportElement(String location, String importType, String namespace) {
- this.location = location;
- this.importType = importType;
- this.namespace = namespace;
- }
-
- public String getImportType() {
- return importType;
- }
-
- public String getLocation() {
- return location;
- }
-
- public String getNamespace() {
- return namespace;
- }
-
- public void setWSDLDefinition(WSDLDefinition theDefinition) {
- theWSDL = theDefinition;
- }
-
- public WSDLDefinition getWSDLDefinition() {
- return theWSDL;
- }
-
-} // end class BPELImportElement
diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkElement.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkElement.java deleted file mode 100644 index b7f5d1d3f2..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkElement.java +++ /dev/null @@ -1,130 +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.sca.implementation.bpel.xml;
-
-import javax.xml.namespace.QName;
-
-import javax.wsdl.PortType;
-
-/**
- * Represents a <partnerLink.../> element in a BPEL process
- * - this has attributes:
- * name
- * partnerLinkType
- * myRole
- * partnerRole
- * - plus zero or more property elements as children
- *
- * The partnerlink may also be given an SCA Type - either of service or of reference - this must
- * generally be calculated and set on the partnerLink by inspecting the BPEL process
- *
- * @version $Rev$ $Date$
- */
-public class BPELPartnerLinkElement {
-
- private String REFERENCE_TYPE = "reference";
- private String SERVICE_TYPE = "service";
- private String name;
- private QName partnerLinkType;
- private BPELPartnerLinkTypeElement pLinkType = null;
- private String myRole;
- private String partnerRole;
- private String scaName; // Holds the SCA reference or service name
- private String scaType = null; // Holds the SCA type = null | service | reference
-
- public BPELPartnerLinkElement(String name,
- QName partnerLinkType,
- String myRole,
- String partnerRole ) {
- this.name = name;
- this.partnerLinkType = partnerLinkType;
- this.myRole = myRole;
- this.partnerRole = partnerRole;
-
- scaName = null;
- }
-
- public QName getPartnerLinkType() {
- return partnerLinkType;
- }
-
- public void setPartnerLinkType( BPELPartnerLinkTypeElement pLinkType ) {
- this.pLinkType = pLinkType;
- }
-
-
- public PortType getMyRolePortType() {
- return getRolePortType( myRole );
- }
-
- public PortType getPartnerRolePortType() {
- return getRolePortType( partnerRole );
- }
-
- private PortType getRolePortType( String theRole ) {
- if (theRole == null || theRole.length() == 0) {
- return null;
- } // end if
- if (theRole.equals(pLinkType.getRole1Name())) {
- return pLinkType.getRole1pType();
- } else if (theRole.equals(pLinkType.getRole2Name())) {
- return pLinkType.getRole2pType();
- } // end if
- return null;
- } // end getRolePortType
-
- public String getName() {
- return name;
- }
-
- public String getMyRole() {
- return myRole;
- }
-
- public String getPartnerRole() {
- return partnerRole;
- }
-
- public void setSCAName( String name ) {
- scaName = name;
- }
-
- public String getSCAName() {
- return scaName;
- }
-
- public boolean isSCATyped() {
- return ( !(scaType == null) );
- }
-
- public void setAsReference( String name ) {
- scaType = REFERENCE_TYPE;
- scaName = name;
- }
-
- public void setAsService( String name ) {
- scaType = SERVICE_TYPE;
- scaName = name;
- }
-
- public String querySCAType() {
- return scaType;
- }
-
-} // end class BPELPartnerLinkElement
diff --git a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkTypeElement.java b/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkTypeElement.java deleted file mode 100644 index fdaf98a97f..0000000000 --- a/branches/sca-android/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/xml/BPELPartnerLinkTypeElement.java +++ /dev/null @@ -1,112 +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.sca.implementation.bpel.xml;
-
- import javax.xml.namespace.QName;
-
- import javax.wsdl.extensions.ExtensibilityElement;
- import javax.wsdl.PortType;
-
-/**
- * Represents a <partnerLinkType.../> element related to a BPEL process
- * - this has attributes:
- * name
- * Role1 name
- * Role1 portType
- * Role2 name
- * Role2 portType
- *
- * - in the XML the 2 roles are child elements of the partnerLinkType element, but there
- * seems little point in reflecting this back into this model - it is simpler to include
- * both roles within the representation of the partnerLinkType itself
- *
- * @version $Rev$ $Date$
- */
-public class BPELPartnerLinkTypeElement implements ExtensibilityElement {
-
- private QName name;
- private String Role1name = null;
- private QName Role1porttype = null;
- private PortType Role1pType = null;
- private String Role2name = null;
- private QName Role2porttype = null;
- private PortType Role2pType = null;
- private QName elementType = null;
- private Boolean required = false;
-
- public BPELPartnerLinkTypeElement(QName name) {
- this.name = name;
- }
-
- public QName getName() {
- return name;
- }
-
- public void setRole1(String name, QName portType, PortType pType) {
- Role1name = name;
- Role1porttype = portType;
- Role1pType = pType;
- }
-
- public void setRole2(String name, QName portType, PortType pType) {
- Role2name = name;
- Role2porttype = portType;
- Role2pType = pType;
- }
-
- public String getRole1Name() {
- return Role1name;
- }
-
- public String getRole2Name() {
- return Role2name;
- }
-
- public QName getRole1PortType() {
- return Role1porttype;
- }
-
- public QName getRole2PortType() {
- return Role2porttype;
- }
-
- public PortType getRole1pType() {
- return Role1pType;
- }
-
- public PortType getRole2pType() {
- return Role2pType;
- }
-
- public QName getElementType() {
- return elementType;
- }
-
- public Boolean getRequired() {
- return required;
- }
-
- public void setElementType(QName elementType) {
- this.elementType = elementType;
- }
-
- public void setRequired(java.lang.Boolean required) {
- this.required = required;
- }
-
-} // end BPELPartnerLinkType
|