You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2006/06/05 16:08:25 UTC
svn commit: r411794 - in /webservices/axis2/trunk/java/modules:
codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
Author: ajith
Date: Mon Jun 5 07:08:25 2006
New Revision: 411794
URL: http://svn.apache.org/viewvc?rev=411794&view=rev
Log:
1. Removed "throws unsupportedException" from the template
2. Changed the WSDL11ToAxisServiceBuilder to pick a SOAP port (if one is available) as the default if a port is not available. (A SOAP port is a port with a SOAP address)
Modified:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl?rev=411794&r1=411793&r2=411794&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl Mon Jun 5 07:08:25 2006
@@ -283,8 +283,7 @@
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new java.lang.UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -292,14 +291,13 @@
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$style='rpc' or $style='document'">
- //Style is Doc. No input parameters
+ //Style is taken to be "document". No input parameters
org.apache.axiom.soap.SOAPFactory factory = getFactory(_operationClient.getOptions().getSoapVersionURI());
env = factory.getDefaultEnvelope();
env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -334,8 +332,7 @@
return (<xsl:value-of select="$outputtype"/>)object;
</xsl:when>
<xsl:otherwise>
- //Unsupported style!! No code is generated
- throw new java.lang.UnsupportedOperationException("Unsupported Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -449,8 +446,7 @@
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new java.lang.UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -464,8 +460,7 @@
env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -542,8 +537,7 @@
env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()), <xsl:value-of select="input/param[1]/@name"/>, optimizeContent(new javax.xml.namespace.QName("<xsl:value-of select="$method-ns"/>", "<xsl:value-of select="$method-name"/>")));
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new java.lang.UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -557,8 +551,7 @@
env.getBody().addChild(factory.createOMElement("<xsl:value-of select="$method-name"/>", "<xsl:value-of select="$method-ns"/>", ""));
</xsl:when>
<xsl:otherwise>
- //Unknown style!! No code is generated
- throw new UnsupportedOperationException("Unknown Style");
+ //Unknown style detected !! No code is generated
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=411794&r1=411793&r2=411794&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java Mon Jun 5 07:08:25 2006
@@ -11,6 +11,8 @@
import org.apache.ws.policy.PolicyReference;
import org.apache.ws.policy.util.DOMPolicyReader;
import org.apache.ws.policy.util.PolicyFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
@@ -75,6 +77,9 @@
public class WSDL11ToAxisServiceBuilder extends WSDLToAxisServiceBuilder {
+ protected static final Log log =
+ LogFactory.getLog(WSDL11ToAxisServiceBuilder.class);
+
private String portName;
private static final String BINDING = "Binding";
@@ -104,13 +109,13 @@
private WSDLLocator customWSLD4JResolver;
public WSDL11ToAxisServiceBuilder(InputStream in, QName serviceName,
- String portName) {
+ String portName) {
super(in, serviceName);
this.portName = portName;
}
public WSDL11ToAxisServiceBuilder(Definition def, QName serviceName,
- String portName) {
+ String portName) {
super(null, serviceName);
this.wsdl4jDefinition = def;
this.portName = portName;
@@ -198,6 +203,7 @@
}
} else {
if (services.size() > 0) {
+ //pick the first service - we don't really have a choice here
service = (Service) services.values().toArray()[0];
} else {
throw new AxisFault("No service element found in the WSDL");
@@ -214,10 +220,20 @@
} else {
Map ports = service.getPorts();
if (ports != null && ports.size() > 0) {
- port = (Port) ports.values().toArray()[0];
+ //pick the port with the SOAP address as the default port
+ port = findSOAPPort(ports);
+ if (port==null){
+ //a SOAP port was not found - log a warning
+ // and use the first port in the list
+ log.info("A SOAP port was not found - " +
+ "picking a random port!");
+ port = (Port) ports.values().toArray()[0];
+ }
}
}
+
axisService.setName(service.getQName().getLocalPart());
+
if (port != null) {
copyExtensibleElements(port.getExtensibilityElements(), dif,
axisService, PORT);
@@ -226,6 +242,36 @@
return binding;
}
+ /**
+ * Finds a SOAP port given the port map
+ * @param ports
+ * @return
+ */
+ private Port findSOAPPort(Map ports) {
+ Port port;
+ for (Iterator portsIterator = ports.values().iterator();
+ portsIterator.hasNext();) {
+ port = (Port)portsIterator.next();
+ List extensibilityElements = port.getExtensibilityElements();
+ for (int i = 0; i < extensibilityElements.size(); i++) {
+ Object extElement = extensibilityElements.get(i);
+ if (extElement instanceof SOAPAddress){
+ //SOAP 1.1 address found - return that port and we are done
+ return port;
+ }
+
+ if (extElement instanceof UnknownExtensibilityElement){
+ //todo check for a SOAP 1.2 address
+ // extensibility element here
+ }
+
+ }
+
+ }
+ //None found - just return null.
+ return null;
+ }
+
private void processBinding(Binding binding, Definition dif)
throws Exception {
if (binding != null) {
@@ -254,11 +300,11 @@
if (bindingInput != null) {
if (WSDLConstants.MEP_URI_IN_ONLY.equals(MEP)
|| WSDLConstants.MEP_URI_IN_OPTIONAL_OUT
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_OUT_OPTIONAL_IN
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_ROBUST_OUT_ONLY
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_ROBUST_IN_ONLY.equals(MEP)
|| WSDLConstants.MEP_URI_IN_OUT.equals(MEP)) {
AxisMessage inMessage = operation
@@ -272,11 +318,11 @@
if (bindingOutput != null) {
if (WSDLConstants.MEP_URI_OUT_ONLY.equals(MEP)
|| WSDLConstants.MEP_URI_OUT_OPTIONAL_IN
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_IN_OPTIONAL_OUT
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_ROBUST_OUT_ONLY
- .equals(MEP)
+ .equals(MEP)
|| WSDLConstants.MEP_URI_ROBUST_IN_ONLY.equals(MEP)
|| WSDLConstants.MEP_URI_IN_OUT.equals(MEP)) {
AxisMessage outAxisMessage = operation
@@ -302,7 +348,7 @@
private void processPortType(PortType wsdl4jPortType, Definition dif)
throws Exception {
- copyExtensionAttributes(wsdl4jPortType.getExtensionAttributes(), dif,
+ copyExtensionAttributes(wsdl4jPortType.getExtensionAttributes(),
axisService, PORT_TYPE);
Iterator wsdl4JOperationsIterator = wsdl4jPortType.getOperations()
@@ -318,7 +364,7 @@
/////////////////////////////////////////////////////////////////////////////
//////////////////////////// Internal Component Copying ///////////////////
private AxisOperation populateOperations(Operation wsdl4jOperation,
- Definition dif) throws Exception {
+ Definition dif) throws Exception {
QName opName = new QName(wsdl4jOperation.getName());
//Copy Name Attribute
AxisOperation axisOperation = axisService.getOperation(opName);
@@ -346,7 +392,7 @@
QName wrappedInputName = axisOperation.getName();
QName wrappedOutputName = new QName(wrappedInputName.getNamespaceURI(),
wrappedInputName.getLocalPart() + "Response", wrappedInputName
- .getPrefix());
+ .getPrefix());
if (isServerSide) {
if (null != wsdl4jInputMessage) {
AxisMessage inMessage = axisOperation
@@ -445,7 +491,7 @@
* @param wsdl4jMessage
*/
private QName generateReferenceQname(QName outerName,
- Message wsdl4jMessage, boolean isWrappable) {
+ Message wsdl4jMessage, boolean isWrappable) {
QName referenceQName = null;
if (isWrappable) {
//The schema for this should be already made ! Find the QName from
@@ -474,7 +520,7 @@
}
private Element[] generateWrapperSchema(Definition wsdl4jDefinition,
- Binding binding) {
+ Binding binding) {
List schemaElementList = new ArrayList();
String targetNamespaceUri = wsdl4jDefinition.getTargetNamespace();
@@ -494,7 +540,7 @@
}
private Element createSchemaForPorttype(PortType porttype,
- String targetNamespaceUri, boolean forceWrapping) {
+ String targetNamespaceUri, boolean forceWrapping) {
//loop through the messages. We'll populate thins map with the relevant
// messages
@@ -615,12 +661,12 @@
String name = wsdl4jMessage.getQName().getLocalPart();
Element newComplexType = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_COMPLEX_TYPE_LOCAL_NAME);
+ + XML_SCHEMA_COMPLEX_TYPE_LOCAL_NAME);
newComplexType.setAttribute(XSD_NAME, name);
Element cmplxContentSequence = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_SEQUENCE_LOCAL_NAME);
+ + XML_SCHEMA_SEQUENCE_LOCAL_NAME);
Element child;
Iterator iterator = parts.keySet().iterator();
while (iterator.hasNext()) {
@@ -654,7 +700,7 @@
//create Element for namespace import
Element namespaceImport = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_IMPORT_LOCAL_NAME);
+ + XML_SCHEMA_IMPORT_LOCAL_NAME);
namespaceImport.setAttribute("namespace", uri);
//add this to the map
namespaceImportsMap.put(uri, namespaceImport);
@@ -703,7 +749,7 @@
String inputOpName = inputOperationtNames[j];
elementDeclaration = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+ + XML_SCHEMA_ELEMENT_LOCAL_NAME);
elementDeclaration.setAttribute(XSD_NAME, inputOpName);
String typeValue = ((Message) inputOperationsMap.get(inputOpName))
@@ -724,7 +770,7 @@
String outputOpName = baseoutputOpName + "Response";
elementDeclaration = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+ + XML_SCHEMA_ELEMENT_LOCAL_NAME);
elementDeclaration.setAttribute(XSD_NAME, outputOpName);
String typeValue = ((Message) outputOperationsMap
.get(baseoutputOpName)).getQName().getLocalPart();
@@ -744,7 +790,7 @@
String baseFaultOpName = faultyOperationtNames[j];
elementDeclaration = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_ELEMENT_LOCAL_NAME);
+ + XML_SCHEMA_ELEMENT_LOCAL_NAME);
elementDeclaration.setAttribute(XSD_NAME, baseFaultOpName);
String typeValue = ((Message) faultyOperationsMap
.get(baseFaultOpName)).getQName().getLocalPart();
@@ -764,7 +810,7 @@
Element schemaElement = document.createElementNS(
XMLSCHEMA_NAMESPACE_URI, xsdPrefix + ":"
- + XML_SCHEMA_LOCAL_NAME);
+ + XML_SCHEMA_LOCAL_NAME);
//loop through the namespace declarations first
String[] nameSpaceDeclarationArray = (String[]) namespacePrefixMap
@@ -919,8 +965,8 @@
* from.
*/
private void copyExtensibleElements(List wsdl4jExtensibleElements,
- Definition wsdl4jDefinition, AxisDescription description,
- String originOfExtensibilityElements) {
+ Definition wsdl4jDefinition, AxisDescription description,
+ String originOfExtensibilityElements) {
Iterator iterator = wsdl4jExtensibleElements.iterator();
while (iterator.hasNext()) {
ExtensibilityElement wsdl4jElement = (ExtensibilityElement) iterator
@@ -978,7 +1024,7 @@
} else if (AddressingConstants.Final.WSAW_USING_ADDRESSING
.equals(unknown.getElementType())
|| AddressingConstants.Submission.WSAW_USING_ADDRESSING
- .equals(unknown.getElementType())) {
+ .equals(unknown.getElementType())) {
// Read the wsaw:UsingAddressing flag from the WSDL. It is
// only valid on the Port or Binding
// so only recognise it as en extensibility elemtn of one of
@@ -1052,7 +1098,7 @@
}
private void addPolicy(AxisDescription description,
- String originOfExtensibilityElements, Policy policy) {
+ String originOfExtensibilityElements, Policy policy) {
if (description instanceof AxisService) {
// wsdl:service
@@ -1116,8 +1162,8 @@
}
private void addPolicyRef(AxisDescription description,
- String originOfExtensibilityElements,
- PolicyReference policyRefElement) {
+ String originOfExtensibilityElements,
+ PolicyReference policyRefElement) {
if (description instanceof AxisService) {
// wsdl:service
@@ -1261,7 +1307,8 @@
}
private void copyExtensionAttributes(Map extAttributes,
- Definition definition, AxisDescription description, String origin) {
+ AxisDescription description,
+ String origin) {
QName key;
QName value;
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org