You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by pr...@apache.org on 2007/12/01 15:43:54 UTC

svn commit: r600141 [8/10] - in /webservices/axis2/branches/java/jaxws21/modules: adb-codegen/ adb-codegen/src/org/apache/axis2/schema/ adb-codegen/src/org/apache/axis2/schema/template/ adb-codegen/src/org/apache/axis2/schema/util/ adb-codegen/src/org/...

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService.java Sat Dec  1 06:43:28 2007
@@ -79,7 +79,6 @@
 import java.io.*;
 import java.net.SocketException;
 import java.net.URL;
-import java.net.URISyntaxException;
 import java.security.PrivilegedAction;
 import java.util.*;
 
@@ -1115,22 +1114,34 @@
                 for (int i = 0; i < list.size(); i++) {
                     Object extensibilityEle = list.get(i);
                     if (extensibilityEle instanceof SOAPAddress) {
+                        SOAPAddress soapAddress = (SOAPAddress) extensibilityEle;
+                        String exsistingAddress = soapAddress.getLocationURI();
                         if (requestIP == null) {
-                            ((SOAPAddress) extensibilityEle).setLocationURI(getEPRs()[0]);
+                            ((SOAPAddress) extensibilityEle).setLocationURI(
+                                    getLocationURI(getEPRs(), exsistingAddress));
                         } else {
-                            ((SOAPAddress) extensibilityEle).setLocationURI(calculateEPRs(requestIP)[0]);
+                            ((SOAPAddress) extensibilityEle).setLocationURI(
+                                    getLocationURI(calculateEPRs(requestIP), exsistingAddress));
                         }
                     } else if (extensibilityEle instanceof SOAP12Address){
+                        SOAP12Address soapAddress = (SOAP12Address) extensibilityEle;
+                        String exsistingAddress = soapAddress.getLocationURI();
                         if (requestIP == null) {
-                            ((SOAP12Address) extensibilityEle).setLocationURI(getEPRs()[0]);
+                            ((SOAP12Address) extensibilityEle).setLocationURI(
+                                    getLocationURI(getEPRs(), exsistingAddress));
                         } else {
-                            ((SOAP12Address) extensibilityEle).setLocationURI(calculateEPRs(requestIP)[0]);
+                            ((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(getEPRs()[0]);
+                            ((HTTPAddress) extensibilityEle).setLocationURI(
+                                    getLocationURI(getEPRs(), exsistingAddress));
                         } else {
-                            ((HTTPAddress) extensibilityEle).setLocationURI(calculateEPRs(requestIP)[0]);
+                            ((HTTPAddress) extensibilityEle).setLocationURI(
+                                    getLocationURI(calculateEPRs(requestIP), exsistingAddress));
                         }
                     }
                     //TODO : change the Endpoint refrence addess as well.
@@ -1139,6 +1150,39 @@
         }
     }
 
+    /**
+     * 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();
@@ -1966,20 +2010,20 @@
 
         //populate the axis service with the necessary schema references
         ArrayList schema = this.schemaList;
-        Map changedScheamLocations = null;
+        Map changedSchemaLocations = null;
         if (!this.schemaLocationsAdjusted) {
             Hashtable nameTable = new Hashtable();
             Hashtable sourceURIToNewLocationMap = new Hashtable();
             //calculate unique names for the schemas
-            calcualteSchemaNames(schema, nameTable, sourceURIToNewLocationMap);
+            calculateSchemaNames(schema, nameTable, sourceURIToNewLocationMap);
             //adjust the schema locations as per the calculated names
-            changedScheamLocations = adjustSchemaNames(schema, nameTable,sourceURIToNewLocationMap);
+            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 changedScheamLocations;
+        return changedSchemaLocations;
     }
 
 
@@ -1988,7 +2032,7 @@
      *
      * @param schemas
      */
-    private void calcualteSchemaNames(List schemas, Hashtable nameTable, Hashtable sourceURIToNewLocationMap) {
+    private void calculateSchemaNames(List schemas, Hashtable nameTable, Hashtable sourceURIToNewLocationMap) {
         //first traversal - fill the hashtable
         for (int i = 0; i < schemas.size(); i++) {
             XmlSchema schema = (XmlSchema) schemas.get(i);
@@ -2000,11 +2044,12 @@
                 if (item instanceof XmlSchemaExternal) {
                     XmlSchemaExternal externalSchema = (XmlSchemaExternal) item;
                     s = externalSchema.getSchema();
-                    if (s != null && sourceURIToNewLocationMap.get(s.getSourceURI()) == null) {
+
+                    if (s != null && getScheamLocationWithDot(sourceURIToNewLocationMap, s) == null) {
                         //insert the name into the table
                         insertIntoNameTable(nameTable, s, sourceURIToNewLocationMap);
                         //recursively call the same procedure
-                        calcualteSchemaNames(Arrays.asList(new XmlSchema[]{s}), nameTable, sourceURIToNewLocationMap);
+                        calculateSchemaNames(Arrays.asList(new XmlSchema[]{s}), nameTable, sourceURIToNewLocationMap);
                     }
                 }
             }
@@ -2105,13 +2150,21 @@
 
             String newscheamlocation = customSchemaNamePrefix == null ?
                     //use the default mode
-                    (getName() + "?xsd=" + sourceURIToNewLocationMap.get(s.getSourceURI())) :
+                    (getName() + "?xsd=" + getScheamLocationWithDot(sourceURIToNewLocationMap, s)) :
                     //custom prefix is present - add the custom prefix
-                    (customSchemaNamePrefix + sourceURIToNewLocationMap.get(s.getSourceURI()));
+                    (customSchemaNamePrefix + getScheamLocationWithDot(sourceURIToNewLocationMap, s));
             String schemaLocation = xmlSchemaExternal.getSchemaLocation();
             xmlSchemaExternal.setSchemaLocation(newscheamlocation);
             importedScheams.put(schemaLocation, newscheamlocation);
         }
+    }
+
+    private Object getScheamLocationWithDot(Hashtable sourceURIToNewLocationMap, XmlSchema s) {
+        String o = (String) sourceURIToNewLocationMap.get(s.getSourceURI());
+        if (o !=null && o.indexOf(".") <0){
+            return o + ".xsd";
+        }
+        return o;
     }
 
     /**

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java Sat Dec  1 06:43:28 2007
@@ -957,11 +957,17 @@
                 
                 OMNode firstChildElem = parentElement.getFirstElement();
                 
-                if (firstChildElem == null) {
-                    parentElement.addChild(child);
-                } else {
-                    firstChildElem.insertSiblingBefore(child);
-                }
+//                if (firstChildElem == null) {
+//                    parentElement.addChild(child);
+//                } else {
+//                    firstChildElem.insertSiblingBefore(child);
+//                }
+                // there is a problem with the OM insertSiblingBefore element with
+                // drops the already exists elements.
+                // since there is no any techical problem of adding policy elements after other
+                // children temporaliy fix this as it is.
+                // one OM fix this issue we can revert this change.
+                parentElement.addChild(child);
 
             } else if (policyElement instanceof PolicyReference) {
                 OMElement child = PolicyUtil

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java Sat Dec  1 06:43:28 2007
@@ -107,6 +107,7 @@
         OMNamespace wsoap;
         OMNamespace whttp;
         OMNamespace wsdlx;
+        OMNamespace wrpc;
 
         OMNamespace tns = omFactory
                 .createOMNamespace(axisService.getTargetNamespace(),
@@ -141,23 +142,18 @@
             wsdlx = descriptionElement.declareNamespace(WSDL2Constants.URI_WSDL2_EXTENSIONS,
                                                         WSDL2Constants.WSDL_EXTENTION_PREFIX);
         }
+        if (nameSpacesMap != null && nameSpacesMap.containsValue(WSDL2Constants.URI_WSDL2_RPC)) {
+            wrpc = omFactory
+                    .createOMNamespace(WSDL2Constants.URI_WSDL2_RPC,
+                                       WSDLSerializationUtil.getPrefix(
+                                               WSDL2Constants.URI_WSDL2_RPC, nameSpacesMap));
+        } else {
+            wrpc = descriptionElement.declareNamespace(WSDL2Constants.URI_WSDL2_RPC,
+                                                        WSDL2Constants.WSDL_RPC_PREFIX);
+        }
 
         // Add the documentation element
-        String description;
-        OMElement documentationElement =
-                omFactory.createOMElement(WSDL2Constants.DOCUMENTATION, wsdl);
-        if ((description = axisService.getDocumentation()) != null) {
-            OMText omText;
-            if (description.indexOf(WSDLSerializationUtil.CDATA_START) > -1) {
-                description = description.replaceFirst(WSDLSerializationUtil.CDATA_START_REGEX, "");
-                description = description.replaceFirst(WSDLSerializationUtil.CDATA_END_REGEX, "");
-                omText = omFactory.createOMText(description, XMLStreamConstants.CDATA);
-            } else {
-            omText =  omFactory.createOMText(description);
-            }
-            documentationElement.addChild(omText);
-            descriptionElement.addChild(documentationElement);
-        }
+        WSDLSerializationUtil.addWSDLDocumentationElement(axisService, descriptionElement, omFactory, wsdl);
 
         // Add types element
         OMElement typesElement = omFactory.createOMElement(WSDL2Constants.TYPES_LOCAL_NALE, wsdl);
@@ -193,7 +189,8 @@
         }
 
         // Add the interface element
-        descriptionElement.addChild(getInterfaceElement(wsdl, tns, wsdlx, omFactory, interfaceName));
+        descriptionElement.addChild(getInterfaceElement(wsdl, tns, wsdlx, wrpc, omFactory,
+                                                        interfaceName));
 
         // axis2.xml indicated no HTTP binding?
         boolean disableREST = false;
@@ -322,7 +319,7 @@
      * @return The generated interface element
      */
     private OMElement getInterfaceElement(OMNamespace wsdl, OMNamespace tns, OMNamespace wsdlx,
-                                          OMFactory fac, String interfaceName)
+                                          OMNamespace wrpc, OMFactory fac, String interfaceName)
             throws URISyntaxException, AxisFault {
 
         OMElement interfaceElement = fac.createOMElement(WSDL2Constants.INTERFACE_LOCAL_NAME, wsdl);
@@ -337,7 +334,8 @@
             if (axisOperation.isControlOperation()) {
                 continue;
             }
-            interfaceOperations.add(i, generateInterfaceOperationElement(axisOperation, wsdl, tns, wsdlx));
+            interfaceOperations.add(i, generateInterfaceOperationElement(axisOperation, wsdl, tns,
+                                                                         wsdlx, wrpc));
             i++;
             Iterator faultsIterator = axisOperation.getFaultMessages().iterator();
             while (faultsIterator.hasNext()) {
@@ -399,7 +397,8 @@
     public OMElement generateInterfaceOperationElement(AxisOperation axisOperation,
                                                        OMNamespace wsdl,
                                                        OMNamespace tns,
-                                                       OMNamespace wsdlx) throws
+                                                       OMNamespace wsdlx,
+                                                       OMNamespace wrpc) throws
             URISyntaxException, AxisFault {
         OMFactory omFactory = OMAbstractFactory.getOMFactory();
         OMElement axisOperationElement =
@@ -424,6 +423,12 @@
             }
             axisOperationElement.addAttribute(
                     omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_STYLE, null, style));
+            if (style.indexOf(WSDL2Constants.STYLE_RPC) >= 0) {
+                axisOperationElement.addAttribute(
+                    omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_SIGNATURE, wrpc,
+                                                (String) axisOperation.getParameterValue(
+                                                        WSDL2Constants.ATTR_WRPC_SIGNATURE)));
+            }
         }
         axisOperationElement.addAttribute(omFactory.createOMAttribute(
                 WSDL2Constants.ATTRIBUTE_NAME_PATTERN, null, axisOperation.getMessageExchangePattern()));
