You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2008/03/04 15:31:52 UTC

svn commit: r633485 [5/7] - in /webservices/axis2/trunk/java/modules: integration/test-resources/ integration/test-resources/ComplexDataTypes/ integration/test/org/apache/axis2/deployment/ integration/test/org/apache/axis2/engine/ integration/test/org/...

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java?rev=633485&r1=633484&r2=633485&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.java Tue Mar  4 06:31:32 2008
@@ -17,7 +17,6 @@
  * under the License.
  */
 
-
 package org.apache.axis2.description;
 
 import java.io.File;
@@ -119,2632 +118,2764 @@
  */
 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 endpointMap = new HashMap();
-
-    /*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 messageElementQNameToOperationMap = new HashMap();
-
-    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 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 operationsAliasesMap = null;
-
-    // Collection of aliases that are invalid for this service because they are duplicated across
-    // multiple operations under this service.
-    private List invalidOperationsAliases = null;
-//    private HashMap operations = new HashMap();
-
-    // to store module ref at deploy time parsing
-    private ArrayList moduleRefs = null;
-
-    // to keep the time that last update time of the service
-    private long lastupdate;
-    private HashMap moduleConfigmap;
-    private String name;
-    private ClassLoader serviceClassLoader;
-
-    //to keep the XMLSchema getting either from WSDL or java2wsdl
-    private ArrayList 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 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 exposedTransports = new ArrayList();
-
-    //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 boolean clientSide = false;
-
-    //To keep a ref to ObjectSupplier instance
-    private ObjectSupplier objectSupplier;
-
-    // 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 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;
-
-    // names list keep to preserve the parameter order
-    private List operationsNameList;
-
-    private String[] eprs;
-    private boolean customWsdl = false;
-
-    public AxisEndpoint getEndpoint(String key) {
-        return (AxisEndpoint) endpointMap.get(key);
-    }
-
-    public void addEndpoint(String key, AxisEndpoint axisEndpoint) {
-        this.endpointMap.put(key, axisEndpoint);
-    }
-
-    /**
-     * @deprecated Use AddressingHelper.getAddressingRequirementParemeterValue
-     */
-    public String getWSAddressingFlag() {
-        return AddressingHelper.getAddressingRequirementParemeterValue(this);
-    }
-
-    /**
-     * @deprecated Use AddressingHelper.setAddressingRequirementParemeterValue
-     */
-    public void setWSAddressingFlag(String ar) {
-    	AddressingHelper.setAddressingRequirementParemeterValue(this, ar);
-    }
-
-    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();
-        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() {
-                    public Object run() {
-                        return Thread.currentThread().getContextClassLoader();
-                    }
-                });
-        objectSupplier = new DefaultObjectSupplier();
-        dataLocators = new HashMap();
-        dataLocatorClassNames = new HashMap();
-
-    }
-
-    /**
-     * @return name of the port type
-     * @deprecated use AxisService#getEndpointName() instead.
-     */
-    public String getPortTypeName() {
-        return endpointName;
-    }
-
-    /**
-     * @param portTypeName
-     * @deprecated use AxisService#setEndpointName() instead
-     */
-    public void setPortTypeName(String portTypeName) {
-        this.endpointName = portTypeName;
-    }
-
-    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 addMessageReceiver(String mepURI, MessageReceiver messageReceiver) {
-        if (WSDL2Constants.MEP_URI_IN_ONLY.equals(mepURI) ||
-            WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY.equals(mepURI) ||
-            WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_ONLY.equals(mepURI)) {
-            messageReceivers
-                    .put(WSDL2Constants.MEP_URI_IN_ONLY, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_ONLY, messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_OUT_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_ONLY.equals(mepURI)) {
-            messageReceivers
-                    .put(WSDL2Constants.MEP_URI_OUT_ONLY, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_ONLY, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_ONLY, messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_IN_OUT.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_OUT.equals(mepURI)) {
-            messageReceivers
-                    .put(WSDL2Constants.MEP_URI_IN_OUT, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_OUT, messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_OPTIONAL_OUT.equals(mepURI)) {
-            messageReceivers.put(WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_IN_OPTIONAL_OUT,
-                                 messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_OUT_IN.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_IN.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_IN.equals(mepURI)) {
-            messageReceivers
-                    .put(WSDL2Constants.MEP_URI_OUT_IN, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_IN, messageReceiver);
-            messageReceivers
-                    .put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_IN, messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_OPTIONAL_IN.equals(mepURI)) {
-            messageReceivers.put(WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_OUT_OPTIONAL_IN,
-                                 messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)) {
-            messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_ROBUST_OUT_ONLY,
-                                 messageReceiver);
-        } else if (WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) ||
-                   WSDLConstants.WSDL20_2004_Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)) {
-            messageReceivers.put(WSDL2Constants.MEP_URI_ROBUST_IN_ONLY,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY,
-                                 messageReceiver);
-            messageReceivers.put(WSDLConstants.WSDL20_2004_Constants.MEP_URI_ROBUST_IN_ONLY,
-                                 messageReceiver);
-        } else {
-            messageReceivers.put(mepURI, messageReceiver);
-        }
-    }
-
-    public MessageReceiver getMessageReceiver(String mepURL) {
-        return (MessageReceiver) 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 map = module.getOperations();
-        Collection col = map.values();
-        PhaseResolver phaseResolver = new PhaseResolver(getAxisConfiguration());
-        for (Iterator iterator = col.iterator(); iterator.hasNext();) {
-            AxisOperation axisOperation = copyOperation((AxisOperation) iterator.next());
-            if (this.getOperation(axisOperation.getName()) == null) {
-                ArrayList 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 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);
-    }
-
-    /*
-     * (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);
-
-        Iterator 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 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 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 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());
-        }
-
-        // 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);
-    }
-
-    public void printSchema(OutputStream out) throws AxisFault {
-        for (int i = 0; i < schemaList.size(); i++) {
-            XmlSchema schema = addNameSpaces(i);
-            schema.write(out);
-        }
-    }
-
-    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() throws AxisFault {
-        if (eprs != null && eprs.length != 0) {
-            return eprs;
-        }
-        eprs = calculateEPRs();
-        return eprs;
-    }
-
-    private String[] calculateEPRs(){
-        try {
-            String requestIP = HttpUtils.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 eprList = new ArrayList();
-        if (enableAllTransports) {
-            for (Iterator 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 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;
-    }
-
-    private void printDefinitionObject(Definition definition, OutputStream out, String requestIP)
-            throws AxisFault, WSDLException {
-        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 {
-        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, null);
-            } catch (WSDLException e) {
-                throw AxisFault.makeFault(e);
-            }
-        } else {
-            printWSDLError(out);
-        }
-
-    }
-
-    /**
-     * find the definition 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){
-
-        //adjust the schema locations in types section
-        Types types = definition.getTypes();
-        if (types != null) {
-            List extensibilityElements = types.getExtensibilityElements();
-            Object extensibilityElement = null;
-            Schema schema = null;
-            for (Iterator iter = extensibilityElements.iterator(); iter.hasNext();) {
-                extensibilityElement = iter.next();
-                if (extensibilityElement instanceof Schema) {
-                    schema = (Schema) extensibilityElement;
-                    changeLocations(schema.getElement());
-                }
-            }
-        }
-
-        Iterator iter = definition.getImports().values().iterator();
-        Vector values = null;
-        Import wsdlImport = null;
-        String originalImprotString = null;
-        for (; iter.hasNext();) {
-            values = (Vector) iter.next();
-            for (Iterator valuesIter = values.iterator(); valuesIter.hasNext();) {
-                wsdlImport = (Import) valuesIter.next();
-                originalImprotString = wsdlImport.getLocationURI();
-                if (originalImprotString.indexOf("://") == -1){
-                    wsdlImport.setLocationURI(this.name + "?wsdl=" + originalImprotString);
-                }
-                changeImportAndIncludeLocations(wsdlImport.getDefinition());
-            }
-        }
-    }
-
-    /**
-     * change the schema Location in the elemment
-     * @param element
-     */
-
-    private void changeLocations(Element element) {
-        NodeList nodeList = element.getChildNodes();
-        String tagName;
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            tagName = nodeList.item(i).getLocalName();
-            if (IMPORT_TAG.equals(tagName) || INCLUDE_TAG.equals(tagName)) {
-                processImport(nodeList.item(i));
-            }
-        }
-    }
-
-    private void processImport(Node importNode) {
-        NamedNodeMap nodeMap = importNode.getAttributes();
-        Node attribute;
-        String attributeValue;
-        for (int i = 0; i < nodeMap.getLength(); i++) {
-            attribute = nodeMap.item(i);
-            if (attribute.getNodeName().equals("schemaLocation")) {
-                attributeValue = attribute.getNodeValue();
-                if (attributeValue.indexOf("://") == -1) {
-                    attribute.setNodeValue(this.name + "?xsd=" + attributeValue);
-                }
-            }
-        }
-    }
-
-    /**
-     * Produces a XSD for this AxisService and prints it to the specified OutputStream.
-     * 
-     * @param out destination stream.
-     * @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) {
-                    schema.write(new OutputStreamWriter(out, "UTF8"));
-                    out.flush();
-                    out.close();
-                    return 1;
-                }
-        }
-
-        //call the populator
-        populateSchemaMappings();
-        Map schemaMappingtable =
-                getSchemaMappingTable();
-        ArrayList schemas = getSchema();
-
-        //a name is present - try to pump the requested schema
-        if (!"".equals(xsd)) {
-            XmlSchema schema =
-                    (XmlSchema) schemaMappingtable.get(xsd);
-            if (schema == null) {
-                int dotIndex = xsd.indexOf('.');
-                if (dotIndex > 0) {
-                    String schemaKey = xsd.substring(0,dotIndex);
-                    schema = (XmlSchema) schemaMappingtable.get(schemaKey);
-                }
-            }
-            if (schema != null) {
-                //schema is there - pump it outs
-                schema.write(new OutputStreamWriter(out, "UTF8"));
-                out.flush();
-                out.close();
-            } else {
-                InputStream in = getClassLoader()
-                        .getResourceAsStream(DeploymentConstants.META_INF + "/" + xsd);
-                if (in != null) {
-                    out.write(IOUtils.getStreamAsByteArray(in));
-                    out.flush();
-                    out.close();
-                } else {
-                    // Can't find the schema
-                    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 list = getSchema();
-            if (list.size() > 0) {
-                XmlSchema schema = getSchema(0);
-                if (schema != null) {
-                    schema.write(new OutputStreamWriter(out, "UTF8"));
-                    out.flush();
-                    out.close();
-                }
-            } else {
-                String xsdNotFound = "<error>" +
-                        "<description>Unable to access schema for this service</description>" +
-                        "</error>";
-                out.write(xsdNotFound.getBytes());
-                out.flush();
-                out.close();
-            }
-        }
-        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.
-     * @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);
-            return;
-        }
-
-        // If we find a WSDLSupplier, use that
-        WSDLSupplier supplier = (WSDLSupplier)getParameterValue("WSDLSupplier");
-        if (supplier != null) {
-            try {
-                Definition definition = supplier.getWSDL(this);
-                if (definition != null) {
-                    printDefinitionObject(getWSDLDefinition(definition, null), out, requestIP);
-                }
-            } catch (Exception e) {
-                printWSDLError(out, e);
-            }
-            return;
-        }
-
-        // Otherwise, generate WSDL ourselves
-        String[] eprArray = requestIP == null ? new String[] { this.endpointName } :
-                calculateEPRs(requestIP);
-        getWSDL(out, eprArray);
-    }
-
-    /**
-     * Print the WSDL with a default URL. This will be called only during codegen time.
-     *
-     * @param out
-     * @throws AxisFault
-     */
-    public void printWSDL(OutputStream out) throws AxisFault {
-        printWSDL(out, null);
-    }
-
-    private void setPortAddress(Definition definition) throws AxisFault {
-        setPortAddress(definition, null);
-    }
-
-    private void setPortAddress(Definition definition, String requestIP) throws AxisFault {
-        Iterator serviceItr = definition.getServices().values().iterator();
-        while (serviceItr.hasNext()) {
-            Service serviceElement = (Service) serviceItr.next();
-            Iterator portItr = serviceElement.getPorts().values().iterator();
-            while (portItr.hasNext()) {
-                Port port = (Port) portItr.next();
-                List list = port.getExtensibilityElements();
-                for (int i = 0; i < list.size(); i++) {
-                    Object extensibilityEle = list.get(i);
-                    if (extensibilityEle instanceof SOAPAddress) {
-                        SOAPAddress soapAddress = (SOAPAddress) extensibilityEle;
-                        String existingAddress = soapAddress.getLocationURI();
-                        if (existingAddress == null || existingAddress.equals("REPLACE_WITH_ACTUAL_URL")) {
-                            ((SOAPAddress) extensibilityEle).setLocationURI(
-                                    getEPRs()[0]);
-                        } else {
-                            if (requestIP == null) {
-                                ((SOAPAddress) extensibilityEle).setLocationURI(
-                                        getLocationURI(getEPRs(), existingAddress));
-                            } else {
-                                ((SOAPAddress) extensibilityEle).setLocationURI(
-                                        getLocationURI(calculateEPRs(requestIP), existingAddress));
-                            }
-                        }
-                    } else if (extensibilityEle instanceof SOAP12Address){
-                        SOAP12Address soapAddress = (SOAP12Address) extensibilityEle;
-                        String exsistingAddress = soapAddress.getLocationURI();
-                        if (requestIP == null) {
-                            ((SOAP12Address) extensibilityEle).setLocationURI(
-                                    getLocationURI(getEPRs(), exsistingAddress));
-                        } else {
-                            ((SOAP12Address) extensibilityEle).setLocationURI(
-                                    getLocationURI(calculateEPRs(requestIP), exsistingAddress));
-                        }
-                    } else if (extensibilityEle instanceof HTTPAddress){
-                        HTTPAddress httpAddress = (HTTPAddress) extensibilityEle;
-                        String exsistingAddress = httpAddress.getLocationURI();
-                        if (requestIP == null) {
-                            ((HTTPAddress) extensibilityEle).setLocationURI(
-                                    getLocationURI(getEPRs(), exsistingAddress));
-                        } else {
-                            ((HTTPAddress) extensibilityEle).setLocationURI(
-                                    getLocationURI(calculateEPRs(requestIP), exsistingAddress));
-                        }
-                    }
-                    //TODO : change the Endpoint refrence addess as well.
-                }
-            }
-        }
-    }
-
-    /**
-     * this method returns the new IP address corresponding to the
-     * already existing ip
-     * @param eprs
-     * @param epr
-     * @return corresponding Ip address
-     */
-    private String getLocationURI(String[] eprs, String epr) throws AxisFault {
-        String returnIP = null;
-        if (epr != null) {
-            if (epr.indexOf(":") > -1) {
-                String existingProtocol = epr.substring(0, epr.indexOf(":")).trim();
-                String eprProtocol;
-                for (int i = 0; i < eprs.length; i++) {
-                    eprProtocol = eprs[i].substring(0, eprs[i].indexOf(":")).trim();
-                    if (eprProtocol.equals(existingProtocol)) {
-                        returnIP = eprs[i];
-                        break;
-                    }
-                }
-                if (returnIP != null) {
-                    return returnIP;
-                } else {
-                    throw new AxisFault("Server does not have an epr for the wsdl epr==>" + epr);
-                }
-            } else {
-                throw new AxisFault("invalid epr is given epr ==> " + epr);
-            }
-        } else {
-            throw new AxisFault("No epr is given in the wsdl port");
-        }
-    }
-
-    private void getWSDL(OutputStream out, String[] serviceURL) throws AxisFault {
-        // Retrieve WSDL using the same data retrieval path for GetMetadata request.
-        DataRetrievalRequest request = new DataRetrievalRequest();
-        request.putDialect(DRConstants.SPEC.DIALECT_TYPE_WSDL);
-        request.putOutputForm(OutputForm.INLINE_FORM);
-
-        MessageContext context = new MessageContext();
-        context.setAxisService(this);
-        context.setTo(new EndpointReference(serviceURL[0]));
-
-        Data[] result = getData(request, context);
-        OMElement wsdlElement;
-        if (result != null && result.length > 0) {
-            wsdlElement = (OMElement) (result[0].getData());
-            try {
-                XMLPrettyPrinter.prettify(wsdlElement, out);
-                out.flush();
-                out.close();
-            } catch (Exception e) {
-                throw AxisFault.makeFault(e);
-            }
-        }
-    }
-
-    private void printWSDLError(OutputStream out) throws AxisFault {
-        printWSDLError(out, null);
-    }
-
-    private void printWSDLError(OutputStream out, Exception e) throws AxisFault {
-        try {
-            String wsdlntfound = "<error>" +
-                                 "<description>Unable to generate WSDL 1.1 for this service</description>" +
-                                 "<reason>If you wish Axis2 to automatically generate the WSDL 1.1, then please +" +
-                                 "set useOriginalwsdl as false in your services.xml</reason>";
-            out.write(wsdlntfound.getBytes());
-            if (e != null) {
-                PrintWriter pw = new PrintWriter(out);
-                e.printStackTrace(pw);
-                pw.flush();
-            }
-            out.write("</error>".getBytes());
-            out.flush();
-            out.close();
-        } catch (IOException ex) {
-            throw AxisFault.makeFault(ex);
-        }
-    }
-
-    /**
-     * Print the WSDL2.0 with a default URL. This will be called only during codegen time.
-     *
-     * @param out
-     * @throws AxisFault
-     */
-    public void printWSDL2(OutputStream out) throws AxisFault {
-        printWSDL2(out, null);
-    }
-
-    public void printWSDL2(OutputStream out, String requestIP) throws AxisFault {
-        AxisService2WSDL20 axisService2WSDL2 = new AxisService2WSDL20(this);
-        try {
-            if(requestIP != null) {
-                axisService2WSDL2.setEPRs(calculateEPRs(requestIP));
-            }
-            OMElement wsdlElement = axisService2WSDL2.generateOM();
-            wsdlElement.serialize(out);
-            out.flush();
-            out.close();
-        } catch (Exception e) {
-            throw AxisFault.makeFault(e);
-        }
-    }
-
-    /**
-     * Gets the description about the service which is specified in services.xml.
-     *
-     * @return Returns String.
-     * @deprecated Use getDocumentation() instead
-     */
-    public String getServiceDescription() {
-        return getDocumentation();
-    }
-
-    /**
-     * Method getClassLoader.
-     *
-     * @return Returns ClassLoader.
-     */
-    public ClassLoader getClassLoader() {
-        return this.serviceClassLoader;
-    }
-
-    /**
-     * Gets the control operation which are added by module like RM.
-     */
-    public ArrayList getControlOperations() {
-        Iterator op_itr = getOperations();
-        ArrayList operationList = new ArrayList();
-
-        while (op_itr.hasNext()) {
-            AxisOperation operation = (AxisOperation) op_itr.next();
-
-            if (operation.isControlOperation()) {
-                operationList.add(operation);
-            }
-        }
-
-        return operationList;
-    }
-
-    public URL getFileName() {
-        return fileName;
-    }
-
-    public long getLastupdate() {
-        return lastupdate;
-    }
-
-    public ModuleConfiguration getModuleConfig(String moduleName) {
-        return (ModuleConfiguration) moduleConfigmap.get(moduleName);
-    }
-
-    public ArrayList getModules() {
-        return moduleRefs;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Method getOperation.
-     *
-     * @param operationName
-     * @return Returns AxisOperation.
-     */
-    public AxisOperation getOperation(QName operationName) {
-        AxisOperation axisOperation = (AxisOperation) getChild(operationName);
-        if (axisOperation == null) {
-            axisOperation = (AxisOperation) getChild(
-                    new QName(getTargetNamespace(), operationName.getLocalPart()));
-        }
-        if (axisOperation == null) {
-            axisOperation = (AxisOperation) operationsAliasesMap.get(
-                    operationName.getLocalPart());
-        }
-
-        return axisOperation;
-    }
-
-
-    /**
-     * Returns the AxisOperation which has been mapped to the given alias.
-     *
-     * @see #mapActionToOperation(String, AxisOperation)
-     * 
-     * @param action the alias key
-     * @return Returns the corresponding AxisOperation or null if it isn't found.
-     */
-    public AxisOperation getOperationByAction(String action) {
-        return (AxisOperation) operationsAliasesMap.get(action);
-    }
-
-    /**
-     * Returns the operation given a SOAP Action. This
-     * method should be called if only one Endpoint is defined for
-     * this Service. If more than one Endpoint exists, one of them will be
-     * picked. If more than one Operation is found with the given SOAP Action;
-     * null will be returned. If no particular Operation is found with the given
-     * SOAP Action; null will be returned.  If the action is in the list of invaliad aliases,
-     * which means it did not uniquely identify an operation, a null will be returned.
-     *
-     * @param soapAction SOAP Action defined for the particular Operation
-     * @return Returns an AxisOperation if a unique Operation can be found with the given
-     *         SOAP Action otherwise will return null.
-     */
-    public AxisOperation getOperationBySOAPAction(String soapAction) {
-        
-        // Check for illegal soapActions
-        if ((soapAction == null) || soapAction.length() == 0) {
-        	if(log.isDebugEnabled()){
-        		log.debug("getOperationBySOAPAction: "+soapAction +" is null or ''. Returning null.");
-        	}
-            return null;
-        }
-        
-        // If the action maps to an alais that is not unique, then it can't be used to map to 
-        // an operation.
-        if (invalidOperationsAliases.contains(soapAction)) {
-        	if(log.isDebugEnabled()){
-        		log.debug("getOperationBySOAPAction: "+soapAction +" is an invalid operation alias. Returning null.");
-        	}
-            return null;
-        }
-
-        // Get the operation from the action->operation map
-        AxisOperation operation = (AxisOperation) operationsAliasesMap.get(soapAction);
-        
-        if (operation != null) {
-            if(log.isDebugEnabled()){
-                log.debug("getOperationBySOAPAction: Operation ("+operation+","+operation.getName()+") for soapAction: "+soapAction+" found in action map.");
-            }
-            return operation;
-        }
-        
-        // The final fallback is to check the operations for a matching name.
-        
-        Iterator children = getChildren();
-        // I could not find any spec statement that explicitly forbids using a short name in the SOAPAction header or wsa:Action element,
-        // so I believe this to be valid.  There may be customers using the shortname as the SOAPAction in their client code that would
-        // also require this support.
-        while(children.hasNext() && (operation == null)){
-        	AxisOperation op = (AxisOperation)children.next();
-        	if(op.getName().getLocalPart().equals(soapAction)){
-        		operation = op;
-        	}
-        }
-        
-        if (operation != null) {
-        	if(log.isDebugEnabled()){
-        		log.debug("getOperationBySOAPAction: Operation ("+operation+","+operation.getName()+") for soapAction: "+soapAction+" found as child.");
-        	}
-        }
-        
-        return operation;
-    }
-
-    /**
-     * Method getOperations.
-     *
-     * @return Returns HashMap
-     */
-    public Iterator getOperations() {
-        return getChildren();
-    }
-
-    /*
-     * (non-Javadoc)
-     *
-     * @see org.apache.axis2.description.ParameterInclude#getParameter(java.lang.String)
-     */
-
-    /**
-     * Gets only the published operations.
-     */
-    public ArrayList getPublishedOperations() {
-        Iterator op_itr = getOperations();
-        ArrayList operationList = new ArrayList();
-
-        while (op_itr.hasNext()) {
-            AxisOperation operation = (AxisOperation) op_itr.next();
-
-            if (!operation.isControlOperation()) {
-                operationList.add(operation);
-            }
-        }
-
-        return operationList;
-    }
-
-    /**
-     * Sets the description about the service which is specified in services.xml
-     *
-     * @param documentation
-     * @deprecated Use setDocumentation() instead
-     */
-    public void setServiceDescription(String documentation) {
-        setDocumentation(documentation);
-    }
-
-    /**
-     * Method setClassLoader.
-     *
-     * @param classLoader
-     */
-    public void setClassLoader(ClassLoader classLoader) {
-        this.serviceClassLoader = classLoader;
-    }
-
-    public void setFileName(URL fileName) {
-        this.fileName = fileName;
-    }
-
-    /**
-     * Sets the current time as last update time of the service.
-     */
-    public void setLastupdate() {
-        lastupdate = new Date().getTime();
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public ArrayList getSchema() {
-        return schemaList;
-    }
-
-    public void addSchema(XmlSchema schema) {
-        if (schema != null) {
-            schemaList.add(schema);
-            if (schema.getTargetNamespace() != null) {
-                addSchemaNameSpace(schema);
-            }
-        }
-    }
-
-    public void addSchema(Collection schemas) {
-        Iterator iterator = schemas.iterator();
-        while (iterator.hasNext()) {
-            XmlSchema schema = (XmlSchema) iterator.next();
-            schemaList.add(schema);
-            addSchemaNameSpace(schema);
-        }
-    }
-
-    public boolean isWsdlFound() {
-        return wsdlFound;
-    }
-
-    public void setWsdlFound(boolean wsdlFound) {
-        this.wsdlFound = wsdlFound;
-    }
-
-    public String getScope() {
-        return scope;
-    }
-
-    /**
-     * @param scope - Available scopes :
-     *              Constants.SCOPE_APPLICATION
-     *              Constants.SCOPE_TRANSPORT_SESSION
-     *              Constants.SCOPE_SOAP_SESSION
-     *              Constants.SCOPE_REQUEST.equals
-     */
-    public void setScope(String scope) {
-        if (Constants.SCOPE_APPLICATION.equals(scope) ||
-            Constants.SCOPE_TRANSPORT_SESSION.equals(scope) ||
-            Constants.SCOPE_SOAP_SESSION.equals(scope) ||
-            Constants.SCOPE_REQUEST.equals(scope)) {
-            this.scope = scope;
-        }
-    }
-
-    public boolean isUseDefaultChains() {
-        return useDefaultChains;
-    }
-
-    public void setUseDefaultChains(boolean useDefaultChains) {
-        this.useDefaultChains = useDefaultChains;
-    }
-
-    public Object getKey() {
-        return this.name;
-    }
-
-    public boolean isActive() {
-        return active;
-    }
-
-    public void setActive(boolean active) {
-        this.active = active;
-    }
-
-    public String getSchematargetNamespace() {
-        return schematargetNamespace;
-    }
-
-    public void setSchemaTargetNamespace(String schematargetNamespace) {
-        this.schematargetNamespace = schematargetNamespace;
-    }
-
-    public String getSchemaTargetNamespacePrefix() {
-        return schematargetNamespacePrefix;
-    }
-
-    public void setSchematargetNamespacePrefix(String schematargetNamespacePrefix) {
-        this.schematargetNamespacePrefix = schematargetNamespacePrefix;
-    }
-
-    public String getTargetNamespace() {
-        return targetNamespace;
-    }
-
-    public void setTargetNamespace(String targetNamespace) {
-        this.targetNamespace = targetNamespace;
-    }
-
-    public String getTargetNamespacePrefix() {
-        return targetNamespacePrefix;
-    }
-
-    public void setTargetNamespacePrefix(String targetNamespacePrefix) {
-        this.targetNamespacePrefix = targetNamespacePrefix;
-    }
-
-    public XmlSchemaElement getSchemaElement(QName elementQName) {
-        XmlSchemaElement element;
-        for (int i = 0; i < schemaList.size(); i++) {
-            XmlSchema schema = (XmlSchema) schemaList.get(i);
-            if (schema != null) {
-                element = schema.getElementByName(elementQName);
-                if (element != null) {
-                    return element;
-                }
-            }
-        }
-        return null;
-    }
-
-    public boolean isEnableAllTransports() {
-        return enableAllTransports;
-    }
-
-    /**
-     * To eneble service to be expose in all the transport
-     *
-     * @param enableAllTransports
-     */
-    public void setEnableAllTransports(boolean enableAllTransports) {
-        this.enableAllTransports = enableAllTransports;
-        eprs = calculateEPRs();
-    }
-
-    public List getExposedTransports() {
-        return this.exposedTransports;
-    }
-
-    public void setExposedTransports(List transports) {
-        enableAllTransports = false;
-        this.exposedTransports = transports;
-        eprs = null; //Do not remove this. We need to force EPR recalculation.
-    }
-
-    public void addExposedTransport(String transport) {
-        enableAllTransports = false;
-        if (!this.exposedTransports.contains(transport)) {
-            this.exposedTransports.add(transport);
-            try {
-                eprs = calculateEPRs();
-            } catch (Exception e) {
-                eprs = null;
-            }
-        }
-    }
-
-    public void removeExposedTransport(String transport) {
-        enableAllTransports = false;
-        this.exposedTransports.remove(transport);
-        try {
-            eprs = calculateEPRs();
-        } catch (Exception e) {
-            eprs = null;
-        }
-    }
-
-    public boolean isExposedTransport(String transport) {
-        return exposedTransports.contains(transport);
-    }
-
-    public void onDisengage(AxisModule module) throws AxisFault {
-        removeModuleOperations(module);
-        for (Iterator operations = getChildren(); operations.hasNext();) {
-            AxisOperation axisOperation = (AxisOperation) operations.next();
-            axisOperation.disengageModule(module);
-        }
-        AxisConfiguration config = getAxisConfiguration();
-        if (!config.isEngaged(module.getName())) {
-            PhaseResolver phaseResolver = new PhaseResolver(config);
-            phaseResolver.disengageModuleFromGlobalChains(module);
-        }
-    }
-
-    /**
-     * Remove any operations which were added by a given module.
-     *
-     * @param module the module in question
-     */
-    private void removeModuleOperations(AxisModule module) {
-        HashMap moduleOperations = module.getOperations();
-        if (moduleOperations != null) {
-            for (Iterator modOpsIter = moduleOperations.values().iterator();
-                 modOpsIter.hasNext();) {
-                AxisOperation operation = (AxisOperation) modOpsIter.next();
-                removeOperation(operation.getName());
-            }
-        }
-    }
-
-    //#######################################################################################
-    //                    APIs to create AxisService
-
-    //
-
-    /**
-     * To create a AxisService for a given WSDL and the created client is most suitable for client side
-     * invocation not for server side invocation. Since all the soap action and wsa action is added to
-     * operations
-     *
-     * @param wsdlURL         location of the WSDL
-     * @param wsdlServiceName name of the service to be invoke , if it is null then the first one will
-     *                        be selected if there are more than one
-     * @param portName        name of the port , if there are more than one , if it is null then the
-     *                        first one in the  iterator will be selected
-     * @param options         Service client options, to set the target EPR
-     * @return AxisService , the created service will be return
-     */
-    public static AxisService createClientSideAxisService(URL wsdlURL,
-                                                          QName wsdlServiceName,
-                                                          String portName,
-                                                          Options options) throws AxisFault {
-        try {
-            InputStream in = wsdlURL.openConnection().getInputStream();
-            Document doc = XMLUtils.newDocument(in);
-            WSDLReader reader = WSDLFactory.newInstance().newWSDLReader();
-            reader.setFeature("javax.wsdl.importDocuments", true);
-            Definition wsdlDefinition = reader.readWSDL(getBaseURI(wsdlURL.toString()), doc);
-            if (wsdlDefinition != null) {
-                wsdlDefinition.setDocumentBaseURI(getDocumentURI(wsdlURL.toString()));
-            }
-            return createClientSideAxisService(wsdlDefinition, wsdlServiceName, portName, options);
-        } catch (IOException e) {
-            log.error(e.getMessage(), e);
-            throw AxisFault.makeFault(e);
-        } catch (ParserConfigurationException e) {
-            log.error(e.getMessage(), e);
-            throw AxisFault.makeFault(e);
-        } catch (SAXException e) {
-            log.error(e.getMessage(), e);
-            throw AxisFault.makeFault(e);
-        } catch (WSDLException e) {
-            log.error(e.getMessage(), e);
-            throw AxisFault.makeFault(e);
-        }
-    }
-
-    private static String getBaseURI(String currentURI)  {
-        try {
-            File file = new File(currentURI);
-            if (file.exists()) {
-                return file.getCanonicalFile().getParentFile().toURI().toString();
-            }
-            String uriFragment = currentURI.substring(0, currentURI.lastIndexOf("/"));
-            return uriFragment + (uriFragment.endsWith("/") ? "" : "/");
-        } catch (IOException e) {
-            return null;
-        }
-    }
-
-    private static String getDocumentURI(String currentURI)  {
-        try {
-            File file = new File(currentURI);
-            return file.getCanonicalFile().toURI().toString();
-        } catch (IOException e) {
-            return null;
-        }
-    }
-
-    public static AxisService createClientSideAxisService(Definition wsdlDefinition,
-                                                          QName wsdlServiceName,
-                                                          String portName,
-                                                          Options options) throws AxisFault {
-        WSDL11ToAxisServiceBuilder serviceBuilder =
-                new WSDL11ToAxisServiceBuilder(wsdlDefinition, wsdlServiceName, portName);
-        serviceBuilder.setServerSide(false);
-        AxisService axisService = serviceBuilder.populateService();
-        AxisEndpoint axisEndpoint = (AxisEndpoint) axisService.getEndpoints()
-                .get(axisService.getEndpointName());
-        options.setTo(new EndpointReference(axisEndpoint.getEndpointURL()));
-        if (axisEndpoint != null) {
-            options.setSoapVersionURI((String) axisEndpoint.getBinding()
-                    .getProperty(WSDL2Constants.ATTR_WSOAP_VERSION));
-        }
-        return axisService;
-    }
-
-    /**
-     * To create an AxisService using given service impl class name
-     * first generate schema corresponding to the given java class , next for each methods AxisOperation
-     * will be created. If the method is in-out it will uses RPCMessageReceiver else
-     * RPCInOnlyMessageReceiver
-     * <p/>
-     * Note : Inorder to work this properly RPCMessageReceiver should be available in the class path
-     * otherewise operation can not continue
-     *
-     * @param implClass  Service implementation class
-     * @param axisConfig Current AxisConfiguration
-     * @return return created AxisSrevice the creted service , it can either be null or valid service
-     */
-    public static AxisService createService(String implClass,
-                                            AxisConfiguration axisConfig) throws AxisFault {
-
-        try {
-            HashMap messageReciverMap = new HashMap();
-            Class inOnlyMessageReceiver = Loader.loadClass(
-                    "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver");
-            MessageReceiver messageReceiver =
-                    (MessageReceiver) inOnlyMessageReceiver.newInstance();
-            messageReciverMap.put(
-                    WSDL2Constants.MEP_URI_IN_ONLY,
-                    messageReceiver);
-            Class inoutMessageReceiver = Loader.loadClass(
-                    "org.apache.axis2.rpc.receivers.RPCMessageReceiver");
-            MessageReceiver inOutmessageReceiver =
-                    (MessageReceiver) inoutMessageReceiver.newInstance();
-            messageReciverMap.put(
-                    WSDL2Constants.MEP_URI_IN_OUT,
-                    inOutmessageReceiver);
-            messageReciverMap.put(WSDL2Constants.MEP_URI_ROBUST_IN_ONLY, inOutmessageReceiver);
-
-            return createService(implClass,
-                                 axisConfig,
-                                 messageReciverMap,
-                                 null,
-                                 null,
-                                 axisConfig.getSystemClassLoader());
-        } catch (Exception e) {
-            throw AxisFault.makeFault(e);
-        }
-    }
-
-    /**
-     * messageReceiverClassMap will hold the MessageReceivers for given meps. Key will be the
-     * mep and value will be the instance of the MessageReceiver class.
-     * Ex:
-     * Map mrMap = new HashMap();
-     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-only",
-     * RPCInOnlyMessageReceiver.class.newInstance());
-     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-out",
-     * RPCMessageReceiver.class.newInstance());
-     *
-     * @param implClass
-     * @param axisConfiguration
-     * @param messageReceiverClassMap
-     * @param targetNamespace
-     * @param schemaNamespace
-     * @throws AxisFault
-     */
-    public static AxisService createService(String implClass,
-                                            AxisConfiguration axisConfiguration,
-                                            Map messageReceiverClassMap,
-                                            String targetNamespace,
-                                            String schemaNamespace,
-                                            ClassLoader loader) throws AxisFault {
-        int index = implClass.lastIndexOf(".");
-        String serviceName;
-        if (index > 0) {
-            serviceName = implClass.substring(index + 1, implClass.length());
-        } else {
-            serviceName = implClass;
-        }
-
-        SchemaGenerator schemaGenerator;
-        ArrayList excludeOpeartion = new ArrayList();
-        AxisService service = new AxisService();
-        service.setParent(axisConfiguration);
-        service.setName(serviceName);
-
-        try {
-            Parameter generateBare = service.getParameter(Java2WSDLConstants.DOC_LIT_BARE_PARAMETER);
-            if (generateBare != null && "true".equals(generateBare.getValue())) {
-                schemaGenerator = new DocLitBareSchemaGenerator(loader,
-                                                                implClass, schemaNamespace,
-                                                                Java2WSDLConstants.SCHEMA_NAMESPACE_PRFIX, service);
-            } else {
-                schemaGenerator = new DefaultSchemaGenerator(loader,
-                                                             implClass, schemaNamespace,
-                                                             Java2WSDLConstants.SCHEMA_NAMESPACE_PRFIX, service);
-            }
-            schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);
-            Utils.addExcludeMethods(excludeOpeartion);
-            schemaGenerator.setExcludeMethods(excludeOpeartion);
-        } catch (Exception e) {
-            throw AxisFault.makeFault(e);
-        }
-
-        return createService(implClass,
-                             serviceName,
-                             axisConfiguration,
-                             messageReceiverClassMap,
-                             targetNamespace,
-                             loader,
-                             schemaGenerator, service);
-    }
-
-    /**
-     * messageReceiverClassMap will hold the MessageReceivers for given meps. Key will be the
-     * mep and value will be the instance of the MessageReceiver class.
-     * Ex:
-     * Map mrMap = new HashMap();
-     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-only",
-     * RPCInOnlyMessageReceiver.class.newInstance());
-     * mrMap.put("http://www.w3.org/2004/08/wsdl/in-out",
-     * RPCMessageReceiver.class.newInstance());
-     *
-     * @param implClass
-     * @param axisConfiguration
-     * @param messageReceiverClassMap
-     * @param targetNamespace
-     * @throws AxisFault
-     */
-    public static AxisService createService(String implClass,
-                                            String serviceName,
-                                            AxisConfiguration axisConfiguration,
-                                            Map messageReceiverClassMap,
-                                            String targetNamespace,
-                                            ClassLoader loader,
-                                            SchemaGenerator schemaGenerator,
-                                            AxisService axisService) throws AxisFault {
-        Parameter parameter = new Parameter(Constants.SERVICE_CLASS, implClass);
-        OMElement paraElement = Utils.getParameter(Constants.SERVICE_CLASS, implClass, false);
-        parameter.setParameterElement(paraElement);
-        axisService.setUseDefaultChains(false);
-        axisService.addParameter(parameter);
-        axisService.setName(serviceName);
-        axisService.setClassLoader(loader);
-
-        NamespaceMap map = new NamespaceMap();
-        map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
-                Java2WSDLConstants.AXIS2_XSD);
-        map.put(Java2WSDLConstants.DEFAULT_SCHEMA_NAMESPACE_PREFIX,
-                Java2WSDLConstants.URI_2001_SCHEMA_XSD);
-        axisService.setNameSpacesMap(map);
-        Utils.processBeanPropertyExclude(axisService);
-        axisService.setElementFormDefault(false);
-        try {
-            axisService.addSchema(schemaGenerator.generateSchema());
-        } catch (Exception e) {
-            throw AxisFault.makeFault(e);
-        }
-        axisService.setSchemaTargetNamespace(schemaGenerator.getSchemaTargetNameSpace());
-        axisService.setTypeTable(schemaGenerator.getTypeTable());
-        if (targetNamespace == null) {
-            targetNamespace = schemaGenerator.getSchemaTargetNameSpace();
-        }
-        if (targetNamespace != null && !"".equals(targetNamespace)) {
-            axisService.setTargetNamespace(targetNamespace);
-        }
-        JMethod[] method = schemaGenerator.getMethods();
-        PhasesInfo pinfo = axisConfiguration.getPhasesInfo();
-        for (int i = 0; i < method.length; i++) {
-            JMethod jmethod = method[i];
-            AxisOperation operation = axisService.getOperation(new QName(jmethod.getSimpleName()));
-            String mep = operation.getMessageExchangePattern();
-            MessageReceiver mr;
-            if (messageReceiverClassMap != null) {
-
-                if (messageReceiverClassMap.get(mep) != null) {
-                    Object obj = messageReceiverClassMap.get(mep);
-                    if (obj instanceof MessageReceiver) {
-                        mr = (MessageReceiver) obj;
-                        operation.setMessageReceiver(mr);
-                    } else {
-                        log.error(
-                                "Object is not an instance of MessageReceiver, thus, default MessageReceiver has been set");
-                        mr = axisConfiguration
-                                .getMessageReceiver(operation.getMessageExchangePattern());
-                        operation.setMessageReceiver(mr);
-                    }
-                } else {
-                    log.error(
-                            "Required MessageReceiver couldn't be found, thus, default MessageReceiver has been used");
-                    mr = axisConfiguration
-                            .getMessageReceiver(operation.getMessageExchangePattern());
-                    operation.setMessageReceiver(mr);
-                }
-            } else {
-                log.error(
-                        "MessageRecevierClassMap couldn't be found, thus, default MessageReceiver has been used");
-                mr = axisConfiguration.getMessageReceiver(operation.getMessageExchangePattern());
-                operation.setMessageReceiver(mr);
-            }
-            pinfo.setOperationPhases(operation);
-            axisService.addOperation(operation);
-        }
-        return axisService;
-
-    }
-
-    public void removeOperation(QName opName) {
-        AxisOperation operation = getOperation(opName);
-        if (operation != null) {
-            removeChild(opName);
-            ArrayList mappingList = operation.getWSAMappingList();
-            if (mappingList != null) {
-                for (int i = 0; i < mappingList.size(); i++) {
-                    String actionMapping = (String) mappingList.get(i);
-                    operationsAliasesMap.remove(actionMapping);
-                }
-            }
-            operationsAliasesMap.remove(operation.getName().getLocalPart());
-        }
-    }
-
-    /**
-     * Get the namespace map for this service.
-     *
-     * @return a Map of prefix (String) to namespace URI (String)
-     * @deprecated please use getNamespaceMap()
-     */
-    public Map getNameSpacesMap() {
-        return namespaceMap;
-    }
-
-    /**
-     * Get the namespace map for this service.
-     *
-     * @return a Map of prefix (String) to namespace URI (String)
-     */
-    public Map getNamespaceMap() {
-        return namespaceMap;
-    }
-
-    /**
-     * Sets the
-     * @param nameSpacesMap
-     */
-    public void setNameSpacesMap(NamespaceMap nameSpacesMap) {
-        this.namespaceMap = nameSpacesMap;
-    }
-
-    public void setNamespaceMap(NamespaceMap namespaceMap) {
-        this.namespaceMap = namespaceMap;
-    }
-
-    private void addSchemaNameSpace(XmlSchema schema) {
-        String targetNameSpace = schema.getTargetNamespace();
-        String prefix = schema.getNamespaceContext().getPrefix(targetNameSpace);
-
-        if (namespaceMap == null) {
-            namespaceMap = new NamespaceMap();
-        }
-
-        if (!namespaceMap.values().contains(targetNameSpace)){
-            // i.e this target namespace not exists in the namesapce map
-            // find a non exists prefix to add this target namesapce
-            while ((prefix == null) || namespaceMap.keySet().contains(prefix)){
-                prefix = "ns" + nsCount++;
-            }
-            namespaceMap.put(prefix,targetNameSpace);
-        }
-
-    }
-
-    public Map populateSchemaMappings(){
-        // when calling from other than codegen. i.e from deployment
-        // engine we don't have to override the absolute http locations.
-        return populateSchemaMappings(false);
-    }
-
-    /**
-     * runs the schema mappings if it has not been run previously
-     * it is best that this logic be in the axis service since one can
-     * call the axis service to populate the schema mappings
-     */
-    public Map populateSchemaMappings(boolean overrideAbsoluteAddress) {
-
-        //populate the axis service with the necessary schema references
-        ArrayList schema = this.schemaList;
-        Map changedSchemaLocations = null;
-        if (!this.schemaLocationsAdjusted) {
-            Hashtable nameTable = new Hashtable();
-            Hashtable sourceURIToNewLocationMap = new Hashtable();
-            //calculate unique names for the schemas
-            calculateSchemaNames(schema, nameTable, sourceURIToNewLocationMap, overrideAbsoluteAddress);
-            //adjust the schema locations as per the calculated names
-            changedSchemaLocations = adjustSchemaNames(schema, nameTable,sourceURIToNewLocationMap);
-            //reverse the nametable so that there is a mapping from the
-            //name to the schemaObject
-            setSchemaMappingTable(swapMappingTable(nameTable));
-            setSchemaLocationsAdjusted(true);
-        }
-        return changedSchemaLocations;
-    }
-
-
-    /**
-     * run 1 -calcualte unique names
-     *
-     * @param schemas
-     */
-    private void calculateSchemaNames(List schemas,
-                                      Hashtable nameTable,
-                                      Hashtable sourceURIToNewLocationMap,
-                                      boolean overrideAbsoluteAddress) {
-        //first traversal - fill the hashtable
-        for (int i = 0; i < schemas.size(); i++) {
-            XmlSchema schema = (XmlSchema) schemas.get(i);
-            XmlSchemaObjectCollection includes = schema.getIncludes();
-
-            for (int j = 0; j < includes.getCount(); j++) {
-                Object item = includes.getItem(j);
-                XmlSchema s;
-                if (item instanceof XmlSchemaExternal) {
-                    XmlSchemaExternal externalSchema = (XmlSchemaExternal) item;
-                    s = externalSchema.getSchema();
-
-                    if (s != null && getSchemaLocationWithDot(sourceURIToNewLocationMap, s) == null) {
-                        //insert the name into the table
-                        insertIntoNameTable(nameTable, s, sourceURIToNewLocationMap, overrideAbsoluteAddress);
-                        //recursively call the same procedure
-                        calculateSchemaNames(Arrays.asList(new XmlSchema[]{s}),
-                                nameTable, sourceURIToNewLocationMap, overrideAbsoluteAddress);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * A quick private sub routine to insert the names
-     *
-     * @param nameTable
-     * @param s
-     */
-    private void insertIntoNameTable(Hashtable nameTable,
-                                     XmlSchema s,
-                                     Hashtable sourceURIToNewLocationMap,
-                                     boolean overrideAbsoluteAddress) {
-        String sourceURI = s.getSourceURI();
-        // check whether the sourece uri is an absolute one and are
-        // we allowed to override it.
-        // if the absolute uri overriding is not allowed the use the
-        // original sourceURI as new one
-        if (sourceURI.startsWith("http") && !overrideAbsoluteAddress) {
-            nameTable.put(s, sourceURI);
-            sourceURIToNewLocationMap.put(sourceURI, sourceURI);
-        } else {
-            String newURI = sourceURI.substring(sourceURI.lastIndexOf('/') + 1);
-            if (newURI.endsWith(".xsd")) {
-                //remove the .xsd extention
-                newURI = newURI.substring(0, newURI.lastIndexOf("."));
-            } else {
-                newURI = "xsd" + count++;
-            }
-
-            newURI = customSchemaNameSuffix != null ? newURI + customSchemaNameSuffix : newURI;
-            // make it unique
-            while (nameTable.containsValue(newURI)) {
-                newURI = newURI + count++;
-            }
-
-            nameTable.put(s, newURI);
-            sourceURIToNewLocationMap.put(sourceURI, newURI);
-        }
-
-    }
-
-    /**
-     * Run 2  - adjust the names
-     */
-    private Map adjustSchemaNames(List schemas,
-                                  Hashtable nameTable,
-                                  Hashtable sourceURIToNewLocationMap) {
-        Hashtable importedSchemas = new Hashtable();
-        //process the schemas in the main schema list
-        for (int i = 0; i < schemas.size(); i++) {
-            adjustSchemaName((XmlSchema) schemas.get(i),
-                    nameTable,
-                    importedSchemas,
-                    sourceURIToNewLocationMap);
-        }
-        //process all the rest in the name table
-        Enumeration nameTableKeys = nameTable.keys();
-        while (nameTableKeys.hasMoreElements()) {
-            adjustSchemaName((XmlSchema) nameTableKeys.nextElement(),
-                    nameTable,
-                    importedSchemas,
-                    sourceURIToNewLocationMap);
-
-        }
-        return importedSchemas;
-    }
-
-    /**
-     * Adjust a single schema
-     *
-     * @param parentSchema
-     * @param nameTable
-     */
-    private void adjustSchemaName(XmlSchema parentSchema,
-                                  Hashtable nameTable,
-                                  Hashtable importedSchemas,
-                                  Hashtable sourceURIToNewLocationMap) {
-        XmlSchemaObjectCollection includes = parentSchema.getIncludes();
-        for (int j = 0; j < includes.getCount(); j++) {
-            Object item = includes.getItem(j);
-            if (item instanceof XmlSchemaExternal) {
-                XmlSchemaExternal xmlSchemaExternal = (XmlSchemaExternal) item;
-                XmlSchema s = xmlSchemaExternal.getSchema();
-                adjustSchemaLocation(s,
-                        xmlSchemaExternal,
-                        nameTable,
-                        importedSchemas,
-                        sourceURIToNewLocationMap);
-            }
-        }
-
-    }
-
-    /**
-     * Adjusts a given schema location
-     *
-     * @param s
-     * @param xmlSchemaExternal
-     * @param nameTable
-     */
-    private void adjustSchemaLocation(XmlSchema s,
-                                      XmlSchemaExternal xmlSchemaExternal,
-                                      Hashtable nameTable,
-                                      Hashtable importedSchemas,
-                                      Hashtable sourceURIToNewLocationMap) {
-        if (s != null) {
-            String schemaLocation = xmlSchemaExternal.getSchemaLocation();
-            
-            if (schemaLocation.indexOf("://") == -1) {
-                String newschemalocation = customSchemaNamePrefix == null ?
-                        //use the default mode
-                        (getName() + "?xsd=" + getSchemaLocationWithDot(sourceURIToNewLocationMap, s)) :

[... 3176 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org