diff options
Diffstat (limited to 'branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache')
22 files changed, 0 insertions, 3179 deletions
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/BPELPartnerLinkTypeExt.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/BPELPartnerLinkTypeExt.java deleted file mode 100644 index 0d6f23e732..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/BPELPartnerLinkTypeExt.java +++ /dev/null @@ -1,79 +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.interfacedef.wsdl;
-
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.xml.namespace.QName;
-
-/**
- * A class to serve as the extensibility element for BPEL partnerLinkType elements
- *
- * @version $Rev$ $Date$
- */
-public class BPELPartnerLinkTypeExt implements ExtensibilityElement {
-
- private QName elementType = null;
- private String linkTypeName = null;
- private String[] roleNames = new String[2];
- private QName[] rolePortTypes = new QName[2];
-
- // -- methods required by the Extensibility Element interface
- public QName getElementType() {
- return elementType;
- }
-
- public Boolean getRequired() {
- return true;
- }
-
- public void setElementType(QName theName ) {
- elementType = theName;
- }
-
- public void setRequired(Boolean required) {
- // intentionally left blank
- }
-
- // -- other methods
-
- public void setName( String theName ) {
- linkTypeName = theName;
- }
-
- public String getName() {
- return linkTypeName;
- }
-
- public void setRole( int i, String name, QName portType ) {
- if( i > 1 ) return;
- roleNames[i] = name;
- rolePortTypes[i] = portType;
- }
-
- public String getRoleName( int i ) {
- if( i > 1 ) return null;
- return roleNames[i];
- }
-
- public QName getRolePortType( int i ) {
- if( i > 1 ) return null;
- return rolePortTypes[i];
- }
-
-} // end BPELPartnerLinkTypeExt
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/DefaultWSDLFactory.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/DefaultWSDLFactory.java deleted file mode 100644 index 8d571a4404..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/DefaultWSDLFactory.java +++ /dev/null @@ -1,35 +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.interfacedef.wsdl; - -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLFactoryImpl; - -/** - * A factory for the WSDL model. - * - * @version $Rev$ $Date$ - */ -public class DefaultWSDLFactory extends WSDLFactoryImpl implements WSDLFactory { - - public DefaultWSDLFactory(FactoryExtensionPoint modelFactories) { - super(modelFactories); - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java deleted file mode 100644 index 039e75f437..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java +++ /dev/null @@ -1,140 +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.interfacedef.wsdl; - -import java.net.URI; -import java.util.List; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.WSDLElement; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.ws.commons.schema.XmlSchemaElement; -import org.apache.ws.commons.schema.XmlSchemaType; - -/** - * Represents a WSDL definition. - * WSDLDefinition - * - * @version $Rev$ $Date$ - */ -public interface WSDLDefinition extends Base { - - /** - * Returns the WSDL definition model, if there are more than one WSDL definition under the - * same namespace, the definition will be a facade which imports all the physical WSDL - * definitions - * - * @return the WSDL definition model - */ - Definition getDefinition(); - - /** - * Sets the WSDL definition model - * @param definition the WSDL definition model - */ - void setDefinition(Definition definition); - - /** - * Returns the namespace of this WSDL definition. - * @return the namespace of this WSDL definition - */ - String getNamespace(); - - /** - * Sets the namespace of this WSDL definition. - * @param namespace the namespace of this WSDL definition - */ - void setNamespace(String namespace); - - /** - * Get a list of inline XML schema definitions - * @return A list of inline XML schema definitions - */ - List<XSDefinition> getXmlSchemas(); - - /** - * Get the location of the WSDL file - * @return The location of the WSDL file - */ - URI getLocation(); - - /** - * Set the location of the WSDL file - * @param url - */ - void setLocation(URI url); - - /** - * Get the contribution artifact URI of the WSDL document - * @return The URI of the WSDL document - */ - URI getURI(); - - /** - * Set the contribution artifact URI of the WSDL document - * @param uri - */ - void setURI(URI uri); - - /** - * Get the WSDL definitions imported by this definition - * @return A list of imported WSDL definitions - */ - List<WSDLDefinition> getImportedDefinitions(); - - /** - * Get an XSD element by QName - * @param name - * @return - */ - XmlSchemaElement getXmlSchemaElement(QName name); - - /** - * Get an XSD type by QName - * @param name - * @return - */ - XmlSchemaType getXmlSchemaType(QName name); - - /** - * Get the WSDL object by type and name - * @param <T> - * @param type javax.wsdl.Service/PortType/Binding/Message.class - * @param name The QName of the object - * @return WSDLObject - */ - <T extends WSDLElement> WSDLObject<T> getWSDLObject(Class<T> type, QName name); - - /** - * Get the generated binding for a WSDLDefinition - * @return the WSDL binding - */ - Binding getBinding(); - - /** - * Set the generated binding for a WSDLDefinition - * @param binding the WSDL binding - */ - void setBinding(Binding binding); -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java deleted file mode 100644 index 95985dcc28..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java +++ /dev/null @@ -1,70 +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.interfacedef.wsdl; - -import javax.wsdl.PortType; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; - -/** - * Factory for the WSDL model. - * - * @version $Rev$ $Date$ - */ -public interface WSDLFactory { - - /** - * Creates a new WSDL interface. - * - * @return a new WSDL interface - */ - WSDLInterface createWSDLInterface(); - - /** - * Creates a new WSDL interface from a WSDL portType. - * - * @param portType the portType to inspect - * @return a WSDLInterface corresponding to the WSDL portType - */ - WSDLInterface createWSDLInterface(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException; - - /** - * Creates the contents of a WSDL interface from a WSDL portType. - * - * @param portType the portType to inspect - * @return a WSDLInterface corresponding to the WSDL portType - */ - void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException; - - /** - * Creates a new WSDL definition. - * - * @return a new WSDL definition - */ - WSDLDefinition createWSDLDefinition(); - - /** - * Creates a new WSDL interface contract. - * - * @return - */ - WSDLInterfaceContract createWSDLInterfaceContract(); - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterface.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterface.java deleted file mode 100644 index c0da060af2..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterface.java +++ /dev/null @@ -1,67 +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.interfacedef.wsdl; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.interfacedef.Interface; - - -/** - * Represents a WSDL interface. - * - * @version $Rev$ $Date$ - */ -public interface WSDLInterface extends Interface, Base { - - /** - * Returns the name of the WSDL interface. - * - * @return the name of the WSDL interface - */ - QName getName(); - - /** - * Sets the name of the WSDL interface. - * - * @param interfaceName the name of the WSDL interface - */ - void setName(QName interfaceName); - - /** - * Returns the WSDL interface portType. - * - * @return the WSDL interface portType - */ - PortType getPortType(); - - /** - * Sets the WSDL interface portType - * - * @param portType the WSDL interface portType - */ - void setPortType(PortType portType); - - WSDLDefinition getWsdlDefinition(); - - void setWsdlDefinition(WSDLDefinition wsdlDefinition); - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterfaceContract.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterfaceContract.java deleted file mode 100644 index 59db17116b..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLInterfaceContract.java +++ /dev/null @@ -1,43 +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.interfacedef.wsdl; - -import org.apache.tuscany.sca.interfacedef.InterfaceContract; - - -/** - * Represents a WSDL interface contract. - * - * @version $Rev$ $Date$ - */ -public interface WSDLInterfaceContract extends InterfaceContract { - - /** - * Sets the WSDL location. - * @param location the WSDL location - */ - void setLocation(String location); - - /** - * Returns the WSDL location - * @return the WSDL location - */ - String getLocation(); - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLObject.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLObject.java deleted file mode 100644 index 0b707163da..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLObject.java +++ /dev/null @@ -1,54 +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.interfacedef.wsdl; - -import java.io.Serializable; - -import javax.wsdl.Definition; - -/** - * Model for objects in a WSDL definition - * @version $Rev$ $Date$ - */ -public interface WSDLObject<T extends Serializable> { - /** - * Get the owning definition where the element is declared - * @return The owning definition - */ - Definition getDefinition(); - - /** - * Set the owning definition - * @param definition - */ - void setDefinition(Definition definition); - - /** - * Get the WSDL element such as Service, PortType, Binding or Message - * @return The WSDL element - */ - T getElement(); - - /** - * Set the WSDL element - * @param element - */ - void setElement(T element); -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLOperation.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLOperation.java deleted file mode 100644 index d73cccb714..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLOperation.java +++ /dev/null @@ -1,40 +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.interfacedef.wsdl; - -import org.apache.tuscany.sca.interfacedef.Operation; - -/** - * WSDL 1.1 Operation - * @version $Rev$ $Date$ - */ -public interface WSDLOperation extends Operation { - /** - * Get the underlying WSDL operation - * @return - */ - javax.wsdl.Operation getWsdlOperation(); - - /** - * Set the underlying WSDL operation - * @param operation - */ - void setWsdlOperation(javax.wsdl.Operation operation); -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/InvalidWSDLException.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/InvalidWSDLException.java deleted file mode 100644 index 1e7b4faa32..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/InvalidWSDLException.java +++ /dev/null @@ -1,35 +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.interfacedef.wsdl.impl; - -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; - -/** - * An exception to indicate the WSDL definition is invalid - * - * @version $Rev$ $Date$ - */ -public class InvalidWSDLException extends InvalidInterfaceException { - private static final long serialVersionUID = 3742887584293256519L; - - public InvalidWSDLException(String message) { - super(message); - } -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java deleted file mode 100644 index 82a7aa1200..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java +++ /dev/null @@ -1,284 +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.interfacedef.wsdl.impl; - -import java.net.URI; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.Import; -import javax.wsdl.Message; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.WSDLElement; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.ws.commons.schema.XmlSchemaCollection; -import org.apache.ws.commons.schema.XmlSchemaElement; -import org.apache.ws.commons.schema.XmlSchemaType; - -/** - * Represents a WSDL definition. - * - * @version $Rev$ $Date$ - */ -public class WSDLDefinitionImpl implements WSDLDefinition { - - private Definition definition; - private String namespace; - private URI location; - private URI uri; - private List<WSDLDefinition> imported = new ArrayList<WSDLDefinition>(); - private List<XSDefinition> schemas = new ArrayList<XSDefinition>(); - private boolean unresolved; - private Binding binding; - - protected WSDLDefinitionImpl() { - } - - public Definition getDefinition() { - return definition; - } - - public void setDefinition(Definition definition) { - this.definition = definition; - } - - public boolean isUnresolved() { - return unresolved; - } - - public void setUnresolved(boolean undefined) { - this.unresolved = undefined; - } - - public String getNamespace() { - if (isUnresolved()) { - return namespace; - } else if (definition != null) { - return definition.getTargetNamespace(); - } else { - return namespace; - } - } - - public void setNamespace(String namespace) { - if (!isUnresolved()) { - throw new IllegalStateException(); - } else { - this.namespace = namespace; - } - } - - /* - @Override - public int hashCode() { - return String.valueOf(getNamespace()).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else if (obj instanceof WSDLDefinition) { - WSDLDefinition def = (WSDLDefinition)obj; - if (getNamespace() != null) { - return getNamespace().equals(def.getNamespace()); - } else { - return def.getNamespace() == null; - } - } else { - return false; - } - } - */ - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemas() - */ - public List<XSDefinition> getXmlSchemas() { - return schemas; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getLocation() - */ - public URI getLocation() { - return location; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#setLocation(java.net.URI) - */ - public void setLocation(URI url) { - this.location = url; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getURI() - */ - public URI getURI() { - return uri; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#setURI(java.net.URI) - */ - public void setURI(URI uri) { - this.uri = uri; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getImportedDefinitions() - */ - public List<WSDLDefinition> getImportedDefinitions() { - return imported; - } - - /** - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((location == null) ? 0 : location.hashCode()); - result = prime * result + ((namespace == null) ? 0 : namespace.hashCode()); - return result; - } - - /** - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof WSDLDefinitionImpl)) - return false; - final WSDLDefinitionImpl other = (WSDLDefinitionImpl)obj; - if (location == null) { - if (other.location != null) - return false; - } else if (!location.equals(other.location)) - return false; - if (namespace == null) { - if (other.namespace != null) - return false; - } else if (!namespace.equals(other.namespace)) - return false; - return true; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaElement(javax.xml.namespace.QName) - */ - public XmlSchemaElement getXmlSchemaElement(QName name) { - XmlSchemaCollection schemaCollection = null; - for (XSDefinition xsd : schemas) { - if (schemaCollection == null && xsd.getSchemaCollection() != null) { - schemaCollection = xsd.getSchemaCollection(); - } - XmlSchemaElement element = xsd.getXmlSchemaElement(name); - if (element != null) { - return element; - } - } - if (schemaCollection != null) { - return schemaCollection.getElementByQName(name); - } - return null; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaType(javax.xml.namespace.QName) - */ - public XmlSchemaType getXmlSchemaType(QName name) { - XmlSchemaCollection schemaCollection = null; - for (XSDefinition xsd : schemas) { - if (xsd.getSchemaCollection() != null) { - schemaCollection = xsd.getSchemaCollection(); - } - XmlSchemaType type = xsd.getXmlSchemaType(name); - if (type != null) { - return type; - } - } - if (schemaCollection != null) { - return schemaCollection.getTypeByQName(name); - } - return null; - } - - @SuppressWarnings("unchecked") - private static <T extends WSDLElement> WSDLObject<T> getWSDLObject(Definition definition, Class<T> type, QName name) { - if (definition == null) { - return null; - } - Map<QName, WSDLElement> map = null; - if (type == PortType.class) { - map = definition.getPortTypes(); - } else if (type == Service.class) { - map = definition.getServices(); - } else if (type == Binding.class) { - map = definition.getBindings(); - } else if (type == Message.class) { - map = definition.getMessages(); - } else { - throw new IllegalArgumentException("Invalid type: " + type.getName()); - } - if (map.containsKey(name)) { - return (WSDLObject<T>)new WSDLObjectImpl(definition, map.get(name)); - } else { - for (Object imports : definition.getImports().values()) { - List<Import> importList = (List<Import>)imports; - for (Import i : importList) { - definition = i.getDefinition(); - WSDLObject<T> element = getWSDLObject(definition, type, name); - if (element != null) { - return element; - } - } - } - } - return null; - } - - public <T extends WSDLElement> WSDLObject<T> getWSDLObject(Class<T> type, QName name) { - return getWSDLObject(definition, type, name); - } - - public Binding getBinding() { - return binding; - } - - public void setBinding(Binding binding) { - this.binding = binding; - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java deleted file mode 100644 index 883b6b1567..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java +++ /dev/null @@ -1,75 +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.interfacedef.wsdl.impl; - -import javax.wsdl.PortType; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -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.WSDLInterfaceContract; - -/** - * A factory for the WSDL model. - * - * @version $Rev$ $Date$ - */ -public abstract class WSDLFactoryImpl implements WSDLFactory { - - private WSDLInterfaceIntrospectorImpl introspector; - - public WSDLFactoryImpl(FactoryExtensionPoint modelFactories) { - introspector = new WSDLInterfaceIntrospectorImpl(modelFactories); - } - - public WSDLInterface createWSDLInterface() { - return new WSDLInterfaceImpl(); - } - - public WSDLInterface createWSDLInterface(PortType portType, - WSDLDefinition wsdlDefinition, - ModelResolver resolver) throws InvalidInterfaceException { - WSDLInterface wsdlInterface = createWSDLInterface(); - introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver); - return wsdlInterface; - } - - public void createWSDLInterface(WSDLInterface wsdlInterface, - PortType portType, - WSDLDefinition wsdlDefinition, - ModelResolver resolver) throws InvalidInterfaceException { - introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver); - } - - public WSDLDefinition createWSDLDefinition() { - return new WSDLDefinitionImpl(); - } - - public WSDLInterfaceContract createWSDLInterfaceContract() { - return new WSDLInterfaceContractImpl(); - } - - public WSDLInterfaceIntrospectorImpl getWSDLInterfaceIntrospector() { - return introspector; - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceContractImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceContractImpl.java deleted file mode 100644 index e10bc0d178..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceContractImpl.java +++ /dev/null @@ -1,47 +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.interfacedef.wsdl.impl; - -import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; - -/** - * Represents a WSDL interface contract. - * - * @version $Rev$ $Date$ - */ -public class WSDLInterfaceContractImpl extends InterfaceContractImpl implements WSDLInterfaceContract { - private String location; - - protected WSDLInterfaceContractImpl() { - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - @Override - public WSDLInterfaceContractImpl clone() throws CloneNotSupportedException { - return (WSDLInterfaceContractImpl) super.clone(); - } -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java deleted file mode 100644 index 3719bbd79a..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceImpl.java +++ /dev/null @@ -1,99 +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.interfacedef.wsdl.impl; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.interfacedef.impl.InterfaceImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; - -/** - * Represents a WSDL interface. - * - * @version $Rev$ $Date$ - */ -public class WSDLInterfaceImpl extends InterfaceImpl implements WSDLInterface { - - private QName name; - private PortType portType; - private WSDLDefinition wsdlDefinition; - - protected WSDLInterfaceImpl() { - setRemotable(true); - } - - public QName getName() { - if (isUnresolved()) { - return name; - } else { - return portType.getQName(); - } - } - - public void setName(QName interfaceName) { - if (!isUnresolved()) { - throw new IllegalStateException(); - } - this.name = interfaceName; - } - - public PortType getPortType() { - return portType; - } - - public void setPortType(PortType portType) { - this.portType = portType; - } - - @Override - public int hashCode() { - return String.valueOf(getName()).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else if (obj instanceof WSDLInterface) { - if (getName() != null) { - return getName().equals(((WSDLInterface)obj).getName()); - } else { - return ((WSDLInterface)obj).getName() == null; - } - } else { - return false; - } - } - - public WSDLDefinition getWsdlDefinition() { - return wsdlDefinition; - } - - public void setWsdlDefinition(WSDLDefinition wsdlDefinition) { - this.wsdlDefinition = wsdlDefinition; - } - - @Override - public WSDLInterfaceImpl clone() throws CloneNotSupportedException { - return (WSDLInterfaceImpl) super.clone(); - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java deleted file mode 100644 index 955d1cf642..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java +++ /dev/null @@ -1,159 +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.interfacedef.wsdl.impl; - -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Vector; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.ConversationSequence; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicyFactory; -import org.apache.tuscany.sca.xsd.XSDFactory; - -/** - * Introspector for creating WSDLInterface definitions from WSDL PortTypes. - * - * @version $Rev$ $Date$ - */ -public class WSDLInterfaceIntrospectorImpl { - private static final QName POLICY_REQUIRES = new QName("http://docs.oasis-open.org/ns/opencsa/sca/200903", "requires"); - private static final QName POLICY_CONVERSATIONAL = new QName("http://docs.oasis-open.org/ns/opencsa/sca/200903", "conversational"); - public static final QName POLICY_END_CONVERSATION = new QName("http://docs.oasis-open.org/ns/opencsa/sca/200903", "endsConversation"); - - private XSDFactory xsdFactory; - private PolicyFactory policyFactory; - - public WSDLInterfaceIntrospectorImpl(FactoryExtensionPoint modelFactories) { - this.xsdFactory = modelFactories.getFactory(XSDFactory.class);; - this.policyFactory = modelFactories.getFactory(PolicyFactory.class);; - } - - // FIXME: Do we want to deal with document-literal wrapped style based on the JAX-WS Specification? - private List<Operation> introspectOperations(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException { - List<Operation> operations = new ArrayList<Operation>(); - for (Object o : portType.getOperations()) { - javax.wsdl.Operation wsdlOp = (javax.wsdl.Operation)o; - Operation operation = getOperation(wsdlOp, wsdlDefinition, resolver, xsdFactory); - if(isEndConversation(wsdlOp)) { - operation.setConversationSequence(ConversationSequence.CONVERSATION_END); - } - operations.add(operation); - } - return operations; - } - - public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException { - processIntents(wsdlInterface, portType); - wsdlInterface.setPortType(portType); - wsdlInterface.getOperations().addAll(introspectOperations(portType, wsdlDefinition, resolver)); - wsdlInterface.setConversational(isConversational(portType)); - } - - public static Operation getOperation(javax.wsdl.Operation wsdlOp, - WSDLDefinition wsdlDefinition, - ModelResolver resolver, - XSDFactory xsdFactory) throws InvalidWSDLException { - WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(xsdFactory, wsdlOp, wsdlDefinition, null, resolver); - return op.getOperation(); - } - - private void processIntents(WSDLInterface wsdlInterface, PortType portType) { - Object o; - try { - o = portType.getExtensionAttribute(POLICY_REQUIRES); - } catch (NoSuchMethodError e) { - // That method does not exist on older WSDL4J levels - o = null; - } - if(o != null && o instanceof Vector) { - Vector<QName> policyAttributes = (Vector<QName>) o; - - Enumeration<QName> policyItents = policyAttributes.elements(); - while(policyItents.hasMoreElements()) { - QName intentName = policyItents.nextElement(); - - //ignores conversational, as it will have it's own - //attribute in the wsdl interface model - if(! intentName.equals(POLICY_CONVERSATIONAL)) { - //process the intent - System.out.println(">>> Intent : " + intentName); - - // Add each intent to the list - Intent intent = policyFactory.createIntent(); - intent.setName(intentName); - - wsdlInterface.getRequiredIntents().add(intent); - } - } - - } - } - - private boolean isConversational(PortType portType) { - boolean conversational = false; - - Object o; - try { - o = portType.getExtensionAttribute(POLICY_REQUIRES); - } catch (NoSuchMethodError e) { - // That method does not exist on older WSDL4J levels - o =null; - } - if(o != null && o instanceof Vector) { - Vector<QName> policyAttributes = (Vector<QName>) o; - - if(policyAttributes.contains(POLICY_CONVERSATIONAL)) { - return true; - } - - } - - return conversational; - } - - private boolean isEndConversation(javax.wsdl.Operation operation) { - boolean endConversation = false; - - Object o; - try { - o = operation.getExtensionAttribute(POLICY_END_CONVERSATION); - } catch (NoSuchMethodError e) { - // That method does not exist on older WSDL4J levels - o = null; - } - if(o != null && o instanceof String) { - endConversation = Boolean.valueOf((String)o); - } - - return endConversation; - - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLObjectImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLObjectImpl.java deleted file mode 100644 index f18eaef27b..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLObjectImpl.java +++ /dev/null @@ -1,61 +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.interfacedef.wsdl.impl; - -import java.io.Serializable; - -import javax.wsdl.Definition; - -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject; - -/** - * @version $Rev$ $Date$ - */ -public class WSDLObjectImpl<T extends Serializable> implements WSDLObject<T> { - private Definition definition; - private T element; - - public WSDLObjectImpl() { - super(); - } - - public WSDLObjectImpl(Definition definition, T element) { - super(); - this.definition = definition; - this.element = element; - } - - public Definition getDefinition() { - return definition; - } - - public void setDefinition(Definition definition) { - this.definition = definition; - } - - public T getElement() { - return element; - } - - public void setElement(T element) { - this.element = element; - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationImpl.java deleted file mode 100644 index 317b9cce81..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationImpl.java +++ /dev/null @@ -1,81 +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.interfacedef.wsdl.impl; - -import javax.wsdl.Operation; - -import org.apache.tuscany.sca.interfacedef.impl.OperationImpl; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation; - -/** - * @version $Rev$ $Date$ - */ -public class WSDLOperationImpl extends OperationImpl implements WSDLOperation { - private Operation operation; - - public WSDLOperationImpl() { - super(); - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation#getWsdlOperation() - */ - public Operation getWsdlOperation() { - return operation; - } - - /** - * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation#setWsdlOperation(javax.wsdl.Operation) - */ - public void setWsdlOperation(Operation operation) { - this.operation = operation; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((operation == null) ? 0 : operation.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - final WSDLOperationImpl other = (WSDLOperationImpl)obj; - if (operation == null) { - if (other.operation != null) - return false; - } else if (!operation.equals(other.operation)) - return false; - return true; - } - - @Override - public String toString() { - return operation == null ? null : operation.toString(); - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java deleted file mode 100644 index 2df0f0c3a1..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java +++ /dev/null @@ -1,602 +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.interfacedef.wsdl.impl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.wsdl.Fault; -import javax.wsdl.Input; -import javax.wsdl.Message; -import javax.wsdl.Output; -import javax.wsdl.Part; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.interfacedef.ConversationSequence; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl; -import org.apache.tuscany.sca.interfacedef.util.ElementInfo; -import org.apache.tuscany.sca.interfacedef.util.FaultException; -import org.apache.tuscany.sca.interfacedef.util.TypeInfo; -import org.apache.tuscany.sca.interfacedef.util.WrapperInfo; -import org.apache.tuscany.sca.interfacedef.util.XMLType; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLOperation; -import org.apache.tuscany.sca.xsd.XSDFactory; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.ws.commons.schema.XmlSchemaComplexType; -import org.apache.ws.commons.schema.XmlSchemaElement; -import org.apache.ws.commons.schema.XmlSchemaObject; -import org.apache.ws.commons.schema.XmlSchemaObjectCollection; -import org.apache.ws.commons.schema.XmlSchemaParticle; -import org.apache.ws.commons.schema.XmlSchemaSequence; -import org.apache.ws.commons.schema.XmlSchemaSimpleType; -import org.apache.ws.commons.schema.XmlSchemaType; - -/** - * Metadata for a WSDL operation - * - * @version $Rev$ $Date$ - */ -public class WSDLOperationIntrospectorImpl { - private static final Logger logger = Logger.getLogger(WSDLOperationIntrospectorImpl.class.getName()); - private static final QName ANY = new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "any"); - - private XSDFactory xsdFactory; - private ModelResolver resolver; - private WSDLDefinition wsdlDefinition; - private javax.wsdl.Operation operation; - private WSDLOperation operationModel; - private DataType<List<DataType>> inputType; - private DataType outputType; - private List<DataType> faultTypes; - private String dataBinding; - - /** - * @param wsdlFactory The WSDLFactory to use - * @param operation The WSDL4J operation - * @param wsdlDefinition The WSDL Definition - * @param dataBinding The default databinding - * @param resolver The ModelResolver to use - */ - public WSDLOperationIntrospectorImpl(XSDFactory xsdFactory, - javax.wsdl.Operation operation, - WSDLDefinition wsdlDefinition, - String dataBinding, - ModelResolver resolver) { - super(); - this.xsdFactory = xsdFactory; - this.operation = operation; - this.wsdlDefinition = wsdlDefinition; - this.resolver = resolver; - this.dataBinding = dataBinding; - this.wrapper = new Wrapper(); - } - - private Wrapper wrapper; - - private Boolean wrapperStyle; - - /** - * Test if the operation qualifies wrapper style as defined by the JAX-WS - * 2.0 Specification - * - * @return true if the operation qualifies wrapper style, otherwise false - */ - public boolean isWrapperStyle() throws InvalidWSDLException { - if (wrapperStyle == null) { - wrapperStyle = - (operation.getInput() == null || operation.getInput().getMessage() == null - || operation.getInput().getMessage().getParts().size() == 0 || wrapper.getInputChildElements() != null) && (operation - .getOutput() == null || operation.getOutput().getMessage() == null - || operation.getOutput().getMessage().getParts().size() == 0 || wrapper.getOutputChildElements() != null); - } - return wrapperStyle; - } - - public Wrapper getWrapper() throws InvalidWSDLException { - if (!isWrapperStyle()) { - throw new IllegalStateException("The operation is not wrapper style."); - } else { - return wrapper; - } - } - - /** - * @return - * @throws InvalidServiceContractException - */ - public DataType<List<DataType>> getInputType() throws InvalidWSDLException { - if (inputType == null) { - Input input = operation.getInput(); - Message message = (input == null) ? null : input.getMessage(); - inputType = getMessageType(message); - inputType.setDataBinding("idl:input"); - } - return inputType; - } - - /** - * @return - * @throws NotSupportedWSDLException - */ - @SuppressWarnings("unchecked") - public DataType<XMLType> getOutputType() throws InvalidWSDLException { - if (outputType == null) { - Output output = operation.getOutput(); - Message outputMsg = (output == null) ? null : output.getMessage(); - - List outputParts = (outputMsg == null) ? null : outputMsg.getOrderedParts(null); - if (outputParts != null && outputParts.size() > 0) { - if (outputParts.size() > 1) { - // We don't support output with multiple parts - if (logger.isLoggable(Level.WARNING)) { - logger.warning("Multi-part output is not supported, please use BARE parameter style."); - } - // throw new InvalidWSDLException("Multi-part output is not supported"); - } - Part part = (Part)outputParts.get(0); - outputType = new WSDLPart(part, Object.class).getDataType(); - // outputType.setMetadata(WSDLOperation.class.getName(), this); - } - } - return outputType; - } - - /** - * @return - * @throws NotSupportedWSDLException - */ - public List<DataType> getFaultTypes() throws InvalidWSDLException { - if (faultTypes == null) { - Collection faults = operation.getFaults().values(); - faultTypes = new ArrayList<DataType>(); - for (Object f : faults) { - Fault fault = (Fault)f; - Message faultMsg = fault.getMessage(); - List faultParts = faultMsg.getOrderedParts(null); - if (faultParts.size() != 1) { - throw new InvalidWSDLException("The fault message MUST have a single part"); - } - Part part = (Part)faultParts.get(0); - WSDLPart wsdlPart = new WSDLPart(part, Object.class); - faultTypes.add(new DataTypeImpl<DataType>(FaultException.class, wsdlPart.getDataType())); - } - } - return faultTypes; - } - - private DataType<List<DataType>> getMessageType(Message message) throws InvalidWSDLException { - List<DataType> partTypes = new ArrayList<DataType>(); - if (message != null) { - Collection parts = message.getOrderedParts(null); - for (Object p : parts) { - WSDLPart part = new WSDLPart((Part)p, Object.class); - DataType<XMLType> partType = part.getDataType(); - partTypes.add(partType); - } - } - return new DataTypeImpl<List<DataType>>(dataBinding, Object[].class, partTypes); - } - - /** - * @return - * @throws NotSupportedWSDLException - */ - public Operation getOperation() throws InvalidWSDLException { - if (operationModel == null) { - boolean oneway = (operation.getOutput() == null); - operationModel = new WSDLOperationImpl(); - operationModel.setWsdlOperation(operation); - operationModel.setName(operation.getName()); - operationModel.setFaultTypes(getFaultTypes()); - operationModel.setNonBlocking(oneway); - operationModel.setConversationSequence(ConversationSequence.CONVERSATION_NONE); - operationModel.setInputType(getInputType()); - operationModel.setOutputType(getOutputType()); - - operationModel.setWrapperStyle(isWrapperStyle()); - if (isWrapperStyle()) { - WrapperInfo wrapperInfo = getWrapper().getWrapperInfo(); - operationModel.setWrapper(wrapperInfo); - } - } - return operationModel; - } - - private XmlSchemaElement getElement(QName elementName) { - - XmlSchemaElement element = wsdlDefinition.getXmlSchemaElement(elementName); - if (element == null) { - XSDefinition definition = xsdFactory.createXSDefinition(); - definition.setUnresolved(true); - definition.setNamespace(elementName.getNamespaceURI()); - definition = resolver.resolveModel(XSDefinition.class, definition); - if (definition.getSchema() != null) { - element = definition.getSchema().getElementByName(elementName); - } - } - return element; - } - - private XmlSchemaType getType(QName typeName) { - XmlSchemaType type = wsdlDefinition.getXmlSchemaType(typeName); - if (type == null) { - XSDefinition definition = xsdFactory.createXSDefinition(); - definition.setUnresolved(true); - definition.setNamespace(typeName.getNamespaceURI()); - definition = resolver.resolveModel(XSDefinition.class, definition); - if (definition.getSchema() != null) { - type = definition.getSchema().getTypeByName(typeName); - } - } - return type; - } - - /** - * Metadata for a WSDL part - */ - public class WSDLPart { - private Part part; - - private XmlSchemaElement element; - - private DataType dataType; - - public WSDLPart(Part part, Class javaType) throws InvalidWSDLException { - this.part = part; - QName elementName = part.getElementName(); - if (elementName != null) { - element = WSDLOperationIntrospectorImpl.this.getElement(elementName); - if (element == null) { - throw new InvalidWSDLException("Element cannot be resolved: " + elementName.toString()); - } - } else { - // Create an faked XSD element to host the metadata - element = new XmlSchemaElement(); - element.setName(part.getName()); - element.setQName(new QName(null, part.getName())); - QName typeName = part.getTypeName(); - if (typeName != null) { - XmlSchemaType type = WSDLOperationIntrospectorImpl.this.getType(typeName); - if (type == null) { - throw new InvalidWSDLException("Type cannot be resolved: " + typeName.toString()); - } - element.setSchemaType(type); - element.setSchemaTypeName(type.getQName()); - } - } - XMLType xmlType = new XMLType(getElementInfo(element)); - xmlType.setNillable(element.isNillable()); - xmlType.setMany(element.getMaxOccurs() > 1); - dataType = new DataTypeImpl<XMLType>(dataBinding, javaType, xmlType); - } - - /** - * @return the element - */ - public XmlSchemaElement getElement() { - return element; - } - - /** - * @return the part - */ - public Part getPart() { - return part; - } - - /** - * @return the dataType - */ - public DataType<XMLType> getDataType() { - return dataType; - } - } - - /** - * The "Wrapper Style" WSDL operation is defined by The Java API for - * XML-Based Web Services (JAX-WS) 2.0 specification, section 2.3.1.2 - * Wrapper Style. <p/> A WSDL operation qualifies for wrapper style mapping - * only if the following criteria are met: - * <ul> - * <li>(i) The operation�s input and output messages (if present) each - * contain only a single part - * <li>(ii) The input message part refers to a global element declaration - * whose localname is equal to the operation name - * <li>(iii) The output message part refers to a global element declaration - * <li>(iv) The elements referred to by the input and output message parts - * (henceforth referred to as wrapper elements) are both complex types - * defined using the xsd:sequence compositor - * <li>(v) The wrapper elements only contain child elements, they must not - * contain other structures such as wildcards (element or attribute), - * xsd:choice, substitution groups (element references are not permitted) or - * attributes; furthermore, they must not be nillable. - * </ul> - */ - public class Wrapper { - private XmlSchemaElement inputWrapperElement; - - private XmlSchemaElement outputWrapperElement; - - private List<XmlSchemaElement> inputElements; - - private List<XmlSchemaElement> outputElements; - - // private DataType<List<DataType<XMLType>>> unwrappedInputType; - // - // private DataType<XMLType> unwrappedOutputType; - - private transient WrapperInfo wrapperInfo; - - private List<XmlSchemaElement> getChildElements(XmlSchemaElement element) throws InvalidWSDLException { - if (element == null) { - return null; - } - if (element.isNillable()) { - // Wrapper element cannot be nillable - // return null; - } - XmlSchemaType type = element.getSchemaType(); - if (type == null) { - String qName = element.getQName().toString(); - throw new InvalidWSDLException("The XML schema element does not have a type: " + qName); - } - if (!(type instanceof XmlSchemaComplexType)) { - // Has to be a complexType - return null; - } - XmlSchemaComplexType complexType = (XmlSchemaComplexType)type; - if (complexType.getAttributes().getCount() != 0 || complexType.getAnyAttribute() != null) { - // No attributes - return null; - } - XmlSchemaParticle particle = complexType.getParticle(); - if (particle == null) { - // No particle - return Collections.emptyList(); - } - if (!(particle instanceof XmlSchemaSequence)) { - return null; - } - XmlSchemaSequence sequence = (XmlSchemaSequence)complexType.getParticle(); - XmlSchemaObjectCollection items = sequence.getItems(); - List<XmlSchemaElement> childElements = new ArrayList<XmlSchemaElement>(); - for (int i = 0; i < items.getCount(); i++) { - XmlSchemaObject schemaObject = items.getItem(i); - if (!(schemaObject instanceof XmlSchemaElement)) { - // Should contain elements only - return null; - } - XmlSchemaElement childElement = (XmlSchemaElement)schemaObject; - /* - if (childElement.getSubstitutionGroup() != null) { - return null; - } - */ - if (childElement.getName() == null || childElement.getRefName() != null) { - XmlSchemaElement ref = getElement(childElement.getRefName()); - if (ref == null) { - throw new InvalidWSDLException("XML schema element ref cannot be resolved: " + childElement); - } - childElement = ref; - } - if (ANY.equals(childElement.getQName())) { - // Wildcard is not allowed - return null; - } - // TODO: Do we support maxOccurs >1 ? - if (childElement.getMaxOccurs() > 1) { - // TODO: [rfeng] To be implemented - /* - if(logger.isLoggable(Level.WARNING)) { - logger.warning("Support for elements with maxOccurs>1 is not implemented."); - } - */ - // return null; - } - childElements.add(childElement); - } - return childElements; - } - - /** - * Return a list of child XSD elements under the wrapped request element - * - * @return a list of child XSD elements or null if if the request - * element is not wrapped - */ - public List<XmlSchemaElement> getInputChildElements() throws InvalidWSDLException { - if (inputElements != null) { - return inputElements; - } - Input input = operation.getInput(); - if (input != null) { - Message inputMsg = input.getMessage(); - Collection parts = inputMsg.getParts().values(); - if (parts.size() != 1) { - return null; - } - Part part = (Part)parts.iterator().next(); - QName elementName = part.getElementName(); - if (elementName == null) { - return null; - } - if (!operation.getName().equals(elementName.getLocalPart())) { - return null; - } - inputWrapperElement = getElement(elementName); - if (inputWrapperElement == null) { - throw new InvalidWSDLException("The element is not declared in a XML schema: " + elementName - .toString()); - } - if (inputWrapperElement.isNillable()) { - // The wrapper element cannot be nilable - // FIXME: Java2WSDL create nillable - // return null; - } - inputElements = getChildElements(inputWrapperElement); - return inputElements; - } else { - return null; - } - } - - /** - * Return a list of child XSD elements under the wrapped response - * element - * - * @return a list of child XSD elements or null if if the response - * element is not wrapped - */ - public List<XmlSchemaElement> getOutputChildElements() throws InvalidWSDLException { - if (outputElements != null) { - return outputElements; - } - Output output = operation.getOutput(); - if (output != null) { - Message outputMsg = output.getMessage(); - Collection parts = outputMsg.getParts().values(); - if (parts.size() != 1) { - return null; - } - Part part = (Part)parts.iterator().next(); - QName elementName = part.getElementName(); - if (elementName == null) { - throw new InvalidWSDLException("The element is not declared in the XML schema: " + part.getName()); - } - outputWrapperElement = WSDLOperationIntrospectorImpl.this.getElement(elementName); - if (outputWrapperElement == null) { - return null; - } - if (outputWrapperElement.isNillable()) { - // The wrapper element cannot be nilable - // return null; - } - outputElements = getChildElements(outputWrapperElement); - // FIXME: Do we support multiple child elements for the response? - return outputElements; - } else { - return null; - } - } - - /** - * @return the inputWrapperElement - */ - public XmlSchemaElement getInputWrapperElement() { - return inputWrapperElement; - } - - /** - * @return the outputWrapperElement - */ - public XmlSchemaElement getOutputWrapperElement() { - return outputWrapperElement; - } - - /* - public DataType<List<DataType<XMLType>>> getUnwrappedInputType() throws InvalidWSDLException { - if (unwrappedInputType == null) { - List<DataType<XMLType>> childTypes = new ArrayList<DataType<XMLType>>(); - for (XmlSchemaElement element : getInputChildElements()) { - DataType<XMLType> type = - new DataType<XMLType>(dataBinding, Object.class, new XMLType(getElementInfo(element))); - // type.setMetadata(ElementInfo.class.getName(), getElementInfo(element)); - childTypes.add(type); - } - unwrappedInputType = - new DataType<List<DataType<XMLType>>>("idl:unwrapped.input", Object[].class, childTypes); - } - return unwrappedInputType; - } - - public DataType<XMLType> getUnwrappedOutputType() throws InvalidServiceContractException { - if (unwrappedOutputType == null) { - List<XmlSchemaElement> elements = getOutputChildElements(); - if (elements != null && elements.size() > 0) { - if (elements.size() > 1) { - // We don't support output with multiple parts - throw new NotSupportedWSDLException("Multi-part output is not supported"); - } - XmlSchemaElement element = elements.get(0); - unwrappedOutputType = - new DataType<XMLType>(dataBinding, Object.class, new XMLType(getElementInfo(element))); - // unwrappedOutputType.setMetadata(ElementInfo.class.getName(), getElementInfo(element)); - } - } - return unwrappedOutputType; - } - */ - - public WrapperInfo getWrapperInfo() throws InvalidWSDLException { - if (wrapperInfo == null) { - ElementInfo in = getElementInfo(getInputWrapperElement()); - ElementInfo out = getElementInfo(getOutputWrapperElement()); - List<ElementInfo> inChildren = new ArrayList<ElementInfo>(); - if (in != null) { - for (XmlSchemaElement e : getInputChildElements()) { - inChildren.add(getElementInfo(e)); - } - } - List<ElementInfo> outChildren = new ArrayList<ElementInfo>(); - if (out != null) { - for (XmlSchemaElement e : getOutputChildElements()) { - outChildren.add(getElementInfo(e)); - } - } - wrapperInfo = new WrapperInfo(dataBinding, in, out, inChildren, outChildren); - } - return wrapperInfo; - } - } - - private static ElementInfo getElementInfo(XmlSchemaElement element) { - if (element == null) { - return null; - } - ElementInfo elementInfo = new ElementInfo(element.getQName(), getTypeInfo(element.getSchemaType())); - elementInfo.setMany(element.getMaxOccurs() > 1); - elementInfo.setNillable(element.isNillable()); - return elementInfo; - } - - private static TypeInfo getTypeInfo(XmlSchemaType type) { - if (type == null) { - return null; - } - XmlSchemaType baseType = (XmlSchemaType)type.getBaseSchemaType(); - QName name = type.getQName(); - boolean simple = (type instanceof XmlSchemaSimpleType); - if (baseType == null) { - return new TypeInfo(name, simple, null); - } else { - return new TypeInfo(name, simple, getTypeInfo(baseType)); - } - } - -} diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/BPELExtensionHandler.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/BPELExtensionHandler.java deleted file mode 100644 index 5178149b63..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/BPELExtensionHandler.java +++ /dev/null @@ -1,141 +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.interfacedef.wsdl.xml;
-
-import java.io.PrintWriter;
-
-import javax.wsdl.Definition;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.ExtensionDeserializer;
-import javax.wsdl.extensions.ExtensionRegistry;
-import javax.wsdl.extensions.ExtensionSerializer;
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.interfacedef.wsdl.BPELPartnerLinkTypeExt;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * A WSDL extension processor for extension elements introduced by BPEL - in particular
- * the <partnerLinkType.../> elements
- *
- * @version $Rev$ $Date$
- */
-public class BPELExtensionHandler implements ExtensionSerializer, ExtensionDeserializer {
-
- private final String localName = "partnerLinkType";
- private final String roleName = "role";
-
- /**
- * Marshals the BPEL partner link type extension element to XML
- * See (@link javax.wsdl.extensions.ExtensionSerializer)
- */
- @SuppressWarnings("unchecked")
- public void marshall(Class parentType, QName elementType, ExtensibilityElement theElement,
- PrintWriter writer, Definition def, ExtensionRegistry extReg)
- throws WSDLException {
- // The format of the Partner Link Type in XML is as follows:
- // <foo:partnerLinkType name="bar">
- // <foo:role name="somename" portType="xyz:portTypeName"/>
- // <foo:role name="othername" portType="xyz:portTypeName2"/>
- // <foo:partnerLinkType>
- BPELPartnerLinkTypeExt thePLinkType = (BPELPartnerLinkTypeExt) theElement;
- QName theType = thePLinkType.getElementType();
-
- writer.println("<" + theType.toString() +
- " name=\"" + thePLinkType.getName() + "\">");
- for( int i = 0; i < 2; i++ ) {
- if( thePLinkType.getRoleName( i ) != null ) {
- writer.println( "<" + theType.getPrefix() + ":role"
- + " name=\"" + thePLinkType.getRoleName(i) + "\" portType=\""
- + thePLinkType.getRolePortType(i) + "\">");
- } // end if
- } // end for
- writer.println("</" + theType.toString() + ">");
- } // end marshall
-
- /**
- * Unmarshals the BPEL partner link type element from XML
- * See (@link javax.wsdl.extensions.ExtensionDeserializer)
- * The format of the Partner Link Type in XML is as follows:
- * <foo:partnerLinkType name="bar">
- * <foo:role name="somename" portType="xyz:portTypeName"/>
- * <foo:role name="othername" portType="xyz:portTypeName2"/>
- * <foo:partnerLinkType>
- *
- * One role is mandatory, the second is optional.
- */
- @SuppressWarnings("unchecked")
- public ExtensibilityElement unmarshall(Class theClass, QName elementType,
- Element theElement, Definition def, ExtensionRegistry extReg)
- throws WSDLException {
-
- // Check that this elementType really is a partnerLinkType element
- if( !elementType.getLocalPart().equals(localName) ) return null;
- BPELPartnerLinkTypeExt theExtension = new BPELPartnerLinkTypeExt();
- theExtension.setElementType(elementType);
- theExtension.setName( theElement.getAttribute("name") );
-
- // Fetch the child "role" elements
- NodeList theRoles = theElement.getElementsByTagNameNS("*", roleName);
- for ( int i=0; i < theRoles.getLength(); i++ ) {
- if( i > 1 ) break;
- Element roleNode = (Element)theRoles.item(i);
- String roleName = roleNode.getAttribute("name");
- String portType = roleNode.getAttribute("portType");
- if (portType == null || portType.length() == 0) {
- // Fetch the child "portType" element
- NodeList portTypesNodes = roleNode.getElementsByTagNameNS("*", "portType");
- for (int p = 0; p < portTypesNodes.getLength(); p++) {
- Element portTypeNode = (Element)portTypesNodes.item(p);
- portType = portTypeNode.getAttribute("name");
- break;
- }
- }
- // The PortType attribute is a QName in prefix:localName format - convert to a QName
- QName rolePortType = getQNameValue( def, portType );
- theExtension.setRole( i, roleName, rolePortType );
- } // end for
- return theExtension;
- } // end unmarshall
-
-
- /**
- * Returns a QName from a string.
- * @param definition - a WSDL Definition
- * @param value - the String from which to form the QName in the form "pref:localName"
- * @return
- */
- protected QName getQNameValue(Definition definition, String value) {
- if (value != null && definition != null) {
- int index = value.indexOf(':');
- String prefix = index == -1 ? "" : value.substring(0, index);
- String localName = index == -1 ? value : value.substring(index + 1);
- String ns = definition.getNamespace(prefix);
- if (ns == null) {
- ns = "";
- }
- return new QName(ns, localName, prefix);
- } else {
- return null;
- }
- } // end getQNameValue
-
-} // end BPELExtensionHandler
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLConstants.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLConstants.java deleted file mode 100644 index 7d48dc62bd..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLConstants.java +++ /dev/null @@ -1,38 +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.interfacedef.wsdl.xml;
-
-import javax.xml.namespace.QName;
-
-/**
- * Constants for WSDL.
- *
- * @version $Rev: 750765 $ $Date: 2009-03-06 04:36:04 +0000 (Fri, 06 Mar 2009) $
- */
-public interface WSDLConstants {
- String SCA11_NS = "http://docs.oasis-open.org/ns/opencsa/sca/200903";
- String INTERFACE_WSDL = "interface.wsdl";
- QName INTERFACE_WSDL_QNAME = new QName(SCA11_NS, "interface.wsdl");
- String INTERFACE = "interface";
- String CALLBACK_INTERFACE = "callbackInterface";
- String WSDL_LOCATION = "wsdlLocation";
- String WSDLI_NS = "http://www.w3.org/2004/08/wsdl-instance";
- QName WSDL_LOCATION_QNAME = new QName(WSDLI_NS, WSDL_LOCATION);
-
-}
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.java deleted file mode 100644 index c169214e44..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.java +++ /dev/null @@ -1,233 +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.interfacedef.wsdl.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URL;
-import java.util.List;
-
-import javax.wsdl.Definition;
-import javax.wsdl.Import;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.xsd.XSDFactory;
-import org.apache.tuscany.sca.xsd.XSDefinition;
-
-/**
- * An ArtifactProcessor for WSDL documents.
- *
- * @version $Rev: 709339 $ $Date: 2008-10-31 04:01:44 +0000 (Fri, 31 Oct 2008) $
- */
-public class WSDLDocumentProcessor implements URLArtifactProcessor<WSDLDefinition> {
-
- public static final QName WSDL11 = new QName("http://schemas.xmlsoap.org/wsdl/", "definitions");
- public static final QName WSDL11_IMPORT = new QName("http://schemas.xmlsoap.org/wsdl/", "import");
- public static final QName XSD = new QName("http://www.w3.org/2001/XMLSchema", "schema");
-
- private XMLInputFactory inputFactory;
-
- private WSDLFactory factory;
- private XSDFactory xsdFactory;
- private Monitor monitor;
-
- public WSDLDocumentProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) {
- this.factory = modelFactories.getFactory(WSDLFactory.class);
- this.xsdFactory = modelFactories.getFactory(XSDFactory.class);
- this.inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- this.monitor = monitor;
- }
-
- /**
- * Report a exception.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void error(String message, Object model, Exception ex) {
- if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "interface-wsdlxml-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
- }
-
- public WSDLDefinition read(URL contributionURL, URI artifactURI, URL artifactURL) throws ContributionReadException {
- try {
- WSDLDefinition definition = indexRead(artifactURL);
- definition.setURI(artifactURI);
- return definition;
- } catch (Exception e) {
- ContributionReadException ce = new ContributionReadException(e);
- error("ContributionReadException", artifactURL, ce);
- //throw ce;
- return null;
- }
- }
-
- public void resolve(WSDLDefinition model, ModelResolver resolver) throws ContributionResolveException {
- if (model == null) return;
-
- Definition definition = model.getDefinition();
- if (definition != null) {
- for (Object imports : definition.getImports().values()) {
- List importList = (List)imports;
- for (Object i : importList) {
- Import imp = (Import)i;
- if (imp.getDefinition() != null) {
- continue;
- }
- if (imp.getLocationURI() == null) {
- // FIXME: [rfeng] By the WSDL 1.1 Specification, the location attribute is required
- // We need to resolve it by QName
- WSDLDefinition proxy = factory.createWSDLDefinition();
- proxy.setUnresolved(true);
- proxy.setNamespace(imp.getNamespaceURI());
- WSDLDefinition resolved = resolver.resolveModel(WSDLDefinition.class, proxy);
- if (resolved != null && !resolved.isUnresolved()) {
- imp.setDefinition(resolved.getDefinition());
- if (!model.getImportedDefinitions().contains(resolved)) {
- model.getImportedDefinitions().add(resolved);
- }
- }
- } else {
- String location = imp.getLocationURI();
- if (location.indexOf(' ') != -1) {
- location = location.replace(" ", "%20");
- }
- URI uri = URI.create(location);
- if (uri.isAbsolute()) {
- WSDLDefinition resolved;
- try {
- resolved = read(null, uri, uri.toURL());
- imp.setDefinition(resolved.getDefinition());
- if (!model.getImportedDefinitions().contains(resolved)) {
- model.getImportedDefinitions().add(resolved);
- }
- } catch (Exception e) {
- ContributionResolveException ce = new ContributionResolveException(e);
- error("ContributionResolveException", resolver, ce);
- //throw ce;
- }
- } else {
- if (location.startsWith("/")) {
- // This is a relative URI against a contribution
- location = location.substring(1);
- // TODO: Need to resolve it against the contribution
- } else {
- // This is a relative URI against the WSDL document
- URI baseURI = URI.create(model.getDefinition().getDocumentBaseURI());
- URI locationURI = baseURI.resolve(location);
- WSDLDefinition resolved;
- try {
- resolved = read(null, locationURI, locationURI.toURL());
- imp.setDefinition(resolved.getDefinition());
- if (!model.getImportedDefinitions().contains(resolved)) {
- model.getImportedDefinitions().add(resolved);
- }
- } catch (Exception e) {
- ContributionResolveException ce = new ContributionResolveException(e);
- error("ContributionResolveException", resolver, ce);
- //throw ce;
- }
- }
- }
- }
- }
- }
- }
- }
-
- public String getArtifactType() {
- return ".wsdl";
- }
-
- public Class<WSDLDefinition> getModelType() {
- return WSDLDefinition.class;
- }
-
- /**
- * Read the namespace for the WSDL definition and inline schemas
- *
- * @param doc
- * @return
- * @throws IOException
- * @throws XMLStreamException
- */
- protected WSDLDefinition indexRead(URL doc) throws Exception {
- WSDLDefinition wsdlDefinition = factory.createWSDLDefinition();
- wsdlDefinition.setUnresolved(true);
- wsdlDefinition.setLocation(doc.toURI());
-
- InputStream is = doc.openStream();
- try {
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- int eventType = reader.getEventType();
- int index = 0;
- while (true) {
- if (eventType == XMLStreamConstants.START_ELEMENT) {
- if (WSDL11.equals(reader.getName())) {
- String tns = reader.getAttributeValue(null, "targetNamespace");
- wsdlDefinition.setNamespace(tns);
- // The definition is marked as resolved but not loaded
- wsdlDefinition.setUnresolved(false);
- wsdlDefinition.setDefinition(null);
- }
- if (XSD.equals(reader.getName())) {
- String tns = reader.getAttributeValue(null, "targetNamespace");
- XSDefinition xsd = xsdFactory.createXSDefinition();
- xsd.setUnresolved(true);
- xsd.setNamespace(tns);
- xsd.setLocation(URI.create(doc.toURI() + "#" + index));
- index++;
- // The definition is marked as resolved but not loaded
- xsd.setUnresolved(false);
- xsd.setSchema(null);
- wsdlDefinition.getXmlSchemas().add(xsd);
- }
- }
- if (reader.hasNext()) {
- eventType = reader.next();
- } else {
- break;
- }
- }
- return wsdlDefinition;
- } finally {
- is.close();
- }
- }
-
-}
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java deleted file mode 100644 index cfba9f3519..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java +++ /dev/null @@ -1,284 +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.interfacedef.wsdl.xml;
-
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-
-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.contribution.processor.ContributionReadException;
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-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.WSDLInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
-
-/**
- *
- * @version $Rev: 750323 $ $Date: 2009-03-05 05:52:01 +0000 (Thu, 05 Mar 2009) $
- */
-public class WSDLInterfaceProcessor implements StAXArtifactProcessor<WSDLInterfaceContract>, WSDLConstants {
-
- private WSDLFactory wsdlFactory;
- private Monitor monitor;
-
- public WSDLInterfaceProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) {
- this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
- this.monitor = monitor;
- }
-
- /**
- * Report a warning.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void warning(String message, Object model, Object... messageParameters) {
- if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "interface-wsdlxml-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 = monitor.createProblem(this.getClass().getName(), "interface-wsdlxml-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 = monitor.createProblem(this.getClass().getName(), "interface-wsdlxml-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
- }
-
- /**
- * Create a WSDL interface from a URI.
- * @param uri - the URI in the form nameSpace#wsdl.interface(porttypeName) or nameSpace#wsdl.porttype(porttypeName)
- * @return a WSDLInterface object
- * @throws ContributionReadException
- */
- private static String FRAGMENT_INTERFACE = "wsdl.interface";
- private static String FRAGMENT_PORTTYPE = "wsdl.porttype";
- private WSDLInterface createWSDLInterface(String uri) throws ContributionReadException {
-
- WSDLInterface wsdlInterface = null;
-
- // Read a QName in the form:
- // namespace#wsdl.interface(name)
- int index = uri.indexOf('#');
- if (index == -1) {
- error("InvalidWSDLInterfaceAttr", wsdlFactory, uri);
- //throw new ContributionReadException("Invalid WSDL interface attribute: " + uri);
- } else {
- // Read the URI and extract namespace and fragment
- String namespace = uri.substring(0, index);
- String name = uri.substring(index + 1);
- String porttype = null;
- if( name.contains(FRAGMENT_INTERFACE)) {
- // Deal with the case where #wsdl.interface is used
- porttype = name.substring("wsdl.interface(".length(), name.length() - 1);
- } // end if
- if( name.contains(FRAGMENT_PORTTYPE)) {
- // Deal with the case where #wsdl.porttype is used
- porttype = name.substring("wsdl.porttype(".length(), name.length() - 1);
- } // end if
- if( porttype == null ) {
- error("InvalidWSDLInterfaceAttr", wsdlFactory, uri);
- return null;
- } // end if
- wsdlInterface = wsdlFactory.createWSDLInterface();
- wsdlInterface.setUnresolved(true);
- wsdlInterface.setName(new QName(namespace, porttype));
- } // end if
-
- return wsdlInterface;
- } // end method createWSDLInterface
-
- /**
- * Creates a WSDLInterfaceContract from a <interface.wsdl/> element in a SCDL file
- *
- * The form of the <interface.wsdl/> element is as follows:
- *
- * <interface.wsdl interface="http://sampleNamespace#wsdl.interface(porttypeName)"
- * callbackInterface="http://sampleNamespace#wsdl.porttype(callbackPorttypeName)"/>
- * where interface = URI pointing to the WSDL document containing a WSDL interface or porttype for the forward call interface
- * callbackInterface = URI pointing to the WSDL document containing a WSDL interface or porttype for the callback interface
- *
- * @param reader - XMLStreamReader holding the <interface.wsdl/> element
- * @return - the WSDLInterfaceContract
- */
- public WSDLInterfaceContract read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
- // Read an <interface.wsdl>
- WSDLInterfaceContract wsdlInterfaceContract = wsdlFactory.createWSDLInterfaceContract();
-
- // Read wsdlLocation
- String location = reader.getAttributeValue(WSDLI_NS, WSDL_LOCATION);
- wsdlInterfaceContract.setLocation(location);
-
- String uri = reader.getAttributeValue(null, INTERFACE);
- if (uri != null) {
- WSDLInterface wsdlInterface = createWSDLInterface(uri);
- if (wsdlInterface != null)
- wsdlInterfaceContract.setInterface(wsdlInterface);
- }
-
- uri = reader.getAttributeValue(null, CALLBACK_INTERFACE);
- if (uri != null) {
- WSDLInterface wsdlCallbackInterface = createWSDLInterface(uri);
- if (wsdlCallbackInterface != null)
- wsdlInterfaceContract.setCallbackInterface(wsdlCallbackInterface);
- }
-
- // Skip to end element
- while (reader.hasNext()) {
- if (reader.next() == END_ELEMENT && INTERFACE_WSDL_QNAME.equals(reader.getName())) {
- break;
- }
- }
- return wsdlInterfaceContract;
- }
-
- public void write(WSDLInterfaceContract wsdlInterfaceContract, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
- // Write an <interface.wsdl>
- writer.writeStartElement(WSDLConstants.SCA11_NS, INTERFACE_WSDL);
-
- // Write interface name
- WSDLInterface wsdlInterface = (WSDLInterface)wsdlInterfaceContract.getInterface();
- if (wsdlInterface != null) {
- QName qname = wsdlInterface.getName();
- String uri = qname.getNamespaceURI() + "#wsdl.interface(" + qname.getLocalPart() + ")";
- writer.writeAttribute(INTERFACE, uri);
- }
-
- WSDLInterface wsdlCallbackInterface = (WSDLInterface)wsdlInterfaceContract.getCallbackInterface();
- if (wsdlCallbackInterface != null) {
- QName qname = wsdlCallbackInterface.getName();
- String uri = qname.getNamespaceURI() + "#wsdl.interface(" + qname.getLocalPart() + ")";
- writer.writeAttribute(CALLBACK_INTERFACE, uri);
- }
-
- // Write location
- if (wsdlInterfaceContract.getLocation() != null) {
- writer.writeAttribute(WSDLI_NS, WSDL_LOCATION, wsdlInterfaceContract.getLocation());
- }
-
- writer.writeEndElement();
- }
-
- private WSDLInterface resolveWSDLInterface(WSDLInterface wsdlInterface, ModelResolver resolver) throws ContributionResolveException {
-
- if (wsdlInterface != null && wsdlInterface.isUnresolved()) {
-
- // Resolve the WSDL interface
- wsdlInterface = resolver.resolveModel(WSDLInterface.class, wsdlInterface);
- if (wsdlInterface.isUnresolved()) {
-
- // If the WSDL interface has never been resolved yet, do it now
- // First, resolve the WSDL definition for the given namespace
- WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition();
- wsdlDefinition.setUnresolved(true);
- wsdlDefinition.setNamespace(wsdlInterface.getName().getNamespaceURI());
- WSDLDefinition resolved = resolver.resolveModel(WSDLDefinition.class, wsdlDefinition);
- if (!resolved.isUnresolved()) {
- wsdlDefinition.setDefinition(resolved.getDefinition());
- wsdlDefinition.setLocation(resolved.getLocation());
- wsdlDefinition.setURI(resolved.getURI());
- wsdlDefinition.getImportedDefinitions().addAll(resolved.getImportedDefinitions());
- wsdlDefinition.getXmlSchemas().addAll(resolved.getXmlSchemas());
- wsdlDefinition.setUnresolved(false);
- WSDLObject<PortType> portType = wsdlDefinition.getWSDLObject(PortType.class, wsdlInterface.getName());
- if (portType != null) {
- // Introspect the WSDL portType and add the resulting
- // WSDLInterface to the resolver
- try {
- wsdlDefinition.setDefinition(portType.getDefinition());
- wsdlInterface = wsdlFactory.createWSDLInterface(portType.getElement(), wsdlDefinition, resolver);
- wsdlInterface.setWsdlDefinition(wsdlDefinition);
- resolver.addModel(wsdlInterface);
- } catch (InvalidInterfaceException e) {
- ContributionResolveException ce = new ContributionResolveException("Invalid interface when resolving " +
- portType.toString(), e);
- error("ContributionResolveException", wsdlFactory, ce);
- //throw ce;
- }
- }
- else {
- warning("WsdlInterfaceDoesNotMatch", wsdlDefinition, wsdlInterface.getName());
- } // end if
- } else {
- // If we get here, the WSDLDefinition is unresolved...
- ContributionResolveException ce = new ContributionResolveException("WSDLDefinition unresolved " +
- wsdlInterface.getName().getNamespaceURI() );
- error("ContributionResolveException", wsdlFactory, ce);
- }// end if
- } // end if
- } // end if
- return wsdlInterface;
- }
-
- public void resolve(WSDLInterfaceContract wsdlInterfaceContract, ModelResolver resolver) throws ContributionResolveException {
-
- // Resolve the interface and callback interface
- WSDLInterface wsdlInterface = resolveWSDLInterface((WSDLInterface)wsdlInterfaceContract.getInterface(), resolver);
- wsdlInterfaceContract.setInterface(wsdlInterface);
-
- WSDLInterface wsdlCallbackInterface = resolveWSDLInterface((WSDLInterface)wsdlInterfaceContract.getCallbackInterface(), resolver);
- wsdlInterfaceContract.setCallbackInterface(wsdlCallbackInterface);
- }
-
- public QName getArtifactType() {
- return WSDLConstants.INTERFACE_WSDL_QNAME;
- }
-
- public Class<WSDLInterfaceContract> getModelType() {
- return WSDLInterfaceContract.class;
- }
-}
diff --git a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java b/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java deleted file mode 100644 index 686236d1c2..0000000000 --- a/branches/sca-java-2.0-M3/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java +++ /dev/null @@ -1,512 +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.interfacedef.wsdl.xml; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Collections; - -import javax.wsdl.Definition; -import javax.wsdl.Operation; -import javax.wsdl.PortType; -import javax.wsdl.Types; -import javax.wsdl.WSDLException; -import javax.wsdl.extensions.AttributeExtensible; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.ExtensionDeserializer; -import javax.wsdl.extensions.ExtensionRegistry; -import javax.wsdl.extensions.ExtensionSerializer; -import javax.wsdl.extensions.UnknownExtensibilityElement; -import javax.wsdl.extensions.UnknownExtensionDeserializer; -import javax.wsdl.extensions.UnknownExtensionSerializer; -import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.xml.WSDLLocator; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.contribution.Artifact; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.ContributionFactory; -import org.apache.tuscany.sca.contribution.DefaultImport; -import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.namespace.NamespaceImport; -import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ContributionRuntimeException; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory; -import org.apache.tuscany.sca.xsd.XSDFactory; -import org.apache.tuscany.sca.xsd.XSDefinition; -import org.apache.tuscany.sca.xsd.xml.XMLDocumentHelper; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.xml.sax.InputSource; - -/** - * A Model Resolver for WSDL models. - * - * @version $Rev: 557916 $ $Date: 2007-07-20 01:04:40 -0700 (Fri, 20 Jul 2007) $ - */ -public class WSDLModelResolver implements ModelResolver { - //Schema element names - public static final String ELEM_SCHEMA = "schema"; - - //Schema URI - public static final String NS_URI_XSD_1999 = "http://www.w3.org/1999/XMLSchema"; - public static final String NS_URI_XSD_2000 = "http://www.w3.org/2000/10/XMLSchema"; - public static final String NS_URI_XSD_2001 = "http://www.w3.org/2001/XMLSchema"; - - //Schema QNames - public static final QName Q_ELEM_XSD_1999 = new QName(NS_URI_XSD_1999, ELEM_SCHEMA); - public static final QName Q_ELEM_XSD_2000 = new QName(NS_URI_XSD_2000, ELEM_SCHEMA); - public static final QName Q_ELEM_XSD_2001 = new QName(NS_URI_XSD_2001, ELEM_SCHEMA); - public static final List<QName> XSD_QNAME_LIST = - Arrays.asList(new QName[] {Q_ELEM_XSD_1999, Q_ELEM_XSD_2000, Q_ELEM_XSD_2001}); - - // ---- Policy WSDL Attachments - - public static final QName Q_POLICY_ATTRIBUTE_EXTENSION = new QName("http://docs.oasis-open.org/ns/opencsa/sca/200903", "requires"); - public static final QName Q_POLICY_END_CONVERSATION_ATTRIBUTE_EXTENSION = new QName("http://docs.oasis-open.org/ns/opencsa/sca/200903", "endsConversation"); - - // ---- Stuff added for BPEL extension elements --- Mike Edwards 01/05/2008 - public static final String ELEM_PLINKTYPE = "partnerLinkType"; - public static final String NS_BPEL_1_1 = "http://schemas.xmlsoap.org/ws/2004/03/partner-link/"; - public static final QName BPEL_PLINKTYPE = new QName( NS_BPEL_1_1, ELEM_PLINKTYPE ); - // ---- end of BPEL extension stuff - - private Contribution contribution; - private Map<String, List<WSDLDefinition>> map = new HashMap<String, List<WSDLDefinition>>(); - - private ExtensionRegistry wsdlExtensionRegistry; - - private WSDLFactory wsdlFactory; - private javax.wsdl.factory.WSDLFactory wsdl4jFactory; - private ContributionFactory contributionFactory; - private XSDFactory xsdFactory; - - public WSDLModelResolver(Contribution contribution, FactoryExtensionPoint modelFactories) { - this.contribution = contribution; - - this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class); - this.wsdl4jFactory = modelFactories.getFactory(javax.wsdl.factory.WSDLFactory.class); - this.contributionFactory = modelFactories.getFactory(ContributionFactory.class); - this.xsdFactory = modelFactories.getFactory(XSDFactory.class); - - wsdlExtensionRegistry = this.wsdl4jFactory.newPopulatedExtensionRegistry(); - // REVIEW: [rfeng] Disable the schema extension for WSDL4J to avoid aggressive loading - ExtensionDeserializer deserializer = new UnknownExtensionDeserializer(); - ExtensionSerializer serializer = new UnknownExtensionSerializer(); - for (QName schema : XSD_QNAME_LIST) { - wsdlExtensionRegistry.registerSerializer(Types.class, schema, serializer); - wsdlExtensionRegistry.registerDeserializer(Types.class, schema, deserializer); - } - // ---- Policy WSDL Extensions - try { - wsdlExtensionRegistry.registerExtensionAttributeType(PortType.class, Q_POLICY_ATTRIBUTE_EXTENSION, AttributeExtensible.LIST_OF_QNAMES_TYPE); - wsdlExtensionRegistry.registerExtensionAttributeType(Operation.class, Q_POLICY_END_CONVERSATION_ATTRIBUTE_EXTENSION, AttributeExtensible.STRING_TYPE); - } catch (NoSuchMethodError e) { - // That method does not exist on older WSDL4J levels - } - - // ---- BPEL additions - serializer = new BPELExtensionHandler(); - deserializer = new BPELExtensionHandler(); - wsdlExtensionRegistry.registerSerializer(Definition.class, BPEL_PLINKTYPE, serializer); - wsdlExtensionRegistry.registerDeserializer(Definition.class, BPEL_PLINKTYPE, deserializer); - // ---- end of BPEL additions - } - - /** - * Implementation of a WSDL locator. - */ - private class WSDLLocatorImpl implements WSDLLocator { - private InputStream inputStream; - private URL base; - private String latestImportURI; - - public WSDLLocatorImpl(URL base, InputStream is) { - this.base = base; - this.inputStream = is; - } - - public void close() { - try { - inputStream.close(); - } catch (IOException e) { - // Ignore - } - } - - public InputSource getBaseInputSource() { - try { - return XMLDocumentHelper.getInputSource(base, inputStream); - } catch (IOException e) { - throw new IllegalArgumentException(e); - } - } - - public String getBaseURI() { - return base.toString(); - } - - public InputSource getImportInputSource(String parentLocation, String importLocation) { - try { - if (importLocation == null) { - throw new IllegalArgumentException("Required attribute 'location' is missing."); - } - - URL url = null; - if (importLocation.startsWith("/")) { - // The URI is relative to the contribution - String uri = importLocation.substring(1); - - Artifact proxyArtifact = contributionFactory.createArtifact(); - proxyArtifact.setURI(uri); - - //use contribution resolution (this supports import/export) - Artifact importedArtifact = - contribution.getModelResolver().resolveModel(Artifact.class, proxyArtifact); - if (importedArtifact.getLocation() != null) { - //get the artifact URL - url = new URL(importedArtifact.getLocation()); - } - } else { - url = new URL(new URL(parentLocation), importLocation); - } - if (url == null) { - return null; - } - latestImportURI = url.toString(); - return XMLDocumentHelper.getInputSource(url); - } catch (Exception e) { - throw new ContributionRuntimeException(e); - } - } - - public String getLatestImportURI() { - return latestImportURI; - } - - } - - public void addModel(Object resolved) { - WSDLDefinition definition = (WSDLDefinition)resolved; - for (XSDefinition d : definition.getXmlSchemas()) { - if (contribution != null) { - contribution.getModelResolver().addModel(d); - } - } - List<WSDLDefinition> list = map.get(definition.getNamespace()); - if (list == null) { - list = new ArrayList<WSDLDefinition>(); - map.put(definition.getNamespace(), list); - } - list.add(definition); - } - - public Object removeModel(Object resolved) { - WSDLDefinition definition = (WSDLDefinition)resolved; - List<WSDLDefinition> list = map.get(definition.getNamespace()); - if (list == null) { - return null; - } else { - return list.remove(definition); - } - } - - /** - * Create a facade Definition which imports all the definitions - * - * @param definitions A list of the WSDL definitions under the same target namespace - * @return The aggregated WSDL definition - */ - private WSDLDefinition aggregate(List<WSDLDefinition> definitions) { - if (definitions == null || definitions.size() == 0) { - return null; - } - if (definitions.size() == 1) { - WSDLDefinition d = definitions.get(0); - loadOnDemand(d); - return d; - } - WSDLDefinition aggregated = wsdlFactory.createWSDLDefinition(); - for (WSDLDefinition d : definitions) { - loadOnDemand(d); - } - Definition facade = wsdl4jFactory.newDefinition(); - String ns = definitions.get(0).getNamespace(); - facade.setQName(new QName(ns, "$aggregated$")); - facade.setTargetNamespace(ns); - - for (WSDLDefinition d : definitions) { - if (d.getDefinition() != null) { - javax.wsdl.Import imp = facade.createImport(); - imp.setNamespaceURI(d.getNamespace()); - imp.setDefinition(d.getDefinition()); - imp.setLocationURI(d.getDefinition().getDocumentBaseURI()); - facade.addImport(imp); - aggregated.getXmlSchemas().addAll(d.getXmlSchemas()); - aggregated.getImportedDefinitions().add(d); - } - } - aggregated.setDefinition(facade); - definitions.clear(); - definitions.add(aggregated); - return aggregated; - } - - public <T> T resolveModel(Class<T> modelClass, T unresolved) { - - WSDLDefinition resolved = null; - String namespace = ((WSDLDefinition)unresolved).getNamespace(); - if (namespace == null) { - return modelClass.cast(unresolved); - } - - // Lookup a definition for the given namespace, from imports - List<String> locations = new ArrayList<String>(); - // Collection of namespace imports with location - Map<String, NamespaceImport> locationMap = new HashMap<String, NamespaceImport>(); - for (Import import_ : this.contribution.getImports()) { - if (import_ instanceof NamespaceImport) { - NamespaceImport namespaceImport = (NamespaceImport)import_; - if (namespaceImport.getNamespace().equals(namespace)) { - if (namespaceImport.getLocation() == null) { - // Delegate the resolution to the namespace import resolver - resolved = - namespaceImport.getModelResolver().resolveModel(WSDLDefinition.class, - (WSDLDefinition)unresolved); - if (!resolved.isUnresolved()) { - return modelClass.cast(resolved); - } - } else { - // We might have multiple imports for the same namespace, - // need to search them in lexical order. - locations.add(namespaceImport.getLocation()); - } - } - } else if (import_ instanceof DefaultImport) { - - // Delegate the resolution to the default import resolver - resolved = - import_.getModelResolver().resolveModel(WSDLDefinition.class, - (WSDLDefinition)unresolved); - if (!resolved.isUnresolved()) { - return modelClass.cast(resolved); - } - } - } - // Search namespace imports with locations in lexical order - Collections.sort(locations); - for (String location : locations) { - NamespaceImport namespaceImport = (NamespaceImport)locationMap.get(location); - // Delegate the resolution to the namespace import resolver - resolved = - namespaceImport.getModelResolver().resolveModel(WSDLDefinition.class, - (WSDLDefinition)unresolved); - if (!resolved.isUnresolved()) { - return modelClass.cast(resolved); - } - } - - - // Not found, lookup a definition for the given namespace, within contribution - List<WSDLDefinition> list = map.get(namespace); - resolved = aggregate(list); - if (resolved != null && !resolved.isUnresolved()) { - return modelClass.cast(resolved); - } - - return modelClass.cast(unresolved); - } - - /** - * Load the WSDL definition on demand - * @param def - */ - private void loadOnDemand(WSDLDefinition def) { - if (def.getDefinition() == null && def.getLocation() != null) { - // Load the definition on-demand - try { - loadDefinition(def); - } catch (ContributionReadException e) { - throw new RuntimeException(e); - } - } - } - - // private Map<String, WSDLDefinition> loadedDefinitions = new Hashtable<String, WSDLDefinition>(); - - /** - * Load the WSDL definition and inline schemas - * - * @param wsdlDef - * @throws ContributionReadException - */ - private void loadDefinition(WSDLDefinition wsdlDef) throws ContributionReadException { - if (wsdlDef.getDefinition() != null || wsdlDef.getLocation() == null) { - return; - } - try { - URL artifactURL = wsdlDef.getLocation().toURL(); - // Read a WSDL document - InputStream is = artifactURL.openStream(); - WSDLReader reader = wsdl4jFactory.newWSDLReader(); - reader.setFeature("javax.wsdl.verbose", false); - reader.setFeature("javax.wsdl.importDocuments", true); - // FIXME: We need to decide if we should disable the import processing by WSDL4J - // reader.setFeature("javax.wsdl.importDocuments", false); - reader.setExtensionRegistry(wsdlExtensionRegistry); // use a custom registry - - WSDLLocatorImpl locator = new WSDLLocatorImpl(artifactURL, is); - Definition definition = reader.readWSDL(locator); - wsdlDef.setDefinition(definition); - - // If this definition imports any definitions from other namespaces, - // set the correct WSDLDefinition import relationships. - for (Map.Entry<String, List<javax.wsdl.Import>> entry : - ((Map<String, List<javax.wsdl.Import>>)definition.getImports()).entrySet()) { - if (!entry.getKey().equals(definition.getTargetNamespace())) { - WSDLDefinition wsdlDefinition = wsdlFactory.createWSDLDefinition(); - wsdlDefinition.setUnresolved(true); - wsdlDefinition.setNamespace(entry.getKey()); - WSDLDefinition resolved = resolveModel(WSDLDefinition.class, wsdlDefinition); - if (!resolved.isUnresolved()) { - for (javax.wsdl.Import imp : entry.getValue()) { - if (resolved.getDefinition().getDocumentBaseURI().equals(imp.getDefinition().getDocumentBaseURI())) { - // this WSDLDefinition contains the imported document - wsdlDef.getImportedDefinitions().add(resolved); - } else { - // this is a facade, so look in its imported definitions - for (WSDLDefinition def : resolved.getImportedDefinitions()) { - if (def.getDefinition().getDocumentBaseURI().equals(imp.getDefinition().getDocumentBaseURI())) { - wsdlDef.getImportedDefinitions().add(def); - break; - } - } - } - } - } - } - } - - //Read inline schemas - readInlineSchemas(wsdlDef, definition); - } catch (WSDLException e) { - throw new ContributionReadException(e); - } catch (IOException e) { - throw new ContributionReadException(e); - } - } - - private Document promote(Element element) { - Document doc = (Document)element.getOwnerDocument().cloneNode(false); - Element schema = (Element)doc.importNode(element, true); - doc.appendChild(schema); - Node parent = element.getParentNode(); - while (parent instanceof Element) { - Element root = (Element)parent; - NamedNodeMap nodeMap = root.getAttributes(); - if (nodeMap != null) { - for (int i = 0; i < nodeMap.getLength(); i++) { - Attr attr = (Attr)nodeMap.item(i); - String name = attr.getName(); - if ("xmlns".equals(name) || name.startsWith("xmlns:")) { - if (schema.getAttributeNode(name) == null) { - schema.setAttributeNodeNS((Attr)doc.importNode(attr, true)); - } - } - } - } - parent = parent.getParentNode(); - } - doc.setDocumentURI(element.getOwnerDocument().getDocumentURI()); - return doc; - } - - /** - * Populate the inline schemas including those from the imported definitions - * - * @param definition - * @param schemaCollection - */ - private void readInlineSchemas(WSDLDefinition wsdlDefinition, Definition definition) { - if (contribution == null) { - // Check null for test cases - return; - } - Types types = definition.getTypes(); - if (types != null) { - int index = 0; - for (Object ext : types.getExtensibilityElements()) { - ExtensibilityElement extElement = (ExtensibilityElement)ext; - Element element = null; - if (XSD_QNAME_LIST.contains(extElement.getElementType())) { - if (extElement instanceof Schema) { - element = ((Schema)extElement).getElement(); - } else if (extElement instanceof UnknownExtensibilityElement) { - element = ((UnknownExtensibilityElement)extElement).getElement(); - } - } - if (element != null) { - Document doc = promote(element); - XSDefinition xsDefinition = xsdFactory.createXSDefinition(); - xsDefinition.setUnresolved(true); - xsDefinition.setNamespace(element.getAttribute("targetNamespace")); - xsDefinition.setDocument(doc); - xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index)); - XSDefinition resolved = - contribution.getModelResolver().resolveModel(XSDefinition.class, xsDefinition); - if (resolved != null && !resolved.isUnresolved()) { - if (!wsdlDefinition.getXmlSchemas().contains(resolved)) { - // Don't add resolved because it may be an aggregate that - // contains more than we need. The resolver will have - // set the specific schema we need into unresolved. - wsdlDefinition.getXmlSchemas().add(xsDefinition); - } - } - index++; - } - } - } - for (Object imports : definition.getImports().values()) { - List impList = (List)imports; - for (Object i : impList) { - javax.wsdl.Import anImport = (javax.wsdl.Import)i; - // Read inline schemas - if (anImport.getDefinition() != null) { - readInlineSchemas(wsdlDefinition, anImport.getDefinition()); - } - } - } - } - -} |