You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ke...@apache.org on 2007/02/05 09:21:19 UTC
svn commit: r503585 [2/9] - in /webservices/axis2/trunk/java: etc/
modules/adb-codegen/ modules/adb-codegen/src/org/apache/axis2/schema/
modules/adb-codegen/src/org/apache/axis2/schema/template/ modules/adb/
modules/addressing/ modules/addressing/src/o...
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java?view=diff&rev=503585&r1=503584&r2=503585
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java Mon Feb 5 00:21:12 2007
@@ -1,28 +1,51 @@
package org.apache.axis2.wsdl.codegen.emitter;
import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.description.*;
+import org.apache.axis2.description.AxisBinding;
+import org.apache.axis2.description.AxisBindingMessage;
+import org.apache.axis2.description.AxisBindingOperation;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.description.WSDL20DefaultValueHolder;
+import org.apache.axis2.description.WSDL2Constants;
import org.apache.axis2.util.CommandLineOptionConstants;
import org.apache.axis2.util.JavaUtils;
import org.apache.axis2.util.PolicyUtil;
import org.apache.axis2.util.Utils;
import org.apache.axis2.util.XSLTUtils;
+import org.apache.axis2.wsdl.HTTPHeaderMessage;
import org.apache.axis2.wsdl.SOAPHeaderMessage;
+import org.apache.axis2.wsdl.SOAPModuleMessage;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.axis2.wsdl.WSDLUtil;
import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
import org.apache.axis2.wsdl.codegen.CodeGenerationException;
-import org.apache.axis2.wsdl.codegen.writer.*;
+import org.apache.axis2.wsdl.codegen.writer.AntBuildWriter;
+import org.apache.axis2.wsdl.codegen.writer.CallbackHandlerWriter;
+import org.apache.axis2.wsdl.codegen.writer.ClassWriter;
+import org.apache.axis2.wsdl.codegen.writer.ExceptionWriter;
+import org.apache.axis2.wsdl.codegen.writer.InterfaceImplementationWriter;
+import org.apache.axis2.wsdl.codegen.writer.InterfaceWriter;
+import org.apache.axis2.wsdl.codegen.writer.MessageReceiverWriter;
+import org.apache.axis2.wsdl.codegen.writer.SchemaWriter;
+import org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter;
+import org.apache.axis2.wsdl.codegen.writer.SkeletonInterfaceWriter;
+import org.apache.axis2.wsdl.codegen.writer.SkeletonWriter;
+import org.apache.axis2.wsdl.codegen.writer.TestClassWriter;
+import org.apache.axis2.wsdl.codegen.writer.WSDL11Writer;
import org.apache.axis2.wsdl.databinding.TypeMapper;
-import org.apache.axis2.wsdl.util.*;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
+import org.apache.axis2.wsdl.util.TypeTesterUtil;
+import org.apache.axis2.wsdl.util.XSLTIncludeResolver;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.neethi.Policy;
-import org.apache.ws.commons.schema.XmlSchema;
import org.apache.woden.internal.util.dom.DOM2Writer;
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAP11Constants;
-//import org.apache.woden.internal.util.dom.DOM2Writer;
+import org.apache.ws.commons.schema.XmlSchema;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -41,7 +64,13 @@
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/*
* Copyright 2004,2005 The Apache Software Foundation.
@@ -79,6 +108,8 @@
protected static Map mepToClassMap;
protected static Map mepToSuffixMap;
+ protected AxisBinding axisBinding;
+
protected int uniqueFaultNameCounter = 0;
/**
* Field constructorMap
@@ -117,21 +148,27 @@
//populate the MEP -> class map
mepToClassMap = new HashMap();
- mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
- mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
- mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
- mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
- mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
- mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
+ mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY,
+ "org.apache.axis2.receivers.AbstractInMessageReceiver");
+ mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY,
+ "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
+ mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT,
+ "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
//populate the MEP -> suffix map
mepToSuffixMap = new HashMap();
- mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
- mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
- mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "RobustInOnly");
- mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "RobustInOnly");
- mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
- mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_ONLY,
+ MESSAGE_RECEIVER_SUFFIX + "InOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY,
+ MESSAGE_RECEIVER_SUFFIX + "InOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_ROBUST_IN_ONLY,
+ MESSAGE_RECEIVER_SUFFIX + "RobustInOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY,
+ MESSAGE_RECEIVER_SUFFIX + "RobustInOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_OUT,
+ MESSAGE_RECEIVER_SUFFIX + "InOut");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT,
+ MESSAGE_RECEIVER_SUFFIX + "InOut");
//register the other types as necessary
}
@@ -165,24 +202,108 @@
/**
* Sets the relevant codegen configuration
- * @see Emitter#setCodeGenConfiguration(org.apache.axis2.wsdl.codegen.CodeGenConfiguration)
+ *
* @param configuration
+ * @see Emitter#setCodeGenConfiguration(org.apache.axis2.wsdl.codegen.CodeGenConfiguration)
*/
public void setCodeGenConfiguration(CodeGenConfiguration configuration) {
this.codeGenConfiguration = configuration;
this.axisService = codeGenConfiguration.getAxisService();
+ this.axisBinding = axisService.getEndpoint(axisService.getEndpointName()).getBinding();
resolver = new XSLTIncludeResolver(codeGenConfiguration);
}
/**
* Sets the type mapper
- * @see Emitter#setMapper(org.apache.axis2.wsdl.databinding.TypeMapper)
+ *
* @param mapper
+ * @see Emitter#setMapper(org.apache.axis2.wsdl.databinding.TypeMapper)
*/
public void setMapper(TypeMapper mapper) {
this.mapper = mapper;
}
+ private Object getBindingPropertyFromOperation(String name, QName qName) {
+
+ // Get the correct AxisBindingOperation coresponding to the AxisOperation
+ AxisBindingOperation axisBindingOperation =
+ (AxisBindingOperation) axisBinding.getChild(qName);
+ Object property = null;
+
+ if (axisBindingOperation != null) {
+ property = axisBindingOperation.getProperty(name);
+ }
+
+ if (property == null) {
+ property = axisBinding.getProperty(name);
+ }
+
+ if (property == null) {
+ property = WSDL20DefaultValueHolder.getDefaultValue(name);
+ }
+
+ return property;
+ }
+
+ private Object getBindingPropertyFromMessage(String name, QName qName, String key) {
+
+ Object property = null;
+ // Get the correct AxisBindingOperation coresponding to the AxisOperation
+ AxisBindingOperation axisBindingOperation =
+ (AxisBindingOperation) axisBinding.getChild(qName);
+
+ AxisBindingMessage axisBindingMessage = null;
+ if (axisBindingOperation != null) {
+ axisBindingMessage = (AxisBindingMessage) axisBindingOperation.getChild(key);
+ if (axisBindingMessage != null) {
+ property = axisBindingMessage.getProperty(name);
+ }
+
+ if (property == null) {
+ property = axisBindingOperation.getProperty(name);
+ }
+ }
+
+
+ if (property == null) {
+ property = axisBinding.getProperty(name);
+ }
+
+ if (property == null) {
+ property = WSDL20DefaultValueHolder.getDefaultValue(name);
+ }
+
+ return property;
+ }
+
+ private Object getBindingPropertyFromMessageFault(String name, QName qName, String key) {
+
+ Object property = null;
+ // Get the correct AxisBindingOperation coresponding to the AxisOperation
+ AxisBindingOperation axisBindingOperation =
+ (AxisBindingOperation) axisBinding.getChild(qName);
+
+ AxisBindingMessage axisBindingMessageFault = null;
+ AxisBindingMessage axisBindingFault = null;
+ if (axisBindingOperation != null) {
+ axisBindingMessageFault = (AxisBindingMessage) axisBindingOperation.getFault(key);
+
+ if (axisBindingMessageFault != null) {
+ property = axisBindingMessageFault.getProperty(name);
+ }
+
+ if (property == null) {
+ axisBindingFault = axisBinding.getFault(key);
+ property = axisBindingFault.getProperty(name);
+ }
+ }
+
+ if (property == null) {
+ property = WSDL20DefaultValueHolder.getDefaultValue(name);
+ }
+
+ return property;
+ }
/**
@@ -195,6 +316,7 @@
/**
* Returns the fully qualified Stub name
* reused in many methods
+ *
* @return classname
*/
protected String getFullyQualifiedStubName() {
@@ -249,11 +371,12 @@
/**
* Emits the stubcode with bindings.
- * @see org.apache.axis2.wsdl.codegen.emitter.Emitter#emitStub()
+ *
* @throws CodeGenerationException
+ * @see Emitter#emitStub()
*/
public void emitStub() throws CodeGenerationException {
- try{
+ try {
// see the comment at updateMapperClassnames for details and reasons for
// calling this method
if (mapper.isObjectMappingPresent()) {
@@ -299,9 +422,9 @@
writeAntBuild();
}
}
- }catch(CodeGenerationException ce){
+ } catch (CodeGenerationException ce) {
throw ce;
- }catch(Exception e){
+ } catch (Exception e) {
throw new CodeGenerationException(e);
}
}
@@ -360,8 +483,10 @@
TestClassWriter callbackWriter =
new TestClassWriter(
codeGenConfiguration.isFlattenFiles() ?
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), TEST_SRC_DIR_NAME),
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ null) :
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ TEST_SRC_DIR_NAME),
codeGenConfiguration.getOutputLanguage());
writeClass(classModel, callbackWriter);
@@ -370,6 +495,7 @@
/**
* Creates the XML Model for the test case
+ *
* @return DOM document
*/
protected Document createDOMDocumentForTestCase() {
@@ -383,14 +509,16 @@
addAttribute(doc, "namespace", axisService.getTargetNamespace(), rootElement);
addAttribute(doc, "interfaceName", coreClassName, rootElement);
addAttribute(doc, "callbackname", coreClassName + CALL_BACK_HANDLER_SUFFIX, rootElement);
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "stubname", makeJavaClassName(axisService.getBindingName()) + STUB_SUFFIX, rootElement);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "stubname",
+ makeJavaClassName(axisService.getBindingName()) + STUB_SUFFIX, rootElement);
} else {
- addAttribute(doc, "stubname", coreClassName + STUB_SUFFIX, rootElement);
+ addAttribute(doc, "stubname", coreClassName + STUB_SUFFIX, rootElement);
}
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
fillSyncAttributes(doc, rootElement);
@@ -398,7 +526,7 @@
// add the databind supporters. Now the databind supporters are completly contained inside
// the stubs implementation and not visible outside
- rootElement.appendChild(createDOMElementforDatabinders(doc,false));
+ rootElement.appendChild(createDOMElementforDatabinders(doc, false));
doc.appendChild(rootElement);
//////////////////////////////////////////////////////////
// System.out.println(DOM2Writer.nodeToString(rootElement));
@@ -421,7 +549,8 @@
new InterfaceImplementationWriter(
codeGenConfiguration.isFlattenFiles() ?
getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), codeGenConfiguration.getSourceLocation()),
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ codeGenConfiguration.getSourceLocation()),
codeGenConfiguration.getOutputLanguage());
writeClass(interfaceImplModel, writer);
@@ -443,11 +572,11 @@
addAttribute(doc, "servicename", localPart, rootElement);
//The target nemespace is added as the namespace for this service
addAttribute(doc, "namespace", axisService.getTargetNamespace(), rootElement);
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
addAttribute(doc, "interfaceName",
- makeJavaClassName(axisService.getPortTypeName()) + STUB_INTERFACE_SUFFIX_BACK,
+ makeJavaClassName(axisService.getEndpointName()) + STUB_INTERFACE_SUFFIX_BACK,
rootElement);
- addAttribute(doc, "name", makeJavaClassName(axisService.getBindingName()) + STUB_SUFFIX,
+ addAttribute(doc, "name", makeJavaClassName(axisService.getBindingName()) + STUB_SUFFIX,
rootElement);
} else {
addAttribute(doc, "interfaceName", localPart, rootElement);
@@ -456,10 +585,10 @@
addAttribute(doc, "callbackname", localPart + CALL_BACK_HANDLER_SUFFIX, rootElement);
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
-
// add the wrap classes flag
if (codeGenConfiguration.isPackClasses()) {
addAttribute(doc, "wrapped", "yes", rootElement);
@@ -495,14 +624,16 @@
// add the databind supporters. Now the databind supporters are completly contained inside
// the stubs implementation and not visible outside
- rootElement.appendChild(createDOMElementforDatabinders(doc,false));
+ rootElement.appendChild(createDOMElementforDatabinders(doc, false));
Object moduleCodegenPolicyExtensionElement;
//if some extension has added the stub methods property, add them to the
//main document
- if ((moduleCodegenPolicyExtensionElement = codeGenConfiguration.getProperty("module-codegen-policy-extensions")) != null) {
- rootElement.appendChild(doc.importNode((Element) moduleCodegenPolicyExtensionElement, true));
+ if ((moduleCodegenPolicyExtensionElement =
+ codeGenConfiguration.getProperty("module-codegen-policy-extensions")) != null) {
+ rootElement.appendChild(
+ doc.importNode((Element) moduleCodegenPolicyExtensionElement, true));
}
//add another element to have the unique list of faults
@@ -603,11 +734,11 @@
axisOperation = (AxisOperation) iter.next();
if (mep == null) {
// add the fault messages
- addFaultMessages(axisOperation.getFaultMessages(),faultListForMep);
+ addFaultMessages(axisOperation.getFaultMessages(), faultListForMep);
} else {
- if (mep.equals(axisOperation.getMessageExchangePattern())){
- // add the fault messages
- addFaultMessages(axisOperation.getFaultMessages(),faultListForMep);
+ if (mep.equals(axisOperation.getMessageExchangePattern())) {
+ // add the fault messages
+ addFaultMessages(axisOperation.getFaultMessages(), faultListForMep);
}
}
}
@@ -642,6 +773,11 @@
attribValue == null ? "" : attribValue,
faultElement);
+ String exceptionName = key.getLocalPart();
+ addAttribute(doc, "localname",
+ exceptionName == null ? "" : exceptionName,
+ faultElement);
+
// add an extra attribute to say whether the type mapping is
// the default
if (mapper.getDefaultMappingName().equals(typeMapping)) {
@@ -675,7 +811,7 @@
Element endpointElement = doc.createElement("endpoint");
- String endpoint = axisService.getEndpoint();
+ String endpoint = axisService.getEndpointURL();
Text text = doc.createTextNode((endpoint != null)
? endpoint
: "");
@@ -691,16 +827,9 @@
* @param rootElement
*/
protected void addSoapVersion(Document doc, Element rootElement) {
-
// loop through the extensibility elements to get to the bindings element
-
- String soapNsUri = axisService.getSoapNsUri();
- if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNsUri)) {
- addAttribute(doc, "soap-version", "1.1", rootElement);
- } else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNsUri)) {
- addAttribute(doc, "soap-version", "1.2", rootElement);
- }
-
+ addAttribute(doc, "soap-version",
+ (String) axisBinding.getProperty(WSDL2Constants.ATTR_WSOAP_VERSION), rootElement);
}
/**
@@ -750,7 +879,8 @@
ExceptionWriter exceptionWriter =
new ExceptionWriter(
codeGenConfiguration.isFlattenFiles() ?
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ null) :
getOutputDirectory(codeGenConfiguration.getOutputLocation(),
codeGenConfiguration.getSourceLocation()),
codeGenConfiguration.getOutputLanguage());
@@ -768,7 +898,8 @@
Element rootElement = doc.createElement("callback");
addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
- addAttribute(doc, "name", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
+ addAttribute(doc, "name",
+ makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
// TODO JAXRPC mapping support should be considered here ??
this.loadOperations(doc, rootElement, null);
@@ -788,7 +919,8 @@
CallbackHandlerWriter callbackWriter =
new CallbackHandlerWriter(
codeGenConfiguration.isFlattenFiles() ?
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ null) :
getOutputDirectory(codeGenConfiguration.getOutputLocation(),
codeGenConfiguration.getSourceLocation()),
codeGenConfiguration.getOutputLanguage());
@@ -805,7 +937,8 @@
Element rootElement = doc.createElement("callback");
addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
- addAttribute(doc, "name", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
+ addAttribute(doc, "name",
+ makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX, rootElement);
// TODO JAXRPC mapping support should be considered here ??
this.loadOperations(doc, rootElement, null);
@@ -840,18 +973,21 @@
Document doc = getEmptyDocument();
Element rootElement = doc.createElement("interface");
String localPart = null;
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- localPart = makeJavaClassName(axisService.getPortTypeName() + STUB_INTERFACE_SUFFIX_BACK);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ localPart =
+ makeJavaClassName(axisService.getEndpointName() + STUB_INTERFACE_SUFFIX_BACK);
} else {
localPart = makeJavaClassName(axisService.getName());
}
addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
addAttribute(doc, "name", localPart, rootElement);
- addAttribute(doc, "callbackname", makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX,
+ addAttribute(doc, "callbackname",
+ makeJavaClassName(axisService.getName()) + CALL_BACK_HANDLER_SUFFIX,
rootElement);
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
fillSyncAttributes(doc, rootElement);
loadOperations(doc, rootElement, null);
@@ -879,7 +1015,6 @@
}
-
/**
* Update mapper for message receiver
*/
@@ -903,10 +1038,11 @@
String packageName = codeGenConfiguration.getPackageName();
String localPart = makeJavaClassName(axisService.getName());
String skeltonName;
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- skeltonName = packageName + "." + makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK;
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ skeltonName = packageName + "." + makeJavaClassName(axisService.getBindingName()) +
+ SKELETON_CLASS_SUFFIX_BACK;
} else {
- skeltonName = packageName + "." + localPart + SKELETON_CLASS_SUFFIX;
+ skeltonName = packageName + "." + localPart + SKELETON_CLASS_SUFFIX;
}
return skeltonName;
}
@@ -918,20 +1054,24 @@
String packageName = codeGenConfiguration.getPackageName();
String localPart = makeJavaClassName(axisService.getName());
String skeltonInterfaceName;
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- skeltonInterfaceName = packageName + "." + makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK;
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ skeltonInterfaceName = packageName + "." +
+ makeJavaClassName(axisService.getEndpointName()) +
+ SKELETON_INTERFACE_SUFFIX_BACK;
} else {
- skeltonInterfaceName = packageName + "." + localPart + SKELETON_INTERFACE_SUFFIX;
+ skeltonInterfaceName = packageName + "." + localPart + SKELETON_INTERFACE_SUFFIX;
}
return skeltonInterfaceName;
}
+
/**
* Emits the skeleton
+ *
* @throws CodeGenerationException
*/
public void emitSkeleton() throws CodeGenerationException {
- try{
+ try {
// see the comment at updateMapperClassnames for details and reasons for
// calling this method
if (mapper.isObjectMappingPresent()) {
@@ -952,12 +1092,12 @@
// write skeleton only if the used has
// asked for the deployment descriptor in the interface mode
// else write it anyway :)
- if (codeGenConfiguration.isServerSideInterface()){
- if (codeGenConfiguration.isGenerateDeployementDescriptor()){
- writeSkeleton();
- }
- }else{
- writeSkeleton();
+ if (codeGenConfiguration.isServerSideInterface()) {
+ if (codeGenConfiguration.isGenerateDeployementDescriptor()) {
+ writeSkeleton();
+ }
+ } else {
+ writeSkeleton();
}
// write a MessageReceiver for this particular service.
@@ -982,9 +1122,9 @@
//we need to serialize the WSDL's
writeWSDLFiles();
- }catch(CodeGenerationException cgExp){
+ } catch (CodeGenerationException cgExp) {
throw cgExp;
- }catch(Exception e){
+ } catch (Exception e) {
throw new CodeGenerationException(e);
}
}
@@ -1066,7 +1206,7 @@
}
/**
- * Change the fault classnames to go with the package and stub
+ * Change the fault classnames to go with the package and stub
*/
protected void updateFaultPackageForStub() {
Iterator faultClassNameKeys = fullyQualifiedFaultClassNameMap.keySet().iterator();
@@ -1082,6 +1222,7 @@
/**
* Writes the message receiver
+ *
* @throws Exception
*/
protected void writeMessageReceiver() throws Exception {
@@ -1101,8 +1242,11 @@
MessageReceiverWriter writer =
new MessageReceiverWriter(
codeGenConfiguration.isFlattenFiles() ?
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
- getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ getOutputDirectory(
+ codeGenConfiguration.getOutputLocation(),
+ null) :
+ getOutputDirectory(
+ codeGenConfiguration.getOutputLocation(),
codeGenConfiguration.getSourceLocation()),
codeGenConfiguration.getOutputLanguage());
@@ -1114,6 +1258,7 @@
/**
* Creates the XML model for the message receiver
+ *
* @param mep
* @param isServerSideInterface
* @return DOM Document
@@ -1129,16 +1274,21 @@
addAttribute(doc, "name", localPart + mepToSuffixMap.get(mep), rootElement);
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
-
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "skeletonname", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "skeletonname",
+ makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK,
+ rootElement);
if (isServerSideInterface) {
- addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK,
+ addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(
+ axisService.getEndpointName()) + SKELETON_INTERFACE_SUFFIX_BACK,
rootElement);
} else {
- addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK,
+ addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(
+ axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK,
rootElement);
}
} else {
@@ -1173,10 +1323,10 @@
//put the result in the property map
infoHolder.put(mep, isOpsFound ? Boolean.TRUE : Boolean.FALSE);
//create the databinder element with serverside as true
- rootElement.appendChild(createDOMElementforDatabinders(doc,true));
+ rootElement.appendChild(createDOMElementforDatabinders(doc, true));
//attach a list of faults
- rootElement.appendChild(getUniqueListofFaultsofMep(doc,mep));
+ rootElement.appendChild(getUniqueListofFaultsofMep(doc, mep));
doc.appendChild(rootElement);
@@ -1192,13 +1342,15 @@
*
* @param doc
*/
- protected Element createDOMElementforDatabinders(Document doc,boolean isServerside) {
+ protected Element createDOMElementforDatabinders(Document doc, boolean isServerside) {
// First Iterate through the operations and find the relevant fromOM and toOM methods to be generated
ArrayList parameters = new ArrayList();
- for (Iterator operationsIterator = axisService.getOperations();operationsIterator.hasNext();) {
+
+ for (Iterator operationsIterator = axisService.getOperations(); operationsIterator.hasNext();) {
AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
+
// Add the parameters to a map with their type as the key
// this step is needed to remove repetitions
@@ -1209,7 +1361,7 @@
for (int i = 0; i < inputParamElement.length; i++) {
//add an attribute to the parameter saying that this is an
//input
- addAttribute(doc,"direction","in",inputParamElement[i]);
+ addAttribute(doc, "direction", "in", inputParamElement[i]);
//add the short type name
parameters.add(
inputParamElement[i]);
@@ -1221,7 +1373,7 @@
Element outputParamElement = getOutputParamElement(doc, axisOperation);
if (outputParamElement != null) {
//set the direction as out
- addAttribute(doc,"direction","out",outputParamElement);
+ addAttribute(doc, "direction", "out", outputParamElement);
parameters.add(outputParamElement);
}
}
@@ -1230,7 +1382,7 @@
Element[] faultParamElements = getFaultParamElements(doc, axisOperation);
for (int i = 0; i < faultParamElements.length; i++) {
//set the direction as out - all faults are out messages ?
- addAttribute(doc,"direction","out",faultParamElements[i]);
+ addAttribute(doc, "direction", "out", faultParamElements[i]);
parameters.add(faultParamElements[i]);
}
@@ -1238,7 +1390,8 @@
Element newChild;
List headerParameterQNameList = new ArrayList();
addHeaderOperations(headerParameterQNameList, axisOperation, true);
- List parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+ List parameterElementList = getParameterElementList(doc, headerParameterQNameList,
+ WSDLConstants.SOAP_HEADER);
for (int i = 0; i < parameterElementList.size(); i++) {
newChild = (Element) parameterElementList.get(i);
@@ -1248,7 +1401,8 @@
headerParameterQNameList.clear();
parameterElementList.clear();
addHeaderOperations(headerParameterQNameList, axisOperation, false);
- parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+ parameterElementList = getParameterElementList(doc, headerParameterQNameList,
+ WSDLConstants.SOAP_HEADER);
for (int i = 0; i < parameterElementList.size(); i++) {
newChild = (Element) parameterElementList.get(i);
@@ -1271,23 +1425,23 @@
//can just copy these items as attributes of the <extra> element.
Element extraElement = addElement(doc, "extra", null, rootElement);
Map propertiesMap = codeGenConfiguration.getProperties();
- for (Iterator it = propertiesMap.keySet().iterator(); it.hasNext();){
+ for (Iterator it = propertiesMap.keySet().iterator(); it.hasNext();) {
Object key = it.next();
if (key instanceof String) {
Object value = propertiesMap.get(key);
//if the value is null set it to empty string
- if (value==null) value="";
+ if (value == null) value = "";
//add key="value" attribute to element iff value a string
- if (value instanceof String){
- addAttribute(doc,(String)key,(String)value, extraElement);
+ if (value instanceof String) {
+ addAttribute(doc, (String) key, (String) value, extraElement);
}
}
}
//add the server side attribute. this helps the databinding template
//to determine the methods to generate
- if (isServerside){
- addAttribute(doc,"isserverside","yes",rootElement);
+ if (isServerside) {
+ addAttribute(doc, "isserverside", "yes", rootElement);
}
// add the names of the elements that have base 64 content
// if the base64 name list is missing then this whole step is skipped
@@ -1305,18 +1459,19 @@
if (details != null) {
Object value = details.getValue();
if (value instanceof Element) {
- rootElement.appendChild(doc.importNode((Element)value, true));
+ rootElement.appendChild(doc.importNode((Element) value, true));
} else if (value instanceof List) {
- for (Iterator iter = ((List)value).iterator(); iter.hasNext();) {
- rootElement.appendChild(doc.importNode((Element)iter.next(), true));
+ for (Iterator iter = ((List) value).iterator(); iter.hasNext();) {
+ rootElement.appendChild(doc.importNode((Element) iter.next(), true));
}
}
}
+
for (Iterator operationsIterator = axisService.getOperations(); operationsIterator.hasNext();) {
AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
details = axisOperation.getParameter(Constants.DATABINDING_OPERATION_DETAILS);
if (details != null) {
- rootElement.appendChild(doc.importNode((Element)details.getValue(), true));
+ rootElement.appendChild(doc.importNode((Element) details.getValue(), true));
}
}
@@ -1331,18 +1486,19 @@
* Adds the short type name to the given parameter element
* if the type has no '.' characters in its name
* the type itself is taken as the shorttype
+ *
* @param paramElement
*/
- protected void addShortType(Element paramElement,String type) {
- if (type!=null && type.indexOf('.')!=-1){
+ protected void addShortType(Element paramElement, String type) {
+ if (type != null && type.indexOf('.') != -1) {
addAttribute(paramElement.getOwnerDocument(),
"shorttype",
- type.substring(type.lastIndexOf('.')+1),
+ type.substring(type.lastIndexOf('.') + 1),
paramElement);
- }else{
+ } else {
addAttribute(paramElement.getOwnerDocument(),
"shorttype",
- type==null?"":type,
+ type == null ? "" : type,
paramElement);
}
@@ -1350,6 +1506,7 @@
/**
* Gets an element representing the operation names
+ *
* @param doc
* @return Returns Element.
*/
@@ -1357,14 +1514,15 @@
Element root = doc.createElement("opnames");
Element elt;
- for (Iterator operationsIterator = axisService.getOperations();operationsIterator.hasNext();) {
+
+ for (Iterator operationsIterator = axisService.getOperations(); operationsIterator.hasNext();) {
AxisOperation axisOperation = (AxisOperation) operationsIterator.next();
elt = doc.createElement("name");
elt.appendChild(doc.createTextNode(axisOperation.getName().getLocalPart()));
//what needs to be put here as the opertation namespace is actually the
//traget namespace of the service
- addAttribute(doc,"opnsuri",axisService.getTargetNamespace(),elt);
+ addAttribute(doc, "opnsuri", axisService.getTargetNamespace(), elt);
root.appendChild(elt);
}
@@ -1373,6 +1531,7 @@
/**
* Gets the base64 types. If not available this will be empty!!!
+ *
* @param doc
* @return Returns Element.
*/
@@ -1438,11 +1597,11 @@
String className = (String) classNameMap.get(key);
//this is a generated class name - update the name
- if (!TypeTesterUtil.hasPackage(className) && !TypeTesterUtil.isPrimitive(className)){
+ if (!TypeTesterUtil.hasPackage(className) && !TypeTesterUtil.isPrimitive(className)) {
classNameMap.put(key, fullyQulifiedIncludingClassNamePrefix + "." + className);
instantiatableMessageClassNames.put(key,
fullyQulifiedIncludingClassNamePrefix + "$" + className);
- }else{
+ } else {
//this is a fully qualified class name - just leave it as it is
classNameMap.put(key, className);
instantiatableMessageClassNames.put(key,
@@ -1458,18 +1617,18 @@
*/
protected void writeServiceXml() throws Exception {
- // Write the service xml in a folder with the
- Document serviceXMLModel = createDOMDocumentForServiceXML();
- debugLogDocument("Document for service XML:", serviceXMLModel);
- ClassWriter serviceXmlWriter =
- new ServiceXMLWriter(
- codeGenConfiguration.isFlattenFiles() ?
- getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
- getOutputDirectory(codeGenConfiguration.getOutputLocation(),
- codeGenConfiguration.getResourceLocation()),
- this.codeGenConfiguration.getOutputLanguage());
+ // Write the service xml in a folder with the
+ Document serviceXMLModel = createDOMDocumentForServiceXML();
+ debugLogDocument("Document for service XML:", serviceXMLModel);
+ ClassWriter serviceXmlWriter =
+ new ServiceXMLWriter(
+ codeGenConfiguration.isFlattenFiles() ?
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(), null) :
+ getOutputDirectory(codeGenConfiguration.getOutputLocation(),
+ codeGenConfiguration.getResourceLocation()),
+ this.codeGenConfiguration.getOutputLanguage());
- writeClass(serviceXMLModel, serviceXmlWriter);
+ writeClass(serviceXMLModel, serviceXmlWriter);
}
@@ -1477,10 +1636,10 @@
Document doc = getEmptyDocument();
String className = null;
String serviceName = axisService.getName();
- if(this.codeGenConfiguration.isBackwordCompatibilityMode()){
- className = makeJavaClassName(axisService.getBindingName());
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ className = makeJavaClassName(axisService.getBindingName());
} else {
- className = makeJavaClassName(serviceName);
+ className = makeJavaClassName(serviceName);
}
doc.appendChild(getServiceElement(serviceName, className, doc));
@@ -1502,8 +1661,8 @@
addAttribute(doc, "package", "", rootElement);
addAttribute(doc, "classpackage", codeGenConfiguration.getPackageName(), rootElement);
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "name", className + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "name", className + SKELETON_CLASS_SUFFIX_BACK, rootElement);
} else {
addAttribute(doc, "name", className + SKELETON_CLASS_SUFFIX, rootElement);
}
@@ -1518,7 +1677,8 @@
Object key = it.next();
if (Boolean.TRUE.equals(infoHolder.get(key))) {
- Element elt = addElement(doc, "messagereceiver", makeJavaClassName(serviceName) + mepToSuffixMap.get(key), rootElement);
+ Element elt = addElement(doc, "messagereceiver",
+ makeJavaClassName(serviceName) + mepToSuffixMap.get(key), rootElement);
addAttribute(doc, "mepURI", key.toString(), elt);
}
@@ -1530,7 +1690,8 @@
}
protected void writeSkeleton() throws Exception {
- Document skeletonModel = createDOMDocumentForSkeleton(codeGenConfiguration.isServerSideInterface());
+ Document skeletonModel =
+ createDOMDocumentForSkeleton(codeGenConfiguration.isServerSideInterface());
debugLogDocument("Document for skeleton:", skeletonModel);
ClassWriter skeletonWriter = new SkeletonWriter(
codeGenConfiguration.isFlattenFiles() ?
@@ -1544,6 +1705,7 @@
/**
* Write the skeletonInterface
+ *
* @throws Exception
*/
protected void writeSkeletonInterface() throws Exception {
@@ -1561,6 +1723,7 @@
/**
* Creates the XMLModel for the skeleton
+ *
* @param isSkeletonInterface
* @return DOM Document
*/
@@ -1570,23 +1733,27 @@
String serviceName = makeJavaClassName(axisService.getName());
addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "name", makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK, rootElement);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "name",
+ makeJavaClassName(axisService.getBindingName()) + SKELETON_CLASS_SUFFIX_BACK,
+ rootElement);
} else {
- addAttribute(doc, "name", serviceName + SKELETON_CLASS_SUFFIX, rootElement);
+ addAttribute(doc, "name", serviceName + SKELETON_CLASS_SUFFIX, rootElement);
}
addAttribute(doc, "callbackname", serviceName + CALL_BACK_HANDLER_SUFFIX,
rootElement);
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
if (isSkeletonInterface) {
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK,
- rootElement);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "skeletonInterfaceName", makeJavaClassName(
+ axisService.getEndpointName()) + SKELETON_INTERFACE_SUFFIX_BACK,
+ rootElement);
} else {
addAttribute(doc, "skeletonInterfaceName", serviceName + SKELETON_INTERFACE_SUFFIX,
- rootElement);
+ rootElement);
}
}
@@ -1603,6 +1770,7 @@
/**
* Creates the XML model for the skeleton interface
+ *
* @return DOM Document
*/
protected Document createDOMDocumentForSkeletonInterface() {
@@ -1611,8 +1779,9 @@
String serviceName = makeJavaClassName(axisService.getName());
addAttribute(doc, "package", codeGenConfiguration.getPackageName(), rootElement);
- if (this.codeGenConfiguration.isBackwordCompatibilityMode()){
- addAttribute(doc, "name", makeJavaClassName(axisService.getPortTypeName()) + SKELETON_INTERFACE_SUFFIX_BACK, rootElement);
+ if (this.codeGenConfiguration.isBackwordCompatibilityMode()) {
+ addAttribute(doc, "name", makeJavaClassName(axisService.getEndpointName()) +
+ SKELETON_INTERFACE_SUFFIX_BACK, rootElement);
} else {
addAttribute(doc, "name", serviceName + SKELETON_INTERFACE_SUFFIX, rootElement);
}
@@ -1621,7 +1790,8 @@
rootElement);
//add backwordcompatibility attribute
- addAttribute(doc, "isbackcompatible", String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
+ addAttribute(doc, "isbackcompatible",
+ String.valueOf(codeGenConfiguration.isBackwordCompatibilityMode()),
rootElement);
fillSyncAttributes(doc, rootElement);
@@ -1640,6 +1810,7 @@
/**
* Loads the operations
+ *
* @param doc
* @param rootElement
* @param mep
@@ -1647,7 +1818,7 @@
*/
protected boolean loadOperations(Document doc, Element rootElement, String mep) {
Element methodElement;
- String portTypeName = makeJavaClassName(axisService.getName());
+ String serviceName = makeJavaClassName(axisService.getName());
Iterator operations = axisService.getOperations();
boolean opsFound = false;
@@ -1657,15 +1828,15 @@
// populate info holder with mep information. This will used in determining which
// message receiver to use, etc.,
+
String messageExchangePattern = axisOperation.getMessageExchangePattern();
if (infoHolder.get(messageExchangePattern) == null) {
infoHolder.put(messageExchangePattern, Boolean.TRUE);
}
if (mep == null) {
-
opsFound = true;
- methodElement = generateMethodElement(doc, portTypeName, axisOperation);
+ methodElement = generateMethodElement(doc, serviceName, axisOperation);
rootElement.appendChild(methodElement);
} else {
@@ -1674,8 +1845,7 @@
if (mep.equals(axisOperation.getMessageExchangePattern())) {
//at this point we know it's true
opsFound = true;
- methodElement = generateMethodElement(doc, portTypeName, axisOperation);
-
+ methodElement = generateMethodElement(doc, serviceName, axisOperation);
rootElement.appendChild(methodElement);
//////////////////////
}
@@ -1690,12 +1860,13 @@
* Common code to generate a <method> element from an operation.
*
* @param doc
- * @param portTypeName
+ * @param endpointName
* @param axisOperation
* @return generated element
* @throws DOMException
*/
- private Element generateMethodElement(Document doc, String portTypeName, AxisOperation axisOperation) throws DOMException {
+ private Element generateMethodElement(Document doc, String endpointName,
+ AxisOperation axisOperation) throws DOMException {
Element methodElement;
List soapHeaderInputParameterList = new ArrayList();
List soapHeaderOutputParameterList = new ArrayList();
@@ -1705,63 +1876,201 @@
addAttribute(doc, "name", JavaUtils.xmlNameToJava(localPart), methodElement);
addAttribute(doc, "namespace", axisOperation.getName().getNamespaceURI(), methodElement);
addAttribute(doc, "style", axisOperation.getStyle(), methodElement);
- addAttribute(doc, "dbsupportname", portTypeName + localPart + DATABINDING_SUPPORTER_NAME_SUFFIX,
+ addAttribute(doc, "http_location", (String) getBindingPropertyFromOperation(
+ WSDL2Constants.ATTR_WHTTP_LOCATION, axisOperation.getName()), methodElement);
+ addAttribute(doc, "dbsupportname",
+ endpointName + localPart + DATABINDING_SUPPORTER_NAME_SUFFIX,
+ methodElement);
+ String messageExchangePattern = axisOperation.getMessageExchangePattern();
+ addAttribute(doc, "mep", Utils.getAxisSpecifMEPConstant(messageExchangePattern) + "",
methodElement);
- addAttribute(doc, "mep", Utils.getAxisSpecifMEPConstant(axisOperation.getMessageExchangePattern()) + "", methodElement);
- addAttribute(doc, "mepURI", axisOperation.getMessageExchangePattern(), methodElement);
+ addAttribute(doc, "mepURI", messageExchangePattern, methodElement);
// check for this operation to be handled directly by databinding code generation
Parameter dbmethname = axisOperation.getParameter(Constants.DATABINDING_GENERATED_RECEIVER);
if (dbmethname != null) {
- addAttribute(doc, "usedbmethod", (String)dbmethname.getValue(), methodElement);
+ addAttribute(doc, "usedbmethod", (String) dbmethname.getValue(), methodElement);
}
- Parameter dbgenimpl = axisOperation.getParameter(Constants.DATABINDING_GENERATED_IMPLEMENTATION);
+ Parameter dbgenimpl =
+ axisOperation.getParameter(Constants.DATABINDING_GENERATED_IMPLEMENTATION);
if (dbgenimpl != null && Boolean.TRUE.equals(dbgenimpl.getValue())) {
addAttribute(doc, "usdbimpl", "true", methodElement);
} else {
addAttribute(doc, "usdbimpl", "false", methodElement);
}
- addSOAPAction(doc, methodElement, axisOperation);
+ addSOAPAction(doc, methodElement, axisOperation.getName());
addOutputAndFaultActions(doc, methodElement, axisOperation);
addHeaderOperations(soapHeaderInputParameterList, axisOperation, true);
- addHeaderOperations(soapHeaderOutputParameterList, axisOperation, false);
+// addHeaderOperations(soapHeaderOutputParameterList, axisOperation, false);
/*
* Setting the policy of the operation
*/
Policy policy = axisOperation.getPolicyInclude().getPolicy();
if (policy != null) {
- try {
- addAttribute(doc, "policy",
- PolicyUtil.getSafeString(PolicyUtil.policyComponentToString(policy)),
- methodElement);
+ try {
+ addAttribute(doc, "policy",
+ PolicyUtil.getSafeString(PolicyUtil.policyComponentToString(policy)),
+ methodElement);
} catch (Exception ex) {
throw new RuntimeException("can't serialize the policy ..");
}
}
- if(WSDLUtil.isInputPresentForMEP(axisOperation.getMessageExchangePattern())){
+ if (WSDLUtil.isInputPresentForMEP(messageExchangePattern)) {
methodElement.appendChild(getInputElement(doc,
axisOperation, soapHeaderInputParameterList));
}
- if(WSDLUtil.isOutputPresentForMEP(axisOperation.getMessageExchangePattern())){
+ if (WSDLUtil.isOutputPresentForMEP(messageExchangePattern)) {
methodElement.appendChild(getOutputElement(doc,
axisOperation, soapHeaderOutputParameterList));
}
methodElement.appendChild(getFaultElement(doc,
axisOperation));
+
+ setTransferCoding(axisOperation, methodElement, doc);
+
+ String property = (String) getBindingPropertyFromOperation(
+ WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,
+ axisOperation.getName());
+ if (property != null) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR",
+ "\"" + property + "\""));
+ }
+
+ String mep = (String) getBindingPropertyFromOperation(WSDL2Constants.ATTR_WSOAP_MEP,
+ axisOperation.getName());
+
+ if (WSDL2Constants.URI_WSOAP_MEP.equalsIgnoreCase(mep)) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.ENABLE_REST",
+ "true"));
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.HTTP_METHOD",
+ "\"" +
+ org.apache.axis2.Constants.Configuration
+ .HTTP_METHOD_GET +
+ "\""));
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.CONTENT_TYPE",
+ "\"" +
+ "org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_X_WWW_FORM" +
+ "\""));
+ } else if (axisBinding.getType().equals(WSDL2Constants.URI_WSDL2_HTTP)) {
+
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.ENABLE_REST",
+ "true"));
+
+ property = (String) getBindingPropertyFromOperation(WSDL2Constants.ATTR_WHTTP_METHOD,
+ axisOperation.getName());
+ if (property != null) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.HTTP_METHOD",
+ "\"" + property + "\""));
+ }
+
+ // If there is no WHTTP_METHOD defined then we better compute the default value which is get if the operation
+ // is wsdlx:safe or post otherwise
+ else if (!WSDL2Constants.URI_WSOAP_MEP.equalsIgnoreCase(mep)) {
+ Parameter safe = axisOperation.getParameter(WSDL2Constants.ATTR_WSDLX_SAFE);
+ if (safe != null) {
+ if (((Boolean) safe.getValue()).booleanValue()) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.HTTP_METHOD",
+ "\"" +
+ org.apache.axis2.Constants.Configuration
+ .HTTP_METHOD_GET +
+ "\""));
+ } else {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.HTTP_METHOD",
+ "\"" +
+ org.apache.axis2.Constants.Configuration
+ .HTTP_METHOD_POST +
+ "\""));
+ }
+ }
+ }
+
+ Boolean value = (Boolean) getBindingPropertyFromOperation(
+ WSDL2Constants.ATTR_WHTTP_IGNORE_UNCITED,
+ axisOperation.getName());
+ if (value != null) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_IGNORE_UNCITED",
+ "\"" + value.booleanValue() +
+ "\""));
+ }
+
+ property = (String) getBindingPropertyFromOperation(WSDL2Constants.ATTR_WHTTP_CODE,
+ axisOperation.getName());
+ if (property != null) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_CODE",
+ "\"" + property + "\""));
+ }
+
+ property = (String) getBindingPropertyFromOperation(
+ WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION,
+ axisOperation.getName());
+ if (property != null) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.Constants.Configuration.CONTENT_TYPE",
+ "\"" + property + "\""));
+ }
+
+ }
return methodElement;
}
+ /**
+ * Set the transfer coding property of the input message
+ *
+ * @param axisOperation
+ * @param methodElement
+ * @param doc
+ */
+ private void setTransferCoding(AxisOperation axisOperation, Element methodElement,
+ Document doc) {
+ // Add a optionParam element which holds the value of transferCoding
+ String transferCoding =
+ (String) getBindingPropertyFromMessage(WSDL2Constants.ATTR_WHTTP_TRANSFER_CODING,
+ axisOperation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
+ if (!"".equals(transferCoding)) {
+ if ("gzip".equals(transferCoding) || "compress".equals(transferCoding)) {
+ methodElement.appendChild(generateOptionParamComponent(doc,
+ "org.apache.axis2.transport.http.HTTPConstants.MC_GZIP_REQUEST",
+ "true"));
+ }
+ }
+ }
+
+ /**
+ * Set thttp header properties needed for the stub
+ *
+ * @param axisOperation
+ * @param methodElement
+ * @param doc
+ */
+ private void setHttpHeaderOptions(AxisOperation axisOperation, Element methodElement,
+ Document doc) {
+ // Add a optionParam elements here
+
+ }
+
// ==================================================================
// Util Methods
// ==================================================================
protected Document getEmptyDocument() {
try {
- DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ DocumentBuilder documentBuilder =
+ DocumentBuilderFactory.newInstance().newDocumentBuilder();
return documentBuilder.newDocument();
} catch (ParserConfigurationException e) {
throw new RuntimeException(e);
@@ -1788,7 +2097,8 @@
* @param attribValue
* @param element
*/
- protected void addAttribute(Document document, String AttribName, String attribValue, Element element) {
+ protected void addAttribute(Document document, String AttribName, String attribValue,
+ Element element) {
XSLTUtils.addAttribute(document, AttribName, attribValue, element);
}
@@ -1876,32 +2186,40 @@
*
* @param doc
* @param rootElement
- * @param axisOperation
+ * @param qName
*/
- protected void addSOAPAction(Document doc, Element rootElement, AxisOperation axisOperation) {
- addAttribute(doc, "soapaction", axisOperation.getInputAction(), rootElement);
+ protected void addSOAPAction(Document doc, Element rootElement, QName qName) {
+ addAttribute(doc, "soapaction",
+ (String) getBindingPropertyFromOperation(WSDL2Constants.ATTR_WSOAP_ACTION, qName),
+ rootElement);
}
/**
* Adds the output and fault actions
+ *
* @param doc
* @param methodElement
* @param operation
*/
- private void addOutputAndFaultActions(Document doc, Element methodElement, AxisOperation operation){
+ private void addOutputAndFaultActions(Document doc, Element methodElement,
+ AxisOperation operation) {
String outputAction = operation.getOutputAction();
- if(outputAction != null){
- Element outputActionElt = doc.createElement(org.apache.axis2.Constants.OUTPUT_ACTION_MAPPING);
+ if (outputAction != null) {
+ Element outputActionElt =
+ doc.createElement(org.apache.axis2.Constants.OUTPUT_ACTION_MAPPING);
outputActionElt.setAttribute(AddressingConstants.WSA_ACTION, outputAction);
methodElement.appendChild(outputActionElt);
}
String[] faultActionNames = operation.getFaultActionNames();
- if(faultActionNames != null){
- for(int i=0;i<faultActionNames.length; i++){
- Element faultActionElt = doc.createElement(org.apache.axis2.Constants.FAULT_ACTION_MAPPING);
- faultActionElt.setAttribute(org.apache.axis2.Constants.FAULT_ACTION_NAME, faultActionNames[i]);
- faultActionElt.setAttribute(AddressingConstants.WSA_ACTION, operation.getFaultAction(faultActionNames[i]));
+ if (faultActionNames != null) {
+ for (int i = 0; i < faultActionNames.length; i++) {
+ Element faultActionElt =
+ doc.createElement(org.apache.axis2.Constants.FAULT_ACTION_MAPPING);
+ faultActionElt.setAttribute(org.apache.axis2.Constants.FAULT_ACTION_NAME,
+ faultActionNames[i]);
+ faultActionElt.setAttribute(AddressingConstants.WSA_ACTION,
+ operation.getFaultAction(faultActionNames[i]));
methodElement.appendChild(faultActionElt);
}
}
@@ -1914,47 +2232,75 @@
* @param axisOperation
* @param input
*/
- protected void addHeaderOperations(List soapHeaderParameterQNameList, AxisOperation axisOperation,
+ protected void addHeaderOperations(List soapHeaderParameterQNameList,
+ AxisOperation axisOperation,
boolean input) {
ArrayList headerparamList = new ArrayList();
String MEP = axisOperation.getMessageExchangePattern();
if (input) {
if (WSDLUtil.isInputPresentForMEP(MEP)) {
- AxisMessage inaxisMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- if (inaxisMessage != null) {
- headerparamList = inaxisMessage.getSoapHeaders();
- }
+ headerparamList = (ArrayList) getBindingPropertyFromMessage(
+ WSDL2Constants.ATTR_WSOAP_HEADER, axisOperation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
+
}
} else {
if (WSDLUtil.isOutputPresentForMEP(MEP)) {
- AxisMessage outAxisMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
- if (outAxisMessage != null) {
- headerparamList = outAxisMessage.getSoapHeaders();
- }
+ headerparamList = (ArrayList) getBindingPropertyFromMessage(
+ WSDL2Constants.ATTR_WSOAP_HEADER, axisOperation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);
+ }
+ }
+ if (headerparamList != null) {
+ for (Iterator iterator = headerparamList.iterator(); iterator.hasNext();) {
+ SOAPHeaderMessage header = (SOAPHeaderMessage) iterator.next();
+ soapHeaderParameterQNameList.add(header);
}
}
- for (Iterator iterator = headerparamList.iterator(); iterator.hasNext();) {
- SOAPHeaderMessage header = (SOAPHeaderMessage) iterator.next();
- soapHeaderParameterQNameList.add(header.getElement());
+ }
+
+ /**
+ * populate the header parameters to faults
+ *
+ * @param soapHeaderParameterQNameList
+ * @param axisOperation
+ */
+ protected void addHeaderOperationsToFault(List soapHeaderParameterQNameList, AxisOperation axisOperation) {
+ ArrayList headerparamList = new ArrayList();
+ ArrayList faultMessages = axisOperation.getFaultMessages();
+ Iterator iter = faultMessages.iterator();
+ while (iter.hasNext()) {
+ AxisMessage axisFaultMessage = (AxisMessage) iter.next();
+ headerparamList.addAll((ArrayList) getBindingPropertyFromMessageFault(
+ WSDL2Constants.ATTR_WSOAP_HEADER, axisOperation.getName(),
+ axisFaultMessage.getName()));
+ }
+
+ if (headerparamList != null) {
+ for (Iterator iterator = headerparamList.iterator(); iterator.hasNext();) {
+ SOAPHeaderMessage header = (SOAPHeaderMessage) iterator.next();
+ soapHeaderParameterQNameList.add(header.getElement());
+ }
}
}
+
/**
* Get the input element
+ *
* @param doc
* @param operation
* @param headerParameterQNameList
* @return DOM element
*/
- protected Element getInputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
+ protected Element getInputElement(Document doc, AxisOperation operation,
+ List headerParameterQNameList) {
Element inputElt = doc.createElement("input");
- String MEP = operation.getMessageExchangePattern();
+ String mep = operation.getMessageExchangePattern();
- if (WSDLUtil.isInputPresentForMEP(MEP)) {
+ if (WSDLUtil.isInputPresentForMEP(mep)) {
/*
* Setting the input message policy as an attribute of the input element.
@@ -1980,10 +2326,21 @@
Element[] param = getInputParamElement(doc, operation);
for (int i = 0; i < param.length; i++) {
inputElt.appendChild(param[i]);
-
}
- List parameterElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+ List parameterElementList = getParameterElementList(doc, headerParameterQNameList,
+ WSDLConstants.SOAP_HEADER);
+ parameterElementList.addAll(getParameterElementListForHttpHeader(doc,
+ (ArrayList) getBindingPropertyFromMessage(
+ WSDL2Constants.ATTR_WHTTP_HEADER,
+ operation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_IN),
+ WSDLConstants.HTTP_HEADER));
+ parameterElementList.addAll(getParameterElementListForSOAPModules(doc,
+ (ArrayList) getBindingPropertyFromMessage(
+ WSDL2Constants.ATTR_WSOAP_MODULE,
+ operation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_IN)));
for (int i = 0; i < parameterElementList.size(); i++) {
inputElt.appendChild((Element) parameterElementList.get(i));
@@ -1994,6 +2351,7 @@
/**
* Get the fault element - No header faults are supported
+ *
* @param doc
* @param operation
*/
@@ -2010,18 +2368,20 @@
/**
* Finds the output element.
+ *
* @param doc
* @param operation
* @param headerParameterQNameList
*/
- protected Element getOutputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
+ protected Element getOutputElement(Document doc, AxisOperation operation,
+ List headerParameterQNameList) {
Element outputElt = doc.createElement("output");
- String MEP = operation.getMessageExchangePattern();
+ String mep = operation.getMessageExchangePattern();
-
- if (WSDLUtil.isOutputPresentForMEP(MEP)) {
- AxisMessage outMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+ if (WSDLUtil.isOutputPresentForMEP(mep)) {
+
+ AxisMessage outMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
if (outMessage != null) {
PolicyInclude policyInclude = outMessage.getPolicyInclude();
Policy policy = policyInclude.getPolicy();
@@ -2033,8 +2393,8 @@
String policyString = PolicyUtil.policyComponentToString(policy);
policyString = PolicyUtil.getSafeString(policyString);
- } catch (Exception e ) {
- throw new RuntimeException(e);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}
}
@@ -2045,7 +2405,15 @@
outputElt.appendChild(param);
}
- List outputElementList = getParameterElementList(doc, headerParameterQNameList, "header");
+ List outputElementList = getParameterElementList(doc, headerParameterQNameList,
+ WSDLConstants.SOAP_HEADER);
+ outputElementList.addAll(getParameterElementListForHttpHeader(doc,
+ (ArrayList) getBindingPropertyFromMessage(
+ WSDL2Constants.ATTR_WHTTP_HEADER,
+ operation.getName(),
+ WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT),
+ WSDLConstants.HTTP_HEADER));
+
for (int i = 0; i < outputElementList.size(); i++) {
outputElt.appendChild((Element) outputElementList.get(i));
}
@@ -2069,7 +2437,7 @@
paramElement = doc.createElement("param");
msg = (AxisMessage) faultMessages.get(i);
- if(msg.getElementQName() == null) {
+ if (msg.getElementQName() == null) {
throw new RuntimeException("Element QName is null for " + msg.getName() + "!");
}
@@ -2097,7 +2465,7 @@
: typeMapping, paramElement);
//add the short name
- addShortType(paramElement,typeMapping);
+ addShortType(paramElement, typeMapping);
String attribValue = (String) instantiatableMessageClassNames.
get(msg.getElementQName());
@@ -2137,7 +2505,7 @@
protected Element[] getInputParamElement(Document doc, AxisOperation operation) {
AxisMessage inputMessage = operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- List paramElementList = new ArrayList();
+ List paramElementList = new ArrayList();
if (inputMessage != null) {
// This is the wrapped component - add the type mapping
@@ -2155,10 +2523,10 @@
//if the unwrapping or backWordCompatibility flag is on then we have to
//put the element complex type if it exits
if (this.codeGenConfiguration.isBackwordCompatibilityMode() ||
- !this.codeGenConfiguration.isParametersWrapped()){
- if (inputMessage.getParameter(Constants.COMPLEX_TYPE) != null){
+ !this.codeGenConfiguration.isParametersWrapped()) {
+ if (inputMessage.getParameter(Constants.COMPLEX_TYPE) != null) {
Parameter parameter = inputMessage.getParameter(Constants.COMPLEX_TYPE);
- addAttribute(doc,"complextype",(String)parameter.getValue(),mainParameter);
+ addAttribute(doc, "complextype", (String) parameter.getValue(), mainParameter);
}
}
@@ -2172,7 +2540,7 @@
Parameter detailsParameter =
inputMessage.getParameter(Constants.UNWRAPPED_DETAILS);
MessagePartInformationHolder infoHolder =
- (MessagePartInformationHolder)detailsParameter.getValue();
+ (MessagePartInformationHolder) detailsParameter.getValue();
List partsList = infoHolder.getPartsList();
//populate the parts list - this list is needed to generate multiple
@@ -2187,7 +2555,7 @@
operation.getName(),
qName,
qName.getLocalPart(),
- (this.mapper.getTypeMappingStatus(qName)!=null),
+ (this.mapper.getTypeMappingStatus(qName) != null),
Constants.ARRAY_TYPE.equals(this.mapper.getTypeMappingStatus(qName)))
);
}
@@ -2198,17 +2566,16 @@
}
-
-
}
- return (Element[])paramElementList.toArray(
+ return (Element[]) paramElementList.toArray(
new Element[paramElementList.size()]);
}
/**
* A convenient method for the generating the parameter
* element
+ *
* @param doc
* @param paramName
* @param paramType
@@ -2220,12 +2587,12 @@
QName operationName,
QName paramQName) {
return generateParamComponent(doc,paramName,paramType,operationName, paramQName, null,false,false);
-
}
/**
* A convenient method for the generating the parameter
* element
+ *
* @param doc
* @param paramName
* @param paramType
@@ -2236,8 +2603,24 @@
String paramType,
QName paramQName) {
return generateParamComponent(doc,paramName,paramType,null, paramQName, null,false,false);
+ }
+ /**
+ * A convenient method for the generating optionParam components
+ *
+ * @param doc
+ * @param name
+ * @param value
+ * @return Element
+ */
+ protected Element generateOptionParamComponent(Document doc, String name, String value) {
+
+ Element optionParamElement = doc.createElement("optionParam");
+ addAttribute(doc, "name", name, optionParamElement);
+ addAttribute(doc, "value", value, optionParamElement);
+ return optionParamElement;
}
+
/**
* A convenient method for the generating the parameter
* element
@@ -2261,11 +2644,11 @@
paramName, paramElement);
addAttribute(doc, "type",
- (paramType == null)? "" : paramType,
+ (paramType == null) ? "" : paramType,
paramElement);
//adds the short type
- addShortType(paramElement,paramType);
+ addShortType(paramElement, paramType);
// add an extra attribute to say whether the type mapping is the default
if (mapper.getDefaultMappingName().equals(paramType)) {
@@ -2276,8 +2659,8 @@
addAttribute(doc, "location", "body", paramElement);
//if the opName and partName are present , add them
- if (opName!=null){
- addAttribute(doc,"opname",opName.getLocalPart(),paramElement);
+ if (opName != null) {
+ addAttribute(doc, "opname", opName.getLocalPart(), paramElement);
}
if (paramQName!=null){
@@ -2286,19 +2669,18 @@
addAttribute(doc,"localname", paramQName.getLocalPart(), qNameElement);
paramElement.appendChild(qNameElement);
}
-
if (partName!= null){
addAttribute(doc,"partname",
JavaUtils.capitalizeFirstChar(partName),
paramElement);
}
- if (isPrimitive){
- addAttribute(doc,"primitive","yes",paramElement);
+ if (isPrimitive) {
+ addAttribute(doc, "primitive", "yes", paramElement);
}
- if (isArray){
- addAttribute(doc,"array","yes",paramElement);
+ if (isArray) {
+ addAttribute(doc, "array", "yes", paramElement);
}
return paramElement;
@@ -2330,8 +2712,7 @@
addAttribute(doc, "type", typeMappingStr, paramElement);
//adds the short type
- addShortType(paramElement,typeMappingStr);
-
+ addShortType(paramElement, typeMappingStr);
// add an extra attribute to say whether the type mapping is the default
if (mapper.getDefaultMappingName().equals(typeMappingStr)) {
@@ -2345,10 +2726,10 @@
//if the unwrapping or backWordCompatibility flag is on then we have to
//put the element complex type if it exits
if (this.codeGenConfiguration.isBackwordCompatibilityMode() ||
- !this.codeGenConfiguration.isParametersWrapped()){
- if (outputMessage.getParameter(Constants.COMPLEX_TYPE) != null){
+ !this.codeGenConfiguration.isParametersWrapped()) {
+ if (outputMessage.getParameter(Constants.COMPLEX_TYPE) != null) {
Parameter parameter = outputMessage.getParameter(Constants.COMPLEX_TYPE);
- addAttribute(doc,"complextype",(String)parameter.getValue(),paramElement);
+ addAttribute(doc, "complextype", (String) parameter.getValue(), paramElement);
}
}
@@ -2391,7 +2772,8 @@
for (int i = 0; i < count; i++) {
Element param = doc.createElement("param");
- QName name = (QName) parameters.get(i);
+ SOAPHeaderMessage header = (SOAPHeaderMessage) parameters.get(i);
+ QName name = header.getElement();
addAttribute(doc, "name", this.mapper.getParameterName(name), param);
@@ -2402,6 +2784,64 @@
addAttribute(doc, "type", typeMappingStr, param);
addAttribute(doc, "location", location, param);
+ addAttribute(doc, "mustUnderstand", header.isMustUnderstand().toString(), param);
+ parameterElementList.add(param);
+ }
+ }
+
+ return parameterElementList;
+ }
+
+
+ protected List getParameterElementListForHttpHeader(Document doc, List parameters,
+ String location) {
+
+
+ List parameterElementList = new ArrayList();
+
+ if ((parameters != null) && !parameters.isEmpty()) {
+ int count = parameters.size();
+
+ for (int i = 0; i < count; i++) {
+ Element param = doc.createElement("param");
+ HTTPHeaderMessage httpHeaderMessage = (HTTPHeaderMessage) parameters.get(i);
+ QName qName = httpHeaderMessage.getqName();
+ String name = httpHeaderMessage.getName();
+
+ // use name as the name attribute of the parameter
+ addAttribute(doc, "name", JavaUtils.xmlNameToJavaIdentifier(name), param);
+ // header name is to set the header value
+ addAttribute(doc, "headername", name, param);
+
+ String typeMapping = this.mapper.getTypeMappingName(qName);
+ String typeMappingStr = (typeMapping == null)
+ ? ""
+ : typeMapping;
+
+ addAttribute(doc, "type", typeMappingStr, param);
+ addAttribute(doc, "location", location, param);
+ parameterElementList.add(param);
+ }
+ }
+
+ return parameterElementList;
+ }
+
+ protected List getParameterElementListForSOAPModules(Document doc, List parameters) {
+
+ List parameterElementList = new ArrayList();
+
+ if ((parameters != null) && !parameters.isEmpty()) {
+ int count = parameters.size();
+
+ for (int i = 0; i < count; i++) {
+ Element param = doc.createElement("param");
+ SOAPModuleMessage soapModuleMessage = (SOAPModuleMessage) parameters.get(i);
+
+ // header name is to set the header value
+ addAttribute(doc, "uri", soapModuleMessage.getUri(), param);
+
+ addAttribute(doc, "location", "wsoap_module", param);
parameterElementList.add(param);
}
}
@@ -2417,9 +2857,10 @@
* @param eltValue
* @param element
*/
- protected Element addElement(Document document, String eltName, String eltValue, Element element) {
+ protected Element addElement(Document document, String eltName, String eltValue,
+ Element element) {
Element elt = XSLTUtils.addChildElement(document, eltName, element);
- if (eltValue!=null){
+ if (eltValue != null) {
elt.appendChild(document.createTextNode(eltValue));
}
return elt;
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org