You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cs...@apache.org on 2006/02/22 17:31:27 UTC
svn commit: r379809 - in /beehive/trunk/system-controls:
src/webservice/control/org/apache/beehive/controls/system/webservice/generator/
src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/
src/webservice/control/org/apache/beeh...
Author: cschoett
Date: Wed Feb 22 08:31:24 2006
New Revision: 379809
URL: http://svn.apache.org/viewcvs?rev=379809&view=rev
Log:
- updated control generator to only generate valid java class names for web service controls
- updated wsc to use soapaction if defined for an operation
- some additional cleanup to wsdl processing
Added:
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlTypes.java
- copied, changed from r372277, beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java
Removed:
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java
Modified:
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/WebServiceControlGenerator.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/servicecontrol.vm
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/ComplexType.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/DomUtils.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/Wsdl.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlComplexTypes.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFault.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFaultList.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameter.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameterList.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOperation.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlUtils.java
beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java
beehive/trunk/system-controls/test/webservice/junit/build.xml
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java Wed Feb 22 08:31:24 2006
@@ -200,6 +200,31 @@
}
/**
+ * Generate a Java class name from a service name.
+ *
+ * @param serviceName Service name.
+ * @return String.
+ */
+ static String serviceNameToClassName(String serviceName) {
+ char[] chars = serviceName.toCharArray();
+ StringBuilder className = new StringBuilder();
+ for (int i = 0; i < chars.length; i++) {
+ if (i == 0) {
+ className.append(Character.toUpperCase(chars[0]));
+ }
+ else {
+ if (chars[i] == '.') {
+ className.append(Character.toUpperCase(chars[++i]));
+ }
+ else {
+ className.append(chars[i]);
+ }
+ }
+ }
+ return className.toString();
+ }
+
+ /**
* Generate a java package name from the specified namespace.
*
* @param namespace Namespace to generate package name from.
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/WebServiceControlGenerator.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/WebServiceControlGenerator.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/WebServiceControlGenerator.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/WebServiceControlGenerator.java Wed Feb 22 08:31:24 2006
@@ -139,6 +139,7 @@
initializeVelocity();
}
+ String wscClassName = GeneratorUtils.serviceNameToClassName(wsdl.getServiceName());
VelocityContext context = new VelocityContext();
context.put("controlPackageName", pkgName);
context.put("serviceName", wsdl.getServiceName());
@@ -146,8 +147,9 @@
context.put("wsdlPath", wsdlPath);
context.put("methodList", methodList);
context.put("portName", wsdl.getPortName());
+ context.put("wscClassName", wscClassName);
- Writer jcxWriter = getJcxWriter(outputDir, pkgName, wsdl.getServiceName());
+ Writer jcxWriter = getJcxWriter(outputDir, pkgName, wscClassName);
try {
_velocityTemplate.merge(context, jcxWriter);
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/servicecontrol.vm
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/servicecontrol.vm?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/servicecontrol.vm (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/servicecontrol.vm Wed Feb 22 08:31:24 2006
@@ -52,7 +52,7 @@
service = "$serviceName",
serviceTns="$serviceTns")
@ServiceFactoryProvider(ServiceFactoryProviderType.APACHE_AXIS)
-public interface $serviceName
+public interface $wscClassName
extends ServiceControl {
#foreach($method in $methodList)
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java Wed Feb 22 08:31:24 2006
@@ -98,6 +98,7 @@
_op = op;
setOperationName(_op.getOperationName());
setOperationStyle(_op.getSOAPBindingStyle(), _op.getSOAPParameterStyle(), _op.getSOAPBindingUse());
+ setSOAPAction(_op.getSOAPAction());
setCallParameters(method);
setCallReturnType(method.getReturnType());
setFaults();
@@ -114,7 +115,7 @@
* @throws java.rmi.RemoteException On error.
*/
Object invoke(Object[] args) throws RemoteException {
- Object result = null;
+ Object result;
try {
result = _call.invoke(processArgs(args));
} catch (RemoteException re) {
@@ -415,5 +416,16 @@
addFault(faultName, fault.getXmlType(), fault.isComplextType(),
_op.getSOAPBindingStyle(), _op.getSOAPBindingUse());
}
+ }
+
+ /**
+ * Set the SOAPAction uri for the call.
+ * @param actionURIString
+ */
+ private void setSOAPAction(String actionURIString) {
+ if (actionURIString != null && !actionURIString.equals("")) {
+ _call.setProperty(Call.SOAPACTION_USE_PROPERTY, true);
+ _call.setProperty(Call.SOAPACTION_URI_PROPERTY, actionURIString);
+ }
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/ComplexType.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/ComplexType.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/ComplexType.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/ComplexType.java Wed Feb 22 08:31:24 2006
@@ -21,9 +21,9 @@
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.Set;
/*
This looks a little scary, but isn't so bad. Pretty much all that needs to be done here is to
@@ -40,19 +40,20 @@
public final class ComplexType implements java.io.Serializable {
private final HashMap<String, QName> _elements = new HashMap<String, QName>();
+ private final List<String> _elementNames = new ArrayList<String>();
private final String _name;
- private WsdlNamespaceResolver _resolver;
+ private WsdlTypes _wsdlTypes;
/**
* Create a new complex type for the specified element.
*
* @param type DOM element of the complex type.
- * @param resolver Namespace resolver instance.
+ * @param wsdlTypes Namespace resolver instance.
*/
- ComplexType(Element type, WsdlNamespaceResolver resolver) {
+ ComplexType(Element type, WsdlTypes wsdlTypes) {
_name = type.getAttribute("name");
- _resolver = resolver;
+ _wsdlTypes = wsdlTypes;
// annotation?, (simpleContent | complexContent
// | ((group | all | choice | sequence)?, (attribute | attributeGroup)*, anyAttribute?))
@@ -77,7 +78,7 @@
}
// release the resolver, we don't need it after the parse is complete
- _resolver = null;
+ _wsdlTypes = null;
}
/**
@@ -96,7 +97,7 @@
* @return Xmltype of the element or null if element can not be found in the complex type.
*/
public QName getElementType(String elementName) {
- return _elements.get(elementName);
+ return _elements.get(elementName.toLowerCase());
}
/**
@@ -104,8 +105,8 @@
*
* @return Set.
*/
- public Set<String> getElementNames() {
- return _elements.keySet();
+ public List<String> getElementNames() {
+ return _elementNames;
}
/* ---- Private Methods --- */
@@ -144,7 +145,7 @@
// if (attribute.hasAttribute("wsdl:arrayType")) {
// String attributeName = attribute.getAttribute("ref");
// String arrayType = attribute.getAttribute("wsdl:arrayType");
-// _elements.put(attributeName, _resolver.getTypeQName(arrayType));
+// _elements.put(attributeName, _wsdlTypes.getTypeQName(arrayType));
// }
// }
@@ -235,7 +236,8 @@
if (element.hasAttribute("name")) {
String elementName = element.getAttribute("name");
String elementType = element.getAttribute("type");
- _elements.put(elementName, _resolver.getTypeQName(elementType));
+ _elements.put(elementName.toLowerCase(), _wsdlTypes.getTypeQName(elementType));
+ _elementNames.add(elementName);
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/DomUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/DomUtils.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/DomUtils.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/DomUtils.java Wed Feb 22 08:31:24 2006
@@ -17,14 +17,13 @@
*/
package org.apache.beehive.controls.system.webservice.wsdl;
-import java.util.ArrayList;
-import java.util.List;
-
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Some simple DOM utility methods.
@@ -36,17 +35,17 @@
* <code>null</code> if not found.</p>
*
* @param parent parent element
- * @param name name of the child element
+ * @param localName name of the child element
* @return child element
*/
- public static Element getChildElementByName(Element parent, String name) {
+ static Element getChildElementByName(Element parent, String localName) {
NodeList children = parent.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
- if (element.getTagName().equals(name)) {
+ if (element.getLocalName().equals(localName)) {
return element;
}
}
@@ -60,11 +59,11 @@
* name. Returns an empty list if there are no such child
* elements.</p>
*
- * @param parent parent element
- * @param name name of the child element
+ * @param parent parent element
+ * @param localName Local name of the child element
* @return child elements
*/
- public static List<Element> getChildElementsByName(Element parent, String name) {
+ static List<Element> getChildElementsByName(Element parent, String localName) {
List<Element> elements = new ArrayList<Element>();
NodeList children = parent.getChildNodes();
@@ -73,7 +72,7 @@
Node node = children.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
- if (element.getTagName().equals(name)) {
+ if (element.getLocalName().equals(localName)) {
elements.add(element);
}
}
@@ -83,97 +82,6 @@
}
/**
- * <p>Returns the text value of a child element. Returns
- * <code>null</code> if there is no child element found.</p>
- *
- * @param parent parent element
- * @param name name of the child element
- * @return text value
- */
- static String getChildElementText(Element parent, String name) {
- // Get children
- List list = DomUtils.getChildElementsByName(parent, name);
-
- if (list.size() == 1) {
- Element child = (Element) list.get(0);
-
- StringBuffer buf = new StringBuffer();
-
- NodeList children = child.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node node = children.item(i);
- if (node.getNodeType() == Node.TEXT_NODE ||
- node.getNodeType() == Node.CDATA_SECTION_NODE) {
- Text text = (Text) node;
- buf.append(text.getData().trim());
- }
- }
-
- return buf.toString();
- } else {
- return null;
- }
- }
-
- /**
- * <p>Returns the text value of a child element. Returns
- * <code>null</code> if there is no child element found.</p>
- *
- * @param element element
- * @return text value
- */
- static String getElementText(Element element) {
- StringBuffer buf = new StringBuffer();
-
- NodeList children = element.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node node = children.item(i);
- if (node.getNodeType() == Node.TEXT_NODE ||
- node.getNodeType() == Node.CDATA_SECTION_NODE) {
- Text text = (Text) node;
- buf.append(text.getData().trim());
- }
- }
-
- return buf.toString();
- }
-
- /**
- * <p>Returns an array of text values of a child element. Returns
- * <code>null</code> if there is no child element found.</p>
- *
- * @param parent parent element
- * @param name name of the child element
- * @return text value
- */
- static String[] getChildElementTextArr(Element parent, String name) {
- // Get all the elements
- List children = getChildElementsByName(parent, name);
-
- String str[] = new String[children.size()];
-
- for (int i = 0; i < children.size(); i++) {
- Node child = (Node) children.get(i);
-
- StringBuffer buf = new StringBuffer();
-
- NodeList nodes = child.getChildNodes();
- for (int j = 0; j < nodes.getLength(); j++) {
- Node node = nodes.item(j);
- if (node.getNodeType() == Node.TEXT_NODE ||
- node.getNodeType() == Node.CDATA_SECTION_NODE) {
- Text text = (Text) node;
- buf.append(text.getData().trim());
- }
- }
-
- str[i] = buf.toString();
- }
-
- return str;
- }
-
- /**
* <p>Retutns the value of the named attribute of the given
* element. If there is no such attribute, returns null.</p>
*
@@ -185,7 +93,8 @@
Attr attribute = element.getAttributeNode(name);
if (attribute == null) {
return null;
- } else {
+ }
+ else {
return attribute.getValue();
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/Wsdl.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/Wsdl.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/Wsdl.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/Wsdl.java Wed Feb 22 08:31:24 2006
@@ -41,9 +41,8 @@
private Port _port;
private final Definition _wsdlDefinition;
private final Service _service;
- private final WsdlNamespaceResolver _namespaceResolver;
+ private final WsdlTypes _wsdlTypes;
private HashMap<String, WsdlOperation> _operationCache;
- private WsdlComplexTypes _types;
/**
* Loads and parses the specified WSDL file.
@@ -81,8 +80,7 @@
}
}
- _namespaceResolver = new WsdlNamespaceResolver(_wsdlDefinition);
- _types = new WsdlComplexTypes(_wsdlDefinition, _namespaceResolver);
+ _wsdlTypes = new WsdlTypes(_wsdlDefinition);
_operationCache = new HashMap<String, WsdlOperation>();
}
@@ -114,8 +112,7 @@
+ " is not defined in the service: " + serviceQName);
}
- _namespaceResolver = new WsdlNamespaceResolver(_wsdlDefinition);
- _types = new WsdlComplexTypes(_wsdlDefinition, _namespaceResolver);
+ _wsdlTypes = new WsdlTypes(_wsdlDefinition);
_operationCache = new HashMap<String, WsdlOperation>();
}
@@ -125,7 +122,7 @@
* @return WsdlComplexTypes instance.
*/
public WsdlComplexTypes getComplexTypes() {
- return _types;
+ return _wsdlTypes.getNamedComplexTypes();
}
/**
@@ -145,7 +142,7 @@
PortType pt = b.getPortType();
Operation op = pt.getOperation(operationName, null, null);
if (op != null) {
- WsdlOperation wop = new WsdlOperation(b, op, _wsdlDefinition, _namespaceResolver);
+ WsdlOperation wop = new WsdlOperation(b, op, _wsdlTypes);
// cache the operation
_operationCache.put(operationName, wop);
return wop;
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlComplexTypes.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlComplexTypes.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlComplexTypes.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlComplexTypes.java Wed Feb 22 08:31:24 2006
@@ -20,7 +20,6 @@
import org.w3c.dom.Element;
-import javax.wsdl.Definition;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.schema.Schema;
import java.util.HashMap;
@@ -35,12 +34,11 @@
/**
* Create a new instance, parse the WSDL file for named complex types.
- * @param wsdl The WSDL definition.
- * @param resolver Namespace resolver.
+ * @param wsdlTypes Namespace resolver.
*/
- WsdlComplexTypes(Definition wsdl, WsdlNamespaceResolver resolver) {
+ WsdlComplexTypes(WsdlTypes wsdlTypes) {
- List schemas = WsdlUtils.getSchemas(wsdl);
+ List schemas = wsdlTypes.getSchemas();
for (Object o : schemas) {
ExtensibilityElement schema = (ExtensibilityElement) o;
Element schemaRoot = ((Schema) schema).getElement();
@@ -48,7 +46,7 @@
List<Element> types = DomUtils.getChildElementsByName(schemaRoot, "complexType");
for (Element t : types) {
String schemaTypeName = t.getAttribute("name");
- _complexTypes.put(schemaTypeName, new ComplexType(t, resolver));
+ _complexTypes.put(schemaTypeName, new ComplexType(t, wsdlTypes));
}
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFault.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFault.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFault.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFault.java Wed Feb 22 08:31:24 2006
@@ -20,12 +20,12 @@
*
* @param name QName of the parameter.
* @param xmlType XML type of the parameter.
- * @param resolver
+ * @param wsdlTypes
*/
- WsdlOpFault(String name, QName xmlType, boolean isComplex, WsdlNamespaceResolver resolver) {
+ WsdlOpFault(String name, QName xmlType, boolean isComplex, WsdlTypes wsdlTypes) {
- _name = resolver.getTypeQName(name);
- _elementFormQualified = resolver.isElementFormQualified(_name.getNamespaceURI());
+ _name = wsdlTypes.getTypeQName(name);
+ _elementFormQualified = wsdlTypes.isElementFormQualified(_name.getNamespaceURI());
_xmlType = xmlType;
_complexType = isComplex;
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFaultList.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFaultList.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFaultList.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpFaultList.java Wed Feb 22 08:31:24 2006
@@ -20,7 +20,6 @@
import org.w3c.dom.Element;
-import javax.wsdl.Definition;
import javax.wsdl.Fault;
import javax.wsdl.Message;
import javax.wsdl.Part;
@@ -28,24 +27,21 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
-import java.util.List;
/**
*/
public final class WsdlOpFaultList extends ArrayList<WsdlOpFault>
{
- private final Definition _wsdlDefinition;
- private final WsdlNamespaceResolver _resolver;
+ private final WsdlTypes _wsdlTypes;
/**
* Constructor.
*
- * @param wsdlDefinition Wsdl definition.
+ * @param wsdlTypes
*/
- WsdlOpFaultList(Definition wsdlDefinition, WsdlNamespaceResolver resolver) {
- _wsdlDefinition = wsdlDefinition;
- _resolver = resolver;
+ WsdlOpFaultList(WsdlTypes wsdlTypes) {
+ _wsdlTypes = wsdlTypes;
}
/**
@@ -75,20 +71,19 @@
QName type = faultPart.getTypeName();
if (type == null) {
type = faultPart.getElementName();
- Element schemaElement = WsdlUtils.findSchemaElement(type, _wsdlDefinition);
+ Element schemaElement = _wsdlTypes.findSchemaElement(type);
assert schemaElement.hasAttribute("type");
- type = _resolver.getTypeQName(schemaElement.getAttribute("type"));
+ type = _wsdlTypes.getTypeQName(schemaElement.getAttribute("type"));
complexType = true;
}
- return new WsdlOpFault(fault.getName(), type, complexType, _resolver);
+ return new WsdlOpFault(fault.getName(), type, complexType, _wsdlTypes);
}
/**
* private contstructor.
*/
private WsdlOpFaultList() {
- _wsdlDefinition = null;
- _resolver = null;
+ _wsdlTypes = null;
}
/**
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameter.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameter.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameter.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameter.java Wed Feb 22 08:31:24 2006
@@ -1,7 +1,6 @@
package org.apache.beehive.controls.system.webservice.wsdl;
import org.w3c.dom.Element;
-
import javax.xml.namespace.QName;
/**
@@ -28,14 +27,14 @@
* @param xmlType XML type of the parameter.
* @param schemaTypeElement The type element from the schema for this parameter,
* will be null if xmlType is a built-in schema type.
- * @param resolver
+ * @param wsdlTypes
*/
WsdlOpParameter(String name, QName xmlType, Element schemaTypeElement,
- WsdlNamespaceResolver resolver) {
+ WsdlTypes wsdlTypes) {
- setName(name, resolver);
+ setName(name, wsdlTypes);
_xmlType = xmlType;
- _itemXmlType = getArrayItemType(schemaTypeElement, resolver);
+ _itemXmlType = getArrayItemType(schemaTypeElement, wsdlTypes);
_isArray = _itemXmlType != null;
_isHeader = false;
_mode = ParameterMode.UNDEFINED;
@@ -48,39 +47,48 @@
*
* @param name Name of the attribute, if a namespace ref is included it will be resolved.
* @param e The schema element which defines the XML type of this attribute.
- * @param resolver
+ * @param wsdlTypes
*/
- WsdlOpParameter(String name, Element e, WsdlNamespaceResolver resolver) {
+ WsdlOpParameter(String name, Element e, WsdlTypes wsdlTypes) {
- this(e, resolver);
- setName(name, resolver);
+ this(e, wsdlTypes);
+ setName(name, wsdlTypes);
}
/**
* Create a new WsdlOpParameter for a complex schema type.
*
* @param e The schema element which defines the XML type of this attribute.
- * @param resolver
+ * @param wsdlTypes
*/
- WsdlOpParameter(Element e, WsdlNamespaceResolver resolver) {
+ WsdlOpParameter(Element e, WsdlTypes wsdlTypes) {
_mode = ParameterMode.UNDEFINED;
_isArray = isArray(e);
_isHeader = false;
if (e.hasAttribute(WsdlUtils.NAME_ATTR) && e.hasAttribute(WsdlUtils.ELEMENT_TYPE_ATTR)) {
- setName(e.getAttribute(WsdlUtils.NAME_ATTR), resolver);
- _xmlType = resolver.getTypeQName(e.getAttribute(WsdlUtils.ELEMENT_TYPE_ATTR));
+ setName(e.getAttribute(WsdlUtils.NAME_ATTR), wsdlTypes);
+ _xmlType = wsdlTypes.getTypeQName(e.getAttribute(WsdlUtils.ELEMENT_TYPE_ATTR));
}
else {
if (e.hasAttribute(WsdlUtils.ELEMENT_REF_ATTR)) {
- _xmlType = resolver.getTypeQName(e.getAttribute(WsdlUtils.ELEMENT_REF_ATTR));
+ _xmlType = wsdlTypes.getTypeQName(e.getAttribute(WsdlUtils.ELEMENT_REF_ATTR));
_name = new QName("", _xmlType.getLocalPart());
}
else {
throw new RuntimeException("invalid element: " + e);
}
}
+
+ Element t = wsdlTypes.findSchemaType(_xmlType);
+ if (t != null && "complexType".equals(t.getLocalName())) {
+ QName aType = getArrayItemType(t, wsdlTypes);
+ if (aType != null) {
+ _isArray = true;
+ _xmlType = aType;
+ }
+ }
}
/**
@@ -154,7 +162,7 @@
* @param type Either a complexType or a simpleType node from the schema.
* @return The QName of the array's item type, null if the type is not an array,
*/
- private QName getArrayItemType(Element type, WsdlNamespaceResolver resolver) {
+ private QName getArrayItemType(Element type, WsdlTypes wsdlTypes) {
if (type == null || "simpleElement".equals(type.getLocalName())) {
return null;
@@ -162,12 +170,12 @@
Element sequence = DomUtils.getChildElementByName(type, "sequence");
if (sequence != null) {
- return getArrayItemTypeFromSequence(sequence, resolver);
+ return getArrayItemTypeFromSequence(sequence, wsdlTypes);
}
- Element complexContent = DomUtils.getChildElementByName(type, "complexContent");
+ Element complexContent = DomUtils.getChildElementByName(type, "complexContent");
if (complexContent != null) {
- return getArrayItemTypeFromComplexContent(complexContent, resolver);
+ return getArrayItemTypeFromComplexContent(complexContent, wsdlTypes);
}
assert false : "Unexpected element type, expected 'sequence' or 'complexContent'";
@@ -177,10 +185,10 @@
/**
*
* @param sequenceElement
- * @param resolver
+ * @param wsdlTypes
* @return QName
*/
- private QName getArrayItemTypeFromSequence(Element sequenceElement, WsdlNamespaceResolver resolver) {
+ private QName getArrayItemTypeFromSequence(Element sequenceElement, WsdlTypes wsdlTypes) {
Element element = DomUtils.getChildElementByName(sequenceElement, "element");
if (element == null) {
@@ -189,16 +197,16 @@
if (!isArray(element)) {
return null;
}
- return resolver.getTypeQName(element.getAttribute("type"));
+ return wsdlTypes.getTypeQName(element.getAttribute("type"));
}
/**
*
* @param ccElement
- * @param resolver
+ * @param wsdlTypes
* @return QName
*/
- private QName getArrayItemTypeFromComplexContent(Element ccElement, WsdlNamespaceResolver resolver) {
+ private QName getArrayItemTypeFromComplexContent(Element ccElement, WsdlTypes wsdlTypes) {
Element restriction = DomUtils.getChildElementByName(ccElement, "restriction");
if (restriction == null) {
@@ -219,7 +227,7 @@
if (arrayType == null) {
return null;
}
- return resolver.getTypeQName(arrayType);
+ return wsdlTypes.getTypeQName(arrayType);
}
/**
@@ -242,11 +250,11 @@
* Set the name of this parameter.
*
* @param name parameter name.
- * @param resolver
+ * @param wsdlTypes
*/
- void setName(String name, WsdlNamespaceResolver resolver) {
- _name = resolver.getTypeQName(name);
- _elementFormQualified = resolver.isElementFormQualified(_name.getNamespaceURI());
+ void setName(String name, WsdlTypes wsdlTypes) {
+ _name = wsdlTypes.getTypeQName(name);
+ _elementFormQualified = wsdlTypes.isElementFormQualified(_name.getNamespaceURI());
}
/**
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameterList.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameterList.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameterList.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOpParameterList.java Wed Feb 22 08:31:24 2006
@@ -21,7 +21,6 @@
import org.w3c.dom.Element;
import javax.wsdl.Binding;
-import javax.wsdl.Definition;
import javax.wsdl.Operation;
import javax.wsdl.Part;
import java.util.ArrayList;
@@ -35,9 +34,8 @@
public final class WsdlOpParameterList extends ArrayList<WsdlOpParameter>
{
- private final Definition _wsdlDefinition;
private final Operation _operation;
- private final WsdlNamespaceResolver _resolver;
+ private final WsdlTypes _wsdlTypes;
private final HashSet<String> _headerNames;
private WsdlOperation.SOAPParameterStyle _parameterStyle;
@@ -49,13 +47,11 @@
*
* @param op Operation this arg list is for.
* @param binding Binding for the operation.
- * @param wsdlDefinition Wsdl definition.
+ * @param wsdlTypes
*/
- WsdlOpParameterList(Operation op, Binding binding,
- Definition wsdlDefinition, WsdlNamespaceResolver resolver) {
+ WsdlOpParameterList(Operation op, Binding binding, WsdlTypes wsdlTypes) {
- _wsdlDefinition = wsdlDefinition;
- _resolver = resolver;
+ _wsdlTypes = wsdlTypes;
_returnParam = null;
_operation = op;
_parameterStyle = WsdlOperation.SOAPParameterStyle.BARE;
@@ -123,11 +119,14 @@
if (WsdlUtils.isWrappedParameterStyle(_operation.getName(), !requesPart, part.getName())) {
_parameterStyle = WsdlOperation.SOAPParameterStyle.WRAPPED;
}
- params.addAll(resolvePartElement(part));
+ WsdlOpParameter param = resolvePartElement(part);
+ if (param != null) {
+ params.add(param);
+ }
}
else {
params.add(new WsdlOpParameter(part.getName(), part.getTypeName(),
- WsdlUtils.findSchemaType(part.getTypeName(), _wsdlDefinition), _resolver));
+ _wsdlTypes.findSchemaType(part.getTypeName()), _wsdlTypes));
}
return params;
}
@@ -203,8 +202,7 @@
* private contstructor.
*/
private WsdlOpParameterList() {
- _wsdlDefinition = null;
- _resolver = null;
+ _wsdlTypes = null;
_operation = null;
_headerNames = null;
}
@@ -232,41 +230,38 @@
* value to a concrete XML type.
*
* @param p A message part.
- * @return A list of parameters resulting from the schema type -- typically the list will only
- * contains a single parameter.
+ * @return The wsdl parameter, value may be null if no parameter defined for this part.
*/
- private List<WsdlOpParameter> resolvePartElement(Part p) {
+ private WsdlOpParameter resolvePartElement(Part p) {
- ArrayList<WsdlOpParameter> resolvedParams = new ArrayList<WsdlOpParameter>();
- Element schemaElement = WsdlUtils.findSchemaElement(p.getElementName(), _wsdlDefinition);
+ Element schemaElement = _wsdlTypes.findSchemaElement(p.getElementName());
- if (schemaElement.hasAttribute("type")) {
+ if (schemaElement.hasAttribute(WsdlUtils.ELEMENT_TYPE_ATTR)) {
// this is a simple type
- resolvedParams.add(new WsdlOpParameter(p.getName(), schemaElement, _resolver));
+ return new WsdlOpParameter(p.getName(), schemaElement, _wsdlTypes);
}
else {
// this is a complex type
- Element complex = DomUtils.getChildElementByName(schemaElement, "complexType");
- Element sequence = DomUtils.getChildElementByName(complex, "sequence");
+ Element complex = DomUtils.getChildElementByName(schemaElement, WsdlUtils.COMPLEX_TYPE_NAME);
+ Element sequence = DomUtils.getChildElementByName(complex, WsdlUtils.SEQUENCE_TAG_NAME);
- // may occaisionally find a <complex/> tag map to empty but this may be a bug in WSM
+ // may occaisionally find a <complex/> tag - map to empty
if (sequence == null) {
- return resolvedParams;
+ return null;
}
- List<Element> seqElements = DomUtils.getChildElementsByName(sequence, "element");
-
- for (Element e : seqElements) {
- WsdlOpParameter op = new WsdlOpParameter(e, _resolver);
+ Element e = DomUtils.getChildElementByName(sequence, WsdlUtils.ELEMENT_NAME);
+ if (e != null) {
+ WsdlOpParameter op = new WsdlOpParameter(e, _wsdlTypes);
// special case for bare arrays, change the name of the param
// to the name of the complex type.
if (op.isArray() && _parameterStyle == WsdlOperation.SOAPParameterStyle.BARE) {
- op.setName(schemaElement.getAttribute("name"), _resolver);
+ op.setName(schemaElement.getAttribute(WsdlUtils.NAME_ATTR), _wsdlTypes);
}
- resolvedParams.add(op);
+ return op;
}
}
- return resolvedParams;
+ return null;
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOperation.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOperation.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOperation.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlOperation.java Wed Feb 22 08:31:24 2006
@@ -18,7 +18,6 @@
package org.apache.beehive.controls.system.webservice.wsdl;
import javax.wsdl.Binding;
-import javax.wsdl.Definition;
import javax.wsdl.Fault;
import javax.wsdl.Input;
import javax.wsdl.Message;
@@ -32,39 +31,36 @@
/**
* WSDL Operation abstraction used by webservice control.
*/
-public final class WsdlOperation implements java.io.Serializable
-{
+public final class WsdlOperation implements java.io.Serializable {
/**
* Parameter style enumeration.
*/
- public enum SOAPParameterStyle
- {
+ public enum SOAPParameterStyle {
BARE, WRAPPED
}
/**
* SOAP Binding style enumeration.
*/
- public enum SOAPBindingStyle
- {
+ public enum SOAPBindingStyle {
DOCUMENT, RPC
}
/**
* SOAP Binding use enumeration.
*/
- public enum SOAPBindingUse
- {
+ public enum SOAPBindingUse {
LITERAL, ENCODED
}
private final SOAPBindingStyle _bindingStyle;
private final SOAPBindingUse _bindingUse;
+ private final WsdlOpFaultList _faults;
private final QName _operationName;
private final WsdlOpParameterList _params;
- private final WsdlOpFaultList _faults;
private final SOAPParameterStyle _parameterStyle;
+ private final String _soapAction;
private final WsdlOpReturnType _returnType;
private boolean _oneway;
@@ -75,13 +71,11 @@
*
* @param binding Binding for the operation.
* @param op The operation.
- * @param wsdlDefinition
- * @param resolver
+ * @param wsdlTypes
*/
- WsdlOperation(Binding binding, Operation op,
- Definition wsdlDefinition, WsdlNamespaceResolver resolver) {
+ WsdlOperation(Binding binding, Operation op, WsdlTypes wsdlTypes) {
- _operationName = new QName(resolver.getTargetNamespace(), op.getName());
+ _operationName = new QName(wsdlTypes.getTargetNamespace(), op.getName());
_oneway = true;
String soapBindingStyle = WsdlUtils.getSOAPBindingStyle(binding);
@@ -100,10 +94,12 @@
_bindingUse = SOAPBindingUse.LITERAL;
}
- _params = new WsdlOpParameterList(op, binding, wsdlDefinition, resolver);
+ _soapAction = WsdlUtils.getSOAPAction(binding.getBindingOperation(op.getName(), null, null));
+
+ _params = new WsdlOpParameterList(op, binding, wsdlTypes);
loadParameters(op);
- _faults = new WsdlOpFaultList(wsdlDefinition, resolver);
+ _faults = new WsdlOpFaultList(wsdlTypes);
loadFaults(op);
_returnType = _params.getReturnType();
@@ -126,6 +122,15 @@
*/
public QName getOperationName() {
return _operationName;
+ }
+
+ /**
+ * Get the SOAP action uri for this operation.
+ *
+ * @return String, null if SOAPAction not defined for this operation.
+ */
+ public String getSOAPAction() {
+ return _soapAction;
}
/**
Copied: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlTypes.java (from r372277, beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java)
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlTypes.java?p2=beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlTypes.java&p1=beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java&r1=372277&r2=379809&rev=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlTypes.java Wed Feb 22 08:31:24 2006
@@ -21,33 +21,113 @@
import org.w3c.dom.Element;
import javax.wsdl.Definition;
+import javax.wsdl.Types;
+import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.schema.Schema;
import javax.xml.namespace.QName;
+import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.io.Serializable;
/**
*/
-public final class WsdlNamespaceResolver implements Serializable
-{
+public final class WsdlTypes implements Serializable {
+ private final String _targetNamespace;
+ private final Types _wsdlTypes;
private HashSet<String> _elementFormQualifiedNamespaces;
private Map/*<String, String>*/ _prefixMappings;
- private String _targetNamespace;
+ private WsdlComplexTypes _namedComplexTypes;
+ /**
+ * Create a new namespace resolver for the specified wsdl definition.
+ *
+ * @param wsdlDefinition
+ */
+ protected WsdlTypes(Definition wsdlDefinition) {
- WsdlNamespaceResolver(Definition wsdlDefinition) {
-
+ _wsdlTypes = wsdlDefinition.getTypes();
_targetNamespace = wsdlDefinition.getTargetNamespace();
_prefixMappings = wsdlDefinition.getNamespaces();
- _elementFormQualifiedNamespaces =
- new HashSet<String>(getElementFormQualifiedNamespaces(wsdlDefinition));
+ _elementFormQualifiedNamespaces = new HashSet<String>(getElementFormQualifiedNamespaces());
+ _namedComplexTypes = new WsdlComplexTypes(this);
+ }
+
+ /**
+ * Find the element in its schema from the types section of the WSDL.
+ *
+ * @param elementName Name of element to find.
+ * @return The element node.
+ * @throws IllegalArgumentException if element cannot be found in the schema.
+ */
+ protected Element findSchemaElement(QName elementName) {
+
+ Schema s = getSchema(elementName.getNamespaceURI());
+ Element schemaRoot = s.getElement();
+ List<Element> elements = DomUtils.getChildElementsByName(schemaRoot, WsdlUtils.ELEMENT_NAME);
+
+ Element schemaElement = null;
+ for (Element e : elements) {
+ String schemaElementName = e.getAttribute(WsdlUtils.NAME_ATTR);
+ if (elementName.getLocalPart().equals(schemaElementName)) {
+ schemaElement = e;
+ break;
+ }
+ }
+
+ if (schemaElement == null) {
+ throw new IllegalArgumentException("Could not find element in schema!");
+ }
+ return schemaElement;
+ }
+
+ /**
+ * Find a complex or simple type in the schema.
+ *
+ * @param typeName
+ * @return null if type not found.
+ */
+ protected Element findSchemaType(QName typeName) {
+
+ Schema s = getSchema(typeName.getNamespaceURI());
+ if (s == null) {
+ return null;
+ }
+
+ Element schemaRoot = s.getElement();
+ // get all simple and complex types defined at the top-level.
+ List<Element> types = DomUtils.getChildElementsByName(schemaRoot, WsdlUtils.COMPLEX_TYPE_NAME);
+ types.addAll(DomUtils.getChildElementsByName(schemaRoot, WsdlUtils.SIMPLE_TYPE_NAME));
+
+ Element schemaType = null;
+ for (Element t : types) {
+ String schemaTypeName = t.getAttribute(WsdlUtils.NAME_ATTR);
+ if (typeName.getLocalPart().equals(schemaTypeName)) {
+ schemaType = t;
+ break;
+ }
+ }
+ return schemaType;
}
- String getTargetNamespace() {
+ /**
+ *
+ * @return Wsdl's named complex types.
+ */
+ protected WsdlComplexTypes getNamedComplexTypes() {
+ return _namedComplexTypes;
+ }
+
+ /**
+ * Get the target namespace of the wsdl.
+ *
+ * @return String contianing the target namespace.
+ */
+ protected String getTargetNamespace() {
return _targetNamespace;
}
@@ -58,7 +138,7 @@
* @param type Name of type.
* @return A QName for the type name.
*/
- QName getTypeQName(String type) {
+ protected QName getTypeQName(String type) {
if (type.indexOf(':') > -1) {
String prefix = type.substring(0, type.indexOf(':'));
@@ -71,10 +151,22 @@
}
/**
+ * Return a list of of all schemas defined by the WSDL definition.
+ *
+ * @return A list of javax.wsdl.extension.schema.Schema elements.
+ */
+ protected List getSchemas() {
+ if (_wsdlTypes == null) {
+ return Collections.EMPTY_LIST;
+ }
+ return WsdlUtils.findExtensibilityElements(_wsdlTypes, WsdlUtils.SCHEMA_ELEMENT_NAME);
+ }
+
+ /**
* @param namespaceURI
* @return true if element form is qualified
*/
- boolean isElementFormQualified(String namespaceURI) {
+ protected boolean isElementFormQualified(String namespaceURI) {
return _elementFormQualifiedNamespaces.contains(namespaceURI);
}
@@ -83,10 +175,10 @@
*
* @return All target namespaces for schemas defined in the WSDL which are element form qualified.
*/
- private List<String> getElementFormQualifiedNamespaces(Definition wsdlDefinition) {
+ private List<String> getElementFormQualifiedNamespaces() {
List<String> namespaces = new ArrayList<String>();
- List schemas = WsdlUtils.getSchemas(wsdlDefinition);
+ List schemas = getSchemas();
for (Object o : schemas) {
Element schemaElement = ((Schema) o).getElement();
@@ -98,5 +190,30 @@
}
}
return namespaces;
+ }
+
+ /**
+ * Get the schema with the specified target namespace.
+ *
+ * @param targetNamespace target namespace of the schema to get.
+ * @return null if not found.
+ */
+ private Schema getSchema(String targetNamespace) {
+
+ if (_wsdlTypes == null) {
+ return null;
+ }
+
+ List<ExtensibilityElement> schemas =
+ WsdlUtils.findExtensibilityElements(_wsdlTypes, "schema");
+
+ for (ExtensibilityElement e : schemas) {
+ Element schemaRoot = ((Schema) e).getElement();
+ String tns = schemaRoot.getAttribute("targetNamespace");
+ if (targetNamespace.equals(tns)) {
+ return (Schema) e;
+ }
+ }
+ return null;
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlUtils.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlUtils.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlUtils.java Wed Feb 22 08:31:24 2006
@@ -1,36 +1,32 @@
package org.apache.beehive.controls.system.webservice.wsdl;
-import org.w3c.dom.Element;
-
import javax.wsdl.Binding;
import javax.wsdl.BindingInput;
import javax.wsdl.BindingOperation;
import javax.wsdl.BindingOutput;
-import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.extensions.ElementExtensible;
import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.schema.Schema;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap.SOAPBody;
import javax.wsdl.extensions.soap.SOAPHeader;
-import javax.xml.namespace.QName;
+import javax.wsdl.extensions.soap.SOAPOperation;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
/**
*/
-final class WsdlUtils
-{
+final class WsdlUtils {
// extensibility element names
- static final String SOAP_BINDING_ELEMENT_NAME = "binding";
+ private static final String SOAP_PORT_ADDRESS_NAME = "address";
+ private static final String SOAP_BINDING_ELEMENT_NAME = "binding";
+ private static final String SOAP_BODY_ELEMENT_NAME = "body";
+ private static final String SOAP_HEADER_ELEMENT_NAME = "header";
+ private static final String SOAP_OPERATION_ELEMENT_NAME = "operation";
static final String SCHEMA_ELEMENT_NAME = "schema";
- static final String SOAPBODY_ELEMENT_NAME = "body";
- static final String SOAPHEADER_ELEMENT_NAME = "header";
// return values
static final String SOAP_BINDING_DEFAULT = "document";
@@ -41,6 +37,7 @@
static final String ELEMENT_FORM_QUALIFIED = "qualified";
static final String ELEMENT_NAME = "element";
static final String COMPLEX_TYPE_NAME = "complexType";
+ static final String SEQUENCE_TAG_NAME = "sequence";
static final String SIMPLE_TYPE_NAME = "simpleType";
static final String NAME_ATTR = "name";
static final String ELEMENT_TYPE_ATTR = "type";
@@ -50,27 +47,13 @@
/**
- * Return a list of of all schemas defined by the WSDL definition.
- *
- * @param wsdlDefinition
- * @return A list of javax.wsdl.extension.schema.Schema elements.
- */
- static List getSchemas(Definition wsdlDefinition) {
-
- if (wsdlDefinition.getTypes() == null) {
- return Collections.EMPTY_LIST;
- }
- return findExtensibilityElements(wsdlDefinition.getTypes(), SCHEMA_ELEMENT_NAME);
- }
-
- /**
* Get the SOAP address location for the specified port.
*
* @param p Port.
* @return String.
*/
static String getSOAPAddress(Port p) {
- ExtensibilityElement e = findExtensibilityElement(p, "address");
+ ExtensibilityElement e = findExtensibilityElement(p, SOAP_PORT_ADDRESS_NAME);
return ((SOAPAddress) e).getLocationURI();
}
@@ -113,7 +96,7 @@
BindingInput bindingInput = bindingOperation.getBindingInput();
if (bindingInput != null) {
ExtensibilityElement soapBodyElem =
- WsdlUtils.findExtensibilityElement(bindingInput, SOAPBODY_ELEMENT_NAME);
+ WsdlUtils.findExtensibilityElement(bindingInput, SOAP_BODY_ELEMENT_NAME);
return ((SOAPBody) soapBodyElem).getUse();
}
@@ -123,7 +106,7 @@
BindingOutput bindingOutput = bindingOperation.getBindingOutput();
if (bindingOutput != null) {
ExtensibilityElement soapBodyElem =
- WsdlUtils.findExtensibilityElement(bindingOutput, SOAPBODY_ELEMENT_NAME);
+ WsdlUtils.findExtensibilityElement(bindingOutput, SOAP_BODY_ELEMENT_NAME);
return ((SOAPBody) soapBodyElem).getUse();
}
@@ -131,6 +114,20 @@
}
/**
+ * Get the Soap Action URI from the operation's soap:operation extensiblity element.
+ *
+ * @param operation Operation to the the action uri from.
+ * @return Soap action uri as string, null if not defined.
+ */
+ static String getSOAPAction(BindingOperation operation) {
+ ExtensibilityElement e = findExtensibilityElement(operation, SOAP_OPERATION_ELEMENT_NAME);
+ if (e != null) {
+ return ((SOAPOperation) e).getSoapActionURI();
+ }
+ return null;
+ }
+
+ /**
* Does this parameter have a parameter style of WRAPPED ? It does if the <tt>name</tt> attribute of
* the part is NOT the same as its operation name.
*
@@ -155,65 +152,6 @@
}
/**
- * Find the element in its schema from the types section of the WSDL.
- *
- * @param elementName Name of element to find.
- * @param wsdlDefinition Wsdl definition.
- * @return The element node.
- * @throws IllegalArgumentException if element cannot be found in the schema.
- */
- static Element findSchemaElement(QName elementName, Definition wsdlDefinition) {
-
- Schema s = getSchema(wsdlDefinition, elementName.getNamespaceURI());
- Element schemaRoot = s.getElement();
- List<Element> elements = DomUtils.getChildElementsByName(schemaRoot, ELEMENT_NAME);
-
- Element schemaElement = null;
- for (Element e : elements) {
- String schemaElementName = e.getAttribute(NAME_ATTR);
- if (elementName.getLocalPart().equals(schemaElementName)) {
- schemaElement = e;
- break;
- }
- }
-
- if (schemaElement == null) {
- throw new IllegalArgumentException("Could not find element in schema!");
- }
- return schemaElement;
- }
-
- /**
- *
- * @param typeName
- * @param wsdlDefinition
- * @return null if type not found.
- */
- static Element findSchemaType(QName typeName, Definition wsdlDefinition) {
-
- Schema s = getSchema(wsdlDefinition, typeName.getNamespaceURI());
- if (s == null) {
- return null;
- }
-
- Element schemaRoot = s.getElement();
- // get all simple and complex types defined at the top-level.
- List<Element> types = DomUtils.getChildElementsByName(schemaRoot, COMPLEX_TYPE_NAME);
- types.addAll(DomUtils.getChildElementsByName(schemaRoot, SIMPLE_TYPE_NAME));
-
- Element schemaType = null;
- for (Element t : types) {
- String schemaTypeName = t.getAttribute(NAME_ATTR);
- if (typeName.getLocalPart().equals(schemaTypeName)) {
- schemaType = t;
- break;
- }
- }
- return schemaType;
- }
-
-
- /**
* Build a HashSet of soap header names for the specified operation and binding.
*
* @param binding Binding of the operation.
@@ -230,12 +168,12 @@
BindingInput bindingInput = bindingOperation.getBindingInput();
if (bindingInput != null) {
- headers.addAll(WsdlUtils.findExtensibilityElements(bindingInput, SOAPHEADER_ELEMENT_NAME));
+ headers.addAll(WsdlUtils.findExtensibilityElements(bindingInput, SOAP_HEADER_ELEMENT_NAME));
}
BindingOutput bindingOutput = bindingOperation.getBindingOutput();
if (bindingOutput != null) {
- headers.addAll(WsdlUtils.findExtensibilityElements(bindingOutput, SOAPHEADER_ELEMENT_NAME));
+ headers.addAll(WsdlUtils.findExtensibilityElements(bindingOutput, SOAP_HEADER_ELEMENT_NAME));
}
HashSet<String> headerSet = new HashSet<String>(headers.size());
@@ -254,8 +192,8 @@
* @param elementType Name of the extensiblity element to find.
* @return ExtensibilityElement
*/
- private static ExtensibilityElement findExtensibilityElement(ElementExtensible extensibleElement,
- String elementType) {
+ static ExtensibilityElement findExtensibilityElement(ElementExtensible extensibleElement,
+ String elementType) {
List extensibilityElements = extensibleElement.getExtensibilityElements();
if (extensibilityElements != null) {
@@ -276,8 +214,8 @@
* @param elementType Name of the extensiblity element to find.
* @return List of ExtensibilityElements, may be empty.
*/
- private static List<ExtensibilityElement> findExtensibilityElements(ElementExtensible extensibleElement,
- String elementType) {
+ static List<ExtensibilityElement> findExtensibilityElements(ElementExtensible extensibleElement,
+ String elementType) {
ArrayList<ExtensibilityElement> elements = new ArrayList<ExtensibilityElement>();
List extensibilityElements = extensibleElement.getExtensibilityElements();
@@ -292,31 +230,5 @@
}
}
return elements;
- }
-
- /**
- * Get the schema with the specified target namespace.
- *
- * @param wsdlDefinition Wsdl definition.
- * @param targetNamespace target namespace of the schema to get.
- * @return null if not found.
- */
- private static Schema getSchema(Definition wsdlDefinition, String targetNamespace) {
-
- if (wsdlDefinition.getTypes() == null) {
- return null;
- }
-
- List<ExtensibilityElement> schemas =
- WsdlUtils.findExtensibilityElements(wsdlDefinition.getTypes(), "schema");
-
- for (ExtensibilityElement e : schemas) {
- Element schemaRoot = ((Schema) e).getElement();
- String tns = schemaRoot.getAttribute("targetNamespace");
- if (targetNamespace.equals(tns)) {
- return (Schema) e;
- }
- }
- return null;
}
}
Modified: beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java (original)
+++ beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java Wed Feb 22 08:31:24 2006
@@ -38,7 +38,7 @@
import javax.xml.rpc.encoding.XMLType;
import java.util.Collection;
import java.util.Map;
-import java.util.Set;
+import java.util.List;
/**
* Axis client implementation of type registrar.
@@ -150,15 +150,15 @@
ComplexType ct = _wsdlComplexTypes.getComplexType(xmlType.getLocalPart());
if (ct != null) {
- Set<String> names = ct.getElementNames();
+ List<String> names = ct.getElementNames();
assert names.size() == 1;
- QName componentQName = ct.getElementType(names.iterator().next());
+ QName componentQName = ct.getElementType(names.get(0));
QName componentItemName;
if (WsdlOperation.SOAPBindingStyle.RPC == style) {
- componentItemName = new QName("", names.iterator().next());
+ componentItemName = new QName("", names.get(0));
}
else {
- componentItemName = new QName(xmlType.getNamespaceURI(), names.iterator().next());
+ componentItemName = new QName(xmlType.getNamespaceURI(), names.get(0));
}
registerType(cls.getComponentType(), componentQName, style, use);
Modified: beehive/trunk/system-controls/test/webservice/junit/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/junit/build.xml?rev=379809&r1=379808&r2=379809&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/junit/build.xml (original)
+++ beehive/trunk/system-controls/test/webservice/junit/build.xml Wed Feb 22 08:31:24 2006
@@ -172,6 +172,7 @@
<batchtest filtertrace="off" todir="${log.dir}">
<fileset dir="${junit-source.dir}">
<include name="**/*Test.java"/>
+ <exclude name="**/WscGenFromDocLitWrapWsdlTest.java"/>
</fileset>
</batchtest>
</junit>