@@ -487,7 +492,7 @@
      * @param axisOperation - The axisOperation that needs to be checked
      * @return String [] - An array of styles that the operation adheres to.
      */
-    private URI [] checkStyle(AxisOperation axisOperation) throws URISyntaxException {
+    private URI [] checkStyle(AxisOperation axisOperation) throws URISyntaxException, AxisFault {
         boolean isRPC = true;
         boolean isMultipart = true;
         boolean isIRI = true;
@@ -569,8 +574,10 @@
         } else {
             return new URI [0];
         }
+        AxisMessage outMessage = null;
+        Map outMessageElementDetails = new HashMap();                                    
         if (isRPC && !WSDL2Constants.MEP_URI_IN_ONLY.equals(mep)) {
-            AxisMessage outMessage = axisOperation.getMessage(WSDL2Constants.MESSAGE_LABEL_OUT);
+            outMessage = axisOperation.getMessage(WSDL2Constants.MESSAGE_LABEL_OUT);
             QName qName = outMessage.getElementQName();
             if (qName == null && Constants.XSD_ANY.equals(qName)) {
                 isRPC = false;
@@ -595,7 +602,6 @@
                                 xmlSchemaSequence.getItems();
                         if (schemaObjectCollection != null) {
                             Iterator iterator = schemaObjectCollection.getIterator();
-                            Map outMessageElementDetails = new HashMap();
                             while (iterator.hasNext()) {
                                 Object next = iterator.next();
                                 if (!(next instanceof XmlSchemaElement)) {
@@ -632,6 +638,7 @@
         int count = 0;
         if (isRPC) {
             styles.add(new URI(WSDL2Constants.STYLE_RPC));
+            axisOperation.addParameter(WSDL2Constants.ATTR_WRPC_SIGNATURE, generateRPCSignature(inMessageElementDetails,  outMessageElementDetails));
             count ++;
         }
         if (isIRI) {
@@ -643,5 +650,30 @@
             count ++;
         }
         return (URI[]) styles.toArray(new URI[count]);
+    }
+
+    private String generateRPCSignature(Map inMessageElementDetails, Map outMessageElementDetails) {
+        String in = "";
+        String out = "";
+        String inOut = "";
+        Set inElementSet = inMessageElementDetails.keySet();
+        Set outElementSet = outMessageElementDetails.keySet();
+
+        Iterator inElementIterator = inElementSet.iterator();
+        while (inElementIterator.hasNext()) {
+            String inElementName = (String) inElementIterator.next();
+            if (outElementSet.contains(inElementName)) {
+                inOut = inOut + inElementName + " " + WSDL2Constants.RPC_INOUT + " ";
+                outElementSet.remove(inElementName);
+            } else {
+                in = in + inElementName + " " + WSDL2Constants.RPC_IN + " ";
+            }
+        }
+        Iterator outElementIterator = outElementSet.iterator();
+        while (outElementIterator.hasNext()) {
+            String outElementName = (String) outElementIterator.next();
+            out = out + outElementName + " " + WSDL2Constants.RPC_OUT + " ";
+        }
+        return in + out + inOut;
     }
 }

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Sat Dec  1 06:43:28 2007
@@ -199,8 +199,11 @@
                     " can not be used with OutInAxisOperationClient , user either "
                     + "fireAndForget or sendRobust)");
         }
-        if (replyTo!=null && !replyTo.hasAnonymousAddress()){
-            useAsync = true;
+        String customReeplyTo = (String)options.getProperty(Options.CUSTOM_REPLYTO_ADDRESS);
+        if ( ! (Options.CUSTOM_REPLYTO_ADDRESS_TRUE.equals(customReeplyTo))) {
+            if (replyTo!=null && !replyTo.hasAnonymousAddress()){
+                useAsync = true;
+            }
         }
 
         if (useAsync || options.isUseSeparateListener()) {

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java Sat Dec  1 06:43:28 2007
@@ -89,18 +89,14 @@
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-import java.util.TreeMap;
-import java.util.Vector;
+import java.util.*;
 
 public class WSDL11ToAxisServiceBuilder extends WSDLToAxisServiceBuilder {
 
+    public static final int COMPONENT_PORT_TYPE = 1;
+    public static final int COMPONENT_MESSAGE = 2;
+    public static final int COMPONENT_BINDING = 3;
+
     protected static final Log log = LogFactory
             .getLog(WSDL11ToAxisServiceBuilder.class);
     private static final boolean isTraceEnabled = log.isTraceEnabled();
@@ -256,7 +252,7 @@
 
     /**
      * Sets the URI to the base document associated with the WSDL definition.
-     * This identifies the origin of the Definition and allows the 
+     * This identifies the origin of the Definition and allows the
      * Definition to be reloaded.  Note that this is the URI of the base
      * document, not the imports.
      *
@@ -271,7 +267,7 @@
 
     /**
      * Gets the URI to the base document associated with the WSDL definition.
-     * This identifies the origin of the Definition and allows the 
+     * This identifies the origin of the Definition and allows the
      * Definition to be reloaded.  Note that this is the URI of the base
      * document, not the imports.
      *
@@ -284,7 +280,7 @@
 
 
     /**
-     * Populates a given service. 
+     * Populates a given service.
      *
      * @throws AxisFault
      */
@@ -292,7 +288,7 @@
         try {
             setup();
 
-            // NOTE: set the axisService with the Parameter for the WSDL 
+            // NOTE: set the axisService with the Parameter for the WSDL
             // Definition after the rest of the work
 
             if (wsdl4jDefinition == null) {
@@ -303,11 +299,15 @@
             axisService.setTargetNamespace(wsdl4jDefinition.getTargetNamespace());
             axisService.setNameSpacesMap(new NamespaceMap(wsdl4jDefinition.getNamespaces()));
 
+            //TODO : find the service also in imported wsdls
             Service wsdl4jService = findService(wsdl4jDefinition);
-            Binding binding = findBinding(wsdl4jDefinition, wsdl4jService);
-
 
-            PortType portType = getPortType(binding.getPortType().getQName(), wsdl4jDefinition);
+            Binding binding = findBinding(wsdl4jDefinition, wsdl4jService);
+            Definition bindingWSDL = getParentDefinition(wsdl4jDefinition,
+                    binding.getQName(), COMPONENT_BINDING, new HashSet());
+            Definition portTypeWSDL = getParentDefinition(bindingWSDL,
+                    binding.getPortType().getQName(), COMPONENT_PORT_TYPE, new HashSet());
+            PortType portType = portTypeWSDL.getPortType(binding.getPortType().getQName());
 
 
             if (portType == null) {
@@ -318,14 +318,6 @@
             // (if its present)
             Element[] schemaElements = generateWrapperSchema(schemaMap, binding, portType);
 
-            // we might have modified the schemas by now so the addition should
-            // happen here
-//            Types wsdl4jTypes = wsdl4jDefinition.getTypes();
-//            if (null != wsdl4jTypes) {
-//                this.copyExtensibleElements(wsdl4jTypes
-//                        .getExtensibilityElements(), wsdl4jDefinition,
-//                                                     axisService, TYPES);
-//            }
             processTypes(wsdl4jDefinition, axisService);
 
             // add the newly created schemas
@@ -342,14 +334,14 @@
             addDocumentation(axisService, documentationElement);
 
             axisService.setName(wsdl4jService.getQName().getLocalPart());
-            populateEndpoints(binding, wsdl4jService, portType);
+            populateEndpoints(binding, bindingWSDL,wsdl4jService, portType, portTypeWSDL);
             processPoliciesInDefintion(wsdl4jDefinition);
             axisService.getPolicyInclude().setPolicyRegistry(registry);
 
 
-            // Setting wsdl4jdefintion to the axisService parameter include list, 
-            // so if someone needs to use the definition directly, 
-            // he can do that by getting the parameter 
+            // Setting wsdl4jdefintion to the axisService parameter include list,
+            // so if someone needs to use the definition directly,
+            // he can do that by getting the parameter
             Parameter wsdlDefinitionParameter = new Parameter();
             wsdlDefinitionParameter.setName(WSDLConstants.WSDL_4_J_DEFINITION);
 
@@ -378,12 +370,14 @@
 
     private void processTypes(Definition wsdlDefinition, AxisService axisService)
             throws AxisFault {
-        processTypes(wsdlDefinition, axisService, new Stack());
+        processTypes(wsdlDefinition, axisService, new HashSet());
     }
 
-    private void processTypes(Definition wsdlDefinition, AxisService axisService, Stack stack)
+    private void processTypes(Definition wsdlDefinition,
+                              AxisService axisService,
+                              Set visitedWSDLs)
             throws AxisFault {
-        stack.push(wsdlDefinition);
+        visitedWSDLs.add(wsdlDefinition.getDocumentBaseURI());
         // process all the types in all the wsdls
         Types types = wsdlDefinition.getTypes();
         if (types != null) {
@@ -403,12 +397,11 @@
                 wsdlImport = (Import) valuesIter.next();
                 // process the types recuresiveilt
                 Definition innerDefinition = wsdlImport.getDefinition();
-                if(!stack.contains(innerDefinition)){
-                    processTypes(innerDefinition, axisService, stack);
+                if(!visitedWSDLs.contains(innerDefinition.getDocumentBaseURI())){
+                    processTypes(innerDefinition, axisService, visitedWSDLs);
                 }
             }
         }
-        stack.pop();
     }
 
     private void addDocumentation(AxisDescription axisDescription, Element documentationElement) {
@@ -427,8 +420,10 @@
      * @throws AxisFault
      */
     private void populateEndpoints(Binding binding,
+                                   Definition bindingWSDL,
                                    Service wsdl4jService,
-                                   PortType portType) throws AxisFault {
+                                   PortType portType,
+                                   Definition portTypeWSDL) throws AxisFault {
 
         Map wsdl4jPorts = wsdl4jService.getPorts();
         QName bindingName = binding.getQName();
@@ -441,28 +436,33 @@
         // process the port type for this binding
         // although we support multiports they must be belongs to same port type and should have the
         // same soap style
-        populatePortType(portType);
+        populatePortType(portType, portTypeWSDL);
 
         Binding currentBinding;
+        Definition currentBindingWSDL = null;
 
         for (Iterator iterator = wsdl4jPorts.values().iterator(); iterator.hasNext();) {
             port = (Port) iterator.next();
             // if the user has picked a port then we have to process only that port
             if ((this.portName == null) || (this.portName.equals(port.getName()))) {
                 // we process the port only if it has the same port type as the selected binding
-                currentBinding = getBinding(port.getBinding().getQName(), wsdl4jDefinition);
+                currentBindingWSDL = getParentDefinition(wsdl4jDefinition,
+                        port.getBinding().getQName(), COMPONENT_BINDING, new HashSet());
+                currentBinding = currentBindingWSDL.getBinding(port.getBinding().getQName());
 
                 if (currentBinding.getPortType().getQName().equals(binding.getPortType().getQName())) {
                     axisEndpoint = new AxisEndpoint();
                     axisEndpoint.setName(port.getName());
 
                     if (axisService.getEndpointName() == null &&
-                        bindingName.equals(port.getBinding().getQName())) {
-                        populateEndpoint(axisEndpoint, port, true);
+                            bindingName.equals(port.getBinding().getQName())) {
+                        populateEndpoint(axisEndpoint, port, currentBinding,
+                                bindingWSDL, portType, portTypeWSDL, true);
                         axisService.setEndpointName(axisEndpoint.getName());
                         axisService.setBindingName(axisEndpoint.getBinding().getName().getLocalPart());
                     } else {
-                        populateEndpoint(axisEndpoint, port, false);
+                        populateEndpoint(axisEndpoint, port, currentBinding,
+                                bindingWSDL, portType, portTypeWSDL, false);
                     }
 
                     axisEndpoint.setParent(axisService);
@@ -483,16 +483,18 @@
      * @param isSetMessageQNames
      * @throws AxisFault
      */
-    private void populateEndpoint(AxisEndpoint axisEndpoint, Port wsdl4jPort,
+    private void populateEndpoint(AxisEndpoint axisEndpoint,
+                                  Port wsdl4jPort,
+                                  Binding wsdl4jBinding,
+                                  Definition bindingWSDL,
+                                  PortType portType,
+                                  Definition portTypeWSDL,
                                   boolean isSetMessageQNames)
             throws AxisFault {
 
         copyExtensibleElements(wsdl4jPort.getExtensibilityElements(), wsdl4jDefinition,
                                axisEndpoint, BINDING);
 
-
-        Binding wsdl4jBinding = getBinding(wsdl4jPort.getBinding().getQName(), wsdl4jDefinition);
-
         addDocumentation(axisEndpoint, wsdl4jPort.getDocumentationElement());
         if (processedBindings.containsKey(wsdl4jBinding.getQName())) {
             axisEndpoint.setBinding(
@@ -503,13 +505,19 @@
             axisBinding.setParent(axisEndpoint);
             axisEndpoint.setBinding(axisBinding);
             axisBinding.setParent(axisEndpoint);
-            populateBinding(axisBinding, wsdl4jBinding, isSetMessageQNames);
+            populateBinding(axisBinding,
+                    wsdl4jBinding,
+                    bindingWSDL,
+                    portType,
+                    portTypeWSDL,
+                    isSetMessageQNames);
             processedBindings.put(wsdl4jBinding.getQName(), axisBinding);
         }
 
     }
 
-    private void populatePortType(PortType wsdl4jPortType) throws AxisFault {
+    private void populatePortType(PortType wsdl4jPortType,
+                                  Definition portTypeWSDL) throws AxisFault {
         List wsdl4jOperations = wsdl4jPortType.getOperations();
 
         // Added to use in ?wsdl2 as the interface name
@@ -528,7 +536,7 @@
         for (Iterator iterator = wsdl4jOperations.iterator(); iterator.hasNext();) {
             wsdl4jOperation = (Operation) iterator.next();
 
-            axisOperation = populateOperations(wsdl4jOperation, wsdl4jPortType, wsdl4jDefinition);
+            axisOperation = populateOperations(wsdl4jOperation, wsdl4jPortType, portTypeWSDL);
             addDocumentation(axisOperation, wsdl4jOperation.getDocumentationElement());
             axisOperation.setParent(axisService);
             axisService.addChild(axisOperation);
@@ -542,11 +550,15 @@
 
     }
 
-    private void populateBinding(AxisBinding axisBinding, Binding wsdl4jBinding,
+    private void populateBinding(AxisBinding axisBinding,
+                                 Binding wsdl4jBinding,
+                                 Definition bindingWSDL,
+                                 PortType portType,
+                                 Definition portTypeWSDL,
                                  boolean isSetMessageQNames)
             throws AxisFault {
 
-        copyExtensibleElements(wsdl4jBinding.getExtensibilityElements(), wsdl4jDefinition,
+        copyExtensibleElements(wsdl4jBinding.getExtensibilityElements(), bindingWSDL,
                                axisBinding, BINDING);
 
         List wsdl4jBidingOperations = wsdl4jBinding.getBindingOperations();
@@ -566,20 +578,16 @@
         Map httpLocationMap = new TreeMap();
         String httpLocation = null;
 
-        PortType portType = getPortType(wsdl4jBinding.getPortType().getQName(), wsdl4jDefinition);
-
-        String targetNamespace = wsdl4jDefinition.getTargetNamespace();
-
         for (Iterator iterator = wsdl4jBidingOperations.iterator(); iterator.hasNext();) {
 
             axisBindingOperation = new AxisBindingOperation();
             wsdl4jBindingOperation = (BindingOperation) iterator.next();
             wsdl4jOperation = findOperation(portType, wsdl4jBindingOperation);
 
-            axisBindingOperation.setName(new QName(targetNamespace, wsdl4jBindingOperation.getName()));
+            axisBindingOperation.setName(new QName(bindingWSDL.getTargetNamespace(), wsdl4jBindingOperation.getName()));
             addDocumentation(axisBindingOperation, wsdl4jBindingOperation.getDocumentationElement());
 
-            axisOperation = axisService.getOperation(new QName(targetNamespace, wsdl4jOperation.getName()));
+            axisOperation = axisService.getOperation(new QName(portTypeWSDL.getTargetNamespace(), wsdl4jOperation.getName()));
             axisBindingOperation.setAxisOperation(axisOperation);
 
             // process ExtensibilityElements of the wsdl4jBinding
@@ -681,22 +689,33 @@
                  bindingFaults.hasNext();) {
 
                 BindingFault bindingFault = (BindingFault) bindingFaults.next();
-                Fault wsdl4jFault = wsdl4jOperation.getFault(bindingFault.getName());
-                Message wsdl4jFaultMessge = wsdl4jFault.getMessage();
-
-                AxisMessage faultMessage = findFaultMessage(
-                        wsdl4jFaultMessge.getQName().getLocalPart(),
-                        axisOperation.getFaultMessages());
-
-                AxisBindingMessage axisBindingFaultMessage = new AxisBindingMessage();
-                addDocumentation(axisBindingFaultMessage, wsdl4jFaultMessge.getDocumentationElement());
-                axisBindingFaultMessage.setFault(true);
-                axisBindingFaultMessage.setAxisMessage(faultMessage);
-                axisBindingFaultMessage.setParent(axisBindingOperation);
+                if (bindingFault.getName() == null) {
+                    throw new AxisFault("Binding name is null for the binding fault in " +
+                            " binding operation ==> " + wsdl4jBindingOperation.getName());
+                } else {
+                    Fault wsdl4jFault = wsdl4jOperation.getFault(bindingFault.getName());
+                    if (wsdl4jFault == null){
+                        throw new AxisFault("Can not find the corresponding fault element in " +
+                                "wsdl operation " + wsdl4jOperation.getName() + " for the fault" +
+                                " name " + bindingFault.getName());
+                    } else {
+                        Message wsdl4jFaultMessge = wsdl4jFault.getMessage();
 
-                axisBindingOperation.addFault(axisBindingFaultMessage);
-                if (isSetMessageQNames) {
-                    addQNameReference(faultMessage, wsdl4jFault.getMessage());
+                        AxisMessage faultMessage = findFaultMessage(
+                                wsdl4jFaultMessge.getQName().getLocalPart(),
+                                axisOperation.getFaultMessages());
+
+                        AxisBindingMessage axisBindingFaultMessage = new AxisBindingMessage();
+                        addDocumentation(axisBindingFaultMessage, wsdl4jFaultMessge.getDocumentationElement());
+                        axisBindingFaultMessage.setFault(true);
+                        axisBindingFaultMessage.setAxisMessage(faultMessage);
+                        axisBindingFaultMessage.setParent(axisBindingOperation);
+
+                        axisBindingOperation.addFault(axisBindingFaultMessage);
+                        if (isSetMessageQNames) {
+                            addQNameReference(faultMessage, wsdl4jFault.getMessage());
+                        }
+                    }
                 }
             }
 
@@ -728,17 +747,15 @@
             return; // can't continue without wsdl
         }
 
-        // process the imports
-//        WSDL4JImportedWSDLHelper.processImports(wsdl4jDefinition, new ArrayList());
 
         // setup the schemaMap
         this.schemaMap = new HashMap();
-        populateSchemaMap(wsdl4jDefinition, new Stack());
+        populateSchemaMap(wsdl4jDefinition, new HashSet());
 
         setPolicyRegistryFromService(axisService);
 
         setupComplete = true; // if any part of setup fails, don't mark
-        // setupComplete        
+        // setupComplete
     }
 
 
@@ -749,8 +766,9 @@
      * @param definition
      */
 
-    private void populateSchemaMap(Definition definition, Stack stack) {
-        stack.push(definition);
+    private void populateSchemaMap(Definition definition, Set visitedWSDLs) {
+        visitedWSDLs.add(definition.getDocumentBaseURI());
+        // first process the types in the given wsdl
         Types types = definition.getTypes();
         Object extensibilityElement;
         if (types != null) {
@@ -773,12 +791,11 @@
             for (Iterator valuesIter = values.iterator(); valuesIter.hasNext();) {
                 wsdlImport = (Import) valuesIter.next();
                 Definition innerDefinition = wsdlImport.getDefinition();
-                if(!stack.contains(innerDefinition)) {
-                    populateSchemaMap(innerDefinition, stack);
+                if(!visitedWSDLs.contains(innerDefinition.getDocumentBaseURI())) {
+                    populateSchemaMap(innerDefinition, visitedWSDLs);
                 }
             }
         }
-        stack.pop();
     }
 
 
@@ -875,8 +892,9 @@
         if (port != null) {
             copyExtensibleElements(port.getExtensibilityElements(), dif,
                                    axisService, PORT);
-//            binding = dif.getBinding(port.getBinding().getQName());
-            binding = getBinding(port.getBinding().getQName(), dif);
+            Definition parentDefinition = getParentDefinition(dif,
+                    port.getBinding().getQName(), COMPONENT_BINDING, new HashSet());
+            binding = parentDefinition.getBinding(port.getBinding().getQName());
             if (binding == null) {
                 binding = port.getBinding();
             }
@@ -886,143 +904,6 @@
     }
 
     /**
-     * find the message from imported wsdls
-     *
-     * @param messageQName
-     * @param definition
-     * @return message
-     */
-    private Message getMessage(QName messageQName, Definition definition) {
-        Message message = null;
-        // this can be in a imported wsdl
-        Iterator iter = definition.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();
-                // find the binding recursively
-                message = getMessage(messageQName, wsdlImport.getDefinition());
-                if (message != null) {
-                    break;
-                }
-            }
-            if (message != null) {
-                break;
-            }
-        }
-
-        if (message == null) {
-            message = definition.getMessage(messageQName);
-        }
-        return message;
-    }
-
-    /**
-     * get the port type form all the imported documents
-     *
-     * @param portTypeQName
-     * @param definition
-     * @return portType
-     */
-
-    private PortType getPortType(QName portTypeQName, Definition definition) {
-        return getPortType(portTypeQName, definition, new Stack());
-    }
-
-    /**
-     * get the port type form all the imported documents
-     *
-     * @param portTypeQName
-     * @param definition
-     * @return portType
-     */
-
-    private PortType getPortType(QName portTypeQName, Definition definition, Stack stack) {
-        stack.push(definition);
-        PortType portType = null;
-        Iterator iter = definition.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();
-                Definition innerDefinition = wsdlImport.getDefinition();
-                if(!stack.contains(innerDefinition)){
-                    // find the binding recursively
-                    portType = getPortType(portTypeQName, innerDefinition, stack);
-                    if (portType != null) {
-                        break;
-                    }
-                }
-            }
-            if (portType != null) {
-                break;
-            }
-        }
-
-        if (portType == null) {
-            // this can be in a imported wsdl
-            portType = definition.getPortType(portTypeQName);
-        }
-        stack.pop();
-        return portType;
-    }
-
-    private Binding getBinding(QName bindingQName, Definition definition) {
-        ArrayList list = new ArrayList();
-        Binding binding = getBinding(bindingQName, definition, list);
-        if (binding == null) {
-            for(int i=0;i<list.size();i++){
-                Binding binding2 = definition.getBinding(bindingQName);
-                if(binding2 != null && binding2.getPortType() != null){
-                    binding = binding2;
-                    break;
-                }
-            }
-        }
-        return binding;
-    }
-
-    /**
-     * first find the binding in the given definition
-     * if not found serch in the imported doucuments
-     *
-     * @param bindingQName
-     * @param definition
-     * @return binding
-     */
-
-    private Binding getBinding(QName bindingQName, Definition definition, ArrayList list) {
-        list.add(definition);
-        Binding binding = null;
-        //first try to find a binding in the upper inmport
-        Iterator iter = definition.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();
-                Definition innerDefinition = wsdlImport.getDefinition();
-                if(!list.contains(innerDefinition)) {
-                    // find the binding recursively
-                    binding = getBinding(bindingQName, innerDefinition, list);
-                    if (binding != null) {
-                        break;
-                    }
-                }
-            }
-            if (binding != null) {
-                break;
-            }
-        }
-        return binding;
-    }
-
-    /**
      * Finds a SOAP port given the port map
      */
     private Port findPort(Map ports) {
@@ -2131,6 +2012,7 @@
 
         // switch off the verbose mode for all usecases
         reader.setFeature(JAVAX_WSDL_VERBOSE_MODE_KEY, false);
+        reader.setFeature("javax.wsdl.importDocuments", true);
 
         Definition def;
         // if the custem resolver is present then use it
@@ -2154,7 +2036,7 @@
                 throw new WSDLException(WSDLException.INVALID_WSDL, "IO Error",
                                         e);
             }
-            
+
             // Log when and from where the WSDL is loaded.
             if (log.isDebugEnabled()) {
                 log.debug("Reading 1.1 WSDL with base uri = " + getBaseUri());
@@ -2733,7 +2615,7 @@
      * @param definition
      */
     private void processPoliciesInDefintion(Definition definition) {
-        processPoliciesInDefintion(definition, new Stack());
+        processPoliciesInDefintion(definition, new HashSet());
     }
 
     /**
@@ -2741,8 +2623,8 @@
      *
      * @param definition
      */
-    private void processPoliciesInDefintion(Definition definition, Stack stack) {
-        stack.push(definition);
+    private void processPoliciesInDefintion(Definition definition, Set visitedWSDLs) {
+        visitedWSDLs.add(definition.getDocumentBaseURI());
         List extElements = definition.getExtensibilityElements();
         ExtensibilityElement extElement;
         UnknownExtensibilityElement unknown = null;
@@ -2775,12 +2657,11 @@
                 wsdlImport = (Import) valuesIter.next();
                 Definition innerDefinition = wsdlImport.getDefinition();
                 // find the binding recursively
-                if(!stack.contains(innerDefinition)) {
-                    processPoliciesInDefintion(innerDefinition, stack);
+                if(!visitedWSDLs.contains(innerDefinition.getDocumentBaseURI())) {
+                    processPoliciesInDefintion(innerDefinition, visitedWSDLs);
                 }
             }
         }
-        stack.pop();
     }
 
 
@@ -2814,11 +2695,11 @@
     }
 
 //    private void processPoliciesInDefinition() {
-//        
+//
 //        Object obj;
 //        for (Iterator iterator = wsdl4jDefinition.getExtensibilityElements().iterator(); iterator.hasNext();) {
 //            obj = iterator.next();
-//            
+//
 //            if (obj instanceof UnknownExtensibilityElement) {
 //                Element e = ((UnknownExtensibilityElement) obj).getElement();
 //                if (WSDLConstants.WSDL11Constants.POLICY.getNamespaceURI().equals(e.getNamespaceURI()) &&
@@ -2858,5 +2739,72 @@
             }
         }
         return null;
+    }
+
+    /**
+     * returns the wsld defintion for the given component.
+     * @param definition
+     * @param qname
+     * @param componentType
+     * @param visitedWSDLs
+     * @return definition containing the component.
+     */
+    private Definition getParentDefinition(Definition definition,
+                                           QName qname,
+                                           int componentType,
+                                           Set visitedWSDLs){
+        visitedWSDLs.add(definition.getDocumentBaseURI());
+        Definition newParentDefinition = null;
+        // first find through imports
+        Iterator iter = definition.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();
+                Definition innerDefinition = wsdlImport.getDefinition();
+                if (!visitedWSDLs.contains(innerDefinition.getDocumentBaseURI())){
+                    newParentDefinition = getParentDefinition(innerDefinition,qname,componentType,visitedWSDLs);
+                    if (newParentDefinition != null){
+                        break;
+                    }
+                }
+            }
+            if (newParentDefinition != null) {
+                break;
+            }
+        }
+
+        // if it not available in imports we check for the current definition.
+        if (newParentDefinition == null) {
+            // this can be in a imported wsdl
+            if (isComponetAvailable(definition, qname, componentType)) {
+                newParentDefinition = definition;
+            }
+        }
+
+        return newParentDefinition;
+    }
+
+    private boolean isComponetAvailable(Definition definition,
+                                        QName qname,
+                                        int componentType){
+        boolean isAvailable = false;
+        switch (componentType){
+            case COMPONENT_BINDING : {
+                isAvailable = (definition.getBinding(qname) != null);
+                break;
+            }
+            case COMPONENT_PORT_TYPE : {
+                isAvailable = (definition.getPortType(qname) != null);
+                break;
+            }
+            case COMPONENT_MESSAGE : {
+                isAvailable = (definition.getMessage(qname) != null);
+                break;
+            }
+        }
+        return isAvailable;
     }
 }

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.java Sat Dec  1 06:43:28 2007
@@ -44,6 +44,7 @@
 import org.apache.woden.internal.wsdl20.extensions.http.HTTPHeaderImpl;
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPBindingExtensionsImpl;
 import org.apache.woden.schema.Schema;
+import org.apache.woden.types.NamespaceDeclaration;
 import org.apache.woden.wsdl20.Binding;
 import org.apache.woden.wsdl20.BindingFault;
 import org.apache.woden.wsdl20.BindingFaultReference;
@@ -90,6 +91,7 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -108,7 +110,7 @@
 
     private String savedTargetNamespace;
 
-    private Map namespacemap;
+    private NamespaceDeclaration[] namespacemap;
 
     private List operationNames = new ArrayList();
 
@@ -145,7 +147,7 @@
         DescriptionElement descriptionElement = description.toElement();
         savedTargetNamespace = descriptionElement.getTargetNamespace()
                 .toString();
-        namespacemap = descriptionElement.getNamespaces();
+        namespacemap = descriptionElement.getDeclaredNamespaces();
         this.description = description;
         this.serviceName = null;
         if (name != null) {
@@ -443,17 +445,17 @@
                 }
 
                 savedTargetNamespace = descriptionElement.getTargetNamespace().toString();
-                namespacemap = descriptionElement.getNamespaces();
+                namespacemap = descriptionElement.getDeclaredNamespaces();
                 this.description = description;
 
             }
             // Create the namespacemap
 
             stringBasedNamespaceMap = new NamespaceMap();
-            Iterator iterator = namespacemap.keySet().iterator();
-            while (iterator.hasNext()) {
-                String key = (String) iterator.next();
-                stringBasedNamespaceMap.put(key, (namespacemap.get(key)).toString());
+            for (int i = 0; i < namespacemap.length; i++) {
+                NamespaceDeclaration namespaceDeclaration = namespacemap[i];
+                stringBasedNamespaceMap.put(namespaceDeclaration.getPrefix(),
+                                            namespaceDeclaration.getNamespaceURI().toString());
             }
 
             setupComplete = true;
@@ -1021,6 +1023,10 @@
             faultMessage.setDirection(interfaceFaultReference.getDirection().toString());
 
             InterfaceFault interfaceFault = interfaceFaultReference.getInterfaceFault();
+
+            if (interfaceFault == null) {
+                throw new AxisFault("Interface Fault reference defined in operation " + opName + " cannot be found in interface");
+            }
 
             faultMessage.setElementQName(interfaceFault.getElementDeclaration().getName());
             faultMessage.setName(interfaceFault.getName().getLocalPart());

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/WSDL2Constants.java Sat Dec  1 06:43:28 2007
@@ -26,9 +26,11 @@
     String URI_WSDL2_SOAP = "http://www.w3.org/ns/wsdl/soap";
     String URI_WSDL2_HTTP = "http://www.w3.org/ns/wsdl/http";
     String URI_WSDL2_EXTENSIONS = "http://www.w3.org/ns/wsdl-extensions";
+    String URI_WSDL2_RPC = "http://www.w3.org/ns/wsdl/rpc";
     String SOAP_PREFIX = "wsoap";
     String HTTP_PREFIX = "whttp";
     String WSDL_EXTENTION_PREFIX = "wsdlx";
+    String WSDL_RPC_PREFIX = "wrpc";
     String SOAP_ENV_PREFIX = "soap";
     String DEFAULT_TARGET_NAMESPACE_PREFIX = "axis2";
     String DOCUMENTATION = "documentation";
@@ -73,6 +75,7 @@
     String ATTRIBUTE_AUTHENTICATION_TYPE = "authenticationType";
     String ATTRIBUTE_AUTHENTICATION_REALM = "authenticationRealm";
     String ATTRIBUTE_STYLE = "style";
+    String ATTRIBUTE_SIGNATURE = "signature";
     String OPERATION_STYLE = "operationStyle";
     String IN_PUT_LOCAL_NAME = "input";
     String OUT_PUT_LOCAL_NAME = "output";
@@ -116,11 +119,17 @@
 
     String ATTR_WSDLX_SAFE = "wsdlx:safe";
 
+    String ATTR_WRPC_SIGNATURE = "wrpc:signature";
+
     String SOAP_VERSION_1_1 = "1.1";
     String SOAP_VERSION_1_2 = "1.2";
 
     String MESSAGE_LABEL_IN = "In";
     String MESSAGE_LABEL_OUT = "Out";
+
+    String RPC_IN = "#in";
+    String RPC_OUT = "#out";
+    String RPC_INOUT = "#inout";
 
     String HTTP_LOCATION_TABLE = "HTTPLocationTable";
 

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/AnnotationConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/AnnotationConstants.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/AnnotationConstants.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/AnnotationConstants.java Sat Dec  1 06:43:28 2007
@@ -28,4 +28,5 @@
     String EXCLUDE = "exclude";
     String ACTION = "action";
     String WSDL_LOCATION = "wsdlLocation";
+    String OPERATION_NAME ="operationName";
 }

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java Sat Dec  1 06:43:28 2007
@@ -154,9 +154,9 @@
         for (int count = 0; count < getExtraClasses().size(); ++count) {
             jam_service_parms.includeClass((String) getExtraClasses().get(count));
         }
-        JamService service = factory.createService(jam_service_parms);
+        JamService jamService = factory.createService(jam_service_parms);
         QName extraSchemaTypeName;
-        JamClassIterator jClassIter = service.getClasses();
+        JamClassIterator jClassIter = jamService.getClasses();
         //all most all the time the ittr will have only one class in it
         while (jClassIter.hasNext()) {
             JClass jclass = (JClass) jClassIter.next();
@@ -164,7 +164,7 @@
                 /**
                  * Schema genertaion done in two stage 1. Load all the methods and
                  * create type for methods parameters (if the parameters are Bean
-                 * then it will create Complex types for those , and if the
+                 * then it will create Complex types foer those , and if the
                  * parameters are simple type which decribe in SimpleTypeTable
                  * nothing will happen) 2. In the next stage for all the methods
                  * messages and port types will be creteated
@@ -177,6 +177,11 @@
                         targetNamespace = tns;
                         schemaTargetNameSpace = tns;
                     }
+                    if(annotation.getValue(AnnotationConstants.NAME) != null) {
+                        String serviceName = (annotation.getValue(AnnotationConstants.NAME)).asString();
+                        service.setName(serviceName);
+                    }
+
                 }
                 methods = processMethods(jclass.getDeclaredMethods());
 
@@ -387,9 +392,8 @@
     }
 
     /**
-     * JAM convert first name of an attribute into UpperCase as an example if there is a instance
-     * variable called foo in a bean , then Jam give that as Foo so this method is to correct that
-     * error
+     * JAM converts the first letter of a field into uppercase, so field "foo" would end up
+     * called "Foo".  This method corrects that problem.
      *
      * @param wrongName
      * @return the right name, using english as the locale for case conversion
@@ -690,12 +694,8 @@
         if ("javax.activation.DataHandler".equals(classType)) {
             return true;
         } else {
-            JClass supuerClass = clazz.getSuperclass();
-            if (supuerClass != null) {
-                return isDataHandler(supuerClass);
-            } else {
-                return false;
-            }
+            JClass superClass = clazz.getSuperclass();
+            return superClass != null && isDataHandler(superClass);
         }
     }
 
@@ -779,7 +779,7 @@
         XmlSchema xmlSchema;
 
         if ((xmlSchema = (XmlSchema) schemaMap.get(targetNamespace)) == null) {
-            String targetNamespacePrefix = null;
+            String targetNamespacePrefix;
 
             if (targetNamespace.equals(schemaTargetNameSpace) &&
                     schema_namespace_prefix != null) {
@@ -924,7 +924,7 @@
     }
 
     protected String getSimpleName(JMethod method) {
-        return method.getSimpleName();
+       return Utils.getSimpleName(method);
     }
 
     protected String getSimpleName(JClass type) {

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java Sat Dec  1 06:43:28 2007
@@ -21,12 +21,15 @@
 package org.apache.axis2.dispatchers;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisEndpoint;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.HandlerDescription;
 import org.apache.axis2.description.WSDL2Constants;
+import org.apache.axis2.description.AxisBinding;
+import org.apache.axis2.description.AxisBindingOperation;
 import org.apache.axis2.engine.AbstractDispatcher;
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.commons.logging.Log;
@@ -81,8 +84,22 @@
                             Map httpLocationTable = (Map) endpoint.getBinding()
                                     .getProperty(WSDL2Constants.HTTP_LOCATION_TABLE);
                             if (httpLocationTable != null) {
-                                return getOperationFromHTTPLocation(httpLocation,
-                                                                    httpLocationTable);
+                                AxisOperation axisOperation =
+                                        getOperationFromHTTPLocation(httpLocation,
+                                                                     httpLocationTable);
+                                if (axisOperation != null) {
+                                    messageContext.setProperty(WSDL2Constants.ENDPOINT_LOCAL_NAME,
+                                                               endpoint);
+                                    AxisBinding axisBinding = endpoint.getBinding();
+                                    if (axisBinding != null) {
+                                        AxisBindingOperation axisBindingOperation =
+                                                (AxisBindingOperation) axisBinding
+                                                        .getChild(axisOperation.getName());
+                                        messageContext.setProperty(Constants.AXIS_BINDING_OPERATION,
+                                                                   axisBindingOperation);
+                                        return axisOperation;
+                                    }
+                                }
                             }
                         }
                     }

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Sat Dec  1 06:43:28 2007
@@ -20,6 +20,7 @@
 
 package org.apache.axis2.engine;
 
+import org.apache.axiom.soap.RolePlayer;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
@@ -72,7 +73,7 @@
         }
 
         // Get all the headers targeted to us
-        Iterator headerBlocks = envelope.getHeader().getHeadersToProcess(null);
+        Iterator headerBlocks = envelope.getHeader().getHeadersToProcess((RolePlayer)msgContext.getConfigurationContext().getAxisConfiguration().getParameterValue("rolePlayer"));
 
         while (headerBlocks.hasNext()) {
             SOAPHeaderBlock headerBlock = (SOAPHeaderBlock) headerBlocks.next();

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/TransportUtils.java Sat Dec  1 06:43:28 2007
@@ -152,11 +152,11 @@
                 }
             }
             Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
-            if (log.isDebugEnabled()) {
-                log.debug("createSOAPEnvelope using Builder (" + 
-                          builder.getClass() + ") selected from type (" + type +")");
-            }
             if (builder != null) {
+	            if (log.isDebugEnabled()) {
+	                log.debug("createSOAPEnvelope using Builder (" + 
+	                          builder.getClass() + ") selected from type (" + type +")");
+	            }
                 documentElement = builder.processDocument(inStream, contentType, msgContext);
             }
         }

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Sat Dec  1 06:43:28 2007
@@ -693,7 +693,10 @@
         private HttpServletResponse response;
         private boolean responseWritten = false;
         private CountDownLatch responseReadySignal = new CountDownLatch(1);
-        RequestResponseTransportStatus status = RequestResponseTransportStatus.INITIAL;
+		// The initial status must be WAITING, as the main servlet will do some other
+		// work after setting this RequestResponseTransport up, and we don't want to miss
+		// signals that come in before this thread gets to the awaitResponse call.
+        private RequestResponseTransportStatus status = RequestResponseTransportStatus.WAITING;
         AxisFault faultToBeThrownOut = null;
 
         ServletRequestResponseTransport(HttpServletResponse response) {
@@ -721,7 +724,6 @@
         public void awaitResponse()
                 throws InterruptedException, AxisFault {
             log.debug("Blocking servlet thread -- awaiting response");
-            status = RequestResponseTransportStatus.WAITING;
             responseReadySignal.await();
 
             if (faultToBeThrownOut != null) {

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java Sat Dec  1 06:43:28 2007
@@ -29,7 +29,6 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.deployment.DeploymentConstants;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.engine.Handler.InvocationResponse;

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpConnectionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpConnectionImpl.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpConnectionImpl.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpConnectionImpl.java Sat Dec  1 06:43:28 2007
@@ -25,21 +25,18 @@
 import java.net.InetAddress;
 import java.net.Socket;
 import java.net.SocketException;
-import java.util.Iterator;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.http.ConnectionClosedException;
-import org.apache.http.Header;
+import org.apache.http.HeaderIterator;
 import org.apache.http.HttpConnectionMetrics;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpEntityEnclosingRequest;
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestFactory;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpVersion;
-import org.apache.http.RequestLine;
+import org.apache.http.ProtocolVersion;
 import org.apache.http.entity.ContentLengthStrategy;
 import org.apache.http.impl.DefaultHttpRequestFactory;
 import org.apache.http.impl.entity.StrictContentLengthStrategy;
@@ -47,20 +44,18 @@
 import org.apache.http.impl.io.ChunkedOutputStream;
 import org.apache.http.impl.io.ContentLengthInputStream;
 import org.apache.http.impl.io.ContentLengthOutputStream;
-import org.apache.http.impl.io.HttpDataInputStream;
+import org.apache.http.impl.io.HttpRequestParser;
+import org.apache.http.impl.io.HttpResponseWriter;
+import org.apache.http.impl.io.IdentityInputStream;
 import org.apache.http.impl.io.IdentityOutputStream;
-import org.apache.http.impl.io.SocketHttpDataReceiver;
-import org.apache.http.impl.io.SocketHttpDataTransmitter;
-import org.apache.http.io.HttpDataReceiver;
-import org.apache.http.io.HttpDataTransmitter;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.message.BasicRequestLine;
-import org.apache.http.message.BasicStatusLine;
-import org.apache.http.message.BufferedHeader;
+import org.apache.http.impl.io.SocketInputBuffer;
+import org.apache.http.impl.io.SocketOutputBuffer;
+import org.apache.http.io.HttpMessageParser;
+import org.apache.http.io.HttpMessageWriter;
+import org.apache.http.io.SessionInputBuffer;
+import org.apache.http.io.SessionOutputBuffer;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.http.params.HttpParams;
-import org.apache.http.util.CharArrayBuffer;
-import org.apache.http.util.HeaderUtils;
 
 public class AxisHttpConnectionImpl implements AxisHttpConnection {
 
@@ -68,13 +63,11 @@
         LogFactory.getLog("org.apache.axis2.transport.http.server.wire");
 
     private final Socket socket;
-    private final HttpDataTransmitter datatransmitter;
-    private final HttpDataReceiver datareceiver;
-    private final CharArrayBuffer charbuffer; 
-    private final HttpRequestFactory requestfactory;
+    private final SessionOutputBuffer outbuffer;
+    private final SessionInputBuffer inbuffer;
+    private final HttpMessageParser requestParser;
+    private final HttpMessageWriter responseWriter;
     private final ContentLengthStrategy contentLenStrategy;
-    private final int maxHeaderCount;
-    private final int maxLineLen;
 
     private OutputStream out = null;
     private InputStream in = null;
@@ -98,17 +91,17 @@
         
         int buffersize = HttpConnectionParams.getSocketBufferSize(params);
         this.socket = socket;
-        this.datatransmitter = new SocketHttpDataTransmitter(socket, buffersize, params); 
-        this.datareceiver = new SocketHttpDataReceiver(socket, buffersize, params); 
-        this.charbuffer = new CharArrayBuffer(256);
-        this.requestfactory = new DefaultHttpRequestFactory();
+        this.outbuffer = new SocketOutputBuffer(socket, buffersize, params); 
+        this.inbuffer = new SocketInputBuffer(socket, buffersize, params); 
         this.contentLenStrategy = new StrictContentLengthStrategy();
-        this.maxHeaderCount = params.getIntParameter(HttpConnectionParams.MAX_HEADER_COUNT, -1);
-        this.maxLineLen = params.getIntParameter(HttpConnectionParams.MAX_LINE_LENGTH, -1);
+        this.requestParser = new HttpRequestParser(
+                this.inbuffer, null, new DefaultHttpRequestFactory(), params);
+        this.responseWriter = new HttpResponseWriter(
+                this.outbuffer, null, params);
     }
 
     public void close() throws IOException {
-        this.datatransmitter.flush();
+        this.outbuffer.flush();
         try {
             this.socket.shutdownOutput();
         } catch (IOException ignore) {
@@ -126,7 +119,7 @@
 
     public boolean isStale() {
         try {
-            this.datareceiver.isDataAvailable(1);
+            this.inbuffer.isDataAvailable(1);
             return false;
         } catch (IOException ex) {
             return true;
@@ -141,23 +134,11 @@
     }
 
     public HttpRequest receiveRequest() throws HttpException, IOException {
-        this.charbuffer.clear();
-        int i = this.datareceiver.readLine(this.charbuffer);
-        if (i == -1) {
-            throw new ConnectionClosedException("Client closed connection"); 
-        }
-        RequestLine requestline = BasicRequestLine.parse(this.charbuffer, 0, this.charbuffer.length());
-        HttpRequest request = this.requestfactory.newHttpRequest(requestline);
-        Header[] headers = HeaderUtils.parseHeaders(
-                this.datareceiver, 
-                this.maxHeaderCount,
-                this.maxLineLen);
-        request.setHeaders(headers);
-        
+        HttpRequest request = (HttpRequest) this.requestParser.parse();
         if (HEADERLOG.isDebugEnabled()) {
             HEADERLOG.debug(">> " + request.getRequestLine().toString());
-            for (i = 0; i < headers.length; i++) {
-                HEADERLOG.debug(">> " + headers[i].toString());
+            for (HeaderIterator it = request.headerIterator(); it.hasNext(); ) {
+                HEADERLOG.debug(">> " + it.nextHeader().toString());
             }
         }
         
@@ -166,11 +147,11 @@
         if (request instanceof HttpEntityEnclosingRequest) {
             long len = this.contentLenStrategy.determineLength(request);
             if (len == ContentLengthStrategy.CHUNKED) {
-                this.in = new ChunkedInputStream(this.datareceiver);
+                this.in = new ChunkedInputStream(this.inbuffer);
             } else if (len == ContentLengthStrategy.IDENTITY) {
-                this.in = new HttpDataInputStream(this.datareceiver);                            
+                this.in = new IdentityInputStream(this.inbuffer);                            
             } else {
-                this.in = new ContentLengthInputStream(datareceiver, len);
+                this.in = new ContentLengthInputStream(inbuffer, len);
             }
         }
         return request;
@@ -184,43 +165,28 @@
 
         if (HEADERLOG.isDebugEnabled()) {
             HEADERLOG.debug("<< " + response.getStatusLine().toString());
-            Header[] headers = response.getAllHeaders();
-            for (int i = 0; i < headers.length; i++) {
-                HEADERLOG.debug("<< " + headers[i].toString());
+            for (HeaderIterator it = response.headerIterator(); it.hasNext(); ) {
+                HEADERLOG.debug("<< " + it.nextHeader().toString());
             }
         }
         
-        this.charbuffer.clear();
-        BasicStatusLine.format(this.charbuffer, response.getStatusLine());
-        this.datatransmitter.writeLine(this.charbuffer);
-        for (Iterator it = response.headerIterator(); it.hasNext(); ) {
-            Header header = (Header) it.next();
-            if (header instanceof BufferedHeader) {
-                this.datatransmitter.writeLine(((BufferedHeader)header).getBuffer());
-            } else {
-                this.charbuffer.clear();
-                BasicHeader.format(this.charbuffer, header);
-                this.datatransmitter.writeLine(this.charbuffer);
-            }
-        }
-        this.charbuffer.clear();
-        this.datatransmitter.writeLine(this.charbuffer);
+        this.responseWriter.write(response);
 
         // Prepare output stream
         this.out = null;
-        HttpVersion ver = response.getStatusLine().getHttpVersion();
+        ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
         HttpEntity entity = response.getEntity();
         if (entity != null) {
             long len = entity.getContentLength();
             if (entity.isChunked() && ver.greaterEquals(HttpVersion.HTTP_1_1)) {
-                this.out = new ChunkedOutputStream(this.datatransmitter);
+                this.out = new ChunkedOutputStream(this.outbuffer);
             } else if (len >= 0) {
-                this.out = new ContentLengthOutputStream(this.datatransmitter, len);
+                this.out = new ContentLengthOutputStream(this.outbuffer, len);
             } else {
-                this.out = new IdentityOutputStream(this.datatransmitter); 
+                this.out = new IdentityOutputStream(this.outbuffer); 
             }
         } else {
-            this.datatransmitter.flush();
+            this.outbuffer.flush();
         }
     }
     
@@ -236,7 +202,7 @@
         if (this.out != null) {
             this.out.flush();
         } else {
-            this.datatransmitter.flush();
+            this.outbuffer.flush();
         }
     }
 

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpRequestImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpRequestImpl.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpRequestImpl.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpRequestImpl.java Sat Dec  1 06:43:28 2007
@@ -21,16 +21,16 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Iterator;
 
 import org.apache.http.Header;
+import org.apache.http.HeaderIterator;
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
-import org.apache.http.HttpVersion;
+import org.apache.http.ProtocolVersion;
 import org.apache.http.params.HttpParams;
+import org.apache.http.protocol.ExecutionContext;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpExecutionContext;
 import org.apache.http.protocol.HttpProcessor;
 
 public class AxisHttpRequestImpl implements AxisHttpRequest {
@@ -65,8 +65,8 @@
     }
     
     public void prepare() throws IOException, HttpException {
-        this.context.setAttribute(HttpExecutionContext.HTTP_CONNECTION, this.conn);
-        this.context.setAttribute(HttpExecutionContext.HTTP_REQUEST, this.request);
+        this.context.setAttribute(ExecutionContext.HTTP_CONNECTION, this.conn);
+        this.context.setAttribute(ExecutionContext.HTTP_REQUEST, this.request);
         
         this.httpproc.process(this.request, this.context);
     }
@@ -79,8 +79,8 @@
         return this.request.getRequestLine().getUri();
     }
 
-    public HttpVersion getHttpVersion() {
-        return this.request.getRequestLine().getHttpVersion();
+    public ProtocolVersion getProtocolVersion() {
+        return this.request.getRequestLine().getProtocolVersion();
     }
 
     public String getContentType() {
@@ -124,8 +124,12 @@
         return this.request.getLastHeader(name);
     }
 
-    public Iterator headerIterator() {
+    public HeaderIterator headerIterator() {
         return this.request.headerIterator();
+    }
+
+    public HeaderIterator headerIterator(final String name) {
+        return this.request.headerIterator(name);
     }
 
     public void removeHeader(final Header header) {

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpResponseImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpResponseImpl.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpResponseImpl.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpResponseImpl.java Sat Dec  1 06:43:28 2007
@@ -21,17 +21,17 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.Iterator;
 
 import org.apache.axis2.transport.OutTransportInfo;
 import org.apache.http.Header;
+import org.apache.http.HeaderIterator;
 import org.apache.http.HttpException;
 import org.apache.http.HttpResponse;
-import org.apache.http.HttpVersion;
+import org.apache.http.ProtocolVersion;
 import org.apache.http.entity.BasicHttpEntity;
 import org.apache.http.params.HttpParams;
+import org.apache.http.protocol.ExecutionContext;
 import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpExecutionContext;
 import org.apache.http.protocol.HttpProcessor;
 
 public class AxisHttpResponseImpl implements AxisHttpResponse, OutTransportInfo {
@@ -86,8 +86,8 @@
         }
         this.commited = true;
         
-        this.context.setAttribute(HttpExecutionContext.HTTP_CONNECTION, this.conn);
-        this.context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, this.response);
+        this.context.setAttribute(ExecutionContext.HTTP_CONNECTION, this.conn);
+        this.context.setAttribute(ExecutionContext.HTTP_RESPONSE, this.response);
         
         BasicHttpEntity entity = new BasicHttpEntity();
         entity.setChunked(true);
@@ -108,7 +108,7 @@
 
     public void sendError(int sc, final String msg) {
         assertNotCommitted();
-        HttpVersion ver = this.response.getHttpVersion();
+        ProtocolVersion ver = this.response.getProtocolVersion();
         this.response.setStatusLine(ver, sc, msg);
     }
 
@@ -127,8 +127,8 @@
         this.contentType = contentType;
     }
 
-    public HttpVersion getHttpVersion() {
-        return this.response.getHttpVersion();
+    public ProtocolVersion getProtocolVersion() {
+        return this.response.getProtocolVersion();
     }
 
     public void addHeader(final Header header) {
@@ -161,8 +161,12 @@
         return this.response.getLastHeader(name);
     }
 
-    public Iterator headerIterator() {
+    public HeaderIterator headerIterator() {
         return this.response.headerIterator();
+    }
+
+    public HeaderIterator headerIterator(String name) {
+        return this.response.headerIterator(name);
     }
 
     public void removeHeader(final Header header) {

Modified: webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?rev=600141&r1=600140&r2=600141&view=diff
==============================================================================
--- webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
+++ webservices/axis2/branches/java/jaxws21/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Sat Dec  1 06:43:28 2007
@@ -18,7 +18,18 @@
  */
 package org.apache.axis2.transport.http.server;
 
-import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.SocketException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingHelper;
@@ -29,27 +40,29 @@
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.transport.RequestResponseTransport;
-import org.apache.axis2.transport.RequestResponseTransport.RequestResponseTransportStatus;
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.http.*;
+import org.apache.http.ConnectionReuseStrategy;
+import org.apache.http.Header;
+import org.apache.http.HttpEntityEnclosingRequest;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpResponseFactory;
+import org.apache.http.HttpStatus;
+import org.apache.http.HttpVersion;
+import org.apache.http.MethodNotSupportedException;
+import org.apache.http.ProtocolException;
+import org.apache.http.ProtocolVersion;
+import org.apache.http.UnsupportedHttpVersionException;
 import org.apache.http.params.HttpParams;
 import org.apache.http.params.HttpParamsLinker;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.HttpProcessor;
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAP11Constants;
 
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.namespace.QName;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.SocketException;
-import java.util.HashMap;
-import java.util.Iterator;
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
 
 /**
  * This class is an extension of the defaulf HTTP service responsible for
@@ -128,7 +141,7 @@
         try {
             HttpRequest request = conn.receiveRequest();
             HttpParamsLinker.link(request, this.params);
-            HttpVersion ver = request.getRequestLine().getHttpVersion();
+            ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
             if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
                 // Downgrade protocol version if greater than HTTP/1.1 
                 ver = HttpVersion.HTTP_1_1;
@@ -313,7 +326,7 @@
     class SimpleHTTPRequestResponseTransport implements RequestResponseTransport {
 
 		private CountDownLatch responseReadySignal = new CountDownLatch(1);
-        RequestResponseTransportStatus status = RequestResponseTransportStatus.INITIAL;
+        RequestResponseTransportStatus status = RequestResponseTransportStatus.WAITING;
         AxisFault faultToBeThrownOut = null;
         private boolean responseWritten = false;
 
@@ -324,7 +337,6 @@
         }
 
         public void awaitResponse() throws InterruptedException, AxisFault {
-            status = RequestResponseTransportStatus.WAITING;
             responseReadySignal.await();
 
             if (faultToBeThrownOut != null) {



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