Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 52911 invoked from network); 29 Mar 2008 13:58:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 29 Mar 2008 13:58:30 -0000 Received: (qmail 94895 invoked by uid 500); 29 Mar 2008 13:58:27 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 94234 invoked by uid 500); 29 Mar 2008 13:58:26 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 94223 invoked by uid 99); 29 Mar 2008 13:58:26 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 29 Mar 2008 06:58:26 -0700 X-ASF-Spam-Status: No, hits=-2.0 required=10.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of PRADINE@uk.ibm.com designates 195.212.29.137 as permitted sender) Received: from [195.212.29.137] (HELO mtagate4.uk.ibm.com) (195.212.29.137) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 29 Mar 2008 13:57:27 +0000 Received: from d06nrmr1407.portsmouth.uk.ibm.com (d06nrmr1407.portsmouth.uk.ibm.com [9.149.38.185]) by mtagate4.uk.ibm.com (8.13.8/8.13.8) with ESMTP id m2TDvlAt157562 for ; Sat, 29 Mar 2008 13:57:47 GMT Received: from d06av02.portsmouth.uk.ibm.com (d06av02.portsmouth.uk.ibm.com [9.149.37.228]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m2TDvliw1622024 for ; Sat, 29 Mar 2008 13:57:47 GMT Received: from d06av02.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av02.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m2TDvkb6001700 for ; Sat, 29 Mar 2008 13:57:46 GMT Received: from d06ml065.portsmouth.uk.ibm.com (d06ml065.portsmouth.uk.ibm.com [9.149.38.138]) by d06av02.portsmouth.uk.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m2TDvkBv001697; Sat, 29 Mar 2008 13:57:46 GMT In-Reply-To: <20080329092550.C30851A9832@eris.apache.org> X-Disclaimed: 49926 To: sanka@apache.org Cc: axis-dev@ws.apache.org MIME-Version: 1.0 Subject: Re: svn commit: r642522 [1/2] - in /webservices/axis2/trunk/java/modules: integration/test/org/apache/axis2/deployment/ integration/test/org/tempuri/ java2wsdl/src/org/apache/ws/java2wsdl/ kernel/src/org/apache/axis2/ kernel/src/org/apache/axis2/addressing... X-Mailer: Lotus Notes Release 7.0 HF277 June 21, 2006 From: Brian De Pradine Message-ID: Date: Sat, 29 Mar 2008 13:57:38 +0000 X-MIMETrack: Serialize by Router on D06ML065/06/M/IBM(Release 7.0.2FP2HF322 | September 26, 2007) at 29/03/2008 13:57:45, Serialize complete at 29/03/2008 13:57:45 Content-Type: multipart/alternative; boundary="=_alternative 004CAF058025741B_=" X-Virus-Checked: Checked by ClamAV on apache.org --=_alternative 004CAF058025741B_= Content-Type: text/plain; charset="US-ASCII" Hi Sanka, The change that you made to EndpointReferenceHelper does not follow the existing model. Metadata from an endpoint reference that complies with the Submission spec is not stored in a wsa:Metadata element and so the metadata field of the EndpointReference class is not used. Instead the metadata gets stored as extensibility elements. If you want to be able to treat endpoint references from the Submission and Final specs in the same manner, in your code, then you will need to write some helper methods in EndpointReferenceHelper to hide the distinction. See the existing methods setServiceNameMetadata() and getServiceNameMetadata() for an example. Cheers Brian DePradine Web Services Development IBM Hursley External +44 (0) 1962 816319 Internal 246319 If you can't find the time to do it right the first time, where will you find the time to do it again? sanka@apache.org wrote on 29/03/2008 09:25:47: > Author: sanka > Date: Sat Mar 29 02:25:45 2008 > New Revision: 642522 > > URL: http://svn.apache.org/viewvc?rev=642522&view=rev > Log: > Applied the patch with minor fixes to resolve test failures. > see: > https://issues.apache.org/jira/browse/AXIS2-3677 > > Modified: > > webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest. > java > > webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest. > java > > webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/PolicySubject. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration. > java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/PolicyUtil. > java > > webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest. > java > > Modified: > webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest. > java (original) > +++ > webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest. > java Sat Mar 29 02:25:45 2008 > @@ -19,8 +19,11 @@ > > package org.apache.axis2.deployment; > > +import org.apache.axis2.context.ConfigurationContext; > +import org.apache.axis2.context.ConfigurationContextFactory; > import org.apache.axis2.description.AxisService; > import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder; > +import org.apache.axis2.engine.AxisConfiguration; > import org.custommonkey.xmlunit.XMLTestCase; > import org.custommonkey.xmlunit.XMLUnit; > > @@ -44,13 +47,15 @@ > WSDL11ToAllAxisServicesBuilder builder = new > WSDL11ToAllAxisServicesBuilder( > new FileInputStream(testResourceFile)); > AxisService axisService = builder.populateService(); > + ConfigurationContext configContext = > ConfigurationContextFactory.createDefaultConfigurationContext(); > + AxisConfiguration axisConfig = configContext. > getAxisConfiguration(); > + axisConfig.addService(axisService); > ByteArrayOutputStream baos = new ByteArrayOutputStream(); > axisService.printWSDL(baos); > assertXMLEqual(new FileReader(testResourceFile), new > StringReader(new String(baos.toByteArray()))); > } catch (Exception e) { > System.out.println("Error in WSDL : " + > testResourceFile.getName()); > System.out.println("Exception: " + e.toString()); > - e.printStackTrace(); > fail("Caught exception " + e.toString()); > } finally { > XMLUnit.setIgnoreWhitespace(false); > > Modified: > webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest. > java (original) > +++ > webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest. > java Sat Mar 29 02:25:45 2008 > @@ -41,7 +41,10 @@ > ByteArrayOutputStream out = new ByteArrayOutputStream(); > Java2WSDLBuilder builder = new Java2WSDLBuilder(out, > BaseDataTypes.class.getName(), BaseDataTypes.class.getClassLoader()); > builder.generateWSDL(); > + out.flush(); > + > FileReader control = new FileReader(wsdlLocation); > + > StringReader test = new StringReader(new String(out. > toByteArray())); > Diff myDiff = new Diff(XMLUnit.buildDocument(XMLUnit. > getControlParser(), control), > XMLUnit.buildDocument(XMLUnit. > getControlParser(), test), > > Modified: > webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder. > java (original) > +++ > webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder. > java Sat Mar 29 02:25:45 2008 > @@ -256,7 +256,6 @@ > + (serviceName == null ? Java2WSDLUtils > .getSimpleClassName(className) : serviceName); > } > - // axisService.setEPRs(new String[]{uri}); > setServiceEPR(axisService, uri); > axisConfig.addService(axisService); > > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants. > java Sat Mar 29 02:25:45 2008 > @@ -71,6 +71,9 @@ > public static final String MESSAGE_SCOPE = "message"; > > public static final String AXIS_BINDING_OPERATION = > "AxisBindingOperation"; > + > + public static final String AXIS_BINDING_MESSAGE = "AxisBindingMessage"; > + > > /** > * To chenge the conetext path from axis2/service to something else > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants. > java Sat Mar 29 02:25:45 2008 > @@ -221,6 +221,9 @@ > "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault"; > static final String WSA_SERVICE_NAME_ENDPOINT_NAME = "PortName"; > static final String WSA_INTERFACE_NAME = "PortType"; > + > + static final String MEX_NS_URL = "http://schemas.xmlsoap. > org/ws/2004/09/mex"; > + static final String MEX_METADATA = "Metadata"; > > // fault information > static final String FAULT_INVALID_HEADER = > "InvalidMessageInformationHeader"; > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper. > java Sat Mar 29 02:25:45 2008 > @@ -340,8 +340,12 @@ > OMElement element = (OMElement) iterator.next(); > epr.addReferenceParameter(element); > } > - } else { > - epr.addExtensibleElement(eprChildElement); > + }else if (!isFinalAddressingNamespace && > + map.get(AddressingConstants.Submission. > MEX_METADATA).equals(qname)) { > + epr.addMetaData(eprChildElement); > + > + } else { > + epr.addExtensibleElement(eprChildElement); > } > } > > @@ -544,5 +548,7 @@ > submissionQNames.put(AddressingConstants.Submission. > EPR_REFERENCE_PROPERTIES, new QName( > AddressingConstants.Submission.WSA_NAMESPACE, > AddressingConstants.Submission.EPR_REFERENCE_PROPERTIES)); > + submissionQNames.put(AddressingConstants.Submission. > MEX_METADATA, new QName( > + AddressingConstants.Submission.MEX_NS_URL, > AddressingConstants.Submission.MEX_METADATA)); > } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext. > java Sat Mar 29 02:25:45 2008 > @@ -26,6 +26,7 @@ > import org.apache.axiom.soap.SOAP12Constants; > import org.apache.axiom.soap.SOAPEnvelope; > import org.apache.axis2.AxisFault; > +import org.apache.axis2.Constants; > import org.apache.axis2.Constants.Configuration; > import org.apache.axis2.addressing.EndpointReference; > import org.apache.axis2.addressing.RelatesTo; > @@ -36,6 +37,7 @@ > import org.apache.axis2.context.externalize.SafeObjectInputStream; > import org.apache.axis2.context.externalize.SafeObjectOutputStream; > import org.apache.axis2.context.externalize.SafeSerializable; > +import org.apache.axis2.description.AxisBindingMessage; > import org.apache.axis2.description.AxisMessage; > import org.apache.axis2.description.AxisModule; > import org.apache.axis2.description.AxisOperation; > @@ -1539,16 +1541,19 @@ > if (LoggingControl.debugLoggingAllowed) { > checkActivateWarning("getEffectivePolicy"); > } > - if (axisMessage != null) { > - return axisMessage.getPolicyInclude().getEffectivePolicy(); > - } > - if (axisOperation != null) { > - return axisOperation.getPolicyInclude().getEffectivePolicy(); > - } > - if (axisService != null) { > - return axisService.getPolicyInclude().getEffectivePolicy(); > + > + AxisBindingMessage bindingMessage = > + (AxisBindingMessage) getProperty(Constants.AXIS_BINDING_MESSAGE); > + > + if (bindingMessage != null) { > + return bindingMessage.getEffectivePolicy(); > + } else { > + if (axisMessage != null) { > + return axisMessage.getEffectivePolicy(); > + } else { > + return null; > + } > } > - return configurationContext.getAxisConfiguration(). > getPolicyInclude().getEffectivePolicy(); > } > > > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder. > java Sat Mar 29 02:25:45 2008 > @@ -154,8 +154,8 @@ > > TAG_POLICY)); > > if (policyElements != null && policyElements.hasNext()) { > - processPolicyElements(PolicyInclude.AXIS_POLICY, > policyElements, > - axisConfig.getPolicyInclude()); > + processPolicyElements(policyElements, > + axisConfig.getPolicySubject()); > } > > // processing .. elements > @@ -163,8 +163,8 @@ > > TAG_POLICY_REF)); > > if (policyRefElements != null && policyRefElements.hasNext()) { > - processPolicyRefElements(PolicyInclude.AXIS_POLICY, > policyElements, > - axisConfig.getPolicyInclude()); > + processPolicyRefElements(policyElements, > + axisConfig.getPolicySubject()); > } > > //to process default module versions > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants. > java Sat Mar 29 02:25:45 2008 > @@ -158,5 +158,7 @@ > String POLICY_NS_URI = Constants.URI_POLICY; > String TAG_POLICY = "Policy"; > String TAG_POLICY_REF = "PolicyReference"; > - > + > + String TAG_POLICY_ATTACHMENT = "PolicyAttachment"; > + String TAG_APPLIES_TO = "AppliesTo"; > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder. > java Sat Mar 29 02:25:45 2008 > @@ -33,6 +33,7 @@ > import org.apache.axis2.description.ParameterInclude; > import org.apache.axis2.description.PhaseRule; > import org.apache.axis2.description.PolicyInclude; > +import org.apache.axis2.description.PolicySubject; > import org.apache.axis2.description.WSDL2Constants; > import org.apache.axis2.engine.AxisConfiguration; > import org.apache.axis2.engine.MessageReceiver; > @@ -631,23 +632,21 @@ > } > } > > - protected void processPolicyElements(int type, Iterator policyElements, > - PolicyInclude policyInclude) { > + protected void processPolicyElements(Iterator policyElements, > + PolicySubject policySubject) { > while (policyElements.hasNext()) { > Policy p = PolicyEngine > .getPolicy((OMElement) policyElements.next()); > - policyInclude.addPolicyElement(type, p); > + policySubject.attachPolicy(p); > } > } > > - protected void processPolicyRefElements(int type, > - Iterator policyRefElements, > - PolicyInclude policyInclude) { > - > + protected void processPolicyRefElements(Iterator policyRefElements, > + PolicySubject policySubject) { > while (policyRefElements.hasNext()) { > PolicyReference policyReference = PolicyEngine > .getPolicyReference((OMElement) > policyRefElements.next()); > - policyInclude.addPolicyRefElement(type, policyReference); > + policySubject.attachPolicyReference(policyReference); > } > } > > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder. > java Sat Mar 29 02:25:45 2008 > @@ -147,8 +147,7 @@ > moduleElement.getChildrenWithName(new > QName(POLICY_NS_URI, TAG_POLICY)); > > if (policyElements != null && policyElements.hasNext()) { > - processPolicyElements(PolicyInclude. > AXIS_MODULE_POLICY, policyElements, > - module.getPolicyInclude()); > + processPolicyElements(policyElements, module. > getPolicySubject()); > } > > // processing .. elements > @@ -156,8 +155,7 @@ > moduleElement.getChildrenWithName(new > QName(POLICY_NS_URI, TAG_POLICY_REF)); > > if (policyRefElements != null && policyElements.hasNext()) { > - processPolicyRefElements(PolicyInclude. > AXIS_MODULE_POLICY, policyRefElements, > - module.getPolicyInclude()); > + processPolicyRefElements(policyRefElements, module. > getPolicySubject()); > } > > // process INFLOW > @@ -297,14 +295,14 @@ > Iterator policyElements = operation. > getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY)); > > if (policyElements != null && policyElements.hasNext()) { > - processPolicyElements(PolicyInclude. > AXIS_MODULE_OPERATION_POLICY, policyElements, op_descrip.getPolicyInclude()); > + processPolicyElements(policyElements, op_descrip. > getPolicySubject()); > } > > // processing .. elements > Iterator policyRefElements = operation. > getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_REF)); > > if (policyRefElements != null && policyRefElements.hasNext()) { > - processPolicyRefElements(PolicyInclude. > AXIS_MODULE_OPERATION_POLICY, policyRefElements, module.getPolicyInclude()); > + processPolicyRefElements(policyRefElements, module. > getPolicySubject()); > } > > // setting Operation phase > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder. > java Sat Mar 29 02:25:45 2008 > @@ -48,6 +48,9 @@ > import org.apache.commons.logging.LogFactory; > > import javax.xml.namespace.QName; > +import javax.xml.stream.FactoryConfigurationError; > +import javax.xml.stream.XMLStreamException; > + > import java.io.InputStream; > import java.util.ArrayList; > import java.util.HashMap; > @@ -298,8 +301,7 @@ > .getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY)); > > if (policyElements != null && policyElements.hasNext()) { > - processPolicyElements(PolicyInclude.AXIS_SERVICE_POLICY, > - policyElements, service.getPolicyInclude()); > + processPolicyElements(policyElements, service. > getPolicySubject()); > } > > // processing .. elements > @@ -308,8 +310,7 @@ > TAG_POLICY_REF)); > > if (policyRefElements != null && policyRefElements.hasNext()) { > - processPolicyRefElements(PolicyInclude.AXIS_SERVICE_POLICY, > - policyRefElements, service.getPolicyInclude()); > + processPolicyRefElements(policyRefElements, service. > getPolicySubject()); > } > > // processing service scope > @@ -423,6 +424,8 @@ > } > > processEndpoints(service); > + processPolicyAttachments(service_element, service); > + > > } catch (AxisFault axisFault) { > throw new DeploymentException(axisFault); > @@ -627,8 +630,7 @@ > .getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY)); > > if (policyElements != null) { > - processPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY, > - policyElements, message.getPolicyInclude()); > + processPolicyElements(policyElements, message. > getPolicySubject()); > } > > // processing .. elements > @@ -637,8 +639,7 @@ > TAG_POLICY_REF)); > > if (policyRefElements != null) { > - processPolicyRefElements(PolicyInclude.AXIS_MESSAGE_POLICY, > - policyRefElements, message.getPolicyInclude()); > + processPolicyRefElements(policyRefElements, message. > getPolicySubject()); > } > > processParameters(parameters, message, operation); > @@ -789,8 +790,7 @@ > POLICY_NS_URI, TAG_POLICY)); > > if (policyElements != null && policyElements.hasNext()) { > - processPolicyElements(PolicyInclude.AXIS_OPERATION_POLICY, > - policyElements, op_descrip.getPolicyInclude()); > + processPolicyElements(policyElements, op_descrip. > getPolicySubject()); > } > > // processing .. elements > @@ -799,8 +799,7 @@ > TAG_POLICY_REF)); > > if (policyRefElements != null && policyRefElements.hasNext()) { > - processPolicyRefElements(PolicyInclude.AXIS_OPERATION_POLICY, > - policyRefElements, op_descrip.getPolicyInclude()); > + processPolicyRefElements(policyRefElements, op_descrip. > getPolicySubject()); > } > > // Operation Parameters > @@ -913,7 +912,16 @@ > private void processEndpoints(AxisService axisService) throws AxisFault { > String endpointName = axisService.getEndpointName(); > if (endpointName == null || endpointName.length() == 0) { > - Utils.addEndpointsToService(axisService); > + Utils.addEndpointsToService(axisService, service. > getAxisConfiguration()); > + } > + } > + > + private void processPolicyAttachments(OMElement serviceElement, > AxisService service) throws DeploymentException { > + Iterator attachmentElements = serviceElement. > getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_ATTACHMENT)); > + try { > + Utils.processPolicyAttachments(attachmentElements, service); > + } catch (Exception e) { > + throw new DeploymentException(e); > } > } > > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils. > java Sat Mar 29 02:25:45 2008 > @@ -19,6 +19,44 @@ > > package org.apache.axis2.deployment.util; > > +import java.io.BufferedReader; > +import java.io.File; > +import java.io.FileInputStream; > +import java.io.FileNotFoundException; > +import java.io.FileOutputStream; > +import java.io.IOException; > +import java.io.InputStream; > +import java.io.InputStreamReader; > +import java.io.OutputStreamWriter; > +import java.io.UnsupportedEncodingException; > +import java.lang.reflect.InvocationTargetException; > +import java.lang.reflect.Method; > +import java.lang.reflect.Modifier; > +import java.net.MalformedURLException; > +import java.net.URL; > +import java.net.URLClassLoader; > +import java.net.URLDecoder; > +import java.security.AccessController; > +import java.security.PrivilegedAction; > +import java.security.PrivilegedActionException; > +import java.security.PrivilegedExceptionAction; > +import java.util.ArrayList; > +import java.util.Arrays; > +import java.util.Collection; > +import java.util.HashMap; > +import java.util.Iterator; > +import java.util.LinkedList; > +import java.util.List; > +import java.util.Map; > +import java.util.Stack; > +import java.util.StringTokenizer; > +import java.util.zip.ZipEntry; > +import java.util.zip.ZipInputStream; > + > +import javax.xml.namespace.QName; > +import javax.xml.stream.FactoryConfigurationError; > +import javax.xml.stream.XMLStreamException; > + > import org.apache.axiom.om.OMAbstractFactory; > import org.apache.axiom.om.OMElement; > import org.apache.axiom.om.OMFactory; > @@ -56,51 +94,18 @@ > import org.apache.axis2.engine.Handler; > import org.apache.axis2.engine.MessageReceiver; > import org.apache.axis2.util.Loader; > +import org.apache.axis2.util.PolicyUtil; > import org.apache.axis2.wsdl.WSDLConstants; > import org.apache.axis2.wsdl.WSDLUtil; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > +import org.apache.neethi.PolicyComponent; > import org.apache.ws.commons.schema.utils.NamespaceMap; > import org.codehaus.jam.JAnnotation; > import org.codehaus.jam.JMethod; > > -import javax.xml.namespace.QName; > -import java.io.BufferedReader; > -import java.io.File; > -import java.io.FileInputStream; > -import java.io.FileOutputStream; > -import java.io.IOException; > -import java.io.InputStream; > -import java.io.InputStreamReader; > -import java.io.OutputStreamWriter; > -import java.io.UnsupportedEncodingException; > -import java.io.FileNotFoundException; > -import java.lang.reflect.Method; > -import java.lang.reflect.Modifier; > -import java.lang.reflect.InvocationTargetException; > -import java.net.MalformedURLException; > -import java.net.URL; > -import java.net.URLClassLoader; > -import java.net.URLDecoder; > -import java.security.AccessController; > -import java.security.PrivilegedAction; > -import java.security.PrivilegedExceptionAction; > -import java.security.PrivilegedActionException; > -import java.util.ArrayList; > -import java.util.Arrays; > -import java.util.Collection; > -import java.util.HashMap; > -import java.util.Iterator; > -import java.util.LinkedList; > -import java.util.List; > -import java.util.Stack; > -import java.util.StringTokenizer; > -import java.util.zip.ZipEntry; > -import java.util.zip.ZipInputStream; > - > public class Utils { > > - > public static String defaultEncoding = new OutputStreamWriter(System.out) > .getEncoding(); > > @@ -114,23 +119,24 @@ > HandlerDescription handlermd = flow.getHandler(j); > Handler handler; > > - final Class handlerClass = getHandlerClass(handlermd. > getClassName(), clsLoader); > + final Class handlerClass = getHandlerClass( > + handlermd.getClassName(), clsLoader); > > - try { > - handler = (Handler) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws > InstantiationException, IllegalAccessException { > - return handlerClass.newInstance(); > - } > - } > - ); > - handler.init(handlermd); > - handlermd.setHandler(handler); > - } catch (PrivilegedActionException e) { > - throw AxisFault.makeFault(e); > - } > - } > - } > + try { > + handler = (Handler) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws InstantiationException, > + IllegalAccessException { > + return handlerClass.newInstance(); > + } > + }); > + handler.init(handlermd); > + handlermd.setHandler(handler); > + } catch (PrivilegedActionException e) { > + throw AxisFault.makeFault(e); > + } > + } > + } > > public static boolean loadHandler(ClassLoader loader1, > HandlerDescription desc) > throws DeploymentException { > @@ -138,15 +144,14 @@ > Handler handler; > try { > final Class handlerClass = Loader.loadClass(loader1, handlername); > - Package aPackage = (Package) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return handlerClass.getPackage(); > - } > - } > - ); > - if (aPackage != null && aPackage.getName().equals( > - "org.apache.axis2.engine")) { > + Package aPackage = (Package) org.apache.axis2.java. > security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return handlerClass.getPackage(); > + } > + }); > + if (aPackage != null > + && aPackage.getName().equals("org.apache.axis2.engine")) { > String name = handlerClass.getName(); > log.warn("Dispatcher " + name + " is now deprecated."); > if (name.indexOf("InstanceDispatcher") != -1) { > @@ -158,13 +163,13 @@ > + "and replace with the same class in > org.apache.axis2.dispatchers package"); > } > } > - handler = (Handler) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws > InstantiationException, IllegalAccessException { > - return handlerClass.newInstance(); > - } > - } > - ); > + handler = (Handler) org.apache.axis2.java.security.AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws InstantiationException, > + IllegalAccessException { > + return handlerClass.newInstance(); > + } > + }); > handler.init(desc); > desc.setHandler(handler); > } catch (ClassNotFoundException e) { > @@ -178,237 +183,239 @@ > } > return true; > } > - > + > public static URL[] getURLsForAllJars(URL url, File tmpDir) { > - FileInputStream fin = null; > - InputStream in = null; > - ZipInputStream zin = null; > - try { > - ArrayList array = new ArrayList(); > - in = url.openStream(); > - String fileName = url.getFile(); > - int index = fileName.lastIndexOf('/'); > - if (index != -1) { > - fileName = fileName.substring(index + 1); > - } > - final File f = createTempFile(fileName, in, tmpDir); > - > - fin = (FileInputStream) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws FileNotFoundException { > - return new FileInputStream(f); > - } > - } > - ); > - array.add(f.toURL()); > - zin = new ZipInputStream(fin); > - > - ZipEntry entry; > - String entryName; > - while ((entry = zin.getNextEntry()) != null) { > - entryName = entry.getName(); > - /** > - * id the entry name start with /lib and end with .jar > - * then those entry name will be added to the arraylist > - */ > - if ((entryName != null) && entryName.toLowerCase(). > startsWith("lib/") > - && entryName.toLowerCase().endsWith(".jar")) { > - String suffix = entryName.substring(4); > - File f2 = createTempFile(suffix, zin, tmpDir); > - array.add(f2.toURL()); > - } > - } > - return (URL[]) array.toArray(new URL[array.size()]); > - } catch (Exception e) { > - throw new RuntimeException(e); > - } finally { > - if (fin != null) { > - try { > - fin.close(); > - } catch (IOException e) { > - // > - } > - } > - if (in != null) { > - try { > - in.close(); > - } catch (IOException e) { > - // > - } > - } > - if (zin != null) { > - try { > - zin.close(); > - } catch (IOException e) { > - // > - } > - } > - } > + FileInputStream fin = null; > + InputStream in = null; > + ZipInputStream zin = null; > + try { > + ArrayList array = new ArrayList(); > + in = url.openStream(); > + String fileName = url.getFile(); > + int index = fileName.lastIndexOf('/'); > + if (index != -1) { > + fileName = fileName.substring(index + 1); > + } > + final File f = createTempFile(fileName, in, tmpDir); > + > + fin = (FileInputStream) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws FileNotFoundException { > + return new FileInputStream(f); > + } > + }); > + array.add(f.toURL()); > + zin = new ZipInputStream(fin); > + > + ZipEntry entry; > + String entryName; > + while ((entry = zin.getNextEntry()) != null) { > + entryName = entry.getName(); > + /** > + * id the entry name start with /lib and end with .jar then > + * those entry name will be added to the arraylist > + */ > + if ((entryName != null) > + && entryName.toLowerCase().startsWith("lib/") > + && entryName.toLowerCase().endsWith(".jar")) { > + String suffix = entryName.substring(4); > + File f2 = createTempFile(suffix, zin, tmpDir); > + array.add(f2.toURL()); > + } > + } > + return (URL[]) array.toArray(new URL[array.size()]); > + } catch (Exception e) { > + throw new RuntimeException(e); > + } finally { > + if (fin != null) { > + try { > + fin.close(); > + } catch (IOException e) { > + // > + } > + } > + if (in != null) { > + try { > + in.close(); > + } catch (IOException e) { > + // > + } > + } > + if (zin != null) { > + try { > + zin.close(); > + } catch (IOException e) { > + // > + } > + } > + } > } > - > - public static File createTempFile(final String suffix, > InputStream in, final File tmpDir) throws IOException { > - byte data[] = new byte[2048]; > - int count; > - File f; > - if (tmpDir == null) { > - String directory = (String) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return System.getProperty("java.io.tmpdir"); > - } > - } > - ); > - final File tempFile = new File(directory, "_axis2"); > - Boolean exists = (Boolean) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return new Boolean(tempFile.exists()); > - } > - } > - ); > - if (!exists.booleanValue()) { > - Boolean mkdirs = (Boolean) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return new Boolean(tempFile.mkdirs()); > - } > - } > - ); > - if (!mkdirs.booleanValue()) { > - throw new IOException("Unable to create the directory"); > - } > - } > - try { > - f = (File) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws IOException { > - return File.createTempFile("axis2", > suffix, tempFile); > - } > - } > - ); > - } catch (PrivilegedActionException e) { > - throw (IOException) e.getException(); > - } > - } else { > - try { > - f = (File) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws IOException { > - return File.createTempFile("axis2", > suffix, tmpDir); > - } > - } > - ); > - } catch (PrivilegedActionException e) { > - throw (IOException) e.getException(); > - } > - } > - if (log.isDebugEnabled()) { > - log.debug("Created temporary file : " + f. > getAbsolutePath());//$NON-SEC-4 > - } > - final File f2 = f; > - org.apache.axis2.java.security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - f2.deleteOnExit(); > - return null; > - } > - } > - ); > - FileOutputStream out = null; > - try { > - out = (FileOutputStream) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws FileNotFoundException { > - return new FileOutputStream(f2); > - } > - } > - ); > - } catch (PrivilegedActionException e) { > - throw (FileNotFoundException) e.getException(); > - } > - while ((count = in.read(data, 0, 2048)) != -1) { > - out.write(data, 0, count); > - } > - out.close(); > - return f; > - } > - > + > + public static File createTempFile(final String suffix, InputStream in, > + final File tmpDir) throws IOException { > + byte data[] = new byte[2048]; > + int count; > + File f; > + if (tmpDir == null) { > + String directory = (String) org.apache.axis2.java. > security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return System.getProperty("java.io.tmpdir"); > + } > + }); > + final File tempFile = new File(directory, "_axis2"); > + Boolean exists = (Boolean) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new Boolean(tempFile.exists()); > + } > + }); > + if (!exists.booleanValue()) { > + Boolean mkdirs = (Boolean) org.apache.axis2.java. > security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new Boolean(tempFile.mkdirs()); > + } > + }); > + if (!mkdirs.booleanValue()) { > + throw new IOException("Unable to create the directory"); > + } > + } > + try { > + f = (File) org.apache.axis2.java.security.AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws IOException { > + return File.createTempFile("axis2", suffix, > + tempFile); > + } > + }); > + } catch (PrivilegedActionException e) { > + throw (IOException) e.getException(); > + } > + } else { > + try { > + f = (File) org.apache.axis2.java.security.AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws IOException { > + return File.createTempFile("axis2", suffix, > + tmpDir); > + } > + }); > + } catch (PrivilegedActionException e) { > + throw (IOException) e.getException(); > + } > + } > + if (log.isDebugEnabled()) { > + log.debug("Created temporary file : " + f. > getAbsolutePath());// $NON-SEC-4 > + } > + final File f2 = f; > + org.apache.axis2.java.security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + f2.deleteOnExit(); > + return null; > + } > + }); > + FileOutputStream out = null; > + try { > + out = (FileOutputStream) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws FileNotFoundException { > + return new FileOutputStream(f2); > + } > + }); > + } catch (PrivilegedActionException e) { > + throw (FileNotFoundException) e.getException(); > + } > + while ((count = in.read(data, 0, 2048)) != -1) { > + out.write(data, 0, count); > + } > + out.close(); > + return f; > + } > + > public static ClassLoader getClassLoader(ClassLoader parent, String path) > throws DeploymentException { > return getClassLoader(parent, new File(path)); > } > - > + > /** > - * Get a ClassLoader which contains a classpath of a) the > passed directory and b) any jar > - * files inside the "lib/" or "Lib/" subdirectory of the passeddirectory. > - * > - * @param parent parent ClassLoader which will be the parent of > the result of this method > - * @param file a File which must be a directory for this to be useful > - * @return a new ClassLoader pointing to both the passed dir > and jar files under lib/ > - * @throws DeploymentException if problems occur > - */ > - public static ClassLoader getClassLoader(final ClassLoader > parent, File file) > - throws DeploymentException { > - URLClassLoader classLoader; > - > - if (file == null) return null; // Shouldn't this just > return the parent? > - > - try { > - ArrayList urls = new ArrayList(); > - urls.add(file.toURL()); > - > - // lower case directory name > - File libfiles = new File(file, "lib"); > - if (!addFiles(urls, libfiles)) { > - // upper case directory name > - libfiles = new File(file, "Lib"); > - addFiles(urls, libfiles); > - } > + * Get a ClassLoader which contains a classpath of a) the passeddirectory > + * and b) any jar files inside the "lib/" or "Lib/" subdirectory of the > + * passed directory. > + * > + * @param parent > + * parent ClassLoader which will be the parent of theresult of > + * this method > + * @param file > + * a File which must be a directory for this to be useful > + * @return a new ClassLoader pointing to both the passed dir andjar files > + * under lib/ > + * @throws DeploymentException > + * if problems occur > + */ > + public static ClassLoader getClassLoader(final ClassLoader > parent, File file) > + throws DeploymentException { > + URLClassLoader classLoader; > > - final URL urllist[] = new URL[urls.size()]; > - for (int i = 0; i < urls.size(); i++) { > - urllist[i] = (URL) urls.get(i); > - } > - classLoader = > - (URLClassLoader) AccessController.doPrivileged(new > PrivilegedAction() { > - public Object run() { > - return new URLClassLoader(urllist, parent); > - } > - }); > - return classLoader; > - } catch (MalformedURLException e) { > - throw new DeploymentException(e); > - } > - } > + if (file == null) > + return null; // Shouldn't this just return the parent? > > - private static boolean addFiles(ArrayList urls, final File > libfiles) throws MalformedURLException { > - Boolean exists = (Boolean) org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return new Boolean(libfiles.exists()); > - } > - } > - ); > - if (exists.booleanValue()) { > - urls.add(libfiles.toURL()); > - File jarfiles[] = (File[]) org.apache.axis2.java. > security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return libfiles.listFiles(); > - } > - } > - ); > - for (int i = 0; i < jarfiles.length; i++) { > - File jarfile = jarfiles[i]; > - if (jarfile.getName().endsWith(".jar")) { > - urls.add(jarfile.toURL()); > - } > - } > - } > - return exists.booleanValue(); > - } > + try { > + ArrayList urls = new ArrayList(); > + urls.add(file.toURL()); > + > + // lower case directory name > + File libfiles = new File(file, "lib"); > + if (!addFiles(urls, libfiles)) { > + // upper case directory name > + libfiles = new File(file, "Lib"); > + addFiles(urls, libfiles); > + } > + > + final URL urllist[] = new URL[urls.size()]; > + for (int i = 0; i < urls.size(); i++) { > + urllist[i] = (URL) urls.get(i); > + } > + classLoader = (URLClassLoader) AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new URLClassLoader(urllist, parent); > + } > + }); > + return classLoader; > + } catch (MalformedURLException e) { > + throw new DeploymentException(e); > + } > + } > + > + private static boolean addFiles(ArrayList urls, final File libfiles) > + throws MalformedURLException { > + Boolean exists = (Boolean) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new Boolean(libfiles.exists()); > + } > + }); > + if (exists.booleanValue()) { > + urls.add(libfiles.toURL()); > + File jarfiles[] = (File[]) org.apache.axis2.java.security. > AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return libfiles.listFiles(); > + } > + }); > + for (int i = 0; i < jarfiles.length; i++) { > + File jarfile = jarfiles[i]; > + if (jarfile.getName().endsWith(".jar")) { > + urls.add(jarfile.toURL()); > + } > + } > + } > + return exists.booleanValue(); > + } > > - private static Class getHandlerClass(String className, > ClassLoader loader1) > + private static Class getHandlerClass(String className, > ClassLoader loader1) > throws AxisFault { > Class handlerClass; > > @@ -455,35 +462,39 @@ > .getParameter(Constants.SERVICE_OBJECT_SUPPLIER); > if (implInfoParam != null) { > String className = ((String) implInfoParam.getValue()).trim(); > - final Class serviceObjectMaker = Loader. > loadClass(serviceClassLoader, > - className); > + final Class serviceObjectMaker = Loader.loadClass( > + serviceClassLoader, className); > if (serviceObjectMaker.getModifiers() != Modifier.PUBLIC) { > throw new AxisFault("Service class " + className > + " must have public as access Modifier"); > } > > - // Find static getServiceObject() method, call it if there > - final Method method = (Method) org.apache.axis2. > java.security.AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws > NoSuchMethodException { > - return serviceObjectMaker.getMethod( > - "getServiceObject", new > Class[]{AxisService.class}); > - } > - } > - ); > - Object obj = null; > + // Find static getServiceObject() method, call it if there > + final Method method = (Method) org.apache.axis2.java. > security.AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() throws NoSuchMethodException { > + return serviceObjectMaker.getMethod( > + "getServiceObject", > + new Class[] { AxisService.class }); > + } > + }); > + Object obj = null; > if (method != null) { > - obj = org.apache.axis2.java.security. > AccessController.doPrivileged( > - new PrivilegedExceptionAction() { > - public Object run() throws > InstantiationException, IllegalAccessException, InvocationTargetException { > - return method. > invoke(serviceObjectMaker.newInstance(), > - new Object[]{axisService}); > - } > - } > - ); > - } > + obj = org.apache.axis2.java.security.AccessController > + .doPrivileged(new PrivilegedExceptionAction() { > + public Object run() > + throws InstantiationException, > + IllegalAccessException, > + InvocationTargetException { > + return method.invoke(serviceObjectMaker > + .newInstance(), > + new Object[] { axisService }); > + } > + }); > + } > if (obj == null) { > - log.warn("ServiceObjectSupplier implmentation Object > could not be found"); > + log > + .warn("ServiceObjectSupplier implmentation > Object could not be found"); > throw new DeploymentException( > "ServiceClass or ServiceObjectSupplier > implmentation Object could not be found"); > } > @@ -563,32 +574,35 @@ > } > } > } > - > - public static AxisOperation getAxisOperationForJmethod(JMethod > jmethod) throws AxisFault { > - AxisOperation operation; > - if (jmethod.getReturnType().isVoidType()) { > - if (jmethod.getExceptionTypes().length > 0) { > - operation = AxisOperationFactory.getAxisOperation( > - WSDLConstants.MEP_CONSTANT_ROBUST_IN_ONLY); > - } else { > - operation = AxisOperationFactory.getAxisOperation( > - WSDLConstants.MEP_CONSTANT_IN_ONLY); > - } > - } else { > - operation = AxisOperationFactory.getAxisOperation( > - WSDLConstants.MEP_CONSTANT_IN_OUT); > - } > - String opName = getSimpleName(jmethod); > - operation.setName(new QName(opName)); > - JAnnotation methodAnnon = jmethod. > getAnnotation(AnnotationConstants.WEB_METHOD); > - if (methodAnnon != null) { > - String action = methodAnnon. > getValue(AnnotationConstants.ACTION).asString(); > - if (action != null && !"".equals(action)) { > - operation.setSoapAction(action); > - } > - } > - return operation; > - } > + > + public static AxisOperation getAxisOperationForJmethod(JMethod jmethod) > + throws AxisFault { > + AxisOperation operation; > + if (jmethod.getReturnType().isVoidType()) { > + if (jmethod.getExceptionTypes().length > 0) { > + operation = AxisOperationFactory > + .getAxisOperation(WSDLConstants. > MEP_CONSTANT_ROBUST_IN_ONLY); > + } else { > + operation = AxisOperationFactory > + .getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_ONLY); > + } > + } else { > + operation = AxisOperationFactory > + .getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_OUT); > + } > + String opName = getSimpleName(jmethod); > + operation.setName(new QName(opName)); > + JAnnotation methodAnnon = jmethod > + .getAnnotation(AnnotationConstants.WEB_METHOD); > + if (methodAnnon != null) { > + String action = methodAnnon.getValue(AnnotationConstants.ACTION) > + .asString(); > + if (action != null && !"".equals(action)) { > + operation.setSoapAction(action); > + } > + } > + return operation; > + } > > public static String getSimpleName(JMethod method) { > JAnnotation methodAnnon = method > @@ -634,25 +648,24 @@ > PhasesInfo phasesInfo = axisConfig.getPhasesInfo(); > final ClassLoader moduleClassLoader = module.getModuleClassLoader(); > ArrayList services = new ArrayList(); > - final InputStream in = (InputStream) org.apache.axis2. > java.security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return moduleClassLoader. > getResourceAsStream("aars/aars.list"); > - } > - } > - ); > + final InputStream in = (InputStream) org.apache.axis2. > java.security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return moduleClassLoader > + .getResourceAsStream("aars/aars.list"); > + } > + }); > if (in != null) { > BufferedReader input; > try { > - input = new BufferedReader((InputStreamReader) > org.apache.axis2.java.security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return new InputStreamReader(in); > - } > - } > - ) > - ); > - String line; > + input = new BufferedReader( > + (InputStreamReader) org.apache.axis2.java. > security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new InputStreamReader(in); > + } > + })); > + String line; > while ((line = input.readLine()) != null) { > line = line.trim(); > if (line.length() > 0 && line.charAt(0) != '#') { > @@ -670,15 +683,15 @@ > if (servicename == null || "".equals(servicename)) { > continue; > } > - InputStream fin = (InputStream) org.apache. > axis2.java.security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return moduleClassLoader > - . > getResourceAsStream("aars/" + servicename); > - } > - } > - ); > - if (fin == null) { > + InputStream fin = (InputStream) org.apache.axis2. > java.security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return moduleClassLoader > + .getResourceAsStream("aars/" > + + servicename); > + } > + }); > + if (fin == null) { > throw new AxisFault("No service archive found : " > + servicename); > } > @@ -735,56 +748,57 @@ > throw AxisFault.makeFault(e); > } > } > - > + > /** > - * Normalize a uri containing ../ and ./ paths. > - * > - * @param uri The uri path to normalize > - * @return The normalized uri > - */ > - public static String normalize(String uri) { > - if ("".equals(uri)) { > - return uri; > - } > - int leadingSlashes = 0; > - for (leadingSlashes = 0; leadingSlashes < uri.length() > - && uri.charAt(leadingSlashes) == '/'; ++leadingSlashes) { > - //FIXME: this block is empty!! > - } > - boolean isDir = (uri.charAt(uri.length() - 1) == '/'); > - StringTokenizer st = new StringTokenizer(uri, "/"); > - LinkedList clean = new LinkedList(); > - while (st.hasMoreTokens()) { > - String token = st.nextToken(); > - if ("..".equals(token)) { > - if (!clean.isEmpty() && !"..".equals(clean.getLast())) { > - clean.removeLast(); > - if (!st.hasMoreTokens()) { > - isDir = true; > - } > - } else { > - clean.add(".."); > - } > - } else if (!".".equals(token) && !"".equals(token)) { > - clean.add(token); > - } > - } > - StringBuffer sb = new StringBuffer(); > - while (leadingSlashes-- > 0) { > - sb.append('/'); > - } > - for (Iterator it = clean.iterator(); it.hasNext();) { > - sb.append(it.next()); > - if (it.hasNext()) { > - sb.append('/'); > - } > - } > - if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') { > - sb.append('/'); > - } > - return sb.toString(); > - } > - > + * Normalize a uri containing ../ and ./ paths. > + * > + * @param uri > + * The uri path to normalize > + * @return The normalized uri > + */ > + public static String normalize(String uri) { > + if ("".equals(uri)) { > + return uri; > + } > + int leadingSlashes = 0; > + for (leadingSlashes = 0; leadingSlashes < uri.length() > + && uri.charAt(leadingSlashes) == '/'; ++leadingSlashes) { > + // FIXME: this block is empty!! > + } > + boolean isDir = (uri.charAt(uri.length() - 1) == '/'); > + StringTokenizer st = new StringTokenizer(uri, "/"); > + LinkedList clean = new LinkedList(); > + while (st.hasMoreTokens()) { > + String token = st.nextToken(); > + if ("..".equals(token)) { > + if (!clean.isEmpty() && !"..".equals(clean.getLast())) { > + clean.removeLast(); > + if (!st.hasMoreTokens()) { > + isDir = true; > + } > + } else { > + clean.add(".."); > + } > + } else if (!".".equals(token) && !"".equals(token)) { > + clean.add(token); > + } > + } > + StringBuffer sb = new StringBuffer(); > + while (leadingSlashes-- > 0) { > + sb.append('/'); > + } > + for (Iterator it = clean.iterator(); it.hasNext();) { > + sb.append(it.next()); > + if (it.hasNext()) { > + sb.append('/'); > + } > + } > + if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') { > + sb.append('/'); > + } > + return sb.toString(); > + } > + > public static String getPath(String parent, String childPath) { > Stack parentStack = new Stack(); > Stack childStack = new Stack(); > @@ -825,62 +839,62 @@ > } > return filepath; > } > - > + > /** > - * Searches for jar files inside /lib dirctory. If there are any, the > - * names of those jar files will be added to the array list > - */ > - public static List findLibJars(URL url) { > - ArrayList embedded_jars = new ArrayList(); > - try { > - ZipInputStream zin = new ZipInputStream(url.openStream()); > - ZipEntry entry; > - String entryName = ""; > - while ((entry = zin.getNextEntry()) != null) { > - entryName = entry.getName(); > - /** > - * if the entry name start with /lib and ends with .jar > - * add it to the the arraylist > - */ > - if (entryName != null && (entryName.startsWith("lib/") || > - entryName.startsWith("Lib/")) && > - entryName.endsWith(".jar")) { > - embedded_jars.add(entryName); > - } > - } > - zin.close(); > - } catch (Exception e) { > - throw new RuntimeException(e); > - } > - return embedded_jars; > - } > - > - /** > - * To add the exclude method when generating schemas , here the > exclude methods > - * will be session releated axis2 methods > - */ > - public static void addExcludeMethods(ArrayList excludeList) { > - excludeList.add("init"); > - excludeList.add("setOperationContext"); > - excludeList.add("startUp"); > - excludeList.add("destroy"); > - excludeList.add("shutDown"); > - } > + * Searches for jar files inside /lib dirctory. If there are > any, the names > + * of those jar files will be added to the array list > + */ > + public static List findLibJars(URL url) { > + ArrayList embedded_jars = new ArrayList(); > + try { > + ZipInputStream zin = new ZipInputStream(url.openStream()); > + ZipEntry entry; > + String entryName = ""; > + while ((entry = zin.getNextEntry()) != null) { > + entryName = entry.getName(); > + /** > + * if the entry name start with /lib and ends with .jar add it > + * to the the arraylist > + */ > + if (entryName != null > + && (entryName.startsWith("lib/") || entryName > + .startsWith("Lib/")) > + && entryName.endsWith(".jar")) { > + embedded_jars.add(entryName); > + } > + } > + zin.close(); > + } catch (Exception e) { > + throw new RuntimeException(e); > + } > + return embedded_jars; > + } > > - public static DeploymentClassLoader createClassLoader(File > serviceFile) throws MalformedURLException { > - ClassLoader contextClassLoader = (ClassLoader) org.apache. > axis2.java.security.AccessController.doPrivileged( > - new PrivilegedAction() { > - public Object run() { > - return Thread.currentThread(). > getContextClassLoader(); > - } > - } > - ); > - return createDeploymentClassLoader(new URL[]{serviceFile.toURL()}, > - contextClassLoader, > - new ArrayList()); > - } > + /** > + * To add the exclude method when generating schemas , here the exclude > + * methods will be session releated axis2 methods > + */ > + public static void addExcludeMethods(ArrayList excludeList) { > + excludeList.add("init"); > + excludeList.add("setOperationContext"); > + excludeList.add("startUp"); > + excludeList.add("destroy"); > + excludeList.add("shutDown"); > + } > > - public static ClassLoader createClassLoader(ArrayList urls, > + public static DeploymentClassLoader createClassLoader(File serviceFile) > + throws MalformedURLException { > + ClassLoader contextClassLoader = (ClassLoader) org.apache. > axis2.java.security.AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return Thread.currentThread().getContextClassLoader(); > + } > + }); > + return createDeploymentClassLoader(new URL[] { serviceFile.toURL() }, > + contextClassLoader, new ArrayList()); > + } > + > + public static ClassLoader createClassLoader(ArrayList urls, > ClassLoader serviceClassLoader, boolean extractJars, File tmpDir) { > URL url = (URL) urls.get(0); > if (extractJars) { > @@ -889,8 +903,9 @@ > urls.remove(0); > urls.addAll(0, Arrays.asList(urls1)); > URL[] urls2 = (URL[]) urls.toArray(new URL[urls.size()]); > - return createDeploymentClassLoader(urls2, > serviceClassLoader, null); > - } catch (Exception e) { > + return createDeploymentClassLoader(urls2, serviceClassLoader, > + null); > + } catch (Exception e) { > log > .warn("Exception extracting jars into temporary > directory : " > + e.getMessage() > @@ -900,39 +915,48 @@ > } > List embedded_jars = Utils.findLibJars(url); > URL[] urls2 = (URL[]) urls.toArray(new URL[urls.size()]); > - return createDeploymentClassLoader(urls2, > serviceClassLoader, embedded_jars); > - } > + return createDeploymentClassLoader(urls2, serviceClassLoader, > + embedded_jars); > + } > > public static File toFile(URL url) throws UnsupportedEncodingException { > - String path = URLDecoder.decode(url.getPath(), defaultEncoding); > - File file = > - new File(path.replace('/', File.separatorChar). > replace('|', ':')); > - return file; > - } > - > - public static ClassLoader createClassLoader(URL[] urls, > ClassLoader serviceClassLoader, > - boolean > extractJars, File tmpDir) { > - if (extractJars) { > - try { > - URL[] urls1 = Utils.getURLsForAllJars(urls[0], tmpDir); > - return createDeploymentClassLoader(urls1, > serviceClassLoader, null); > - } catch (Exception e){ > - log.warn("Exception extracting jars into temporary > directory : " + e.getMessage() + " : switching to alternate class > loading mechanism"); > - log.debug(e.getMessage(), e); > - } > - } > - List embedded_jars = Utils.findLibJars(urls[0]); > - return createDeploymentClassLoader(urls, > serviceClassLoader, embedded_jars); > - } > - > - > - private static DeploymentClassLoader > createDeploymentClassLoader(final URL[] urls, final ClassLoader > serviceClassLoader, final List embeddedJars) { > - return (DeploymentClassLoader) AccessController. > doPrivileged(new PrivilegedAction() { > - public Object run() { > - return new DeploymentClassLoader(urls, > embeddedJars, serviceClassLoader); > - } > - }); > - } > + String path = URLDecoder.decode(url.getPath(), defaultEncoding); > + File file = new File(path.replace('/', File.separatorChar).replace('|', > + ':')); > + return file; > + } > + > + public static ClassLoader createClassLoader(URL[] urls, > + ClassLoader serviceClassLoader, boolean extractJars, File tmpDir) { > + if (extractJars) { > + try { > + URL[] urls1 = Utils.getURLsForAllJars(urls[0], tmpDir); > + return createDeploymentClassLoader(urls1, serviceClassLoader, > + null); > + } catch (Exception e) { > + log > + .warn("Exception extracting jars into temporary > directory : " > + + e.getMessage() > + + " : switching to alternate class loading > mechanism"); > + log.debug(e.getMessage(), e); > + } > + } > + List embedded_jars = Utils.findLibJars(urls[0]); > + return createDeploymentClassLoader(urls, serviceClassLoader, > + embedded_jars); > + } > + > + private static DeploymentClassLoader createDeploymentClassLoader( > + final URL[] urls, final ClassLoader serviceClassLoader, > + final List embeddedJars) { > + return (DeploymentClassLoader) AccessController > + .doPrivileged(new PrivilegedAction() { > + public Object run() { > + return new DeploymentClassLoader(urls, embeddedJars, > + serviceClassLoader); > + } > + }); > + } > > /** > * This method is to process bean exclude parameter and the XML format of > @@ -1026,18 +1050,90 @@ > .getAxisConfiguration(); > if (axisConfiguration != null) { > ArrayList transports = new ArrayList(); > - for (Iterator iterator = axisConfiguration. > getTransportsIn().values().iterator(); iterator.hasNext(); ){ > - TransportInDescription transportInDescription = > (TransportInDescription) iterator.next(); > + for (Iterator iterator = axisConfiguration.getTransportsIn() > + .values().iterator(); iterator.hasNext();) { > + TransportInDescription transportInDescription = > (TransportInDescription) iterator > + .next(); > transports.add(transportInDescription.getName()); > } > - transportInValues = transports.iterator(); > + transportInValues = transports.iterator(); > } > } else { > transportInValues = axisService.getExposedTransports().iterator(); > } > > if (transportInValues != null) { > - for (; transportInValues.hasNext();) { > + for (; transportInValues.hasNext();) { > + String transportName = (String) transportInValues.next(); > + String protocol = transportName.substring(0, 1).toUpperCase() > + + transportName.substring(1, transportName.length()) > + .toLowerCase(); > + /* > + * populates soap11 endpoint > + */ > + String soap11EndpointName = serviceName + protocol > + + "Soap11Endpoint"; > + > + AxisEndpoint httpSoap11Endpoint = new AxisEndpoint(); > + httpSoap11Endpoint.setName(soap11EndpointName); > + httpSoap11Endpoint.setParent(axisService); > + httpSoap11Endpoint.setTransportInDescription(transportName); > + populateSoap11Endpoint(axisService, httpSoap11Endpoint); > + axisService.addEndpoint(httpSoap11Endpoint.getName(), > + httpSoap11Endpoint); > + // setting soap11 endpoint as the default endpoint > + axisService.setEndpointName(soap11EndpointName); > + > + /* > + * generating Soap12 endpoint > + */ > + String soap12EndpointName = serviceName + protocol > + + "Soap12Endpoint"; > + AxisEndpoint httpSoap12Endpoint = new AxisEndpoint(); > + httpSoap12Endpoint.setName(soap12EndpointName); > + httpSoap12Endpoint.setParent(axisService); > + httpSoap12Endpoint.setTransportInDescription(transportName); > + populateSoap12Endpoint(axisService, httpSoap12Endpoint); > + axisService.addEndpoint(httpSoap12Endpoint.getName(), > + httpSoap12Endpoint); > + > + /* > + * generating Http endpoint > + */ > + if ("http".equals(transportName)) { > + String httpEndpointName = serviceName + protocol > + + "Endpoint"; > + AxisEndpoint httpEndpoint = new AxisEndpoint(); > + httpEndpoint.setName(httpEndpointName); > + httpEndpoint.setParent(axisService); > + httpEndpoint.setTransportInDescription(transportName); > + populateHttpEndpoint(axisService, httpEndpoint); > + axisService.addEndpoint(httpEndpoint.getName(), > + httpEndpoint); > + } > + } > + } > + } > + > + public static void addEndpointsToService(AxisService axisService, > + AxisConfiguration axisConfiguration) throws AxisFault { > + > + String serviceName = axisService.getName(); > + Iterator transportInValues = null; > + > + if (axisConfiguration != null) { > + ArrayList transports = new ArrayList(); > + for (Iterator iterator = axisConfiguration.getTransportsIn() > + .values().iterator(); iterator.hasNext();) { > + TransportInDescription transportInDescription = > (TransportInDescription) iterator > + .next(); > + transports.add(transportInDescription.getName()); > + } > + transportInValues = transports.iterator(); > + } > + > + if (transportInValues != null) { > + for (; transportInValues.hasNext();) { > String transportName = (String) transportInValues.next(); > String protocol = transportName.substring(0, 1).toUpperCase() > + transportName.substring(1, transportName.length()) > @@ -1102,6 +1198,7 @@ > httpSoap11Endpoint.setName(soap11EndpointName); > httpSoap11Endpoint.setParent(axisService); > httpSoap11Endpoint.setEndpointURL(url.toString()); > + httpSoap11Endpoint.setTransportInDescription(url.getProtocol()); > > populateSoap11Endpoint(axisService, httpSoap11Endpoint); > axisService.addEndpoint(httpSoap11Endpoint.getName(), > @@ -1123,6 +1220,7 @@ > httpSoap12Endpoint.setName(soap12EndpointName); > httpSoap12Endpoint.setParent(axisService); > httpSoap12Endpoint.setEndpointURL(url.toString()); > + httpSoap12Endpoint.setTransportInDescription(url.getProtocol()); > > populateSoap12Endpoint(axisService, httpSoap12Endpoint); > axisService.addEndpoint(httpSoap12Endpoint.getName(), > @@ -1140,10 +1238,74 @@ > httpEndpoint.setName(httpEndpointName); > httpEndpoint.setParent(axisService); > httpEndpoint.setEndpointURL(url.toString()); > + httpEndpoint.setTransportInDescription(url.getProtocol()); > populateHttpEndpoint(axisService, httpEndpoint); > axisService.addEndpoint(httpEndpoint.getName(), httpEndpoint); > } > > + public static void processPolicyAttachments(Iterator attachmentElements, > + AxisService service) throws XMLStreamException, > + FactoryConfigurationError { > + OMElement attachmentElement; > + HashMap attachmentsMap = new HashMap(); > + > + for (; attachmentElements.hasNext();) { > + attachmentElement = (OMElement) attachmentElements.next(); > + OMElement appliesToElem = attachmentElement > + .getFirstChildWithName(new QName( > + DeploymentConstants.POLICY_NS_URI, > + DeploymentConstants.TAG_APPLIES_TO)); > + ArrayList policyComponents = new ArrayList(); > + > + // process elements .. > + for (Iterator policyElements = attachmentElement > + .getChildrenWithName(new QName( > + DeploymentConstants.POLICY_NS_URI, > + DeploymentConstants.TAG_POLICY)); policyElements > + .hasNext();) { > + PolicyComponent policy = PolicyUtil > + .getPolicyFromOMElement((OMElement) policyElements > + .next()); > + policyComponents.add(policy); > + } > + > + // process elements .. > + for (Iterator policyRefElements = attachmentElement > + .getChildrenWithName(new QName( > + DeploymentConstants.POLICY_NS_URI, > + DeploymentConstants.TAG_POLICY_REF)); policyRefElements > + .hasNext();) { > + PolicyComponent policyRef = PolicyUtil > + .getPolicyReferenceFromOMElement((OMElement) > policyRefElements > + .next()); > + policyComponents.add(policyRef); > + } > + > + for (Iterator policySubjects = appliesToElem > + .getChildrenWithName(new QName("policy-subject")); > policySubjects > + .hasNext();) { > + OMElement policySubject = (OMElement) policySubjects.next(); > + String identifier = policySubject.getAttributeValue(new QName( > + "identifier")); > + > + ArrayList values = (ArrayList) attachmentsMap.get(identifier); > + if (values == null) { > + values = new ArrayList(); > + attachmentsMap.put(identifier, values); > + } > + values.addAll(policyComponents); > + } > + } > + > + for (Iterator keys = attachmentsMap.keySet().iterator(); > keys.hasNext();) { > + String identifier = (String) keys.next(); > + if (identifier.startsWith("binding:soap")) { > + processSoapAttachments(identifier, (List) attachmentsMap > + .get(identifier), service); > + } > + } > + } > + > private static void populateSoap11Endpoint(AxisService axisService, > AxisEndpoint axisEndpoint) { > String endpointName = axisEndpoint.getName(); > @@ -1307,5 +1469,66 @@ > > axisBindingOperation.setAxisOperation(axisOperation); > axisBindingOperation.setParent(axisBinding); > + } > + > + private static void processSoapAttachments(String identifier, > + List policyComponents, AxisService service) { > + Map map = service.getEndpoints(); > + String soapVersion = (identifier.indexOf("soap12") > -1) ? > SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI > + : SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI; > + > + for (Iterator iterator = map.values().iterator(); iterator. > hasNext();) { > + AxisEndpoint axisEndpoint = (AxisEndpoint) iterator.next(); > + AxisBinding axisBinding = axisEndpoint.getBinding(); > + String wsoap = (String) axisBinding > + .getProperty(WSDL2Constants.ATTR_WSOAP_VERSION); > + if (soapVersion.equals(wsoap)) { > + String[] identifiers = identifier.split("/"); > + int key = identifiers.length; > + if (key == 1) { > + axisBinding.getPolicySubject().attachPolicyComponents( > + policyComponents); > + } else if (key == 2 || key == 3) { > + String opName = identifiers[1]; > + opName = opName.substring(opName.indexOf(":") + 1, opName > + .length()); > + AxisBindingOperation bindingOperation = null; > + boolean found = false; > + for (Iterator i = axisBinding.getChildren(); i.hasNext();) { > + bindingOperation = (AxisBindingOperation) i.next(); > + if (opName.equals(bindingOperation.getName() > + .getLocalPart())) { > + found = true; > + break; > + } > + } > + if (!found) { > + throw new IllegalArgumentException( > + "Invalid binding operation " + opName); > + } > + > + if (key == 2) { > + bindingOperation.getPolicySubject() > + .attachPolicyComponents(policyComponents); > + } else { > + if ("in".equals(identifiers[2])) { > + AxisBindingMessage bindingInMessage = > (AxisBindingMessage) bindingOperation > + .getChild(WSDLConstants.MESSAGE_LABEL_IN_VALUE); > + bindingInMessage.getPolicySubject() > + .attachPolicyComponents(policyComponents); > + > + } else if ("out".equals(identifiers[2])) { > + AxisBindingMessage bindingOutMessage = > (AxisBindingMessage) bindingOperation > + .getChild(WSDLConstants.MESSAGE_LABEL_OUT_VALUE); > + bindingOutMessage.getPolicySubject() > + .attachPolicyComponents(policyComponents); > + } else { > + // FIXME faults > + } > + } > + } > + break; > + } > + } > } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation. > java Sat Mar 29 02:25:45 2008 > @@ -103,7 +103,7 @@ > } > > public Object getKey() { > - return null; > + return name; > } > > public void engageModule(AxisModule axisModule) throws AxisFault { > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription. > java Sat Mar 29 02:25:45 2008 > @@ -230,7 +230,7 @@ > // NOTE - These are NOT typesafe! > public void addChild(AxisDescription child) { > if (child.getKey() == null) { > - // FIXME: Several classes that extend AxisDescription pass > null in their getKey method. > + > // throw new IllegalArgumentException("Please specify a > key in the child"); > } else { > children.put(child.getKey(), child); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint. > java Sat Mar 29 02:25:45 2008 > @@ -181,8 +181,11 @@ > .getTransportIn(transportInDescName); > TransportListener listener = in.getReceiver(); > String ip = HttpUtils.getIpAddress(axisConfiguration); > + // we should pass [serviceName].[endpointName] instead of > + // [endpointName] > + String sDOTe = serviceName + "." + name; > EndpointReference[] eprsForService = listener > - .getEPRsForService(serviceName, ip); > + .getEPRsForService(sDOTe, ip); > // we consider only the first address return by the listener > if (eprsForService != null && eprsForService.length > 0) { > return eprsForService[0].getAddress(); > @@ -190,11 +193,28 @@ > } catch (SocketException e) { > logger.warn("", e); > } catch (AxisFault e) { > - logger.warn("", e); > + logger.warn(e.getMessage()); > } > } > } > - > + > return null; > + } > + > + public boolean isActive() { > + if (transportInDescName != null && parent != null) { > + AxisConfiguration axisConfiguration = getAxisConfiguration(); > + if (axisConfiguration != null) { > + AxisService service = (AxisService) parent; > + if (service.isEnableAllTransports()) { > + return axisConfiguration.getTransportsIn().containsKey( > + transportInDescName); > + } else { > + return service.getExposedTransports().contains( > + transportInDescName); > + } > + } > + } > + return false; > } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage. > java Sat Mar 29 02:25:45 2008 > @@ -21,8 +21,11 @@ > > import org.apache.axis2.AxisFault; > import org.apache.axis2.description.java2wsdl.Java2WSDLConstants; > +import org.apache.axis2.engine.AxisConfiguration; > import org.apache.axis2.phaseresolver.PhaseResolver; > +import org.apache.axis2.util.PolicyUtil; > import org.apache.axis2.wsdl.SOAPHeaderMessage; > +import org.apache.neethi.Policy; > import org.apache.ws.commons.schema.XmlSchema; > import org.apache.ws.commons.schema.XmlSchemaElement; > import org.apache.ws.commons.schema.XmlSchemaImport; > @@ -59,6 +62,10 @@ > > //To chcek whether the message is wrapped or unwrapped > private boolean wrapped = true; > + > + private Policy effectivePolicy = null; > + > + private boolean policyCalculated = false; > > public String getMessagePartName() { > return messagePartName; > @@ -231,4 +238,46 @@ > public void setWrapped(boolean wrapped) { > this.wrapped = wrapped; > } > + > + public Policy getEffectivePolicy() { > + if (effectivePolicy == null && !policyCalculated) { > + effectivePolicy = calculateEffectivePolicy(); > + policyCalculated = true; > + } > + return effectivePolicy; > + } > + > + public Policy calculateEffectivePolicy() { > + PolicySubject policySubject = null; > + ArrayList policyList = new ArrayList(); > + > + // AxisBindingMessage > + policySubject = getPolicySubject(); > + policyList.addAll(policySubject.getAttachPolicyComponents()); > + > + // AxisOperation > + AxisOperation axisOperation = getAxisOperation(); > + if (axisOperation != null) { > + policyList.addAll(axisOperation.getPolicySubject() > + .getAttachPolicyComponents()); > + } > + > + // AxisService > + AxisService axisService = (axisOperation == null) ? null > + : axisOperation.getAxisService(); > + if (axisService != null) { > + policyList.addAll(axisService.getPolicySubject() > + .getAttachPolicyComponents()); > + } > + > + // AxisConfiguration > + AxisConfiguration axisConfiguration = (axisService == null) ? null > + : axisService.getAxisConfiguration(); > + if (axisConfiguration != null) { > + policyList.addAll(axisConfiguration.getPolicySubject() > + .getAttachPolicyComponents()); > + } > + > + return PolicyUtil.getMergedPolicy(policyList, axisService); > + } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule. > java > URL: http://svn.apache. > org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule. > java?rev=642522&r1=642521&r2=642522&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule. > java (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule. > java Sat Mar 29 02:25:45 2008 > @@ -83,6 +83,7 @@ > public static final String VERSION_SNAPSHOT = "SNAPSHOT"; > public static final String MODULE_SERVICE = "moduleService"; > > + private PolicySubject policySubject = new PolicySubject(); > > /** > * Constructor ModuleDescription. > @@ -261,6 +262,10 @@ > policyInclude = new PolicyInclude(); > } > return policyInclude; > + } > + > + public PolicySubject getPolicySubject() { > + return policySubject; > } > > public String getModuleDescription() { > > 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=642522&r1=642521&r2=642522&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 Sat Mar 29 02:25:45 2008 > @@ -2239,7 +2239,7 @@ > String endpointName = axisService.getEndpointName(); > if ((endpointName == null || endpointName.length() == 0) > && axisService.getAxisConfiguration() != null) { > - Utils.addEndpointsToService(axisService); > + Utils.addEndpointsToService(axisService, axisService. > getAxisConfiguration()); > } > > return axisService; > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org > For additional commands, e-mail: axis-cvs-help@ws.apache.org > Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU --=_alternative 004CAF058025741B_= Content-Type: text/html; charset="US-ASCII"
Hi Sanka,

The change that you made to EndpointReferenceHelper does not follow the existing model. Metadata from an endpoint reference that complies with the Submission spec is not stored in a wsa:Metadata element and so the metadata field of the EndpointReference class is not used. Instead the metadata gets stored as extensibility elements. If you want to be able to treat endpoint references from the Submission and Final specs in the same manner, in your code, then you will need to write some helper methods in EndpointReferenceHelper to hide the distinction. See the existing methods setServiceNameMetadata() and getServiceNameMetadata() for an example.

Cheers

Brian DePradine
Web Services Development
IBM Hursley
External  +44 (0) 1962 816319         Internal 246319

If you can't find the time to do it right the first time, where will you find the time to do it again?


sanka@apache.org wrote on 29/03/2008 09:25:47:

> Author: sanka
> Date: Sat Mar 29 02:25:45 2008
> New Revision: 642522
>
> URL: http://svn.apache.org/viewvc?rev=642522&view=rev
> Log:
> Applied the patch with minor fixes to resolve test failures.
> see:
> https://issues.apache.org/jira/browse/AXIS2-3677
>
> Modified:
>    
> webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest.
> java
>    
> webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest.
> java
>    
> webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/PolicySubject.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL20ToAxisServiceBuilder.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/PolicyUtil.
> java
>    
> webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.
> java
>
> Modified:
> webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/deployment/WSDL11ToAxisServiceBuilderTest.
> java Sat Mar 29 02:25:45 2008
> @@ -19,8 +19,11 @@
>  
>  package org.apache.axis2.deployment;
>  
> +import org.apache.axis2.context.ConfigurationContext;
> +import org.apache.axis2.context.ConfigurationContextFactory;
>  import org.apache.axis2.description.AxisService;
>  import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder;
> +import org.apache.axis2.engine.AxisConfiguration;
>  import org.custommonkey.xmlunit.XMLTestCase;
>  import org.custommonkey.xmlunit.XMLUnit;
>  
> @@ -44,13 +47,15 @@
>              WSDL11ToAllAxisServicesBuilder builder = new
> WSDL11ToAllAxisServicesBuilder(
>                      new FileInputStream(testResourceFile));
>              AxisService axisService = builder.populateService();
> +            ConfigurationContext configContext =
> ConfigurationContextFactory.createDefaultConfigurationContext();
> +            AxisConfiguration axisConfig = configContext.
> getAxisConfiguration();
> +            axisConfig.addService(axisService);
>              ByteArrayOutputStream baos = new ByteArrayOutputStream();
>              axisService.printWSDL(baos);
>              assertXMLEqual(new FileReader(testResourceFile), new
> StringReader(new String(baos.toByteArray())));
>          } catch (Exception e) {
>              System.out.println("Error in WSDL : " +
> testResourceFile.getName());
>              System.out.println("Exception: " + e.toString());
> -            e.printStackTrace();
>              fail("Caught exception " + e.toString());
>          } finally {
>              XMLUnit.setIgnoreWhitespace(false);
>
> Modified:
> webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/integration/test/org/tempuri/BaseDataTypesTest.
> java Sat Mar 29 02:25:45 2008
> @@ -41,7 +41,10 @@
>              ByteArrayOutputStream out = new ByteArrayOutputStream();
>              Java2WSDLBuilder builder = new Java2WSDLBuilder(out,
> BaseDataTypes.class.getName(), BaseDataTypes.class.getClassLoader());
>              builder.generateWSDL();
> +            out.flush();
> +            
>              FileReader control = new FileReader(wsdlLocation);
> +            
>              StringReader test = new StringReader(new String(out.
> toByteArray()));
>              Diff myDiff = new Diff(XMLUnit.buildDocument(XMLUnit.
> getControlParser(), control),
>                       XMLUnit.buildDocument(XMLUnit.
> getControlParser(), test),
>
> Modified:
> webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.
> java Sat Mar 29 02:25:45 2008
> @@ -256,7 +256,6 @@
>                 + (serviceName == null ? Java2WSDLUtils
>                       .getSimpleClassName(className) : serviceName);
>        }
> -      // axisService.setEPRs(new String[]{uri});
>        setServiceEPR(axisService, uri);
>        axisConfig.addService(axisService);
>  
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.
> java Sat Mar 29 02:25:45 2008
> @@ -71,6 +71,9 @@
>      public static final String MESSAGE_SCOPE = "message";
>  
>      public static final String AXIS_BINDING_OPERATION =
> "AxisBindingOperation";
> +    
> +    public static final String AXIS_BINDING_MESSAGE = "AxisBindingMessage";
> +
>  
>      /**
>       * To chenge the conetext path from axis2/service to something else
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.
> java Sat Mar 29 02:25:45 2008
> @@ -221,6 +221,9 @@
>                  "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
>          static final String WSA_SERVICE_NAME_ENDPOINT_NAME = "PortName";
>          static final String WSA_INTERFACE_NAME = "PortType";
> +        
> +        static final String MEX_NS_URL = "http://schemas.xmlsoap.
> org/ws/2004/09/mex";
> +        static final String MEX_METADATA = "Metadata";
>  
>          // fault information
>          static final String FAULT_INVALID_HEADER =
> "InvalidMessageInformationHeader";
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/EndpointReferenceHelper.
> java Sat Mar 29 02:25:45 2008
> @@ -340,8 +340,12 @@
>                      OMElement element = (OMElement) iterator.next();
>                      epr.addReferenceParameter(element);
>                  }
> -            } else {
> -                epr.addExtensibleElement(eprChildElement);
> +            }else if (!isFinalAddressingNamespace &&
> +                    map.get(AddressingConstants.Submission.
> MEX_METADATA).equals(qname)) {
> +               epr.addMetaData(eprChildElement);
> +              
> +            }   else {
> +               epr.addExtensibleElement(eprChildElement);
>              }
>          }
>  
> @@ -544,5 +548,7 @@
>          submissionQNames.put(AddressingConstants.Submission.
> EPR_REFERENCE_PROPERTIES, new QName(
>                  AddressingConstants.Submission.WSA_NAMESPACE,
>                  AddressingConstants.Submission.EPR_REFERENCE_PROPERTIES));
> +        submissionQNames.put(AddressingConstants.Submission.
> MEX_METADATA, new QName(
> +                AddressingConstants.Submission.MEX_NS_URL,
> AddressingConstants.Submission.MEX_METADATA));
>      }
>  }
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.
> java Sat Mar 29 02:25:45 2008
> @@ -26,6 +26,7 @@
>  import org.apache.axiom.soap.SOAP12Constants;
>  import org.apache.axiom.soap.SOAPEnvelope;
>  import org.apache.axis2.AxisFault;
> +import org.apache.axis2.Constants;
>  import org.apache.axis2.Constants.Configuration;
>  import org.apache.axis2.addressing.EndpointReference;
>  import org.apache.axis2.addressing.RelatesTo;
> @@ -36,6 +37,7 @@
>  import org.apache.axis2.context.externalize.SafeObjectInputStream;
>  import org.apache.axis2.context.externalize.SafeObjectOutputStream;
>  import org.apache.axis2.context.externalize.SafeSerializable;
> +import org.apache.axis2.description.AxisBindingMessage;
>  import org.apache.axis2.description.AxisMessage;
>  import org.apache.axis2.description.AxisModule;
>  import org.apache.axis2.description.AxisOperation;
> @@ -1539,16 +1541,19 @@
>          if (LoggingControl.debugLoggingAllowed) {
>              checkActivateWarning("getEffectivePolicy");
>          }
> -        if (axisMessage != null) {
> -            return axisMessage.getPolicyInclude().getEffectivePolicy();
> -        }
> -        if (axisOperation != null) {
> -            return axisOperation.getPolicyInclude().getEffectivePolicy();
> -        }
> -        if (axisService != null) {
> -            return axisService.getPolicyInclude().getEffectivePolicy();
> +        
> +        AxisBindingMessage bindingMessage =
> +           (AxisBindingMessage) getProperty(Constants.AXIS_BINDING_MESSAGE);
> +        
> +        if (bindingMessage != null) {
> +           return bindingMessage.getEffectivePolicy();
> +        } else {
> +           if (axisMessage != null) {
> +              return axisMessage.getEffectivePolicy();              
> +           } else {
> +              return null;
> +           }
>          }
> -        return configurationContext.getAxisConfiguration().
> getPolicyInclude().getEffectivePolicy();
>      }
>  
>  
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.
> java Sat Mar 29 02:25:45 2008
> @@ -154,8 +154,8 @@
>                                                                    
> TAG_POLICY));
>  
>              if (policyElements != null && policyElements.hasNext()) {
> -                processPolicyElements(PolicyInclude.AXIS_POLICY,
> policyElements,
> -                                      axisConfig.getPolicyInclude());
> +                processPolicyElements(policyElements,
> +                                      axisConfig.getPolicySubject());
>              }
>  
>              // processing <wsp:PolicyReference> .. </..> elements
> @@ -163,8 +163,8 @@
>                                                                    
> TAG_POLICY_REF));
>  
>              if (policyRefElements != null && policyRefElements.hasNext()) {
> -                processPolicyRefElements(PolicyInclude.AXIS_POLICY,
> policyElements,
> -                                         axisConfig.getPolicyInclude());
> +                processPolicyRefElements(policyElements,
> +                                         axisConfig.getPolicySubject());
>              }
>  
>              //to process default module versions
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.
> java Sat Mar 29 02:25:45 2008
> @@ -158,5 +158,7 @@
>      String POLICY_NS_URI = Constants.URI_POLICY;
>      String TAG_POLICY = "Policy";
>      String TAG_POLICY_REF = "PolicyReference";
> -
> +    
> +    String TAG_POLICY_ATTACHMENT = "PolicyAttachment";
> +    String TAG_APPLIES_TO = "AppliesTo";
>  }
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.
> java Sat Mar 29 02:25:45 2008
> @@ -33,6 +33,7 @@
>  import org.apache.axis2.description.ParameterInclude;
>  import org.apache.axis2.description.PhaseRule;
>  import org.apache.axis2.description.PolicyInclude;
> +import org.apache.axis2.description.PolicySubject;
>  import org.apache.axis2.description.WSDL2Constants;
>  import org.apache.axis2.engine.AxisConfiguration;
>  import org.apache.axis2.engine.MessageReceiver;
> @@ -631,23 +632,21 @@
>          }
>      }
>  
> -    protected void processPolicyElements(int type, Iterator policyElements,
> -                                         PolicyInclude policyInclude) {
> +    protected void processPolicyElements(Iterator policyElements,
> +                                         PolicySubject policySubject) {
>          while (policyElements.hasNext()) {
>              Policy p = PolicyEngine
>                      .getPolicy((OMElement) policyElements.next());
> -            policyInclude.addPolicyElement(type, p);
> +            policySubject.attachPolicy(p);
>          }
>      }
>  
> -    protected void processPolicyRefElements(int type,
> -                                            Iterator policyRefElements,
> -                                            PolicyInclude policyInclude) {
> -
> +    protected void processPolicyRefElements(Iterator policyRefElements,
> +                                            PolicySubject policySubject) {
>          while (policyRefElements.hasNext()) {
>              PolicyReference policyReference = PolicyEngine
>                      .getPolicyReference((OMElement)
> policyRefElements.next());
> -            policyInclude.addPolicyRefElement(type, policyReference);
> +            policySubject.attachPolicyReference(policyReference);
>          }
>      }
>  
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleBuilder.
> java Sat Mar 29 02:25:45 2008
> @@ -147,8 +147,7 @@
>                      moduleElement.getChildrenWithName(new
> QName(POLICY_NS_URI, TAG_POLICY));
>  
>              if (policyElements != null && policyElements.hasNext()) {
> -                processPolicyElements(PolicyInclude.
> AXIS_MODULE_POLICY, policyElements,
> -                                      module.getPolicyInclude());
> +                processPolicyElements(policyElements, module.
> getPolicySubject());
>              }
>  
>              // processing <wsp:PolicyReference> .. </..> elements
> @@ -156,8 +155,7 @@
>                      moduleElement.getChildrenWithName(new
> QName(POLICY_NS_URI, TAG_POLICY_REF));
>  
>              if (policyRefElements != null && policyElements.hasNext()) {
> -                processPolicyRefElements(PolicyInclude.
> AXIS_MODULE_POLICY, policyRefElements,
> -                                         module.getPolicyInclude());
> +                processPolicyRefElements(policyRefElements, module.
> getPolicySubject());
>              }
>  
>              // process INFLOW
> @@ -297,14 +295,14 @@
>              Iterator policyElements = operation.
> getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
>  
>              if (policyElements != null && policyElements.hasNext()) {
> -                processPolicyElements(PolicyInclude.
> AXIS_MODULE_OPERATION_POLICY, policyElements, op_descrip.getPolicyInclude());
> +                processPolicyElements(policyElements, op_descrip.
> getPolicySubject());
>              }
>  
>              // processing <wsp:PolicyReference> .. </..> elements
>              Iterator policyRefElements = operation.
> getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_REF));
>  
>              if (policyRefElements != null && policyRefElements.hasNext()) {
> -                processPolicyRefElements(PolicyInclude.
> AXIS_MODULE_OPERATION_POLICY, policyRefElements, module.getPolicyInclude());
> +                processPolicyRefElements(policyRefElements, module.
> getPolicySubject());
>              }
>  
>              // setting Operation phase
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceBuilder.
> java Sat Mar 29 02:25:45 2008
> @@ -48,6 +48,9 @@
>  import org.apache.commons.logging.LogFactory;
>  
>  import javax.xml.namespace.QName;
> +import javax.xml.stream.FactoryConfigurationError;
> +import javax.xml.stream.XMLStreamException;
> +
>  import java.io.InputStream;
>  import java.util.ArrayList;
>  import java.util.HashMap;
> @@ -298,8 +301,7 @@
>                 .getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
>  
>           if (policyElements != null && policyElements.hasNext()) {
> -            processPolicyElements(PolicyInclude.AXIS_SERVICE_POLICY,
> -                  policyElements, service.getPolicyInclude());
> +            processPolicyElements(policyElements, service.
> getPolicySubject());
>           }
>  
>           // processing <wsp:PolicyReference> .. </..> elements
> @@ -308,8 +310,7 @@
>                       TAG_POLICY_REF));
>  
>           if (policyRefElements != null && policyRefElements.hasNext()) {
> -            processPolicyRefElements(PolicyInclude.AXIS_SERVICE_POLICY,
> -                  policyRefElements, service.getPolicyInclude());
> +            processPolicyRefElements(policyRefElements, service.
> getPolicySubject());
>           }
>  
>           // processing service scope
> @@ -423,6 +424,8 @@
>           }
>  
>           processEndpoints(service);
> +         processPolicyAttachments(service_element, service);
> +        
>  
>        } catch (AxisFault axisFault) {
>           throw new DeploymentException(axisFault);
> @@ -627,8 +630,7 @@
>                 .getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY));
>  
>           if (policyElements != null) {
> -            processPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY,
> -                  policyElements, message.getPolicyInclude());
> +            processPolicyElements(policyElements, message.
> getPolicySubject());
>           }
>  
>           // processing <wsp:PolicyReference> .. </..> elements
> @@ -637,8 +639,7 @@
>                       TAG_POLICY_REF));
>  
>           if (policyRefElements != null) {
> -            processPolicyRefElements(PolicyInclude.AXIS_MESSAGE_POLICY,
> -                  policyRefElements, message.getPolicyInclude());
> +            processPolicyRefElements(policyRefElements, message.
> getPolicySubject());
>           }
>  
>           processParameters(parameters, message, operation);
> @@ -789,8 +790,7 @@
>                 POLICY_NS_URI, TAG_POLICY));
>  
>           if (policyElements != null && policyElements.hasNext()) {
> -            processPolicyElements(PolicyInclude.AXIS_OPERATION_POLICY,
> -                  policyElements, op_descrip.getPolicyInclude());
> +            processPolicyElements(policyElements, op_descrip.
> getPolicySubject());
>           }
>  
>           // processing <wsp:PolicyReference> .. </..> elements
> @@ -799,8 +799,7 @@
>                       TAG_POLICY_REF));
>  
>           if (policyRefElements != null && policyRefElements.hasNext()) {
> -            processPolicyRefElements(PolicyInclude.AXIS_OPERATION_POLICY,
> -                  policyRefElements, op_descrip.getPolicyInclude());
> +            processPolicyRefElements(policyRefElements, op_descrip.
> getPolicySubject());
>           }
>  
>           // Operation Parameters
> @@ -913,7 +912,16 @@
>     private void processEndpoints(AxisService axisService) throws AxisFault {
>        String endpointName = axisService.getEndpointName();
>        if (endpointName == null || endpointName.length() == 0) {
> -         Utils.addEndpointsToService(axisService);
> +         Utils.addEndpointsToService(axisService, service.
> getAxisConfiguration());
> +      }
> +   }
> +  
> +   private void processPolicyAttachments(OMElement serviceElement,
> AxisService service) throws DeploymentException {
> +      Iterator attachmentElements = serviceElement.
> getChildrenWithName(new QName(POLICY_NS_URI, TAG_POLICY_ATTACHMENT));
> +      try {
> +         Utils.processPolicyAttachments(attachmentElements, service);
> +      } catch (Exception e) {
> +         throw new DeploymentException(e);
>        }
>     }
>  
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.
> java Sat Mar 29 02:25:45 2008
> @@ -19,6 +19,44 @@
>  
>  package org.apache.axis2.deployment.util;
>  
> +import java.io.BufferedReader;
> +import java.io.File;
> +import java.io.FileInputStream;
> +import java.io.FileNotFoundException;
> +import java.io.FileOutputStream;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.InputStreamReader;
> +import java.io.OutputStreamWriter;
> +import java.io.UnsupportedEncodingException;
> +import java.lang.reflect.InvocationTargetException;
> +import java.lang.reflect.Method;
> +import java.lang.reflect.Modifier;
> +import java.net.MalformedURLException;
> +import java.net.URL;
> +import java.net.URLClassLoader;
> +import java.net.URLDecoder;
> +import java.security.AccessController;
> +import java.security.PrivilegedAction;
> +import java.security.PrivilegedActionException;
> +import java.security.PrivilegedExceptionAction;
> +import java.util.ArrayList;
> +import java.util.Arrays;
> +import java.util.Collection;
> +import java.util.HashMap;
> +import java.util.Iterator;
> +import java.util.LinkedList;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.Stack;
> +import java.util.StringTokenizer;
> +import java.util.zip.ZipEntry;
> +import java.util.zip.ZipInputStream;
> +
> +import javax.xml.namespace.QName;
> +import javax.xml.stream.FactoryConfigurationError;
> +import javax.xml.stream.XMLStreamException;
> +
>  import org.apache.axiom.om.OMAbstractFactory;
>  import org.apache.axiom.om.OMElement;
>  import org.apache.axiom.om.OMFactory;
> @@ -56,51 +94,18 @@
>  import org.apache.axis2.engine.Handler;
>  import org.apache.axis2.engine.MessageReceiver;
>  import org.apache.axis2.util.Loader;
> +import org.apache.axis2.util.PolicyUtil;
>  import org.apache.axis2.wsdl.WSDLConstants;
>  import org.apache.axis2.wsdl.WSDLUtil;
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> +import org.apache.neethi.PolicyComponent;
>  import org.apache.ws.commons.schema.utils.NamespaceMap;
>  import org.codehaus.jam.JAnnotation;
>  import org.codehaus.jam.JMethod;
>  
> -import javax.xml.namespace.QName;
> -import java.io.BufferedReader;
> -import java.io.File;
> -import java.io.FileInputStream;
> -import java.io.FileOutputStream;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.io.InputStreamReader;
> -import java.io.OutputStreamWriter;
> -import java.io.UnsupportedEncodingException;
> -import java.io.FileNotFoundException;
> -import java.lang.reflect.Method;
> -import java.lang.reflect.Modifier;
> -import java.lang.reflect.InvocationTargetException;
> -import java.net.MalformedURLException;
> -import java.net.URL;
> -import java.net.URLClassLoader;
> -import java.net.URLDecoder;
> -import java.security.AccessController;
> -import java.security.PrivilegedAction;
> -import java.security.PrivilegedExceptionAction;
> -import java.security.PrivilegedActionException;
> -import java.util.ArrayList;
> -import java.util.Arrays;
> -import java.util.Collection;
> -import java.util.HashMap;
> -import java.util.Iterator;
> -import java.util.LinkedList;
> -import java.util.List;
> -import java.util.Stack;
> -import java.util.StringTokenizer;
> -import java.util.zip.ZipEntry;
> -import java.util.zip.ZipInputStream;
> -
>  public class Utils {
>  
> -
>     public static String defaultEncoding = new OutputStreamWriter(System.out)
>           .getEncoding();
>  
> @@ -114,23 +119,24 @@
>           HandlerDescription handlermd = flow.getHandler(j);
>           Handler handler;
>  
> -         final Class handlerClass = getHandlerClass(handlermd.
> getClassName(), clsLoader);
> +         final Class handlerClass = getHandlerClass(
> +               handlermd.getClassName(), clsLoader);
>  
> -            try {
> -                handler = (Handler) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                        new PrivilegedExceptionAction() {
> -                            public Object run() throws
> InstantiationException, IllegalAccessException {
> -                                return handlerClass.newInstance();
> -                            }
> -                        }
> -                );
> -                handler.init(handlermd);
> -                handlermd.setHandler(handler);
> -            } catch (PrivilegedActionException e) {
> -                throw AxisFault.makeFault(e);
> -            }
> -        }
> -    }
> +         try {
> +            handler = (Handler) org.apache.axis2.java.security.
> AccessController
> +                  .doPrivileged(new PrivilegedExceptionAction() {
> +                     public Object run() throws InstantiationException,
> +                           IllegalAccessException {
> +                        return handlerClass.newInstance();
> +                     }
> +                  });
> +            handler.init(handlermd);
> +            handlermd.setHandler(handler);
> +         } catch (PrivilegedActionException e) {
> +            throw AxisFault.makeFault(e);
> +         }
> +      }
> +   }
>  
>     public static boolean loadHandler(ClassLoader loader1,
> HandlerDescription desc)
>           throws DeploymentException {
> @@ -138,15 +144,14 @@
>        Handler handler;
>        try {
>           final Class handlerClass = Loader.loadClass(loader1, handlername);
> -            Package aPackage = (Package) org.apache.axis2.java.
> security.AccessController.doPrivileged(

> -                    new PrivilegedAction() {
> -                        public Object run() {
> -                            return handlerClass.getPackage();
> -                        }
> -                    }
> -            );
> -            if (aPackage != null && aPackage.getName().equals(
> -               "org.apache.axis2.engine")) {
> +         Package aPackage = (Package) org.apache.axis2.java.
> security.AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return handlerClass.getPackage();
> +                  }
> +               });
> +         if (aPackage != null
> +               && aPackage.getName().equals("org.apache.axis2.engine")) {
>              String name = handlerClass.getName();
>              log.warn("Dispatcher " + name + " is now deprecated.");
>              if (name.indexOf("InstanceDispatcher") != -1) {
> @@ -158,13 +163,13 @@
>                             + "and replace with the same class in
> org.apache.axis2.dispatchers package");
>              }
>           }
> -         handler = (Handler) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                    new PrivilegedExceptionAction() {
> -                        public Object run() throws
> InstantiationException, IllegalAccessException {
> -                            return handlerClass.newInstance();
> -                        }
> -                    }
> -            );
> +         handler = (Handler) org.apache.axis2.java.security.AccessController
> +               .doPrivileged(new PrivilegedExceptionAction() {
> +                  public Object run() throws InstantiationException,
> +                        IllegalAccessException {
> +                     return handlerClass.newInstance();
> +                  }
> +               });
>           handler.init(desc);
>           desc.setHandler(handler);
>        } catch (ClassNotFoundException e) {
> @@ -178,237 +183,239 @@
>        }
>          return true;
>      }
> -  
> +
>     public static URL[] getURLsForAllJars(URL url, File tmpDir) {
> -        FileInputStream fin = null;
> -        InputStream in = null;
> -        ZipInputStream zin = null;
> -        try {
> -            ArrayList array = new ArrayList();
> -            in = url.openStream();
> -            String fileName = url.getFile();
> -            int index = fileName.lastIndexOf('/');
> -            if (index != -1) {
> -                fileName = fileName.substring(index + 1);
> -            }
> -            final File f = createTempFile(fileName, in, tmpDir);
> -            
> -            fin = (FileInputStream) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                    new PrivilegedExceptionAction() {
> -                        public Object run() throws FileNotFoundException {
> -                            return new FileInputStream(f);
> -                        }
> -                    }
> -            );
> -            array.add(f.toURL());
> -            zin = new ZipInputStream(fin);
> -
> -            ZipEntry entry;
> -            String entryName;
> -            while ((entry = zin.getNextEntry()) != null) {
> -                entryName = entry.getName();
> -                /**
> -                 * id the entry name start with /lib and end with .jar
> -                 * then those entry name will be added to the arraylist
> -                 */
> -                if ((entryName != null) && entryName.toLowerCase().
> startsWith("lib/")
> -                        && entryName.toLowerCase().endsWith(".jar")) {
> -                    String suffix = entryName.substring(4);
> -                    File f2 = createTempFile(suffix, zin, tmpDir);
> -                    array.add(f2.toURL());
> -                }
> -            }
> -            return (URL[]) array.toArray(new URL[array.size()]);
> -        } catch (Exception e) {
> -            throw new RuntimeException(e);
> -        } finally {
> -            if (fin != null) {
> -                try {
> -                    fin.close();
> -                } catch (IOException e) {
> -                    //
> -                }
> -            }
> -            if (in != null) {
> -                try {
> -                    in.close();
> -                } catch (IOException e) {
> -                    //
> -                }
> -            }
> -            if (zin != null) {
> -                try {
> -                    zin.close();
> -                } catch (IOException e) {
> -                    //
> -                }
> -            }
> -        }
> +      FileInputStream fin = null;
> +      InputStream in = null;
> +      ZipInputStream zin = null;
> +      try {
> +         ArrayList array = new ArrayList();
> +         in = url.openStream();
> +         String fileName = url.getFile();
> +         int index = fileName.lastIndexOf('/');
> +         if (index != -1) {
> +            fileName = fileName.substring(index + 1);
> +         }
> +         final File f = createTempFile(fileName, in, tmpDir);
> +
> +         fin = (FileInputStream) org.apache.axis2.java.security.
> AccessController
> +               .doPrivileged(new PrivilegedExceptionAction() {
> +                  public Object run() throws FileNotFoundException {
> +                     return new FileInputStream(f);
> +                  }
> +               });
> +         array.add(f.toURL());
> +         zin = new ZipInputStream(fin);
> +
> +         ZipEntry entry;
> +         String entryName;
> +         while ((entry = zin.getNextEntry()) != null) {
> +            entryName = entry.getName();
> +            /**
> +             * id the entry name start with /lib and end with .jar then
> +             * those entry name will be added to the arraylist
> +             */
> +            if ((entryName != null)
> +                  && entryName.toLowerCase().startsWith("lib/")
> +                  && entryName.toLowerCase().endsWith(".jar")) {
> +               String suffix = entryName.substring(4);
> +               File f2 = createTempFile(suffix, zin, tmpDir);
> +               array.add(f2.toURL());
> +            }
> +         }
> +         return (URL[]) array.toArray(new URL[array.size()]);
> +      } catch (Exception e) {
> +         throw new RuntimeException(e);
> +      } finally {
> +         if (fin != null) {
> +            try {
> +               fin.close();
> +            } catch (IOException e) {
> +               //
> +            }
> +         }
> +         if (in != null) {
> +            try {
> +               in.close();
> +            } catch (IOException e) {
> +               //
> +            }
> +         }
> +         if (zin != null) {
> +            try {
> +               zin.close();
> +            } catch (IOException e) {
> +               //
> +            }
> +         }
> +      }
>     }
> -  
> -   public static File createTempFile(final String suffix,
> InputStream in, final File tmpDir) throws IOException {
> -        byte data[] = new byte[2048];
> -        int count;
> -        File f;
> -        if (tmpDir == null) {
> -            String directory = (String) org.apache.axis2.java.
> security.AccessController.doPrivileged(
> -                    new PrivilegedAction() {
> -                        public Object run() {
> -                            return System.getProperty("java.io.tmpdir");
> -                        }
> -                    }
> -            );
> -            final File tempFile = new File(directory, "_axis2");
> -            Boolean exists = (Boolean) org.apache.axis2.java.
> security.AccessController.doPrivileged(
> -                    new PrivilegedAction() {
> -                        public Object run() {
> -                            return new Boolean(tempFile.exists());
> -                        }
> -                    }
> -            );
> -            if (!exists.booleanValue()) {
> -                Boolean mkdirs = (Boolean) org.apache.axis2.java.
> security.AccessController.doPrivileged(
> -                        new PrivilegedAction() {
> -                            public Object run() {
> -                                return new Boolean(tempFile.mkdirs());
> -                            }
> -                        }
> -                );
> -                if (!mkdirs.booleanValue()) {
> -                    throw new IOException("Unable to create the directory");
> -                }
> -            }
> -            try {
> -                f = (File) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                        new PrivilegedExceptionAction() {
> -                            public Object run() throws IOException {
> -                                return File.createTempFile("axis2",
> suffix, tempFile);
> -                            }
> -                        }
> -                );
> -            } catch (PrivilegedActionException e) {
> -                throw (IOException) e.getException();
> -            }
> -        } else {
> -            try {
> -                f = (File) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                        new PrivilegedExceptionAction() {
> -                            public Object run() throws IOException {
> -                                return File.createTempFile("axis2",
> suffix, tmpDir);
> -                            }
> -                        }
> -                );
> -            } catch (PrivilegedActionException e) {
> -                throw (IOException) e.getException();
> -            }
> -        }
> -        if (log.isDebugEnabled()) {
> -            log.debug("Created temporary file : " + f.
> getAbsolutePath());//$NON-SEC-4
> -        }
> -        final File f2 = f;
> -        org.apache.axis2.java.security.AccessController.doPrivileged(
> -                new PrivilegedAction() {
> -                    public Object run() {
> -                        f2.deleteOnExit();
> -                        return null;
> -                    }
> -                }
> -        );
> -        FileOutputStream out = null;
> -        try {
> -            out = (FileOutputStream) org.apache.axis2.java.
> security.AccessController.doPrivileged(
> -                    new PrivilegedExceptionAction() {
> -                        public Object run() throws FileNotFoundException {
> -                            return new FileOutputStream(f2);
> -                        }
> -                    }
> -            );
> -        } catch (PrivilegedActionException e) {
> -            throw (FileNotFoundException) e.getException();
> -        }
> -        while ((count = in.read(data, 0, 2048)) != -1) {
> -            out.write(data, 0, count);
> -        }
> -        out.close();
> -        return f;
> -    }
> -  
> +
> +   public static File createTempFile(final String suffix, InputStream in,
> +         final File tmpDir) throws IOException {
> +      byte data[] = new byte[2048];
> +      int count;
> +      File f;
> +      if (tmpDir == null) {
> +         String directory = (String) org.apache.axis2.java.
> security.AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return System.getProperty("java.io.tmpdir");
> +                  }
> +               });
> +         final File tempFile = new File(directory, "_axis2");
> +         Boolean exists = (Boolean) org.apache.axis2.java.security.
> AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return new Boolean(tempFile.exists());
> +                  }
> +               });
> +         if (!exists.booleanValue()) {
> +            Boolean mkdirs = (Boolean) org.apache.axis2.java.
> security.AccessController
> +                  .doPrivileged(new PrivilegedAction() {
> +                     public Object run() {
> +                        return new Boolean(tempFile.mkdirs());
> +                     }
> +                  });
> +            if (!mkdirs.booleanValue()) {
> +               throw new IOException("Unable to create the directory");
> +            }
> +         }
> +         try {
> +            f = (File) org.apache.axis2.java.security.AccessController
> +                  .doPrivileged(new PrivilegedExceptionAction() {
> +                     public Object run() throws IOException {
> +                        return File.createTempFile("axis2", suffix,
> +                              tempFile);
> +                     }
> +                  });
> +         } catch (PrivilegedActionException e) {
> +            throw (IOException) e.getException();
> +         }
> +      } else {
> +         try {
> +            f = (File) org.apache.axis2.java.security.AccessController
> +                  .doPrivileged(new PrivilegedExceptionAction() {
> +                     public Object run() throws IOException {
> +                        return File.createTempFile("axis2", suffix,
> +                              tmpDir);
> +                     }
> +                  });
> +         } catch (PrivilegedActionException e) {
> +            throw (IOException) e.getException();
> +         }
> +      }
> +      if (log.isDebugEnabled()) {
> +         log.debug("Created temporary file : " + f.
> getAbsolutePath());// $NON-SEC-4
> +      }
> +      final File f2 = f;
> +      org.apache.axis2.java.security.AccessController
> +            .doPrivileged(new PrivilegedAction() {
> +               public Object run() {
> +                  f2.deleteOnExit();
> +                  return null;
> +               }
> +            });
> +      FileOutputStream out = null;
> +      try {
> +         out = (FileOutputStream) org.apache.axis2.java.security.
> AccessController
> +               .doPrivileged(new PrivilegedExceptionAction() {
> +                  public Object run() throws FileNotFoundException {
> +                     return new FileOutputStream(f2);
> +                  }
> +               });
> +      } catch (PrivilegedActionException e) {
> +         throw (FileNotFoundException) e.getException();
> +      }
> +      while ((count = in.read(data, 0, 2048)) != -1) {
> +         out.write(data, 0, count);
> +      }
> +      out.close();
> +      return f;
> +   }
> +
>     public static ClassLoader getClassLoader(ClassLoader parent, String path)
>           throws DeploymentException {
>        return getClassLoader(parent, new File(path));
>     }
> -  
> +
>     /**
> -     * Get a ClassLoader which contains a classpath of a) the
> passed directory and b) any jar
> -     * files inside the "lib/" or "Lib/" subdirectory of the passeddirectory.
> -     *
> -     * @param parent parent ClassLoader which will be the parent of
> the result of this method
> -     * @param file   a File which must be a directory for this to be useful
> -     * @return a new ClassLoader pointing to both the passed dir
> and jar files under lib/
> -     * @throws DeploymentException if problems occur
> -     */
> -    public static ClassLoader getClassLoader(final ClassLoader
> parent, File file)
> -            throws DeploymentException {
> -        URLClassLoader classLoader;
> -
> -        if (file == null) return null; // Shouldn't this just
> return the parent?
> -
> -        try {
> -            ArrayList urls = new ArrayList();
> -            urls.add(file.toURL());
> -
> -            // lower case directory name
> -            File libfiles = new File(file, "lib");
> -            if (!addFiles(urls, libfiles)) {
> -                // upper case directory name
> -                libfiles = new File(file, "Lib");
> -                addFiles(urls, libfiles);
> -            }
> +    * Get a ClassLoader which contains a classpath of a) the passeddirectory
> +    * and b) any jar files inside the "lib/" or "Lib/" subdirectory of the
> +    * passed directory.
> +    *
> +    * @param parent
> +    *            parent ClassLoader which will be the parent of theresult of
> +    *            this method
> +    * @param file
> +    *            a File which must be a directory for this to be useful
> +    * @return a new ClassLoader pointing to both the passed dir andjar files
> +    *         under lib/
> +    * @throws DeploymentException
> +    *             if problems occur
> +    */
> +   public static ClassLoader getClassLoader(final ClassLoader
> parent, File file)
> +         throws DeploymentException {
> +      URLClassLoader classLoader;
>  
> -            final URL urllist[] = new URL[urls.size()];
> -            for (int i = 0; i < urls.size(); i++) {
> -                urllist[i] = (URL) urls.get(i);
> -            }
> -            classLoader =
> -                (URLClassLoader) AccessController.doPrivileged(new
> PrivilegedAction() {
> -                    public Object run() {
> -                        return new URLClassLoader(urllist, parent);
> -                    }
> -                });
> -            return classLoader;
> -        } catch (MalformedURLException e) {
> -            throw new DeploymentException(e);
> -        }
> -    }
> +      if (file == null)
> +         return null; // Shouldn't this just return the parent?
>  
> -    private static boolean addFiles(ArrayList urls, final File
> libfiles) throws MalformedURLException {
> -        Boolean exists = (Boolean) org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                new PrivilegedAction() {
> -                    public Object run() {
> -                        return new Boolean(libfiles.exists());
> -                    }
> -                }
> -        );
> -        if (exists.booleanValue()) {
> -            urls.add(libfiles.toURL());
> -            File jarfiles[] = (File[]) org.apache.axis2.java.
> security.AccessController.doPrivileged(
> -                    new PrivilegedAction() {
> -                        public Object run() {
> -                            return libfiles.listFiles();
> -                        }
> -                    }
> -            );
> -            for (int i = 0; i < jarfiles.length; i++) {
> -                File jarfile = jarfiles[i];
> -                if (jarfile.getName().endsWith(".jar")) {
> -                    urls.add(jarfile.toURL());
> -                }
> -            }
> -        }
> -        return exists.booleanValue();
> -    }
> +      try {
> +         ArrayList urls = new ArrayList();
> +         urls.add(file.toURL());
> +
> +         // lower case directory name
> +         File libfiles = new File(file, "lib");
> +         if (!addFiles(urls, libfiles)) {
> +            // upper case directory name
> +            libfiles = new File(file, "Lib");
> +            addFiles(urls, libfiles);
> +         }
> +
> +         final URL urllist[] = new URL[urls.size()];
> +         for (int i = 0; i < urls.size(); i++) {
> +            urllist[i] = (URL) urls.get(i);
> +         }
> +         classLoader = (URLClassLoader) AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return new URLClassLoader(urllist, parent);
> +                  }
> +               });
> +         return classLoader;
> +      } catch (MalformedURLException e) {
> +         throw new DeploymentException(e);
> +      }
> +   }
> +
> +   private static boolean addFiles(ArrayList urls, final File libfiles)
> +         throws MalformedURLException {
> +      Boolean exists = (Boolean) org.apache.axis2.java.security.
> AccessController
> +            .doPrivileged(new PrivilegedAction() {
> +               public Object run() {
> +                  return new Boolean(libfiles.exists());
> +               }
> +            });
> +      if (exists.booleanValue()) {
> +         urls.add(libfiles.toURL());
> +         File jarfiles[] = (File[]) org.apache.axis2.java.security.
> AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return libfiles.listFiles();
> +                  }
> +               });
> +         for (int i = 0; i < jarfiles.length; i++) {
> +            File jarfile = jarfiles[i];
> +            if (jarfile.getName().endsWith(".jar")) {
> +               urls.add(jarfile.toURL());
> +            }
> +         }
> +      }
> +      return exists.booleanValue();
> +   }
>  
> -    private static Class getHandlerClass(String className,
> ClassLoader loader1)
> +   private static Class getHandlerClass(String className,
> ClassLoader loader1)
>           throws AxisFault {
>        Class handlerClass;
>  
> @@ -455,35 +462,39 @@
>                 .getParameter(Constants.SERVICE_OBJECT_SUPPLIER);
>           if (implInfoParam != null) {
>              String className = ((String) implInfoParam.getValue()).trim();
> -            final Class serviceObjectMaker = Loader.
> loadClass(serviceClassLoader,
> -                  className);
> +            final Class serviceObjectMaker = Loader.loadClass(
> +                  serviceClassLoader, className);
>              if (serviceObjectMaker.getModifiers() != Modifier.PUBLIC) {
>                 throw new AxisFault("Service class " + className
>                       + " must have public as access Modifier");
>              }
>  
> -                // Find static getServiceObject() method, call it if there
> -                final Method method = (Method) org.apache.axis2.
> java.security.AccessController.doPrivileged(
> -                        new PrivilegedExceptionAction() {
> -                            public Object run() throws
> NoSuchMethodException {
> -                                return serviceObjectMaker.getMethod(
> -                                        "getServiceObject", new
> Class[]{AxisService.class});
> -                            }
> -                        }
> -                );
> -                Object obj = null;
> +            // Find static getServiceObject() method, call it if there
> +            final Method method = (Method) org.apache.axis2.java.
> security.AccessController
> +                  .doPrivileged(new PrivilegedExceptionAction() {
> +                     public Object run() throws NoSuchMethodException {
> +                        return serviceObjectMaker.getMethod(
> +                              "getServiceObject",
> +                              new Class[] { AxisService.class });
> +                     }
> +                  });
> +            Object obj = null;
>              if (method != null) {
> -                    obj = org.apache.axis2.java.security.
> AccessController.doPrivileged(
> -                            new PrivilegedExceptionAction() {
> -                                public Object run() throws
> InstantiationException, IllegalAccessException, InvocationTargetException {
> -                                    return method.
> invoke(serviceObjectMaker.newInstance(),
> -                                            new Object[]{axisService});
> -                                }
> -                            }
> -                    );
> -                }
> +               obj = org.apache.axis2.java.security.AccessController
> +                     .doPrivileged(new PrivilegedExceptionAction() {
> +                        public Object run()
> +                              throws InstantiationException,
> +                              IllegalAccessException,
> +                              InvocationTargetException {
> +                           return method.invoke(serviceObjectMaker
> +                                 .newInstance(),
> +                                 new Object[] { axisService });
> +                        }
> +                     });
> +            }
>              if (obj == null) {
> -               log.warn("ServiceObjectSupplier implmentation Object
> could not be found");
> +               log
> +                     .warn("ServiceObjectSupplier implmentation
> Object could not be found");
>                 throw new DeploymentException(
>                       "ServiceClass or ServiceObjectSupplier
> implmentation Object could not be found");
>              }
> @@ -563,32 +574,35 @@
>           }
>        }
>     }
> -  
> -   public static AxisOperation getAxisOperationForJmethod(JMethod
> jmethod) throws AxisFault {
> -        AxisOperation operation;
> -        if (jmethod.getReturnType().isVoidType()) {
> -            if (jmethod.getExceptionTypes().length > 0) {
> -                operation = AxisOperationFactory.getAxisOperation(
> -                        WSDLConstants.MEP_CONSTANT_ROBUST_IN_ONLY);
> -            } else {
> -                operation = AxisOperationFactory.getAxisOperation(
> -                        WSDLConstants.MEP_CONSTANT_IN_ONLY);
> -            }
> -        } else {
> -            operation = AxisOperationFactory.getAxisOperation(
> -                    WSDLConstants.MEP_CONSTANT_IN_OUT);
> -        }
> -        String opName = getSimpleName(jmethod);
> -        operation.setName(new QName(opName));
> -        JAnnotation methodAnnon = jmethod.
> getAnnotation(AnnotationConstants.WEB_METHOD);
> -        if (methodAnnon != null) {
> -            String action = methodAnnon.
> getValue(AnnotationConstants.ACTION).asString();
> -            if (action != null && !"".equals(action)) {
> -                operation.setSoapAction(action);
> -            }
> -        }
> -        return operation;
> -    }
> +
> +   public static AxisOperation getAxisOperationForJmethod(JMethod jmethod)
> +         throws AxisFault {
> +      AxisOperation operation;
> +      if (jmethod.getReturnType().isVoidType()) {
> +         if (jmethod.getExceptionTypes().length > 0) {
> +            operation = AxisOperationFactory

> +                  .getAxisOperation(WSDLConstants.
> MEP_CONSTANT_ROBUST_IN_ONLY);
> +         } else {
> +            operation = AxisOperationFactory
> +                  .getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_ONLY);
> +         }
> +      } else {
> +         operation = AxisOperationFactory
> +               .getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_OUT);
> +      }
> +      String opName = getSimpleName(jmethod);
> +      operation.setName(new QName(opName));
> +      JAnnotation methodAnnon = jmethod
> +            .getAnnotation(AnnotationConstants.WEB_METHOD);
> +      if (methodAnnon != null) {
> +         String action = methodAnnon.getValue(AnnotationConstants.ACTION)
> +               .asString();
> +         if (action != null && !"".equals(action)) {
> +            operation.setSoapAction(action);
> +         }
> +      }
> +      return operation;
> +   }
>  
>     public static String getSimpleName(JMethod method) {
>        JAnnotation methodAnnon = method
> @@ -634,25 +648,24 @@
>           PhasesInfo phasesInfo = axisConfig.getPhasesInfo();
>           final ClassLoader moduleClassLoader = module.getModuleClassLoader();
>           ArrayList services = new ArrayList();
> -         final InputStream in = (InputStream) org.apache.axis2.
> java.security.AccessController.doPrivileged(
> -                    new PrivilegedAction() {
> -                        public Object run() {
> -                            return moduleClassLoader.
> getResourceAsStream("aars/aars.list");
> -                        }
> -                    }
> -            );
> +         final InputStream in = (InputStream) org.apache.axis2.
> java.security.AccessController
> +               .doPrivileged(new PrivilegedAction() {
> +                  public Object run() {
> +                     return moduleClassLoader
> +                           .getResourceAsStream("aars/aars.list");
> +                  }
> +               });
>           if (in != null) {
>              BufferedReader input;
>              try {
> -                    input = new BufferedReader((InputStreamReader)
> org.apache.axis2.java.security.AccessController.doPrivileged(
> -                                    new PrivilegedAction() {
> -                                        public Object run() {
> -                                            return new InputStreamReader(in);
> -                                        }
> -                                    }
> -                                )
> -                            );
> -                    String line;
> +               input = new BufferedReader(
> +                     (InputStreamReader) org.apache.axis2.java.
> security.AccessController
> +                           .doPrivileged(new PrivilegedAction() {
> +                              public Object run() {
> +                                 return new InputStreamReader(in);
> +                              }
> +                           }));
> +               String line;
>                 while ((line = input.readLine()) != null) {
>                    line = line.trim();
>                    if (line.length() > 0 && line.charAt(0) != '#') {
> @@ -670,15 +683,15 @@
>                 if (servicename == null || "".equals(servicename)) {
>                    continue;
>                 }
> -                    InputStream fin = (InputStream) org.apache.
> axis2.java.security.AccessController.doPrivileged(
> -                            new PrivilegedAction() {
> -                                public Object run() {
> -                                    return moduleClassLoader
> -                                            .
> getResourceAsStream("aars/" + servicename);
> -                                }
> -                            }
> -                    );
> -                    if (fin == null) {
> +               InputStream fin = (InputStream) org.apache.axis2.
> java.security.AccessController
> +                     .doPrivileged(new PrivilegedAction() {
> +                        public Object run() {
> +                           return moduleClassLoader
> +                                 .getResourceAsStream("aars/"
> +                                       + servicename);
> +                        }
> +                     });
> +               if (fin == null) {
>                    throw new AxisFault("No service archive found : "
>                          + servicename);
>                 }
> @@ -735,56 +748,57 @@
>           throw AxisFault.makeFault(e);
>        }
>     }
> -  
> +
>     /**
> -     * Normalize a uri containing ../ and ./ paths.
> -     *
> -     * @param uri The uri path to normalize
> -     * @return The normalized uri
> -     */
> -    public static String normalize(String uri) {
> -        if ("".equals(uri)) {
> -            return uri;
> -        }
> -        int leadingSlashes = 0;
> -        for (leadingSlashes = 0; leadingSlashes < uri.length()
> -                && uri.charAt(leadingSlashes) == '/'; ++leadingSlashes) {
> -            //FIXME: this block is empty!!
> -        }
> -        boolean isDir = (uri.charAt(uri.length() - 1) == '/');
> -        StringTokenizer st = new StringTokenizer(uri, "/");
> -        LinkedList clean = new LinkedList();
> -        while (st.hasMoreTokens()) {
> -            String token = st.nextToken();
> -            if ("..".equals(token)) {
> -                if (!clean.isEmpty() && !"..".equals(clean.getLast())) {
> -                    clean.removeLast();
> -                    if (!st.hasMoreTokens()) {
> -                        isDir = true;
> -                    }
> -                } else {
> -                    clean.add("..");
> -                }
> -            } else if (!".".equals(token) && !"".equals(token)) {
> -                clean.add(token);
> -            }
> -        }
> -        StringBuffer sb = new StringBuffer();
> -        while (leadingSlashes-- > 0) {
> -            sb.append('/');
> -        }
> -        for (Iterator it = clean.iterator(); it.hasNext();) {
> -            sb.append(it.next());
> -            if (it.hasNext()) {
> -                sb.append('/');
> -            }
> -        }
> -        if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') {
> -            sb.append('/');
> -        }
> -        return sb.toString();
> -    }
> -    
> +    * Normalize a uri containing ../ and ./ paths.
> +    *
> +    * @param uri
> +    *            The uri path to normalize
> +    * @return The normalized uri
> +    */
> +   public static String normalize(String uri) {
> +      if ("".equals(uri)) {
> +         return uri;
> +      }
> +      int leadingSlashes = 0;
> +      for (leadingSlashes = 0; leadingSlashes < uri.length()
> +            && uri.charAt(leadingSlashes) == '/'; ++leadingSlashes) {
> +         // FIXME: this block is empty!!
> +      }
> +      boolean isDir = (uri.charAt(uri.length() - 1) == '/');
> +      StringTokenizer st = new StringTokenizer(uri, "/");
> +      LinkedList clean = new LinkedList();
> +      while (st.hasMoreTokens()) {
> +         String token = st.nextToken();
> +         if ("..".equals(token)) {
> +            if (!clean.isEmpty() && !"..".equals(clean.getLast())) {
> +               clean.removeLast();
> +               if (!st.hasMoreTokens()) {
> +                  isDir = true;
> +               }
> +            } else {
> +               clean.add("..");
> +            }
> +         } else if (!".".equals(token) && !"".equals(token)) {
> +            clean.add(token);
> +         }
> +      }
> +      StringBuffer sb = new StringBuffer();
> +      while (leadingSlashes-- > 0) {
> +         sb.append('/');
> +      }
> +      for (Iterator it = clean.iterator(); it.hasNext();) {
> +         sb.append(it.next());
> +         if (it.hasNext()) {
> +            sb.append('/');
> +         }
> +      }
> +      if (isDir && sb.length() > 0 && sb.charAt(sb.length() - 1) != '/') {
> +         sb.append('/');
> +      }
> +      return sb.toString();
> +   }
> +
>     public static String getPath(String parent, String childPath) {
>        Stack parentStack = new Stack();
>        Stack childStack = new Stack();
> @@ -825,62 +839,62 @@
>        }
>        return filepath;
>     }
> -  
> +
>     /**
> -     * Searches for jar files inside /lib dirctory. If there are any, the
> -     * names of those jar files will be added to the array list
> -     */
> -    public static List findLibJars(URL url) {
> -        ArrayList embedded_jars = new ArrayList();
> -        try {
> -            ZipInputStream zin = new ZipInputStream(url.openStream());
> -            ZipEntry entry;
> -            String entryName = "";
> -            while ((entry = zin.getNextEntry()) != null) {
> -                entryName = entry.getName();
> -                /**
> -                 * if the entry name start with /lib and ends with .jar
> -                 * add it to the the arraylist
> -                 */
> -                if (entryName != null && (entryName.startsWith("lib/") ||
> -                        entryName.startsWith("Lib/")) &&
> -                        entryName.endsWith(".jar")) {
> -                    embedded_jars.add(entryName);
> -                }
> -            }
> -            zin.close();
> -        } catch (Exception e) {
> -            throw new RuntimeException(e);
> -        }
> -        return embedded_jars;
> -    }
> -    
> -    /**
> -     * To add the exclude method when generating schemas , here the
> exclude methods
> -     * will be session releated axis2 methods
> -     */
> -    public static void addExcludeMethods(ArrayList excludeList) {
> -        excludeList.add("init");
> -        excludeList.add("setOperationContext");
> -        excludeList.add("startUp");
> -        excludeList.add("destroy");
> -        excludeList.add("shutDown");
> -    }
> +    * Searches for jar files inside /lib dirctory. If there are
> any, the names
> +    * of those jar files will be added to the array list
> +    */
> +   public static List findLibJars(URL url) {
> +      ArrayList embedded_jars = new ArrayList();
> +      try {
> +         ZipInputStream zin = new ZipInputStream(url.openStream());
> +         ZipEntry entry;
> +         String entryName = "";
> +         while ((entry = zin.getNextEntry()) != null) {
> +            entryName = entry.getName();
> +            /**
> +             * if the entry name start with /lib and ends with .jar add it
> +             * to the the arraylist
> +             */
> +            if (entryName != null
> +                  && (entryName.startsWith("lib/") || entryName
> +                        .startsWith("Lib/"))
> +                  && entryName.endsWith(".jar")) {
> +               embedded_jars.add(entryName);
> +            }
> +         }
> +         zin.close();
> +      } catch (Exception e) {
> +         throw new RuntimeException(e);
> +      }
> +      return embedded_jars;
> +   }
>  
> -    public static DeploymentClassLoader createClassLoader(File
> serviceFile) throws MalformedURLException {
> -        ClassLoader contextClassLoader = (ClassLoader) org.apache.
> axis2.java.security.AccessController.doPrivileged(
> -                new PrivilegedAction() {
> -                    public Object run() {
> -                        return Thread.currentThread().
> getContextClassLoader();
> -                    }
> -                }
> -        );
> -        return createDeploymentClassLoader(new URL[]{serviceFile.toURL()},
> -                contextClassLoader,
> -                new ArrayList());
> -    }
> +   /**
> +    * To add the exclude method when generating schemas , here the exclude
> +    * methods will be session releated axis2 methods
> +    */
> +   public static void addExcludeMethods(ArrayList excludeList) {
> +      excludeList.add("init");
> +      excludeList.add("setOperationContext");
> +      excludeList.add("startUp");
> +      excludeList.add("destroy");
> +      excludeList.add("shutDown");
> +   }
>  
> -    public static ClassLoader createClassLoader(ArrayList urls,
> +   public static DeploymentClassLoader createClassLoader(File serviceFile)
> +         throws MalformedURLException {
> +      ClassLoader contextClassLoader = (ClassLoader) org.apache.
> axis2.java.security.AccessController
> +            .doPrivileged(new PrivilegedAction() {
> +               public Object run() {
> +                  return Thread.currentThread().getContextClassLoader();
> +               }
> +            });
> +      return createDeploymentClassLoader(new URL[] { serviceFile.toURL() },
> +            contextClassLoader, new ArrayList());
> +   }
> +
> +   public static ClassLoader createClassLoader(ArrayList urls,
>           ClassLoader serviceClassLoader, boolean extractJars, File tmpDir) {
>        URL url = (URL) urls.get(0);
>        if (extractJars) {
> @@ -889,8 +903,9 @@
>              urls.remove(0);
>              urls.addAll(0, Arrays.asList(urls1));
>              URL[] urls2 = (URL[]) urls.toArray(new URL[urls.size()]);
> -                return createDeploymentClassLoader(urls2,
> serviceClassLoader, null);
> -            } catch (Exception e) {
> +            return createDeploymentClassLoader(urls2, serviceClassLoader,
> +                  null);
> +         } catch (Exception e) {
>              log
>                    .warn("Exception extracting jars into temporary
> directory : "
>                          + e.getMessage()
> @@ -900,39 +915,48 @@
>        }
>        List embedded_jars = Utils.findLibJars(url);
>        URL[] urls2 = (URL[]) urls.toArray(new URL[urls.size()]);
> -        return createDeploymentClassLoader(urls2,
> serviceClassLoader, embedded_jars);
> -    }
> +      return createDeploymentClassLoader(urls2, serviceClassLoader,
> +            embedded_jars);
> +   }
>  
>     public static File toFile(URL url) throws UnsupportedEncodingException {
> -       String path = URLDecoder.decode(url.getPath(), defaultEncoding);
> -       File file =
> -               new File(path.replace('/', File.separatorChar).
> replace('|', ':'));
> -       return file;
> -   }
> -    
> -    public static ClassLoader createClassLoader(URL[] urls,
> ClassLoader serviceClassLoader,
> -                                                boolean
> extractJars, File tmpDir) {
> -        if (extractJars) {
> -            try {
> -                URL[] urls1 = Utils.getURLsForAllJars(urls[0], tmpDir);
> -                return createDeploymentClassLoader(urls1,
> serviceClassLoader, null);
> -            } catch (Exception e){
> -                log.warn("Exception extracting jars into temporary
> directory : " + e.getMessage() + " : switching to alternate class
> loading mechanism");
> -                log.debug(e.getMessage(), e);
> -            }
> -        }
> -        List embedded_jars = Utils.findLibJars(urls[0]);
> -        return createDeploymentClassLoader(urls,
> serviceClassLoader, embedded_jars);
> -    }
> -    
> -    
> -    private static DeploymentClassLoader
> createDeploymentClassLoader(final URL[] urls, final ClassLoader
> serviceClassLoader, final List embeddedJars) {
> -        return (DeploymentClassLoader) AccessController.
> doPrivileged(new PrivilegedAction() {
> -            public Object run() {
> -                return new DeploymentClassLoader(urls,
> embeddedJars, serviceClassLoader);
> -            }
> -        });
> -    }
> +      String path = URLDecoder.decode(url.getPath(), defaultEncoding);
> +      File file = new File(path.replace('/', File.separatorChar).replace('|',
> +            ':'));
> +      return file;
> +   }
> +
> +   public static ClassLoader createClassLoader(URL[] urls,
> +         ClassLoader serviceClassLoader, boolean extractJars, File tmpDir) {
> +      if (extractJars) {
> +         try {
> +            URL[] urls1 = Utils.getURLsForAllJars(urls[0], tmpDir);
> +            return createDeploymentClassLoader(urls1, serviceClassLoader,
> +                  null);
> +         } catch (Exception e) {
> +            log
> +                  .warn("Exception extracting jars into temporary
> directory : "
> +                        + e.getMessage()
> +                        + " : switching to alternate class loading
> mechanism");
> +            log.debug(e.getMessage(), e);
> +         }
> +      }
> +      List embedded_jars = Utils.findLibJars(urls[0]);
> +      return createDeploymentClassLoader(urls, serviceClassLoader,
> +            embedded_jars);
> +   }
> +
> +   private static DeploymentClassLoader createDeploymentClassLoader(
> +         final URL[] urls, final ClassLoader serviceClassLoader,
> +         final List embeddedJars) {
> +      return (DeploymentClassLoader) AccessController
> +            .doPrivileged(new PrivilegedAction() {
> +               public Object run() {
> +                  return new DeploymentClassLoader(urls, embeddedJars,
> +                        serviceClassLoader);
> +               }
> +            });
> +   }
>  
>     /**
>      * This method is to process bean exclude parameter and the XML format of
> @@ -1026,18 +1050,90 @@
>                 .getAxisConfiguration();
>           if (axisConfiguration != null) {
>              ArrayList transports = new ArrayList();
> -            for (Iterator iterator = axisConfiguration.
> getTransportsIn().values().iterator(); iterator.hasNext(); ){
> -               TransportInDescription transportInDescription =
> (TransportInDescription) iterator.next();
> +            for (Iterator iterator = axisConfiguration.getTransportsIn()
> +                  .values().iterator(); iterator.hasNext();) {
> +               TransportInDescription transportInDescription =
> (TransportInDescription) iterator
> +                     .next();
>                 transports.add(transportInDescription.getName());
>              }
> -            transportInValues = transports.iterator();
> +            transportInValues = transports.iterator();
>           }
>        } else {
>           transportInValues = axisService.getExposedTransports().iterator();
>        }
>  
>        if (transportInValues != null) {
> -         for (; transportInValues.hasNext();) {        
> +         for (; transportInValues.hasNext();) {
> +            String transportName = (String) transportInValues.next();
> +            String protocol = transportName.substring(0, 1).toUpperCase()
> +                  + transportName.substring(1, transportName.length())
> +                        .toLowerCase();
> +            /*
> +             * populates soap11 endpoint
> +             */
> +            String soap11EndpointName = serviceName + protocol
> +                  + "Soap11Endpoint";
> +
> +            AxisEndpoint httpSoap11Endpoint = new AxisEndpoint();
> +            httpSoap11Endpoint.setName(soap11EndpointName);
> +            httpSoap11Endpoint.setParent(axisService);
> +            httpSoap11Endpoint.setTransportInDescription(transportName);
> +            populateSoap11Endpoint(axisService, httpSoap11Endpoint);
> +            axisService.addEndpoint(httpSoap11Endpoint.getName(),
> +                  httpSoap11Endpoint);
> +            // setting soap11 endpoint as the default endpoint
> +            axisService.setEndpointName(soap11EndpointName);
> +
> +            /*
> +             * generating Soap12 endpoint
> +             */
> +            String soap12EndpointName = serviceName + protocol
> +                  + "Soap12Endpoint";
> +            AxisEndpoint httpSoap12Endpoint = new AxisEndpoint();
> +            httpSoap12Endpoint.setName(soap12EndpointName);
> +            httpSoap12Endpoint.setParent(axisService);
> +            httpSoap12Endpoint.setTransportInDescription(transportName);
> +            populateSoap12Endpoint(axisService, httpSoap12Endpoint);
> +            axisService.addEndpoint(httpSoap12Endpoint.getName(),
> +                  httpSoap12Endpoint);
> +
> +            /*
> +             * generating Http endpoint
> +             */
> +            if ("http".equals(transportName)) {
> +               String httpEndpointName = serviceName + protocol
> +                     + "Endpoint";
> +               AxisEndpoint httpEndpoint = new AxisEndpoint();
> +               httpEndpoint.setName(httpEndpointName);
> +               httpEndpoint.setParent(axisService);
> +               httpEndpoint.setTransportInDescription(transportName);
> +               populateHttpEndpoint(axisService, httpEndpoint);
> +               axisService.addEndpoint(httpEndpoint.getName(),
> +                     httpEndpoint);
> +            }
> +         }
> +      }
> +   }
> +
> +   public static void addEndpointsToService(AxisService axisService,
> +         AxisConfiguration axisConfiguration) throws AxisFault {
> +
> +      String serviceName = axisService.getName();
> +      Iterator transportInValues = null;
> +
> +      if (axisConfiguration != null) {
> +         ArrayList transports = new ArrayList();
> +         for (Iterator iterator = axisConfiguration.getTransportsIn()
> +               .values().iterator(); iterator.hasNext();) {
> +            TransportInDescription transportInDescription =
> (TransportInDescription) iterator
> +                  .next();
> +            transports.add(transportInDescription.getName());
> +         }
> +         transportInValues = transports.iterator();
> +      }
> +
> +      if (transportInValues != null) {
> +         for (; transportInValues.hasNext();) {
>              String transportName = (String) transportInValues.next();
>              String protocol = transportName.substring(0, 1).toUpperCase()
>                    + transportName.substring(1, transportName.length())
> @@ -1102,6 +1198,7 @@
>        httpSoap11Endpoint.setName(soap11EndpointName);
>        httpSoap11Endpoint.setParent(axisService);
>        httpSoap11Endpoint.setEndpointURL(url.toString());
> +      httpSoap11Endpoint.setTransportInDescription(url.getProtocol());
>  
>        populateSoap11Endpoint(axisService, httpSoap11Endpoint);
>        axisService.addEndpoint(httpSoap11Endpoint.getName(),
> @@ -1123,6 +1220,7 @@
>        httpSoap12Endpoint.setName(soap12EndpointName);
>        httpSoap12Endpoint.setParent(axisService);
>        httpSoap12Endpoint.setEndpointURL(url.toString());
> +      httpSoap12Endpoint.setTransportInDescription(url.getProtocol());
>  
>        populateSoap12Endpoint(axisService, httpSoap12Endpoint);
>        axisService.addEndpoint(httpSoap12Endpoint.getName(),
> @@ -1140,10 +1238,74 @@
>        httpEndpoint.setName(httpEndpointName);
>        httpEndpoint.setParent(axisService);
>        httpEndpoint.setEndpointURL(url.toString());
> +      httpEndpoint.setTransportInDescription(url.getProtocol());
>        populateHttpEndpoint(axisService, httpEndpoint);
>        axisService.addEndpoint(httpEndpoint.getName(), httpEndpoint);
>     }
>  
> +   public static void processPolicyAttachments(Iterator attachmentElements,
> +         AxisService service) throws XMLStreamException,
> +         FactoryConfigurationError {
> +      OMElement attachmentElement;
> +      HashMap attachmentsMap = new HashMap();
> +
> +      for (; attachmentElements.hasNext();) {
> +         attachmentElement = (OMElement) attachmentElements.next();
> +         OMElement appliesToElem = attachmentElement
> +               .getFirstChildWithName(new QName(
> +                     DeploymentConstants.POLICY_NS_URI,
> +                     DeploymentConstants.TAG_APPLIES_TO));
> +         ArrayList policyComponents = new ArrayList();
> +
> +         // process <wsp:Policy> elements ..
> +         for (Iterator policyElements = attachmentElement
> +               .getChildrenWithName(new QName(
> +                     DeploymentConstants.POLICY_NS_URI,
> +                     DeploymentConstants.TAG_POLICY)); policyElements
> +               .hasNext();) {
> +            PolicyComponent policy = PolicyUtil
> +                  .getPolicyFromOMElement((OMElement) policyElements
> +                        .next());
> +            policyComponents.add(policy);
> +         }
> +
> +         // process <wsp:PolicyReference> elements ..
> +         for (Iterator policyRefElements = attachmentElement
> +               .getChildrenWithName(new QName(
> +                     DeploymentConstants.POLICY_NS_URI,
> +                     DeploymentConstants.TAG_POLICY_REF)); policyRefElements
> +               .hasNext();) {
> +            PolicyComponent policyRef = PolicyUtil
> +                  .getPolicyReferenceFromOMElement((OMElement)
> policyRefElements
> +                        .next());
> +            policyComponents.add(policyRef);
> +         }
> +
> +         for (Iterator policySubjects = appliesToElem
> +               .getChildrenWithName(new QName("policy-subject"));
> policySubjects
> +               .hasNext();) {
> +            OMElement policySubject = (OMElement) policySubjects.next();
> +            String identifier = policySubject.getAttributeValue(new QName(
> +                  "identifier"));
> +
> +            ArrayList values = (ArrayList) attachmentsMap.get(identifier);
> +            if (values == null) {
> +               values = new ArrayList();
> +               attachmentsMap.put(identifier, values);
> +            }
> +            values.addAll(policyComponents);
> +         }
> +      }
> +
> +      for (Iterator keys = attachmentsMap.keySet().iterator();
> keys.hasNext();) {
> +         String identifier = (String) keys.next();
> +         if (identifier.startsWith("binding:soap")) {
> +            processSoapAttachments(identifier, (List) attachmentsMap
> +                  .get(identifier), service);
> +         }
> +      }
> +   }
> +
>     private static void populateSoap11Endpoint(AxisService axisService,
>           AxisEndpoint axisEndpoint) {
>        String endpointName = axisEndpoint.getName();
> @@ -1307,5 +1469,66 @@
>  
>        axisBindingOperation.setAxisOperation(axisOperation);
>        axisBindingOperation.setParent(axisBinding);
> +   }
> +
> +   private static void processSoapAttachments(String identifier,
> +         List policyComponents, AxisService service) {

> +      Map map = service.getEndpoints();
> +      String soapVersion = (identifier.indexOf("soap12") > -1) ?
> SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI
> +            : SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
> +
> +      for (Iterator iterator = map.values().iterator(); iterator.
> hasNext();) {
> +         AxisEndpoint axisEndpoint = (AxisEndpoint) iterator.next();
> +         AxisBinding axisBinding = axisEndpoint.getBinding();
> +         String wsoap = (String) axisBinding
> +               .getProperty(WSDL2Constants.ATTR_WSOAP_VERSION);
> +         if (soapVersion.equals(wsoap)) {
> +            String[] identifiers = identifier.split("/");
> +            int key = identifiers.length;
> +            if (key == 1) {
> +               axisBinding.getPolicySubject().attachPolicyComponents(
> +                     policyComponents);
> +            } else if (key == 2 || key == 3) {
> +               String opName = identifiers[1];
> +               opName = opName.substring(opName.indexOf(":") + 1, opName
> +                     .length());
> +               AxisBindingOperation bindingOperation = null;
> +               boolean found = false;
> +               for (Iterator i = axisBinding.getChildren(); i.hasNext();) {
> +                  bindingOperation = (AxisBindingOperation) i.next();
> +                  if (opName.equals(bindingOperation.getName()
> +                        .getLocalPart())) {
> +                     found = true;
> +                     break;
> +                  }
> +               }
> +               if (!found) {
> +                  throw new IllegalArgumentException(
> +                        "Invalid binding operation " + opName);
> +               }
> +
> +               if (key == 2) {
> +                  bindingOperation.getPolicySubject()
> +                        .attachPolicyComponents(policyComponents);
> +               } else {
> +                  if ("in".equals(identifiers[2])) {
> +                     AxisBindingMessage bindingInMessage =
> (AxisBindingMessage) bindingOperation
> +                           .getChild(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
> +                     bindingInMessage.getPolicySubject()
> +                           .attachPolicyComponents(policyComponents);
> +
> +                  } else if ("out".equals(identifiers[2])) {
> +                     AxisBindingMessage bindingOutMessage =
> (AxisBindingMessage) bindingOperation
> +                           .getChild(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
> +                     bindingOutMessage.getPolicySubject()
> +                           .attachPolicyComponents(policyComponents);
> +                  } else {
> +                     // FIXME faults
> +                  }
> +               }
> +            }
> +            break;
> +         }
> +      }
>     }
>  }
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisBindingOperation.
> java Sat Mar 29 02:25:45 2008
> @@ -103,7 +103,7 @@
>     }
>  
>     public Object getKey() {
> -      return null;
> +      return name;
>     }
>  
>     public void engageModule(AxisModule axisModule) throws AxisFault {
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.
> java Sat Mar 29 02:25:45 2008
> @@ -230,7 +230,7 @@
>      // NOTE - These are NOT typesafe!
>      public void addChild(AxisDescription child) {
>          if (child.getKey() == null) {
> -        // FIXME: Several classes that extend AxisDescription pass
> null in their getKey method.    
> +          
>  //            throw new IllegalArgumentException("Please specify a
> key in the child");
>          } else {
>              children.put(child.getKey(), child);
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.
> java Sat Mar 29 02:25:45 2008
> @@ -181,8 +181,11 @@
>                       .getTransportIn(transportInDescName);
>                 TransportListener listener = in.getReceiver();
>                 String ip = HttpUtils.getIpAddress(axisConfiguration);
> +               // we should pass [serviceName].[endpointName] instead of
> +               // [endpointName]
> +               String sDOTe = serviceName + "." + name;
>                 EndpointReference[] eprsForService = listener
> -                     .getEPRsForService(serviceName, ip);
> +                     .getEPRsForService(sDOTe, ip);
>                 // we consider only the first address return by the listener
>                 if (eprsForService != null && eprsForService.length > 0) {
>                    return eprsForService[0].getAddress();
> @@ -190,11 +193,28 @@
>              } catch (SocketException e) {
>                 logger.warn("", e);
>              } catch (AxisFault e) {
> -               logger.warn("", e);
> +               logger.warn(e.getMessage());
>              }
>           }
>        }
> -      
> +
>        return null;
> +   }
> +
> +   public boolean isActive() {
> +      if (transportInDescName != null && parent != null) {
> +         AxisConfiguration axisConfiguration = getAxisConfiguration();
> +         if (axisConfiguration != null) {
> +            AxisService service = (AxisService) parent;
> +            if (service.isEnableAllTransports()) {
> +               return axisConfiguration.getTransportsIn().containsKey(
> +                     transportInDescName);
> +            } else {
> +               return service.getExposedTransports().contains(
> +                     transportInDescName);
> +            }
> +         }
> +      }
> +      return false;
>     }
>  }
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisMessage.
> java Sat Mar 29 02:25:45 2008
> @@ -21,8 +21,11 @@
>  
>  import org.apache.axis2.AxisFault;
>  import org.apache.axis2.description.java2wsdl.Java2WSDLConstants;
> +import org.apache.axis2.engine.AxisConfiguration;
>  import org.apache.axis2.phaseresolver.PhaseResolver;
> +import org.apache.axis2.util.PolicyUtil;
>  import org.apache.axis2.wsdl.SOAPHeaderMessage;
> +import org.apache.neethi.Policy;
>  import org.apache.ws.commons.schema.XmlSchema;
>  import org.apache.ws.commons.schema.XmlSchemaElement;
>  import org.apache.ws.commons.schema.XmlSchemaImport;
> @@ -59,6 +62,10 @@
>  
>      //To chcek whether the message is wrapped or unwrapped
>      private boolean wrapped = true;
> +    
> +    private Policy effectivePolicy = null;
> +    
> +   private boolean policyCalculated = false;
>  
>      public String getMessagePartName() {
>        return messagePartName;
> @@ -231,4 +238,46 @@
>      public void setWrapped(boolean wrapped) {
>          this.wrapped = wrapped;
>      }
> +    
> +   public Policy getEffectivePolicy() {
> +      if (effectivePolicy == null && !policyCalculated) {
> +         effectivePolicy = calculateEffectivePolicy();
> +         policyCalculated = true;
> +      }
> +      return effectivePolicy;
> +   }
> +
> +   public Policy calculateEffectivePolicy() {
> +      PolicySubject policySubject = null;
> +      ArrayList policyList = new ArrayList();
> +
> +      // AxisBindingMessage
> +      policySubject = getPolicySubject();
> +      policyList.addAll(policySubject.getAttachPolicyComponents());
> +      
> +      // AxisOperation
> +      AxisOperation axisOperation = getAxisOperation();
> +      if (axisOperation != null) {
> +         policyList.addAll(axisOperation.getPolicySubject()
> +               .getAttachPolicyComponents());
> +      }
> +
> +      // AxisService
> +      AxisService axisService = (axisOperation == null) ? null
> +            : axisOperation.getAxisService();
> +      if (axisService != null) {
> +         policyList.addAll(axisService.getPolicySubject()
> +               .getAttachPolicyComponents());
> +      }
> +
> +      // AxisConfiguration
> +      AxisConfiguration axisConfiguration = (axisService == null) ? null
> +            : axisService.getAxisConfiguration();
> +      if (axisConfiguration != null) {
> +         policyList.addAll(axisConfiguration.getPolicySubject()
> +               .getAttachPolicyComponents());
> +      }
> +
> +      return PolicyUtil.getMergedPolicy(policyList, axisService);
> +   }
>  }
>
> Modified:
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule.
> java
> URL: http://svn.apache.
> org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule.
> java?rev=642522&r1=642521&r2=642522&view=diff
> ==============================================================================
> ---
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule.
> java (original)
> +++
> webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisModule.
> java Sat Mar 29 02:25:45 2008
> @@ -83,6 +83,7 @@
>      public static final String VERSION_SNAPSHOT = "SNAPSHOT";
>      public static final String MODULE_SERVICE = "moduleService";
>  
> +    private PolicySubject policySubject = new PolicySubject();
>  
>      /**
>       * Constructor ModuleDescription.
> @@ -261,6 +262,10 @@
>              policyInclude = new PolicyInclude();
>          }
>          return policyInclude;
> +    }
> +    
> +    public PolicySubject getPolicySubject() {
> +       return policySubject;
>      }
>  
>      public String getModuleDescription() {
>
> 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=642522&r1=642521&r2=642522&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 Sat Mar 29 02:25:45 2008
> @@ -2239,7 +2239,7 @@
>        String endpointName = axisService.getEndpointName();
>        if ((endpointName == null || endpointName.length() == 0)
>              && axisService.getAxisConfiguration() != null) {
> -         Utils.addEndpointsToService(axisService);
> +         Utils.addEndpointsToService(axisService, axisService.
> getAxisConfiguration());
>        }
>  
>        return axisService;
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-cvs-help@ws.apache.org
>






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU






--=_alternative 004CAF058025741B_=--