Modified: 
axis/axis2/java/core/branches/hermetic-tests/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/kernel/src/org/apache/axis2/description/AxisService.java?rev=1849802&r1=1849801&r2=1849802&view=diff
==============================================================================
--- 
axis/axis2/java/core/branches/hermetic-tests/modules/kernel/src/org/apache/axis2/description/AxisService.java
 (original)
+++ 
axis/axis2/java/core/branches/hermetic-tests/modules/kernel/src/org/apache/axis2/description/AxisService.java
 Thu Dec 27 18:42:33 2018
@@ -131,179 +131,179 @@ import java.util.concurrent.CopyOnWriteA
  */
 public class AxisService extends AxisDescription {
 
-       // ////////////////////////////////////////////////////////////////
-       // Standard Parameter names
+    // ////////////////////////////////////////////////////////////////
+    // Standard Parameter names
 
-       /**
-        * If this param is true, and the service has exactly one AxisOperation,
-        * normal operation dispatch (via URI/soapAction/etc) will not be 
necessary,
-        * and we'll just default to funneling all messages to that op. This is
-        * useful for passthrough/ESB/embedded applications.
-        */
-       public static final String SUPPORT_SINGLE_OP = "supportSingleOperation";
-       // ////////////////////////////////////////////////////////////////
-
-       public static final String IMPORT_TAG = "import";
-       public static final String INCLUDE_TAG = "include";
-       public static final String SCHEMA_LOCATION = "schemaLocation";
-
-       private Map<String, AxisEndpoint> endpointMap = new HashMap<String, 
AxisEndpoint>();
-
-       /*
-        * This is a map between the QName of the element of a message 
specified in
-        * the WSDL and an Operation. It enables SOAP Body-based dispatching for
-        * doc-literal bindings.
-        */
-       private Map<QName, AxisOperation> messageElementQNameToOperationMap = 
new HashMap<QName, AxisOperation>();
-
-       private int nsCount = 0;
-       private static final Log log = LogFactory.getLog(AxisService.class);
-       private URL fileName;
-
-       // Maps httpLocations to corresponding operations. Used to dispatch rest
-       // messages.
-       private HashMap<String, AxisOperation> httpLocationDispatcherMap = null;
-
-       // A map of (String alias, AxisOperation operation). The aliases might
-       // include: SOAPAction,
-       // WS-Addressing action, the operation name, the AxisInputMessage name. 
See:
-       // - invalidOperationsAliases
-       // - mapActionToOperatoin()
-       // - getOperationByAction()
-       // REVIEW: This really should be seperate maps for the different types 
of
-       // aliases so they don't
-       // conflict with each other. For example, so that an identical operation
-       // name and soap action
-       // on different operatoins don't cause a collision; the following can't 
be
-       // routed because
-       // "foo" is not unique across different operations:
-       // operation 1: action = foo, name = bar
-       // operation 2: action = bar, name = foo
-       private HashMap<String, AxisOperation> operationsAliasesMap = null;
-
-       // Collection of aliases that are invalid for this service because they 
are
-       // duplicated across
-       // multiple operations under this service.
-       private List<String> invalidOperationsAliases = null;
-       // private HashMap operations = new HashMap();
-
-       // to store module ref at deploy time parsing
-       private ArrayList<String> moduleRefs = null;
-
-       // to keep the time that last update time of the service
-       private long lastupdate;
-       private HashMap<String, ModuleConfiguration> moduleConfigmap;
-       private String name;
-       private ClassLoader serviceClassLoader;
-
-       // to keep the XMLScheam getting either from WSDL or java2wsdl
-       private ArrayList<XmlSchema> schemaList;
-       // private XmlSchema schema;
-
-       // wsdl is there for this service or not (in side META-INF)
-       private boolean wsdlFound = false;
-
-       // to store the scope of the service
-       private String scope;
-
-       // to store default message receivers
-       private HashMap<String, MessageReceiver> messageReceivers;
-
-       // to set the handler chain available in phase info
-       private boolean useDefaultChains = true;
-
-       // to keep the status of the service , since service can stop at the run
-       // time
-       private boolean active = true;
-
-       private boolean elementFormDefault = true;
-
-       // to keep the service target name space
-       private String targetNamespace = 
Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE;
-       private String targetNamespacePrefix = 
Java2WSDLConstants.TARGETNAMESPACE_PREFIX;
-
-       // to store the target namespace for the schema
-       private String schematargetNamespace;// = Java2WSDLConstants.AXIS2_XSD;
-       private String schematargetNamespacePrefix = 
Java2WSDLConstants.SCHEMA_NAMESPACE_PRFIX;
-
-       private boolean enableAllTransports = true;
-       private List<String> exposedTransports = new ArrayList<String>();
-
-       // To keep reference to ServiceLifeCycle instance , if the user has
-       // specified in services.xml
-       private ServiceLifeCycle serviceLifeCycle;
-
-       /**
-        * Keeps track whether the schema locations are adjusted
-        */
-       private boolean schemaLocationsAdjusted = false;
-
-       private boolean wsdlImportLocationAdjusted = false;
-
-       /**
-        * A table that keeps a mapping of unique xsd names (Strings) against 
the
-        * schema objects. This is populated in the first instance the schemas 
are
-        * asked for and then used to serve the subsequent requests
-        */
-       private Map schemaMappingTable = null;
-
-       /**
-        * counter variable for naming the schemas
-        */
-       private int count = 0;
-       /**
-        * A custom schema Name prefix. if set this will be used to modify the
-        * schema names
-        */
-       private String customSchemaNamePrefix = null;
-
-       /**
-        * A custom schema name suffix. will be attached to the schema file name
-        * when the files are uniquely named. A good place to add a file 
extension
-        * if needed
-        */
-       private String customSchemaNameSuffix = null;
-
-       // ///////////////////////////////////////
-       // WSDL related stuff ////////////////////
-       // //////////////////////////////////////
-
-       /** Map of prefix -> namespaceURI */
-       private NamespaceMap namespaceMap;
-
-       private String soapNsUri;
-       private String endpointName;
-       private String endpointURL;
+    /**
+     * If this param is true, and the service has exactly one AxisOperation,
+     * normal operation dispatch (via URI/soapAction/etc) will not be 
necessary,
+     * and we'll just default to funneling all messages to that op. This is
+     * useful for passthrough/ESB/embedded applications.
+     */
+    public static final String SUPPORT_SINGLE_OP = "supportSingleOperation";
+    // ////////////////////////////////////////////////////////////////
+
+    public static final String IMPORT_TAG = "import";
+    public static final String INCLUDE_TAG = "include";
+    public static final String SCHEMA_LOCATION = "schemaLocation";
+
+    private Map<String, AxisEndpoint> endpointMap = new HashMap<String, 
AxisEndpoint>();
+
+    /*
+     * This is a map between the QName of the element of a message specified in
+     * the WSDL and an Operation. It enables SOAP Body-based dispatching for
+     * doc-literal bindings.
+     */
+    private Map<QName, AxisOperation> messageElementQNameToOperationMap = new 
HashMap<QName, AxisOperation>();
+
+    private int nsCount = 0;
+    private static final Log log = LogFactory.getLog(AxisService.class);
+    private URL fileName;
+
+    // Maps httpLocations to corresponding operations. Used to dispatch rest
+    // messages.
+    private HashMap<String, AxisOperation> httpLocationDispatcherMap = null;
+
+    // A map of (String alias, AxisOperation operation). The aliases might
+    // include: SOAPAction,
+    // WS-Addressing action, the operation name, the AxisInputMessage name. 
See:
+    // - invalidOperationsAliases
+    // - mapActionToOperatoin()
+    // - getOperationByAction()
+    // REVIEW: This really should be seperate maps for the different types of
+    // aliases so they don't
+    // conflict with each other. For example, so that an identical operation
+    // name and soap action
+    // on different operatoins don't cause a collision; the following can't be
+    // routed because
+    // "foo" is not unique across different operations:
+    // operation 1: action = foo, name = bar
+    // operation 2: action = bar, name = foo
+    private HashMap<String, AxisOperation> operationsAliasesMap = null;
+
+    // Collection of aliases that are invalid for this service because they are
+    // duplicated across
+    // multiple operations under this service.
+    private List<String> invalidOperationsAliases = null;
+    // private HashMap operations = new HashMap();
+
+    // to store module ref at deploy time parsing
+    private ArrayList<String> moduleRefs = null;
+
+    // to keep the time that last update time of the service
+    private long lastupdate;
+    private HashMap<String, ModuleConfiguration> moduleConfigmap;
+    private String name;
+    private ClassLoader serviceClassLoader;
+
+    // to keep the XMLScheam getting either from WSDL or java2wsdl
+    private ArrayList<XmlSchema> schemaList;
+    // private XmlSchema schema;
+
+    // wsdl is there for this service or not (in side META-INF)
+    private boolean wsdlFound = false;
+
+    // to store the scope of the service
+    private String scope;
+
+    // to store default message receivers
+    private HashMap<String, MessageReceiver> messageReceivers;
+
+    // to set the handler chain available in phase info
+    private boolean useDefaultChains = true;
+
+    // to keep the status of the service , since service can stop at the run
+    // time
+    private boolean active = true;
+
+    private boolean elementFormDefault = true;
+
+    // to keep the service target name space
+    private String targetNamespace = 
Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE;
+    private String targetNamespacePrefix = 
Java2WSDLConstants.TARGETNAMESPACE_PREFIX;
+
+    // to store the target namespace for the schema
+    private String schematargetNamespace;// = Java2WSDLConstants.AXIS2_XSD;
+    private String schematargetNamespacePrefix = 
Java2WSDLConstants.SCHEMA_NAMESPACE_PRFIX;
+
+    private boolean enableAllTransports = true;
+    private List<String> exposedTransports = new ArrayList<String>();
+
+    // To keep reference to ServiceLifeCycle instance , if the user has
+    // specified in services.xml
+    private ServiceLifeCycle serviceLifeCycle;
+
+    /**
+     * Keeps track whether the schema locations are adjusted
+     */
+    private boolean schemaLocationsAdjusted = false;
+
+    private boolean wsdlImportLocationAdjusted = false;
+
+    /**
+     * A table that keeps a mapping of unique xsd names (Strings) against the
+     * schema objects. This is populated in the first instance the schemas are
+     * asked for and then used to serve the subsequent requests
+     */
+    private Map schemaMappingTable = null;
+
+    /**
+     * counter variable for naming the schemas
+     */
+    private int count = 0;
+    /**
+     * A custom schema Name prefix. if set this will be used to modify the
+     * schema names
+     */
+    private String customSchemaNamePrefix = null;
+
+    /**
+     * A custom schema name suffix. will be attached to the schema file name
+     * when the files are uniquely named. A good place to add a file extension
+     * if needed
+     */
+    private String customSchemaNameSuffix = null;
+
+    // ///////////////////////////////////////
+    // WSDL related stuff ////////////////////
+    // //////////////////////////////////////
+
+    /** Map of prefix -> namespaceURI */
+    private NamespaceMap namespaceMap;
+
+    private String soapNsUri;
+    private String endpointName;
+    private String endpointURL;
     
     private List importedNamespaces;
 
-       private boolean clientSide = false;
+    private boolean clientSide = false;
 
-       // To keep a ref to ObjectSupplier instance
-       private ObjectSupplier objectSupplier;
+    // To keep a ref to ObjectSupplier instance
+    private ObjectSupplier objectSupplier;
 
-       // package to namespace mapping
-       private Map p2nMap;
+    // package to namespace mapping
+    private Map p2nMap;
 
-       // to keep the exclude property details
-       private ExcludeInfo excludeInfo;
-
-       private TypeTable typeTable;
-
-       // Data Locators for WS-Mex Support
-       private HashMap dataLocators;
-       private HashMap<String, String> dataLocatorClassNames;
-       private AxisDataLocatorImpl defaultDataLocator;
-       // Define search sequence for datalocator based on Data Locator types.
-       LocatorType[] availableDataLocatorTypes = new LocatorType[] {
-                       LocatorType.SERVICE_DIALECT, LocatorType.SERVICE_LEVEL,
-                       LocatorType.GLOBAL_DIALECT, LocatorType.GLOBAL_LEVEL,
-                       LocatorType.DEFAULT_AXIS };
+    // to keep the exclude property details
+    private ExcludeInfo excludeInfo;
+
+    private TypeTable typeTable;
+
+    // Data Locators for WS-Mex Support
+    private HashMap dataLocators;
+    private HashMap<String, String> dataLocatorClassNames;
+    private AxisDataLocatorImpl defaultDataLocator;
+    // Define search sequence for datalocator based on Data Locator types.
+    LocatorType[] availableDataLocatorTypes = new LocatorType[] {
+            LocatorType.SERVICE_DIALECT, LocatorType.SERVICE_LEVEL,
+            LocatorType.GLOBAL_DIALECT, LocatorType.GLOBAL_LEVEL,
+            LocatorType.DEFAULT_AXIS };
 
-       // name of the binding used : use in codegeneration
-       private String bindingName;
+    // name of the binding used : use in codegeneration
+    private String bindingName;
         
-       // List of MessageContextListeners that listen for events on the 
MessageContext
+    // List of MessageContextListeners that listen for events on the 
MessageContext
         private CopyOnWriteArrayList<MessageContextListener> 
messageContextListeners = 
             new CopyOnWriteArrayList<MessageContextListener>();
 
@@ -313,314 +313,314 @@ public class AxisService extends AxisDes
     // Excluded operations name list to know which operations to exclude.
     private List excludeOperationsNameList;
 
-       private String[] eprs;
-       private boolean customWsdl = false;
+    private String[] eprs;
+    private boolean customWsdl = false;
+
+    private HashMap policyMap = new HashMap();
+
+    public AxisEndpoint getEndpoint(String key) {
+        return (AxisEndpoint) endpointMap.get(key);
+    }
+
+    public void addEndpoint(String key, AxisEndpoint axisEndpoint) {
+        this.endpointMap.put(key, axisEndpoint);
+    }
+
+    public boolean isSchemaLocationsAdjusted() {
+        return schemaLocationsAdjusted;
+    }
+
+    public void setSchemaLocationsAdjusted(boolean schemaLocationsAdjusted) {
+        this.schemaLocationsAdjusted = schemaLocationsAdjusted;
+    }
+
+    public Map getSchemaMappingTable() {
+        return schemaMappingTable;
+    }
+
+    public void setSchemaMappingTable(Map schemaMappingTable) {
+        this.schemaMappingTable = schemaMappingTable;
+    }
+
+    public String getCustomSchemaNamePrefix() {
+        return customSchemaNamePrefix;
+    }
+
+    public void setCustomSchemaNamePrefix(String customSchemaNamePrefix) {
+        this.customSchemaNamePrefix = customSchemaNamePrefix;
+    }
+
+    public String getCustomSchemaNameSuffix() {
+        return customSchemaNameSuffix;
+    }
+
+    public void setCustomSchemaNameSuffix(String customSchemaNameSuffix) {
+        this.customSchemaNameSuffix = customSchemaNameSuffix;
+    }
+
+    /**
+     * Constructor AxisService.
+     */
+    public AxisService() {
+        super();
+        this.operationsAliasesMap = new HashMap();
+        this.invalidOperationsAliases = new ArrayList();
+        this.excludeOperationsNameList = new ArrayList();
+        moduleConfigmap = new HashMap();
+        // by default service scope is for the request
+        scope = Constants.SCOPE_REQUEST;
+        httpLocationDispatcherMap = new HashMap();
+        messageReceivers = new HashMap();
+        moduleRefs = new ArrayList();
+        schemaList = new ArrayList();
+        serviceClassLoader = (ClassLoader) 
org.apache.axis2.java.security.AccessController
+                .doPrivileged(new PrivilegedAction<ClassLoader>() {
+                    public ClassLoader run() {
+                        return Thread.currentThread().getContextClassLoader();
+                    }
+                });
+        objectSupplier = new DefaultObjectSupplier();
+        dataLocators = new HashMap();
+        dataLocatorClassNames = new HashMap();
+    }
+
+    public String getBindingName() {
+        return bindingName;
+    }
+
+    public void setBindingName(String bindingName) {
+        this.bindingName = bindingName;
+    }
 
-       private HashMap policyMap = new HashMap();
+    /**
+     * get the SOAPVersion
+     */
+    public String getSoapNsUri() {
+        return soapNsUri;
+    }
 
-       public AxisEndpoint getEndpoint(String key) {
-               return (AxisEndpoint) endpointMap.get(key);
-       }
-
-       public void addEndpoint(String key, AxisEndpoint axisEndpoint) {
-               this.endpointMap.put(key, axisEndpoint);
-       }
-
-       public boolean isSchemaLocationsAdjusted() {
-               return schemaLocationsAdjusted;
-       }
-
-       public void setSchemaLocationsAdjusted(boolean schemaLocationsAdjusted) 
{
-               this.schemaLocationsAdjusted = schemaLocationsAdjusted;
-       }
-
-       public Map getSchemaMappingTable() {
-               return schemaMappingTable;
-       }
-
-       public void setSchemaMappingTable(Map schemaMappingTable) {
-               this.schemaMappingTable = schemaMappingTable;
-       }
-
-       public String getCustomSchemaNamePrefix() {
-               return customSchemaNamePrefix;
-       }
-
-       public void setCustomSchemaNamePrefix(String customSchemaNamePrefix) {
-               this.customSchemaNamePrefix = customSchemaNamePrefix;
-       }
-
-       public String getCustomSchemaNameSuffix() {
-               return customSchemaNameSuffix;
-       }
-
-       public void setCustomSchemaNameSuffix(String customSchemaNameSuffix) {
-               this.customSchemaNameSuffix = customSchemaNameSuffix;
-       }
-
-       /**
-        * Constructor AxisService.
-        */
-       public AxisService() {
-               super();
-               this.operationsAliasesMap = new HashMap();
-               this.invalidOperationsAliases = new ArrayList();
-               this.excludeOperationsNameList = new ArrayList();
-               moduleConfigmap = new HashMap();
-               // by default service scope is for the request
-               scope = Constants.SCOPE_REQUEST;
-               httpLocationDispatcherMap = new HashMap();
-               messageReceivers = new HashMap();
-               moduleRefs = new ArrayList();
-               schemaList = new ArrayList();
-               serviceClassLoader = (ClassLoader) 
org.apache.axis2.java.security.AccessController
-                               .doPrivileged(new 
PrivilegedAction<ClassLoader>() {
-                                       public ClassLoader run() {
-                                               return 
Thread.currentThread().getContextClassLoader();
-                                       }
-                               });
-               objectSupplier = new DefaultObjectSupplier();
-               dataLocators = new HashMap();
-               dataLocatorClassNames = new HashMap();
-       }
-
-       public String getBindingName() {
-               return bindingName;
-       }
-
-       public void setBindingName(String bindingName) {
-               this.bindingName = bindingName;
-       }
-
-       /**
-        * get the SOAPVersion
-        */
-       public String getSoapNsUri() {
-               return soapNsUri;
-       }
-
-       public void setSoapNsUri(String soapNsUri) {
-               this.soapNsUri = soapNsUri;
-       }
-
-       /**
-        * get the endpointName
-        */
-       public String getEndpointName() {
-               return endpointName;
-       }
-
-       public void setEndpointName(String endpoint) {
-               this.endpointName = endpoint;
-       }
-
-       /**
-        * Constructor AxisService.
-        */
-       public AxisService(String name) {
-               this();
-               this.name = name;
-       }
+    public void setSoapNsUri(String soapNsUri) {
+        this.soapNsUri = soapNsUri;
+    }
 
-       @SuppressWarnings("deprecation")
+    /**
+     * get the endpointName
+     */
+    public String getEndpointName() {
+        return endpointName;
+    }
+
+    public void setEndpointName(String endpoint) {
+        this.endpointName = endpoint;
+    }
+
+    /**
+     * Constructor AxisService.
+     */
+    public AxisService(String name) {
+        this();
+        this.name = name;
+    }
+
+    @SuppressWarnings("deprecation")
     public void addMessageReceiver(String mepURI,
-                       MessageReceiver messageReceiver) {
-               if (WSDL2Constants.MEP_URI_IN_ONLY.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_ONLY
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_ONLY
-                                               .equals(mepURI)) {
-                       messageReceivers.put(WSDL2Constants.MEP_URI_IN_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_IN_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_IN_ONLY,
-                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_OUT_ONLY.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_ONLY
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_ONLY
-                                               .equals(mepURI)) {
-                       messageReceivers.put(WSDL2Constants.MEP_URI_OUT_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_OUT_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_OUT_ONLY,
-                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_IN_OUT.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_OUT
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_OUT
-                                               .equals(mepURI)) {
-                       messageReceivers
-                                       .put(WSDL2Constants.MEP_URI_IN_OUT, 
messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_IN_OUT,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_IN_OUT,
-                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
-                                               .equals(mepURI)) {
-                       
messageReceivers.put(WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                       messageReceiver);
-                       messageReceivers
-                                       .put(
-                                               
WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_OUT_IN.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_IN
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_IN
-                                               .equals(mepURI)) {
-                       messageReceivers
-                                       .put(WSDL2Constants.MEP_URI_OUT_IN, 
messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_OUT_IN,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_OUT_IN,
-                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
-                                               .equals(mepURI)) {
-                       
messageReceivers.put(WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                       messageReceiver);
-                       messageReceivers
-                                       .put(
-                                               
WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
-                                               .equals(mepURI)) {
-                       
messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                       messageReceiver);
-                       messageReceivers
-                                       .put(
-                                               
WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                                       messageReceiver);
-               } else if (WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)
-                               || WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
-                                               .equals(mepURI)
-                               || WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
-                                               .equals(mepURI)) {
-                       
messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
-                                       messageReceiver);
-                       messageReceivers.put(
-                               WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
-                                       messageReceiver);
-               } else {
-                       messageReceivers.put(mepURI, messageReceiver);
-               }
-       }
-
-       public MessageReceiver getMessageReceiver(String mepURL) {
-               return messageReceivers.get(mepURL);
-       }
-
-       /**
-        * Adds module configuration , if there is moduleConfig tag in service.
-        * 
-        * @param moduleConfiguration
-        */
-       public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
-               moduleConfigmap.put(moduleConfiguration.getModuleName(),
-                               moduleConfiguration);
-       }
-
-       /**
-        * Add any control operations defined by a Module to this service.
-        * 
-        * @param module
-        *            the AxisModule which has just been engaged
-        * @throws AxisFault
-        *             if a problem occurs
-        */
-       void addModuleOperations(AxisModule module) throws AxisFault {
-               HashMap<QName, AxisOperation> map = module.getOperations();
-               Collection<AxisOperation> col = map.values();
-               PhaseResolver phaseResolver = new 
PhaseResolver(getAxisConfiguration());
-               for (Iterator<AxisOperation> iterator = col.iterator(); 
iterator.hasNext();) {
-                       AxisOperation axisOperation = 
copyOperation((AxisOperation) iterator
-                                       .next());
-                       if (this.getOperation(axisOperation.getName()) == null) 
{
-                               ArrayList<String> wsamappings = 
axisOperation.getWSAMappingList();
-                               if (wsamappings != null) {
-                                       for (int j = 0, size = 
wsamappings.size(); j < size; j++) {
-                                               String mapping = (String) 
wsamappings.get(j);
+            MessageReceiver messageReceiver) {
+        if (WSDL2Constants.MEP_URI_IN_ONLY.equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_ONLY
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_ONLY
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_IN_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_IN_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_IN_ONLY,
+                    messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_OUT_ONLY.equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_ONLY
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_ONLY
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_OUT_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_OUT_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_OUT_ONLY,
+                    messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_IN_OUT.equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_OUT
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_OUT
+                        .equals(mepURI)) {
+            messageReceivers
+                    .put(WSDL2Constants.MEP_URI_IN_OUT, messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_IN_OUT,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_IN_OUT,
+                    messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
+                    messageReceiver);
+            messageReceivers
+                    .put(
+                            WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
+                            messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_OUT_IN.equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_IN
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_IN
+                        .equals(mepURI)) {
+            messageReceivers
+                    .put(WSDL2Constants.MEP_URI_OUT_IN, messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_OUT_IN,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_OUT_IN,
+                    messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
+                    messageReceiver);
+            messageReceivers
+                    .put(
+                            WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
+                            messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)
+                || WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
+                    messageReceiver);
+            messageReceivers
+                    .put(
+                            WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
+                            messageReceiver);
+        } else if (WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)
+                || WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
+                        .equals(mepURI)
+                || WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
+                        .equals(mepURI)) {
+            messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
+                    messageReceiver);
+            messageReceivers.put(
+                    WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
+                    messageReceiver);
+        } else {
+            messageReceivers.put(mepURI, messageReceiver);
+        }
+    }
+
+    public MessageReceiver getMessageReceiver(String mepURL) {
+        return messageReceivers.get(mepURL);
+    }
+
+    /**
+     * Adds module configuration , if there is moduleConfig tag in service.
+     * 
+     * @param moduleConfiguration
+     */
+    public void addModuleConfig(ModuleConfiguration moduleConfiguration) {
+        moduleConfigmap.put(moduleConfiguration.getModuleName(),
+                moduleConfiguration);
+    }
+
+    /**
+     * Add any control operations defined by a Module to this service.
+     * 
+     * @param module
+     *            the AxisModule which has just been engaged
+     * @throws AxisFault
+     *             if a problem occurs
+     */
+    void addModuleOperations(AxisModule module) throws AxisFault {
+        HashMap<QName, AxisOperation> map = module.getOperations();
+        Collection<AxisOperation> col = map.values();
+        PhaseResolver phaseResolver = new 
PhaseResolver(getAxisConfiguration());
+        for (Iterator<AxisOperation> iterator = col.iterator(); 
iterator.hasNext();) {
+            AxisOperation axisOperation = copyOperation((AxisOperation) 
iterator
+                    .next());
+            if (this.getOperation(axisOperation.getName()) == null) {
+                ArrayList<String> wsamappings = 
axisOperation.getWSAMappingList();
+                if (wsamappings != null) {
+                    for (int j = 0, size = wsamappings.size(); j < size; j++) {
+                        String mapping = (String) wsamappings.get(j);
                         //If there is already an operation with this action
-                                               //mapping (e.g. if the service 
has a matching operation)
-                                               //then we're going to check to 
see if the module's
-                                               //operation says that it's OK 
to be overridden and
-                                               //if so, we'll simply ignore 
the mapping, otherwise
-                                               //we continue as before
-                                               AxisOperation mappedOperation = 
getOperationByAction(mapping);
-                                               if ((mappedOperation != null)
-                                                   && 
(axisOperation.isParameterTrue(DeploymentConstants.TAG_ALLOWOVERRIDE))) {
-                                                 if (log.isDebugEnabled()) {
-                                                   log
-                                                   
.debug("addModuleOperations: Mapping already exists for action: "
-                                                          + mapping
-                                                          + " to operation: "
-                                                          + axisOperation
-                                                          + " named: "
-                                                          + 
axisOperation.getName()
-                                                          + " and an override 
is allowed, so the module mapping for module: "
-                                                          + module.getName()
-                                                          + " is being 
ignored.");
-                                                   
log.debug(JavaUtils.callStackToString());
-                                                 }
-                                               } else {
-                                                 mapActionToOperation(mapping, 
axisOperation);
-                                               }
-                                       }
-                               }
-                               // If we've set the "expose" parameter for this 
operation, it's
-                               // normal (non-
-                               // control) and therefore it will appear in 
generated WSDL. If
-                               // we haven't,
-                               // it's a control operation and will be ignored 
at WSDL-gen
-                               // time.
-                               if (axisOperation
-                                               
.isParameterTrue(DeploymentConstants.TAG_EXPOSE)) {
-                                       
axisOperation.setControlOperation(false);
-                               } else {
-                                       axisOperation.setControlOperation(true);
-                               }
-
-                               
phaseResolver.engageModuleToOperation(axisOperation, module);
-
-                               this.addOperation(axisOperation);
-                       }
-               }
-       }
-
-       public void addModuleref(String moduleref) {
-               moduleRefs.add(moduleref);
-       }
+                        //mapping (e.g. if the service has a matching 
operation)
+                        //then we're going to check to see if the module's
+                        //operation says that it's OK to be overridden and
+                        //if so, we'll simply ignore the mapping, otherwise
+                        //we continue as before
+                        AxisOperation mappedOperation = 
getOperationByAction(mapping);
+                        if ((mappedOperation != null)
+                            && 
(axisOperation.isParameterTrue(DeploymentConstants.TAG_ALLOWOVERRIDE))) {
+                          if (log.isDebugEnabled()) {
+                            log
+                            .debug("addModuleOperations: Mapping already 
exists for action: "
+                                   + mapping
+                                   + " to operation: "
+                                   + axisOperation
+                                   + " named: "
+                                   + axisOperation.getName()
+                                   + " and an override is allowed, so the 
module mapping for module: "
+                                   + module.getName()
+                                   + " is being ignored.");
+                            log.debug(JavaUtils.callStackToString());
+                          }
+                        } else {
+                          mapActionToOperation(mapping, axisOperation);
+                        }
+                    }
+                }
+                // If we've set the "expose" parameter for this operation, it's
+                // normal (non-
+                // control) and therefore it will appear in generated WSDL. If
+                // we haven't,
+                // it's a control operation and will be ignored at WSDL-gen
+                // time.
+                if (axisOperation
+                        .isParameterTrue(DeploymentConstants.TAG_EXPOSE)) {
+                    axisOperation.setControlOperation(false);
+                } else {
+                    axisOperation.setControlOperation(true);
+                }
+
+                phaseResolver.engageModuleToOperation(axisOperation, module);
+
+                this.addOperation(axisOperation);
+            }
+        }
+    }
+
+    public void addModuleref(String moduleref) {
+        moduleRefs.add(moduleref);
+    }
 
     /**
      * Adds operation name to exclude list.
@@ -651,20 +651,20 @@ public class AxisService extends AxisDes
     public boolean isExcludedOperation(String operation){        
         return excludeOperationsNameList.contains(operation);       
     }
-       
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
org.apache.axis2.description.AxisService#addOperation(org.apache.axis2.description.AxisOperation)
-        */
-
-       /**
-        * Method addOperation.
-        * 
-        * @param axisOperation
-        */
-       public void addOperation(AxisOperation axisOperation) {
-               axisOperation.setParent(this);
+    
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.axis2.description.AxisService#addOperation(org.apache.axis2.description.AxisOperation)
+     */
+
+    /**
+     * Method addOperation.
+     * 
+     * @param axisOperation
+     */
+    public void addOperation(AxisOperation axisOperation) {
+        axisOperation.setParent(this);
         
         if (log.isDebugEnabled()) {
             if (axisOperation.getName().equals(ServiceClient.ANON_OUT_ONLY_OP)
@@ -675,320 +675,320 @@ public class AxisService extends AxisDes
             }
         }
 
-               Iterator<AxisModule> modules = getEngagedModules().iterator();
+        Iterator<AxisModule> modules = getEngagedModules().iterator();
+
+        while (modules.hasNext()) {
+            AxisModule module = (AxisModule) modules.next();
+            try {
+                axisOperation.engageModule(module);
+            } catch (AxisFault axisFault) {
+                log.info(Messages.getMessage("modulealredyengagetoservice",
+                        module.getName()));
+            }
+        }
+        if (axisOperation.getMessageReceiver() == null) {
+            axisOperation.setMessageReceiver(loadDefaultMessageReceiver(
+                    axisOperation.getMessageExchangePattern(), this));
+        }
+        if (axisOperation.getInputAction() == null) {
+            axisOperation.setSoapAction("urn:"
+                    + axisOperation.getName().getLocalPart());
+        }
+
+        if (axisOperation.getOutputAction() == null) {
+            axisOperation.setOutputAction("urn:"
+                    + axisOperation.getName().getLocalPart()
+                    + Java2WSDLConstants.RESPONSE);
+        }
+        addChild(axisOperation);
+
+        String operationName = axisOperation.getName().getLocalPart();
+
+        /*
+         * Some times name of the operation can be different from the name of
+         * the first child of the SOAPBody. This will put the correct mapping
+         * associating that name with the operation. This will be useful
+         * especially for the SOAPBodyBasedDispatcher
+         */
+
+        Iterator axisMessageIter = axisOperation.getChildren();
+
+        while (axisMessageIter.hasNext()) {
+            AxisMessage axisMessage = (AxisMessage) axisMessageIter.next();
+            String messageName = axisMessage.getName();
+            if (messageName != null && !messageName.equals(operationName)) {
+                mapActionToOperation(messageName, axisOperation);
+            }
+        }
+
+        mapActionToOperation(operationName, axisOperation);
+
+        String action = axisOperation.getInputAction();
+        if (action.length() > 0) {
+            mapActionToOperation(action, axisOperation);
+        }
+
+        ArrayList<String> wsamappings = axisOperation.getWSAMappingList();
+        if (wsamappings != null) {
+            for (int j = 0, size = wsamappings.size(); j < size; j++) {
+                String mapping = (String) wsamappings.get(j);
+                mapActionToOperation(mapping, axisOperation);
+            }
+        }
+
+        if (axisOperation.getMessageReceiver() == null) {
+            axisOperation.setMessageReceiver(loadDefaultMessageReceiver(
+                    axisOperation.getMessageExchangePattern(), this));
+        }
+    }
+
+    private MessageReceiver loadDefaultMessageReceiver(String mepURL,
+            AxisService service) {
+        MessageReceiver messageReceiver;
+        if (mepURL == null) {
+            mepURL = WSDL2Constants.MEP_URI_IN_OUT;
+        }
+        if (service != null) {
+            messageReceiver = service.getMessageReceiver(mepURL);
+            if (messageReceiver != null) {
+                return messageReceiver;
+            }
+        }
+        if (getAxisConfiguration() != null) {
+            return getAxisConfiguration().getMessageReceiver(mepURL);
+        }
+        return null;
+    }
+
+    /**
+     * Gets a copy from module operation.
+     * 
+     * @param axisOperation
+     * @return Returns AxisOperation.
+     * @throws AxisFault
+     */
+    private AxisOperation copyOperation(AxisOperation axisOperation)
+            throws AxisFault {
+        AxisOperation operation = AxisOperationFactory
+                .getOperationDescription(axisOperation
+                        .getMessageExchangePattern());
+
+        operation.setMessageReceiver(axisOperation.getMessageReceiver());
+        operation.setName(axisOperation.getName());
+
+        Iterator<Parameter> parameters = 
axisOperation.getParameters().iterator();
+
+        while (parameters.hasNext()) {
+            Parameter parameter = (Parameter) parameters.next();
+
+            operation.addParameter(parameter);
+        }
+
+        PolicyInclude policyInclude = new PolicyInclude(operation);
+        PolicyInclude axisOperationPolicyInclude = axisOperation
+                .getPolicyInclude();
+
+        if (axisOperationPolicyInclude != null) {
+            Policy policy = axisOperationPolicyInclude.getPolicy();
+            if (policy != null) {
+                
policyInclude.setPolicy(axisOperationPolicyInclude.getPolicy());
+            }
+        }
+        operation.setPolicyInclude(policyInclude);
+
+        operation.setWsamappingList(axisOperation.getWSAMappingList());
+        operation.setRemainingPhasesInFlow(axisOperation
+                .getRemainingPhasesInFlow());
+        operation.setPhasesInFaultFlow(axisOperation.getPhasesInFaultFlow());
+        operation.setPhasesOutFaultFlow(axisOperation.getPhasesOutFaultFlow());
+        operation.setPhasesOutFlow(axisOperation.getPhasesOutFlow());
+
+        operation.setOutputAction(axisOperation.getOutputAction());
+        String[] faultActionNames = axisOperation.getFaultActionNames();
+        for (int i = 0; i < faultActionNames.length; i++) {
+            operation.addFaultAction(faultActionNames[i], axisOperation
+                    .getFaultAction(faultActionNames[i]));
+        }
+
+        return operation;
+    }
 
-               while (modules.hasNext()) {
-                       AxisModule module = (AxisModule) modules.next();
-                       try {
-                               axisOperation.engageModule(module);
-                       } catch (AxisFault axisFault) {
-                               
log.info(Messages.getMessage("modulealredyengagetoservice",
-                                               module.getName()));
-                       }
-               }
-               if (axisOperation.getMessageReceiver() == null) {
-                       
axisOperation.setMessageReceiver(loadDefaultMessageReceiver(
-                                       
axisOperation.getMessageExchangePattern(), this));
-               }
-               if (axisOperation.getInputAction() == null) {
-                       axisOperation.setSoapAction("urn:"
-                                       + 
axisOperation.getName().getLocalPart());
-               }
-
-               if (axisOperation.getOutputAction() == null) {
-                       axisOperation.setOutputAction("urn:"
-                                       + axisOperation.getName().getLocalPart()
-                                       + Java2WSDLConstants.RESPONSE);
-               }
-               addChild(axisOperation);
-
-               String operationName = axisOperation.getName().getLocalPart();
-
-               /*
-                * Some times name of the operation can be different from the 
name of
-                * the first child of the SOAPBody. This will put the correct 
mapping
-                * associating that name with the operation. This will be useful
-                * especially for the SOAPBodyBasedDispatcher
-                */
-
-               Iterator axisMessageIter = axisOperation.getChildren();
-
-               while (axisMessageIter.hasNext()) {
-                       AxisMessage axisMessage = (AxisMessage) 
axisMessageIter.next();
-                       String messageName = axisMessage.getName();
-                       if (messageName != null && 
!messageName.equals(operationName)) {
-                               mapActionToOperation(messageName, 
axisOperation);
-                       }
-               }
-
-               mapActionToOperation(operationName, axisOperation);
-
-               String action = axisOperation.getInputAction();
-               if (action.length() > 0) {
-                       mapActionToOperation(action, axisOperation);
-               }
-
-               ArrayList<String> wsamappings = 
axisOperation.getWSAMappingList();
-               if (wsamappings != null) {
-                       for (int j = 0, size = wsamappings.size(); j < size; 
j++) {
-                               String mapping = (String) wsamappings.get(j);
-                               mapActionToOperation(mapping, axisOperation);
-                       }
-               }
-
-               if (axisOperation.getMessageReceiver() == null) {
-                       
axisOperation.setMessageReceiver(loadDefaultMessageReceiver(
-                                       
axisOperation.getMessageExchangePattern(), this));
-               }
-       }
-
-       private MessageReceiver loadDefaultMessageReceiver(String mepURL,
-                       AxisService service) {
-               MessageReceiver messageReceiver;
-               if (mepURL == null) {
-                       mepURL = WSDL2Constants.MEP_URI_IN_OUT;
-               }
-               if (service != null) {
-                       messageReceiver = service.getMessageReceiver(mepURL);
-                       if (messageReceiver != null) {
-                               return messageReceiver;
-                       }
-               }
-               if (getAxisConfiguration() != null) {
-                       return 
getAxisConfiguration().getMessageReceiver(mepURL);
-               }
-               return null;
-       }
-
-       /**
-        * Gets a copy from module operation.
-        * 
-        * @param axisOperation
-        * @return Returns AxisOperation.
-        * @throws AxisFault
-        */
-       private AxisOperation copyOperation(AxisOperation axisOperation)
-                       throws AxisFault {
-               AxisOperation operation = AxisOperationFactory
-                               .getOperationDescription(axisOperation
-                                               .getMessageExchangePattern());
-
-               
operation.setMessageReceiver(axisOperation.getMessageReceiver());
-               operation.setName(axisOperation.getName());
-
-               Iterator<Parameter> parameters = 
axisOperation.getParameters().iterator();
-
-               while (parameters.hasNext()) {
-                       Parameter parameter = (Parameter) parameters.next();
-
-                       operation.addParameter(parameter);
-               }
-
-               PolicyInclude policyInclude = new PolicyInclude(operation);
-               PolicyInclude axisOperationPolicyInclude = axisOperation
-                               .getPolicyInclude();
-
-               if (axisOperationPolicyInclude != null) {
-                       Policy policy = axisOperationPolicyInclude.getPolicy();
-                       if (policy != null) {
-                               
policyInclude.setPolicy(axisOperationPolicyInclude.getPolicy());
-                       }
-               }
-               operation.setPolicyInclude(policyInclude);
-
-               operation.setWsamappingList(axisOperation.getWSAMappingList());
-               operation.setRemainingPhasesInFlow(axisOperation
-                               .getRemainingPhasesInFlow());
-               
operation.setPhasesInFaultFlow(axisOperation.getPhasesInFaultFlow());
-               
operation.setPhasesOutFaultFlow(axisOperation.getPhasesOutFaultFlow());
-               operation.setPhasesOutFlow(axisOperation.getPhasesOutFlow());
-
-               operation.setOutputAction(axisOperation.getOutputAction());
-               String[] faultActionNames = axisOperation.getFaultActionNames();
-               for (int i = 0; i < faultActionNames.length; i++) {
-                       operation.addFaultAction(faultActionNames[i], 
axisOperation
-                                       .getFaultAction(faultActionNames[i]));
-               }
-
-               return operation;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
org.apache.axis2.description.AxisService#addToengagedModules(javax.xml.namespace.QName)
-        */
-
-       /**
-        * Engages a module. It is required to use this method.
-        * 
-        * @param axisModule
-        * @param engager
-        */
-       public void onEngage(AxisModule axisModule, AxisDescription engager)
-                       throws AxisFault {
-               // adding module operations
-               addModuleOperations(axisModule);
-
-               Iterator<AxisOperation> operations = getOperations();
-               while (operations.hasNext()) {
-                       AxisOperation axisOperation = (AxisOperation) 
operations.next();
-                       axisOperation.engageModule(axisModule, engager);
-               }
-       }
-
-       /**
-        * Maps an alias (such as a SOAPAction, WSA action, or an operation 
name) to
-        * the given AxisOperation. This is used by dispatching (both 
SOAPAction-
-        * and WSAddressing- based dispatching) to figure out which operation a
-        * given message is for. Some notes on restrictions of "action" - A 
null or
-        * empty action will be ignored - An action that is a duplicate and
-        * references an idential operation is allowed - An acton that is a
-        * duplicate and references a different operation is NOT allowed. In 
this
-        * case, the action for the original operation is removed from the alias
-        * table, thus removing the ability to route based on this action. This 
is
-        * necessary to prevent mis-directing incoming message to the wrong
-        * operation based on SOAPAction.
-        * 
-        * Note that an alias could be a SOAPAction, WS-Addressing Action, the
-        * operation name, or some other alias.
-        * 
-        * @see #getOperationByAction(String)
-        * 
-        * @param action
-        *            the alias key
-        * @param axisOperation
-        *            the operation to map to
-        */
-       public void mapActionToOperation(String action, AxisOperation 
axisOperation) {
-               if (action == null || "".equals(action)) {
-                       if (log.isDebugEnabled()) {
-                               log
-                                               .debug("mapActionToOperation: A 
null or empty action cannot be used to map to an operation.");
-                       }
-                       return;
-               }
-               if (log.isDebugEnabled()) {
-                       log
-                                       .debug("mapActionToOperation: Mapping 
Action to Operation: action: "
-                                                       + action
-                                                       + "; operation: "
-                                                       + axisOperation
-                                                       + "named: " + 
axisOperation.getName());
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.apache.axis2.description.AxisService#addToengagedModules(javax.xml.namespace.QName)
+     */
+
+    /**
+     * Engages a module. It is required to use this method.
+     * 
+     * @param axisModule
+     * @param engager
+     */
+    public void onEngage(AxisModule axisModule, AxisDescription engager)
+            throws AxisFault {
+        // adding module operations
+        addModuleOperations(axisModule);
+
+        Iterator<AxisOperation> operations = getOperations();
+        while (operations.hasNext()) {
+            AxisOperation axisOperation = (AxisOperation) operations.next();
+            axisOperation.engageModule(axisModule, engager);
+        }
+    }
+
+    /**
+     * Maps an alias (such as a SOAPAction, WSA action, or an operation name) 
to
+     * the given AxisOperation. This is used by dispatching (both SOAPAction-
+     * and WSAddressing- based dispatching) to figure out which operation a
+     * given message is for. Some notes on restrictions of "action" - A null or
+     * empty action will be ignored - An action that is a duplicate and
+     * references an idential operation is allowed - An acton that is a
+     * duplicate and references a different operation is NOT allowed. In this
+     * case, the action for the original operation is removed from the alias
+     * table, thus removing the ability to route based on this action. This is
+     * necessary to prevent mis-directing incoming message to the wrong
+     * operation based on SOAPAction.
+     * 
+     * Note that an alias could be a SOAPAction, WS-Addressing Action, the
+     * operation name, or some other alias.
+     * 
+     * @see #getOperationByAction(String)
+     * 
+     * @param action
+     *            the alias key
+     * @param axisOperation
+     *            the operation to map to
+     */
+    public void mapActionToOperation(String action, AxisOperation 
axisOperation) {
+        if (action == null || "".equals(action)) {
+            if (log.isDebugEnabled()) {
+                log
+                        .debug("mapActionToOperation: A null or empty action 
cannot be used to map to an operation.");
+            }
+            return;
+        }
+        if (log.isDebugEnabled()) {
+            log
+                    .debug("mapActionToOperation: Mapping Action to Operation: 
action: "
+                            + action
+                            + "; operation: "
+                            + axisOperation
+                            + "named: " + axisOperation.getName());
               log.debug(JavaUtils.callStackToString());
-               }
+        }
                       
-               //If there is already an operation with this action
-               //mapping then we're going to check to see if the
-               //operation says that it's OK to be overridden and
-               //if so, we'll simply ignore the mapping, otherwise
-               //we continue as before
-               AxisOperation mappedOperation = getOperationByAction(action);
-               if ((mappedOperation != null)
-                   && 
(axisOperation.isParameterTrue(DeploymentConstants.TAG_ALLOWOVERRIDE))) {
-                 if (log.isDebugEnabled()) {
-                   log
-                   .debug("addModuleOperations: Mapping already exists for 
action: "
-                          + action
-                          + " to operation: "
-                          + axisOperation
-                          + " named: "
-                          + axisOperation.getName()
-                          + " and an override is allowed, so the mapping is 
being ignored.");
-                   log.debug(JavaUtils.callStackToString());
-                 }
-                 return;               
-               }
-
-               // First check if this action has already been flagged as 
invalid
-               // because it is a duplicate.
-               if (invalidOperationsAliases.contains(action)) {
-                       // This SOAPAction has already been determined to be 
invalid; log a
-                       // message
-                       // and do not add it to the operation alias map.
-                       if (log.isDebugEnabled()) {
-                               log
-                                               .debug("mapActionToOperation: 
The action: "
-                                                               + action
-                                                               + " can not be 
used for operation: "
-                                                               + axisOperation
-                                                               + " with 
operation name: "
-                                                               + 
axisOperation.getName()
-                                                               + " because 
that SOAPAction is not unique for this service.");
-                       }
-                       return;
-               }
-
-               // Check if the action is currently mapping to an operation.
-               AxisOperation currentlyMappedOperation = 
getOperationByAction(action);
-               if (currentlyMappedOperation != null) {
-                       if (currentlyMappedOperation == axisOperation) {
-                               // This maps to the same operation, then it is 
already in the
-                               // alias table, so
-                               // just silently ignore this mapping request.
-                               if (log.isDebugEnabled()) {
-                                       log
-                                                       
.debug("mapActionToOperation: This operation is already mapped to this action: "
-                                                                       + action
-                                                                       + "; 
AxisOperation: "
-                                                                       + 
currentlyMappedOperation
-                                                                       + " 
named: "
-                                                                       + 
currentlyMappedOperation.getName());
-                               }
-                       } else {
-                               // This action is already mapped, but it is to 
a different
-                               // operation. Remove
-                               // the action mapping from the alias table and 
add it to the
-                               // list of invalid mappings
-                               operationsAliasesMap.remove(action);
-                               invalidOperationsAliases.add(action);
-                               if (log.isDebugEnabled()) {
-                                       log
-                                                       
.debug("mapActionToOperation: The action is already mapped to a different "
-                                                                       + 
"operation.  The mapping of the action to any operations will be "
-                                                                       + 
"removed.  Action: "
-                                                                       + action
-                                                                       + "; 
original operation: "
-                                                                       + 
currentlyMappedOperation
-                                                                       + " 
named "
-                                                                       + 
currentlyMappedOperation.getName()
-                                                                       + "; 
new operation: "
-                                                                       + 
axisOperation
-                                                                       + " 
named " + axisOperation.getName());
-                               }
-                       }
-               } else {
-                       operationsAliasesMap.put(action, axisOperation);
-                       // Adding operation name to the mapping table
-                       // 
operationsAliasesMap.put(axisOperation.getName().getLocalPart(),
-                       // axisOperation);
-               }
-       }
-
-       /**
-        * Maps an constant string in the whttp:location to the given operation.
-        * This is used by RequestURIOperationDispatcher based dispatching to 
figure
-        * out which operation it is that a given message is for.
-        * 
-        * @param string
-        *            the constant drawn from whttp:location
-        * @param axisOperation
-        *            the operation to map to
-        */
-       public void addHttpLocationDispatcherString(String string,
-                       AxisOperation axisOperation) {
-               httpLocationDispatcherMap.put(string, axisOperation);
-       }
-
-       /**
-        * Prints the schema to the given output stream.
-        * @param out The output stream for the data to be written. NOTE: the 
stream is not closed after the operation, 
-        *            it is the responsibility of the caller to close the 
stream after usage.
-        * @throws AxisFault
-        */
-       public void printSchema(OutputStream out) throws AxisFault {
-               for (int i = 0; i < schemaList.size(); i++) {
-                       XmlSchema schema = addNameSpaces(i);
+        //If there is already an operation with this action
+        //mapping then we're going to check to see if the
+        //operation says that it's OK to be overridden and
+        //if so, we'll simply ignore the mapping, otherwise
+        //we continue as before
+        AxisOperation mappedOperation = getOperationByAction(action);
+        if ((mappedOperation != null)
+            && 
(axisOperation.isParameterTrue(DeploymentConstants.TAG_ALLOWOVERRIDE))) {
+          if (log.isDebugEnabled()) {
+            log
+            .debug("addModuleOperations: Mapping already exists for action: "
+                   + action
+                   + " to operation: "
+                   + axisOperation
+                   + " named: "
+                   + axisOperation.getName()
+                   + " and an override is allowed, so the mapping is being 
ignored.");
+            log.debug(JavaUtils.callStackToString());
+          }
+          return;        
+        }
+
+        // First check if this action has already been flagged as invalid
+        // because it is a duplicate.
+        if (invalidOperationsAliases.contains(action)) {
+            // This SOAPAction has already been determined to be invalid; log a
+            // message
+            // and do not add it to the operation alias map.
+            if (log.isDebugEnabled()) {
+                log
+                        .debug("mapActionToOperation: The action: "
+                                + action
+                                + " can not be used for operation: "
+                                + axisOperation
+                                + " with operation name: "
+                                + axisOperation.getName()
+                                + " because that SOAPAction is not unique for 
this service.");
+            }
+            return;
+        }
+
+        // Check if the action is currently mapping to an operation.
+        AxisOperation currentlyMappedOperation = getOperationByAction(action);
+        if (currentlyMappedOperation != null) {
+            if (currentlyMappedOperation == axisOperation) {
+                // This maps to the same operation, then it is already in the
+                // alias table, so
+                // just silently ignore this mapping request.
+                if (log.isDebugEnabled()) {
+                    log
+                            .debug("mapActionToOperation: This operation is 
already mapped to this action: "
+                                    + action
+                                    + "; AxisOperation: "
+                                    + currentlyMappedOperation
+                                    + " named: "
+                                    + currentlyMappedOperation.getName());
+                }
+            } else {
+                // This action is already mapped, but it is to a different
+                // operation. Remove
+                // the action mapping from the alias table and add it to the
+                // list of invalid mappings
+                operationsAliasesMap.remove(action);
+                invalidOperationsAliases.add(action);
+                if (log.isDebugEnabled()) {
+                    log
+                            .debug("mapActionToOperation: The action is 
already mapped to a different "
+                                    + "operation.  The mapping of the action 
to any operations will be "
+                                    + "removed.  Action: "
+                                    + action
+                                    + "; original operation: "
+                                    + currentlyMappedOperation
+                                    + " named "
+                                    + currentlyMappedOperation.getName()
+                                    + "; new operation: "
+                                    + axisOperation
+                                    + " named " + axisOperation.getName());
+                }
+            }
+        } else {
+            operationsAliasesMap.put(action, axisOperation);
+            // Adding operation name to the mapping table
+            // operationsAliasesMap.put(axisOperation.getName().getLocalPart(),
+            // axisOperation);
+        }
+    }
+
+    /**
+     * Maps an constant string in the whttp:location to the given operation.
+     * This is used by RequestURIOperationDispatcher based dispatching to 
figure
+     * out which operation it is that a given message is for.
+     * 
+     * @param string
+     *            the constant drawn from whttp:location
+     * @param axisOperation
+     *            the operation to map to
+     */
+    public void addHttpLocationDispatcherString(String string,
+            AxisOperation axisOperation) {
+        httpLocationDispatcherMap.put(string, axisOperation);
+    }
+
+    /**
+     * Prints the schema to the given output stream.
+     * @param out The output stream for the data to be written. NOTE: the 
stream is not closed after the operation, 
+     *            it is the responsibility of the caller to close the stream 
after usage.
+     * @throws AxisFault
+     */
+    public void printSchema(OutputStream out) throws AxisFault {
+        for (int i = 0; i < schemaList.size(); i++) {
+            XmlSchema schema = addNameSpaces(i);
             try {
                 schema.write(out);
             } catch (UnsupportedEncodingException e) {
@@ -996,192 +996,192 @@ public class AxisService extends AxisDes
                 throw new AxisFault(e.getMessage(), e);
             }
         }
-       }
+    }
+
+    public XmlSchema getSchema(int index) {
+        return addNameSpaces(index);
+    }
+
+    /**
+     * Release the list of schema objects. <p/> In some environments, this can
+     * provide significant relief of memory consumption in the java heap, as
+     * long as the need for the schema list has completed.
+     */
+    public void releaseSchemaList() {
+        if (schemaList != null) {
+            // release the schema list
+            schemaList.clear();
+        }
+
+        if (log.isDebugEnabled()) {
+            log.debug("releaseSchemaList: schema list has been released.");
+        }
+    }
+
+    private XmlSchema addNameSpaces(int i) {
+        XmlSchema schema = (XmlSchema) schemaList.get(i);
+        NamespaceMap map = (NamespaceMap) namespaceMap.clone();
+        NamespacePrefixList namespaceContext = schema.getNamespaceContext();
+        String prefixes[] = namespaceContext.getDeclaredPrefixes();
+        for (int j = 0; j < prefixes.length; j++) {
+            String prefix = prefixes[j];
+            map.add(prefix, namespaceContext.getNamespaceURI(prefix));
+        }
+        schema.setNamespaceContext(map);
+        return schema;
+    }
+
+    public void setEPRs(String[] eprs) {
+        this.eprs = eprs;
+    }
+
+    public String[] getEPRs() {
+        if (eprs != null && eprs.length != 0) {
+            return eprs;
+        }
+        eprs = calculateEPRs();
+        return eprs;
+    }
+
+    private String[] calculateEPRs() {
+        try {
+            String requestIP = 
org.apache.axis2.util.Utils.getIpAddress(getAxisConfiguration());
+            return calculateEPRs(requestIP);
+        } catch (SocketException e) {
+            log.error("Cannot get local IP address", e);
+        }
+        return new String[0];
+    }
+
+    private String[] calculateEPRs(String requestIP) {
+        AxisConfiguration axisConfig = getAxisConfiguration();
+        if (axisConfig == null) {
+            return null;
+        }
+        ArrayList<String> eprList = new ArrayList<String>();
+        if (enableAllTransports) {
+            for (Iterator<TransportInDescription> transports = 
axisConfig.getTransportsIn().values()
+                    .iterator(); transports.hasNext();) {
+                TransportInDescription transportIn = (TransportInDescription) 
transports
+                        .next();
+                TransportListener listener = transportIn.getReceiver();
+                if (listener != null) {
+                    try {
+                        EndpointReference[] eprsForService = listener
+                                .getEPRsForService(this.name, requestIP);
+                        if (eprsForService != null) {
+                            for (int i = 0; i < eprsForService.length; i++) {
+                                EndpointReference endpointReference = 
eprsForService[i];
+                                if (endpointReference != null) {
+                                    String address = endpointReference
+                                            .getAddress();
+                                    if (address != null) {
+                                        eprList.add(address);
+                                    }
+                                }
+                            }
+                        }
+                    } catch (AxisFault axisFault) {
+                        log.warn(axisFault.getMessage());
+                    }
+                }
+            }
+        } else {
+            List<String> trs = this.exposedTransports;
+            for (int i = 0; i < trs.size(); i++) {
+                String trsName = (String) trs.get(i);
+                TransportInDescription transportIn = axisConfig
+                        .getTransportIn(trsName);
+                if (transportIn != null) {
+                    TransportListener listener = transportIn.getReceiver();
+                    if (listener != null) {
+                        try {
+                            EndpointReference[] eprsForService = listener
+                                    .getEPRsForService(this.name, requestIP);
+                            if (eprsForService != null) {
+                                for (int j = 0; j < eprsForService.length; 
j++) {
+                                    EndpointReference endpointReference = 
eprsForService[j];
+                                    if (endpointReference != null) {
+                                        String address = endpointReference
+                                                .getAddress();
+                                        if (address != null) {
+                                            eprList.add(address);
+                                        }
+                                    }
+                                }
+                            }
+                        } catch (AxisFault axisFault) {
+                            log.warn(axisFault.getMessage());
+                        }
+                    }
+                }
+            }
+        }
+        eprs = (String[]) eprList.toArray(new String[eprList.size()]);
+        return eprs;
+    }
 
-       public XmlSchema getSchema(int index) {
-               return addNameSpaces(index);
-       }
-
-       /**
-        * Release the list of schema objects. <p/> In some environments, this 
can
-        * provide significant relief of memory consumption in the java heap, as
-        * long as the need for the schema list has completed.
-        */
-       public void releaseSchemaList() {
-               if (schemaList != null) {
-                       // release the schema list
-                       schemaList.clear();
-               }
-
-               if (log.isDebugEnabled()) {
-                       log.debug("releaseSchemaList: schema list has been 
released.");
-               }
-       }
-
-       private XmlSchema addNameSpaces(int i) {
-               XmlSchema schema = (XmlSchema) schemaList.get(i);
-               NamespaceMap map = (NamespaceMap) namespaceMap.clone();
-               NamespacePrefixList namespaceContext = 
schema.getNamespaceContext();
-               String prefixes[] = namespaceContext.getDeclaredPrefixes();
-               for (int j = 0; j < prefixes.length; j++) {
-                       String prefix = prefixes[j];
-                       map.add(prefix, 
namespaceContext.getNamespaceURI(prefix));
-               }
-               schema.setNamespaceContext(map);
-               return schema;
-       }
-
-       public void setEPRs(String[] eprs) {
-               this.eprs = eprs;
-       }
-
-       public String[] getEPRs() {
-               if (eprs != null && eprs.length != 0) {
-                       return eprs;
-               }
-               eprs = calculateEPRs();
-               return eprs;
-       }
-
-       private String[] calculateEPRs() {
-               try {
-                       String requestIP = 
org.apache.axis2.util.Utils.getIpAddress(getAxisConfiguration());
-                       return calculateEPRs(requestIP);
-               } catch (SocketException e) {
-                       log.error("Cannot get local IP address", e);
-               }
-               return new String[0];
-       }
-
-       private String[] calculateEPRs(String requestIP) {
-               AxisConfiguration axisConfig = getAxisConfiguration();
-               if (axisConfig == null) {
-                       return null;
-               }
-               ArrayList<String> eprList = new ArrayList<String>();
-               if (enableAllTransports) {
-                       for (Iterator<TransportInDescription> transports = 
axisConfig.getTransportsIn().values()
-                                       .iterator(); transports.hasNext();) {
-                               TransportInDescription transportIn = 
(TransportInDescription) transports
-                                               .next();
-                               TransportListener listener = 
transportIn.getReceiver();
-                               if (listener != null) {
-                                       try {
-                                               EndpointReference[] 
eprsForService = listener
-                                                               
.getEPRsForService(this.name, requestIP);
-                                               if (eprsForService != null) {
-                                                       for (int i = 0; i < 
eprsForService.length; i++) {
-                                                               
EndpointReference endpointReference = eprsForService[i];
-                                                               if 
(endpointReference != null) {
-                                                                       String 
address = endpointReference
-                                                                               
        .getAddress();
-                                                                       if 
(address != null) {
-                                                                               
eprList.add(address);
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       } catch (AxisFault axisFault) {
-                                               
log.warn(axisFault.getMessage());
-                                       }
-                               }
-                       }
-               } else {
-                       List<String> trs = this.exposedTransports;
-                       for (int i = 0; i < trs.size(); i++) {
-                               String trsName = (String) trs.get(i);
-                               TransportInDescription transportIn = axisConfig
-                                               .getTransportIn(trsName);
-                               if (transportIn != null) {
-                                       TransportListener listener = 
transportIn.getReceiver();
-                                       if (listener != null) {
-                                               try {
-                                                       EndpointReference[] 
eprsForService = listener
-                                                                       
.getEPRsForService(this.name, requestIP);
-                                                       if (eprsForService != 
null) {
-                                                               for (int j = 0; 
j < eprsForService.length; j++) {
-                                                                       
EndpointReference endpointReference = eprsForService[j];
-                                                                       if 
(endpointReference != null) {
-                                                                               
String address = endpointReference
-                                                                               
                .getAddress();
-                                                                               
if (address != null) {
-                                                                               
        eprList.add(address);
-                                                                               
}
-                                                                       }
-                                                               }
-                                                       }
-                                               } catch (AxisFault axisFault) {
-                                                       
log.warn(axisFault.getMessage());
-                                               }
-                                       }
-                               }
-                       }
-               }
-               eprs = (String[]) eprList.toArray(new String[eprList.size()]);
-               return eprs;
-       }
-
-       /**
-        * Prints the given definition object.
-        * @param definition The definition.
-        * @param out The output stream the data to be written to. NOTE: the 
stream is not closed after the operation, 
-        *            it is the responsibility of the caller to close the 
stream after usage.
-        * @param requestIP The host IP address.
-        * @throws AxisFault
-        * @throws WSDLException
-        */
-       private synchronized void printDefinitionObject(Definition definition, 
OutputStream out,
-                       String requestIP) throws AxisFault, WSDLException {
+    /**
+     * Prints the given definition object.
+     * @param definition The definition.
+     * @param out The output stream the data to be written to. NOTE: the 
stream is not closed after the operation, 
+     *            it is the responsibility of the caller to close the stream 
after usage.
+     * @param requestIP The host IP address.
+     * @throws AxisFault
+     * @throws WSDLException
+     */
+    private synchronized void printDefinitionObject(Definition definition, 
OutputStream out,
+            String requestIP) throws AxisFault, WSDLException {
         // Synchronized this method to fix the NullPointer exception occurred 
when load is high.
         // This error happens because wsdl4j is not thread safe and we are 
using same WSDL Definition for printing the
         // WSDL.
         // Please refer AXIS2-4511,AXIS2-4517,AXIS2-3276.
-               if (isModifyUserWSDLPortAddress()) {
-                       setPortAddress(definition, requestIP);
-               }
-               if (!wsdlImportLocationAdjusted) {
-                       changeImportAndIncludeLocations(definition);
-                       wsdlImportLocationAdjusted = true;
-               }
-               WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
-               writer.writeWSDL(definition, out);
-       }
-
-       public void printUserWSDL(OutputStream out, String wsdlName)
-                       throws AxisFault {
-                       printUserWSDL(out, wsdlName, null);
-       }
-
-       /**
-        * Prints the user WSDL.
-        * @param out The output stream for the data to be written. NOTE: the 
stream is not closed after the operation, 
-        *            it is the responsibility of the caller to close the 
stream after usage.
-        * @param wsdlName The name of the WSDL.
-        * @param ip The host IP address.
-        * @throws AxisFault
-        */
-       public void printUserWSDL(OutputStream out, String wsdlName, String ip)
-                       throws AxisFault {
-               Definition definition = null;
-               // first find the correct wsdl definition
-               Parameter wsdlParameter = 
getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
-               if (wsdlParameter != null) {
-                       definition = (Definition) wsdlParameter.getValue();
-               }
-
-               if (definition != null) {
-                       try {
-                               
printDefinitionObject(getWSDLDefinition(definition, wsdlName),
-                                               out, ip);
-                       } catch (WSDLException e) {
-                               throw AxisFault.makeFault(e);
-                       }
-               } else {
-                       printWSDLError(out);
-               }
+        if (isModifyUserWSDLPortAddress()) {
+            setPortAddress(definition, requestIP);
+        }
+        if (!wsdlImportLocationAdjusted) {
+            changeImportAndIncludeLocations(definition);
+            wsdlImportLocationAdjusted = true;
+        }
+        WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
+        writer.writeWSDL(definition, out);
+    }
+
+    public void printUserWSDL(OutputStream out, String wsdlName)
+            throws AxisFault {
+            printUserWSDL(out, wsdlName, null);
+    }
 
-       }
-       
+    /**
+     * Prints the user WSDL.
+     * @param out The output stream for the data to be written. NOTE: the 
stream is not closed after the operation, 
+     *            it is the responsibility of the caller to close the stream 
after usage.
+     * @param wsdlName The name of the WSDL.
+     * @param ip The host IP address.
+     * @throws AxisFault
+     */
+    public void printUserWSDL(OutputStream out, String wsdlName, String ip)
+            throws AxisFault {
+        Definition definition = null;
+        // first find the correct wsdl definition
+        Parameter wsdlParameter = 
getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
+        if (wsdlParameter != null) {
+            definition = (Definition) wsdlParameter.getValue();
+        }
+
+        if (definition != null) {
+            try {
+                printDefinitionObject(getWSDLDefinition(definition, wsdlName),
+                        out, ip);
+            } catch (WSDLException e) {
+                throw AxisFault.makeFault(e);
+            }
+        } else {
+            printWSDLError(out);
+        }
+
+    }
+    
     public void printUserWSDL2(OutputStream out, String wsdlName, String ip) 
throws AxisFault {
         Description description = null;
         // first find the correct wsdl definition
@@ -1199,52 +1199,52 @@ public class AxisService extends AxisDes
 
 }
 
-       /**
-        * find the defintion object for given name
-        * 
-        * @param parentDefinition
-        * @param name
-        * @return wsdl definition
-        */
-       private Definition getWSDLDefinition(Definition parentDefinition,
-                       String name) {
-
-               if (name == null)
-                       return parentDefinition;
-
-               Definition importedDefinition = null;
-               Iterator iter = 
parentDefinition.getImports().values().iterator();
-               Vector values = null;
-               Import wsdlImport = null;
-               for (; iter.hasNext();) {
-                       values = (Vector) iter.next();
-                       for (Iterator valuesIter = values.iterator(); 
valuesIter.hasNext();) {
-                               wsdlImport = (Import) valuesIter.next();
-                               if (wsdlImport.getLocationURI().endsWith(name)) 
{
-                                       importedDefinition = 
wsdlImport.getDefinition();
-                                       break;
-                               } else {
-                                       importedDefinition = 
getWSDLDefinition(wsdlImport
-                                                       .getDefinition(), name);
-                               }
-                               if (importedDefinition != null) {
-                                       break;
-                               }
-                       }
-                       if (importedDefinition != null) {
-                               break;
-                       }
-               }
-               return importedDefinition;
-       }
-
-       /**
-        * this procesdue recursively adjust the wsdl imports locations and the
-        * schmea import and include locations.
-        * 
-        * @param definition
-        */
-       private void changeImportAndIncludeLocations(Definition definition) 
throws AxisFault {
+    /**
+     * find the defintion object for given name
+     * 
+     * @param parentDefinition
+     * @param name
+     * @return wsdl definition
+     */
+    private Definition getWSDLDefinition(Definition parentDefinition,
+            String name) {
+
+        if (name == null)
+            return parentDefinition;
+
+        Definition importedDefinition = null;
+        Iterator iter = parentDefinition.getImports().values().iterator();
+        Vector values = null;
+        Import wsdlImport = null;
+        for (; iter.hasNext();) {
+            values = (Vector) iter.next();
+            for (Iterator valuesIter = values.iterator(); 
valuesIter.hasNext();) {
+                wsdlImport = (Import) valuesIter.next();
+                if (wsdlImport.getLocationURI().endsWith(name)) {
+                    importedDefinition = wsdlImport.getDefinition();
+                    break;
+                } else {
+                    importedDefinition = getWSDLDefinition(wsdlImport
+                            .getDefinition(), name);
+                }
+                if (importedDefinition != null) {
+                    break;
+                }
+            }
+            if (importedDefinition != null) {
+                break;
+            }
+        }
+        return importedDefinition;
+    }
+
+    /**
+     * this procesdue recursively adjust the wsdl imports locations and the
+     * schmea import and include locations.
+     * 
+     * @param definition
+     */
+    private void changeImportAndIncludeLocations(Definition definition) throws 
AxisFault {
 
         // adjust the schema locations in types section
         Types types = definition.getTypes();
@@ -1279,13 +1279,13 @@ public class AxisService extends AxisDes
 
     }
 
-       /**
-        * change the schema Location in the elemment
-        * 
-        * @param element
-        */
+    /**
+     * change the schema Location in the elemment
+     * 
+     * @param element
+     */
 
-       private void changeLocations(Element element) throws AxisFault {
+    private void changeLocations(Element element) throws AxisFault {
         NodeList nodeList = element.getChildNodes();
         String tagName;
         for (int i = 0; i < nodeList.getLength(); i++) {
@@ -1296,14 +1296,14 @@ public class AxisService extends AxisDes
         }
     }
 
-       private void updateSchemaLocation(XmlSchema schema) throws AxisFault {
+    private void updateSchemaLocation(XmlSchema schema) throws AxisFault {
         for (XmlSchemaExternal xmlSchemaExternal : schema.getExternals()) {
             XmlSchema s = xmlSchemaExternal.getSchema();
             updateSchemaLocation(s, xmlSchemaExternal);
         }
     }
 
-       private void updateSchemaLocation(XmlSchema s, XmlSchemaExternal 
xmlSchemaExternal) throws AxisFault {
+    private void updateSchemaLocation(XmlSchema s, XmlSchemaExternal 
xmlSchemaExternal) throws AxisFault {
         if (s != null) {
             String schemaLocation = xmlSchemaExternal.getSchemaLocation();
 
@@ -1313,8 +1313,8 @@ public class AxisService extends AxisDes
             }
         }
     }
-          
-       private void processImport(Node importNode) throws AxisFault {
+       
+    private void processImport(Node importNode) throws AxisFault {
         NamedNodeMap nodeMap = importNode.getAttributes();
         Node attribute;
         String attributeValue;
@@ -1353,38 +1353,38 @@ public class AxisService extends AxisDes
     }
 
     /**
-        * Produces a XSD for this AxisService and prints it to the specified
-        * OutputStream.
-        * 
-        * @param out
-        *            destination stream, NOTE: the stream is not closed after 
the operation, 
-        *            it is the responsibility of the caller to close the 
stream after usage.
-        * @param xsd
-        *            schema name
-        * @return -1 implies not found, 0 implies redirect to root, 1 implies
-        *         found/printed a schema
-        * @throws IOException
-        */
-       public int printXSD(OutputStream out, String xsd) throws IOException {
-
-               // If we find a SchemaSupplier, use that
-               SchemaSupplier supplier = (SchemaSupplier) 
getParameterValue("SchemaSupplier");
-               if (supplier != null) {
-                       XmlSchema schema = supplier.getSchema(this, xsd);
-                       if (schema != null) {
-                           updateSchemaLocation(schema);
-                               schema.write(new OutputStreamWriter(out, 
"UTF8"));
-                               out.flush();
-                               return 1;
-                       }
-               }
-
-               // call the populator
-               populateSchemaMappings();
-               Map schemaMappingtable = getSchemaMappingTable();
-               ArrayList<XmlSchema> schemas = getSchema();
+     * Produces a XSD for this AxisService and prints it to the specified
+     * OutputStream.
+     * 
+     * @param out
+     *            destination stream, NOTE: the stream is not closed after the 
operation, 
+     *            it is the responsibility of the caller to close the stream 
after usage.
+     * @param xsd
+     *            schema name
+     * @return -1 implies not found, 0 implies redirect to root, 1 implies
+     *         found/printed a schema
+     * @throws IOException
+     */
+    public int printXSD(OutputStream out, String xsd) throws IOException {
+
+        // If we find a SchemaSupplier, use that
+        SchemaSupplier supplier = (SchemaSupplier) 
getParameterValue("SchemaSupplier");
+        if (supplier != null) {
+            XmlSchema schema = supplier.getSchema(this, xsd);
+            if (schema != null) {
+                updateSchemaLocation(schema);
+                schema.write(new OutputStreamWriter(out, "UTF8"));
+                out.flush();
+                return 1;
+            }
+        }
 
-               // a name is present - try to pump the requested schema
+        // call the populator
+        populateSchemaMappings();
+        Map schemaMappingtable = getSchemaMappingTable();
+        ArrayList<XmlSchema> schemas = getSchema();
+
+        // a name is present - try to pump the requested schema
         if ((xsd != null) && (!"".equals(xsd))) {
             XmlSchema schema = (XmlSchema) schemaMappingtable.get(xsd);
             if (schema == null) {
@@ -1416,102 +1416,102 @@ public class AxisService extends AxisDes
                     return -1;
                 }
             }
-               } else if (schemas.size() > 1) {
-                       // multiple schemas are present and the user specified
-                       // no name - in this case we cannot possibly pump a 
schema
-                       // so redirect to the service root
-                       return 0;
-               } else {
-                       // user specified no name and there is only one schema
-                       // so pump that out
-                       ArrayList<XmlSchema> list = getSchema();
-                       if (list.size() > 0) {
-                               XmlSchema schema = getSchema(0);
-                               if (schema != null) {
-                                       schema.write(new 
OutputStreamWriter(out, "UTF8"));
-                                       out.flush();
-                               }
-                       } else {
-                               String xsdNotFound = "<error>"
-                                               + "<description>Unable to 
access schema for this service</description>"
-                                               + "</error>";
-                               out.write(xsdNotFound.getBytes());
-                               out.flush();
-                       }
-               }
-               return 1;
-       }
-
-       /**
-        * Produces a WSDL for this AxisService and prints it to the specified
-        * OutputStream.
-        * 
-        * @param out
-        *            destination stream. The WSDL will be sent here. NOTE: the 
stream is not closed after the operation, 
-        *            it is the responsibility of the caller to close the 
stream after usage.
-        * @param requestIP
-        *            the hostname the WSDL request was directed at. This 
should be
-        *            the address that appears in the generated WSDL.
-        * @throws AxisFault
-        *             if an error occurs
-        */
-       public void printWSDL(OutputStream out, String requestIP) throws 
AxisFault {
-               // If we're looking for pre-existing WSDL, use that.
-               if (isUseUserWSDL()) {
-                       printUserWSDL(out, null, requestIP);
-                       return;
-               }
-
-               // If we find a WSDLSupplier with WSDL 1.1 content, use that
-               WSDLSupplier supplier = getUserDefinedWSDLSupplier("wsdl");
-               if(supplier == null){
-                       supplier = (WSDLSupplier) 
getParameterValue(Constants.WSDL_SUPPLIER_PARAM);     
-                       if(supplier instanceof WSDL11SupplierTemplate){
-                           ((WSDL11SupplierTemplate)supplier).init(this);
-                       }
-               }                       
-               if (supplier != null) {
-                       Object wsdlContent = supplier.getWSDL(this);
-                       if( wsdlContent instanceof Definition){
-                               try {
-                                       Definition definition = (Definition) 
wsdlContent;
-                                       if (definition != null) {
-                                           
changeImportAndIncludeLocations(definition);
-                           printDefinitionObject(getWSDLDefinition(definition, 
null),
-                                                               out, requestIP);
-                                       }
-                               } catch (Exception e) {
-                                       printWSDLError(out, e);
-                               }
-                       // wsdlContent can be a OMElement                       
-                       } else if (wsdlContent instanceof OMElement) {
-                               OMElement wsdlElement = (OMElement) wsdlContent;
-                               QName wsdlName = wsdlElement.getQName();
-                               if (wsdlName != null
-                                               && 
wsdlName.getLocalPart().equals("definitions")
-                                               && 
wsdlName.getNamespaceURI().equals("http://schemas.xmlsoap.org/wsdl/";)) {
-                                       // TODO How to address port number/ ip 
name customization
-                                       // here ?
-                                       try {
-                                               
XMLPrettyPrinter.prettify(wsdlElement, out);
-                                               out.flush();
-                                       } catch (Exception e) {
-                                               throw AxisFault.makeFault(e);
-                                       }
-                               }
-                       }
-                       return;
-               }
+        } else if (schemas.size() > 1) {
+            // multiple schemas are present and the user specified
+            // no name - in this case we cannot possibly pump a schema
+            // so redirect to the service root
+            return 0;
+        } else {
+            // user specified no name and there is only one schema
+            // so pump that out
+            ArrayList<XmlSchema> list = getSchema();
+            if (list.size() > 0) {
+                XmlSchema schema = getSchema(0);
+                if (schema != null) {
+                    schema.write(new OutputStreamWriter(out, "UTF8"));
+                    out.flush();
+                }
+            } else {
+                String xsdNotFound = "<error>"
+                        + "<description>Unable to access schema for this 
service</description>"
+                        + "</error>";
+                out.write(xsdNotFound.getBytes());
+                out.flush();
+            }
+        }
+        return 1;
+    }
+
+    /**
+     * Produces a WSDL for this AxisService and prints it to the specified
+     * OutputStream.
+     * 
+     * @param out
+     *            destination stream. The WSDL will be sent here. NOTE: the 
stream is not closed after the operation, 
+     *            it is the responsibility of the caller to close the stream 
after usage.
+     * @param requestIP
+     *            the hostname the WSDL request was directed at. This should be
+     *            the address that appears in the generated WSDL.
+     * @throws AxisFault
+     *             if an error occurs
+     */
+    public void printWSDL(OutputStream out, String requestIP) throws AxisFault 
{
+        // If we're looking for pre-existing WSDL, use that.
+        if (isUseUserWSDL()) {
+            printUserWSDL(out, null, requestIP);
+            return;
+        }
+
+        // If we find a WSDLSupplier with WSDL 1.1 content, use that
+        WSDLSupplier supplier = getUserDefinedWSDLSupplier("wsdl");
+        if(supplier == null){
+            supplier = (WSDLSupplier) 
getParameterValue(Constants.WSDL_SUPPLIER_PARAM);    
+            if(supplier instanceof WSDL11SupplierTemplate){
+                ((WSDL11SupplierTemplate)supplier).init(this);
+            }
+        }            
+        if (supplier != null) {
+            Object wsdlContent = supplier.getWSDL(this);
+            if( wsdlContent instanceof Definition){
+                try {
+                    Definition definition = (Definition) wsdlContent;
+                    if (definition != null) {
+                        changeImportAndIncludeLocations(definition);
+                        printDefinitionObject(getWSDLDefinition(definition, 
null),
+                                out, requestIP);
+                    }
+                } catch (Exception e) {
+                    printWSDLError(out, e);
+                }
+            // wsdlContent can be a OMElement            
+            } else if (wsdlContent instanceof OMElement) {
+                OMElement wsdlElement = (OMElement) wsdlContent;
+                QName wsdlName = wsdlElement.getQName();
+                if (wsdlName != null
+                        && wsdlName.getLocalPart().equals("definitions")
+                        && 
wsdlName.getNamespaceURI().equals("http://schemas.xmlsoap.org/wsdl/";)) {
+                    // TODO How to address port number/ ip name customization
+                    // here ?

[... 3395 lines stripped ...]

Reply via email to