You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2006/02/28 13:20:26 UTC
svn commit: r381641 - in
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2:
description/AxisService.java description/AxisService2WOM.java
transport/http/SimpleHTTPServer.java transport/tcp/TCPServer.java
Author: deepal
Date: Tue Feb 28 04:20:20 2006
New Revision: 381641
URL: http://svn.apache.org/viewcvs?rev=381641&view=rev
Log:
- generate multiple ports when there are multiple transport running
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService2WOM.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/tcp/TCPServer.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java?rev=381641&r1=381640&r2=381641&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService.java Tue Feb 28 04:20:20 2006
@@ -17,16 +17,14 @@
package org.apache.axis2.description;
-import com.ibm.wsdl.extensions.soap.SOAPAddressImpl;
-import com.ibm.wsdl.extensions.soap.SOAPBindingImpl;
-import com.ibm.wsdl.extensions.soap.SOAPBodyImpl;
-import com.ibm.wsdl.extensions.soap.SOAPConstants;
-import com.ibm.wsdl.extensions.soap.SOAPOperationImpl;
+import com.ibm.wsdl.PortImpl;
+import com.ibm.wsdl.extensions.soap.*;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.MessageReceiver;
import org.apache.axis2.modules.Module;
+import org.apache.axis2.transport.TransportListener;
import org.apache.axis2.util.PolicyUtil;
import org.apache.axis2.wsdl.builder.SchemaGenerator;
import org.apache.axis2.wsdl.writer.WOMWriter;
@@ -38,22 +36,12 @@
import org.apache.wsdl.WSDLConstants;
import org.apache.wsdl.WSDLDescription;
-import javax.wsdl.Binding;
-import javax.wsdl.BindingInput;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.BindingOutput;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
+import javax.wsdl.*;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.factory.WSDLFactory;
import javax.xml.namespace.QName;
import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
+import java.util.*;
/**
* Class AxisService
@@ -335,15 +323,53 @@
PolicyUtil.writePolicy(axisOperation.getPolicyInclude(), out);
}
+ private AxisConfiguration getAxisConfiguration() {
+ if (getParent() != null) return (AxisConfiguration) getParent().getParent();
+ return null;
+ }
+
public void printWSDL(OutputStream out, String serviceURL) throws AxisFault {
+ ArrayList eprList = new ArrayList();
+ AxisConfiguration axisConfig = getAxisConfiguration();
+ if (enableAllTransport) {
+ Iterator transports = axisConfig.getTransportsIn().values().iterator();
+ while (transports.hasNext()) {
+ TransportInDescription transportIn = (TransportInDescription) transports.next();
+ TransportListener listener = transportIn.getReceiver();
+ if (listener != null) {
+ try {
+ eprList.add(listener.getEPRForService(getName()).getAddress());
+ } catch (AxisFault axisFault) {
+ log.info(axisFault.getMessage());
+ }
+ }
+ }
+ } else {
+ String trs [] = getExposeTransports();
+ for (int i = 0; i < trs.length; i++) {
+ String trsName = trs[i];
+ TransportInDescription transportIn = axisConfig.getTransportIn(new QName(trsName));
+ if (transportIn != null) {
+ TransportListener listener = transportIn.getReceiver();
+ if (listener != null) {
+ try {
+ eprList.add(listener.getEPRForService(getName()).getAddress());
+ } catch (AxisFault axisFault) {
+ log.info(axisFault.getMessage());
+ }
+ }
+ }
+ }
+ }
+ String eprArray [] = (String[]) eprList.toArray(new String[eprList.size()]);
if (getWSDLDefinition() != null) {
- printUsingWSDLDefinition(out, serviceURL);
+ printUsingWSDLDefinition(out, eprArray);
} else {
- printUsingWOM(out, serviceURL);
+ printUsingWOM(out, eprArray);
}
}
- private void printUsingWSDLDefinition(OutputStream out, String serviceURL) throws AxisFault {
+ private void printUsingWSDLDefinition(OutputStream out, String [] serviceURL) throws AxisFault {
try {
Definition wsdlDefinition = getWSDLDefinition();
Iterator itr_bindings = wsdlDefinition.getBindings().values().iterator();
@@ -387,17 +413,17 @@
for (Iterator iterator = services.iterator(); iterator.hasNext();) {
Service service = (Service) iterator.next();
- Collection ports = service.getPorts().values();
-
- for (Iterator iterator1 = ports.iterator(); iterator1.hasNext();) {
- Port port = (Port) iterator1.next();
+ service.getPorts().values().clear();
+ for (int i = 0; i < serviceURL.length; i++) {
+ String url = serviceURL[i];
+ Port port = new PortImpl();
SOAPAddress soapAddress = new SOAPAddressImpl();
soapAddress.setElementType(SOAPConstants.Q_ELEM_SOAP_ADDRESS);
- soapAddress.setLocationURI(serviceURL);
- port.getExtensibilityElements().clear();
+ soapAddress.setLocationURI(url);
port.addExtensibilityElement(soapAddress);
+ service.addPort(port);
}
}
@@ -408,7 +434,7 @@
}
}
- private void printUsingWOM(OutputStream out, String serviceURL) throws AxisFault {
+ private void printUsingWOM(OutputStream out, String [] serviceURL) throws AxisFault {
AxisService2WOM axisService2WOM = new AxisService2WOM(getSchema(),
this,
targetNamespace,
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService2WOM.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService2WOM.java?rev=381641&r1=381640&r2=381641&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService2WOM.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/AxisService2WOM.java Tue Feb 28 04:20:20 2006
@@ -1,31 +1,13 @@
package org.apache.axis2.description;
+import org.apache.axis2.Constants;
import org.apache.axis2.wsdl.builder.SchemaGenerator;
import org.apache.axis2.wsdl.builder.WSDLComponentFactory;
-import org.apache.axis2.Constants;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.policy.PolicyConstants;
import org.apache.ws.policy.PolicyReference;
-import org.apache.wsdl.Component;
-import org.apache.wsdl.MessageReference;
-import org.apache.wsdl.WSDLBinding;
-import org.apache.wsdl.WSDLBindingMessageReference;
-import org.apache.wsdl.WSDLBindingOperation;
-import org.apache.wsdl.WSDLConstants;
-import org.apache.wsdl.WSDLDescription;
-import org.apache.wsdl.WSDLEndpoint;
-import org.apache.wsdl.WSDLExtensibilityAttribute;
-import org.apache.wsdl.WSDLInterface;
-import org.apache.wsdl.WSDLOperation;
-import org.apache.wsdl.WSDLService;
-import org.apache.wsdl.WSDLTypes;
-import org.apache.wsdl.extensions.ExtensionConstants;
-import org.apache.wsdl.extensions.ExtensionFactory;
-import org.apache.wsdl.extensions.PolicyExtensibilityElement;
-import org.apache.wsdl.extensions.SOAPBinding;
-import org.apache.wsdl.extensions.SOAPBody;
-import org.apache.wsdl.extensions.SOAPOperation;
-import org.apache.wsdl.extensions.Schema;
+import org.apache.wsdl.*;
+import org.apache.wsdl.extensions.*;
import org.apache.wsdl.extensions.impl.ExtensionFactoryImpl;
import org.apache.wsdl.extensions.impl.SOAPAddressImpl;
import org.apache.wsdl.impl.WSDLDescriptionImpl;
@@ -61,412 +43,415 @@
public class AxisService2WOM {
- private XmlSchema schema;
+ private XmlSchema schema;
- private WSDLDescription womDescription;
+ private WSDLDescription womDescription;
- private AxisService axisService;
+ private AxisService axisService;
- private String url;
+ private String [] url;
- private String targetNamespece;
-
- private String targetNamespecheprefix;
-
- public AxisService2WOM(XmlSchema schema, AxisService service,
- String targetNamespece, String targetNamespecheprefix,
- String serviceURL) {
- this.schema = schema;
- this.axisService = service;
- url = serviceURL;
-
- if (targetNamespece != null && !targetNamespece.trim().equals("")) {
- this.targetNamespece = targetNamespece;
- } else {
- this.targetNamespece = SchemaGenerator.TARGET_NAMESPACE;
- }
- if (targetNamespecheprefix != null
- && !targetNamespecheprefix.trim().equals("")) {
- this.targetNamespecheprefix = targetNamespecheprefix;
- } else {
- this.targetNamespecheprefix = SchemaGenerator.TARGET_NAMESPACE_PREFIX;
- }
-
- }
-
- public WSDLDescription generateWOM() throws Exception {
- DocumentBuilderFactory domFactory = DocumentBuilderFactory
- .newInstance();
- DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
- StringWriter writer = new StringWriter();
- if (schema == null) {
- throw new Exception("no scheam found for the service");
- }
- schema.write(writer);
- writer.flush();
- Document doc = domBuilder.parse(new ByteArrayInputStream(writer
- .toString().getBytes()));
- Element documentElement = doc.getDocumentElement();
- WSDLComponentFactory wsdlComponentFactory = new WSDLDescriptionImpl();
- womDescription = wsdlComponentFactory.createDescription();
- HashMap namespaceMap = new HashMap();
- namespaceMap.put("soap", Constants.URI_WSDL11_SOAP);
- namespaceMap.put(targetNamespecheprefix, targetNamespece);
- namespaceMap.put("ns1", "http://org.apache.axis2/xsd");
- namespaceMap.put("xs", Constants.URI_2001_SCHEMA_XSD);
- womDescription.setNamespaces(namespaceMap);
- womDescription.setTargetNameSpace(targetNamespece);
-
- // generating port type
- WSDLInterface portType = generatePortType(womDescription,
- wsdlComponentFactory, documentElement);
- womDescription.addInterface(portType);
-
- QName bindingName = new QName(targetNamespece, axisService.getName()
- + "Binding", targetNamespecheprefix);
- // generating binding
- WSDLBinding binding = generateBinding(wsdlComponentFactory, portType,
- bindingName, "document", "literal",
- Constants.URI_SOAP11_HTTP,
- "http://www.org.apache.axis2");
- womDescription.addBinding(binding);
-
- // generating axisService
- WSDLService service = generateService(wsdlComponentFactory, binding,
- axisService.getName(), url);
- womDescription.addService(service);
- return womDescription;
- }
-
- private WSDLInterface generatePortType(WSDLDescription womDescription,
- WSDLComponentFactory wsdlComponentFactory, Element documentElement) {
- WSDLTypes wsdlTypes = wsdlComponentFactory.createTypes();
- ExtensionFactory extensionFactory = wsdlComponentFactory
- .createExtensionFactory();
- Schema schemaExtensibilityElement = (Schema) extensionFactory
- .getExtensionElement(ExtensionConstants.SCHEMA);
- wsdlTypes.addExtensibilityElement(schemaExtensibilityElement);
- schemaExtensibilityElement.setElement(documentElement);
- womDescription.setTypes(wsdlTypes);
-
- WSDLInterface portType = womDescription.createInterface();
- portType.setName(new QName(axisService.getName() + "Port"));
-
- ArrayList policyElements;
- PolicyInclude include;
-
- include = axisService.getPolicyInclude();
-
- // adding policies defined in wsdl:portType
- policyElements = include.getPolicyElements(PolicyInclude.PORT_TYPE_POLICY);
- addPolicyAsExtAttributes(womDescription, policyElements, portType, include);
-
- Iterator operations = axisService.getOperations();
- while (operations.hasNext()) {
- AxisOperation axisOperation = (AxisOperation) operations.next();
- if (axisOperation.isControlOperation()) {
- // we do not need to expose control operation in the WSDL
- continue;
- }
- WSDLOperation wsdlOperation = womDescription.createOperation();
- wsdlOperation.setName(axisOperation.getName());
-
- // adding policies defined in wsdl:portType -> wsdl:operation
- include = axisOperation.getPolicyInclude();
-
- policyElements = include.getPolicyElements(PolicyInclude.OPERATION_POLICY);
- addPolicyAsExtElements(womDescription, policyElements, wsdlOperation, include);
-
- AxisMessage inaxisMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- if (inaxisMessage != null) {
- MessageReference messageRefinput = wsdlComponentFactory
- .createMessageReference();
- messageRefinput
- .setElementQName(inaxisMessage.getElementQName());
- messageRefinput
- .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
-
- // adding policies defined in wsdl:portType -> wsdl:operation ->
- // wsdl:input
- include = inaxisMessage.getPolicyInclude();
-
- policyElements = include.getPolicyElements(PolicyInclude.INPUT_POLICY);
- addPolicyAsExtAttributes(womDescription, policyElements, messageRefinput, include);
-
- wsdlOperation.setInputMessage(messageRefinput);
- }
-
- try {
- AxisMessage outaxisMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
- if (outaxisMessage != null
- && outaxisMessage.getElementQName() != null) {
- MessageReference messageRefout = wsdlComponentFactory
- .createMessageReference();
- messageRefout.setElementQName(outaxisMessage
- .getElementQName());
- messageRefout
- .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);
-
- // adding policies defined in wsdl:portType -> wsdl:operation
- // -> wsdl:output
- include = outaxisMessage.getPolicyInclude();
-
- policyElements = include.getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
- addPolicyAsExtAttributes(womDescription, policyElements, messageRefout, include);
-
- wsdlOperation.setOutputMessage(messageRefout);
- }
- } catch (UnsupportedOperationException e) {
- // operation does not have an out message so , no need to do
- // anything here
- }
- portType.setOperation(wsdlOperation);
-
- }
- return portType;
- }
-
- private WSDLService generateService(
- WSDLComponentFactory wsdlComponentFactory, WSDLBinding binding,
- String ServiceName, String URL) {
- WSDLService service = wsdlComponentFactory.createService();
- service.setName(new QName(ServiceName));
-
- /*
- * Adding policies defined in services.xml
- */
-
- ArrayList policyElementList;
- PolicyInclude include;
-
- // Policies defined in Axis2.xml
- AxisDescription axisConfiguration = null;
-
- AxisDescription serviceGroup = axisService.getParent();
- if (serviceGroup != null) {
- axisConfiguration = serviceGroup.getParent();
- }
-
- if (axisConfiguration != null) {
- include = axisConfiguration.getPolicyInclude();
- policyElementList = include
- .getPolicyElements(PolicyInclude.AXIS_POLICY);
- addPolicyAsExtElements(womDescription, policyElementList, service,
- include);
- }
-
- WSDLEndpoint endpoints = wsdlComponentFactory.createEndpoint();
- endpoints.setBinding(binding);
- endpoints.setName(new QName(ServiceName + "PortType"));
- SOAPAddressImpl address = new SOAPAddressImpl();
- address.setLocationURI(URL);
- endpoints.addExtensibilityElement(address);
- service.setEndpoint(endpoints);
- return service;
- }
-
- private WSDLBinding generateBinding(
- WSDLComponentFactory wsdlComponentFactory, WSDLInterface portType,
- QName bindingName, String style, String use, String trsportURI,
- String namespeceURI) {
-
- WSDLBinding binding = wsdlComponentFactory.createBinding();
-
- ExtensionFactory extensionFactory = wsdlComponentFactory
- .createExtensionFactory();
-
- binding.setBoundInterface(portType);
- binding.setName(bindingName);
-
- PolicyInclude include;
- ArrayList policyElementsList;
-
- include = axisService.getPolicyInclude();
-
- // adding policies defined in services.xml
- policyElementsList = include
- .getPolicyElements(PolicyInclude.AXIS_SERVICE_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList, binding,
- include);
-
- // adding policies defined in wsdl:binding
- policyElementsList = include
- .getPolicyElements(PolicyInclude.BINDING_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList, binding,
- include);
-
- SOAPBinding soapbindingImpl = (SOAPBinding) extensionFactory
- .getExtensionElement(ExtensionConstants.SOAP_11_BINDING);
- soapbindingImpl.setStyle(style);
- soapbindingImpl.setTransportURI(trsportURI);
- binding.addExtensibilityElement(soapbindingImpl);
-
- Iterator op_itr = portType.getOperations().keySet().iterator();
- while (op_itr.hasNext()) {
- String opName = (String) op_itr.next();
- WSDLOperation wsdlOperation = portType.getOperation(opName);
- MessageReference inMessage = wsdlOperation.getInputMessage();
-
- WSDLBindingOperation bindingoperation = wsdlComponentFactory
- .createWSDLBindingOperation();
- bindingoperation.setName(new QName(opName));
- bindingoperation.setOperation(wsdlOperation);
-
- AxisOperation axisOperation = axisService.getOperation(new QName(
- opName));
- include = axisOperation.getPolicyInclude();
-
- // adding policies defined in operation element in services.xml
- policyElementsList = include
- .getPolicyElements(PolicyInclude.AXIS_OPERATION_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- bindingoperation, include);
-
- // adding policies defined in wsdl:binding -> wsdl:operation
- policyElementsList = include
- .getPolicyElements(PolicyInclude.BINDING_OPERATION_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- bindingoperation, include);
-
- binding.addBindingOperation(bindingoperation);
-
- SOAPOperation soapOpimpl = (SOAPOperation) extensionFactory
- .getExtensionElement(ExtensionConstants.SOAP_11_OPERATION);
- soapOpimpl.setStyle(style);
- // to do heve to set a proper SOAPAction
- soapOpimpl.setSoapAction(opName);
- bindingoperation.addExtensibilityElement(soapOpimpl);
-
- if (inMessage != null) {
- WSDLBindingMessageReference bindingInMessage = wsdlComponentFactory
- .createWSDLBindingMessageReference();
- bindingInMessage
- .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
- bindingoperation.setInput(bindingInMessage);
-
- SOAPBody requestSoapbody = (SOAPBody) extensionFactory
- .getExtensionElement(ExtensionConstants.SOAP_11_BODY);
- requestSoapbody.setUse(use);
- // TODO need to fix this
- requestSoapbody.setNamespaceURI(namespeceURI);
- bindingInMessage.addExtensibilityElement(requestSoapbody);
-
- AxisMessage axisInMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- include = axisInMessage.getPolicyInclude();
-
- // adding policies defined in message element in services.xml
- policyElementsList = include
- .getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- inMessage, include);
-
- // adding policies defined in wsdl:binding -> wsdl:operation ->
- // wsdl:input
- policyElementsList = include
- .getPolicyElements(PolicyInclude.BINDING_INPUT_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- inMessage, include);
-
- }
-
- MessageReference outMessage = wsdlOperation.getOutputMessage();
- if (outMessage != null) {
- WSDLBindingMessageReference bindingOutMessage = wsdlComponentFactory
- .createWSDLBindingMessageReference();
-
- bindingOutMessage
- .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);
- bindingoperation.setOutput(bindingOutMessage);
- SOAPBody resSoapbody = (SOAPBody) extensionFactory
- .getExtensionElement(ExtensionConstants.SOAP_11_BODY);
- resSoapbody.setUse(use);
- resSoapbody.setNamespaceURI(namespeceURI);
- bindingOutMessage.addExtensibilityElement(resSoapbody);
-
- // adding policies
- AxisMessage axisOutMessage = axisOperation
- .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
- include = axisOutMessage.getPolicyInclude();
-
- // adding policies defined in message element in services.xml
- policyElementsList = include
- .getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- outMessage, include);
-
- // adding policies defined in wsdl:binding -> wsdl:operation ->
- // wsdl:output
- policyElementsList = include
- .getPolicyElements(PolicyInclude.BINDING_OUTPUT_POLICY);
- addPolicyAsExtElements(womDescription, policyElementsList,
- outMessage, include);
- }
- }
- return binding;
- }
-
- private PolicyExtensibilityElement getExtensibilityElement(
- Object policyElement) {
- PolicyExtensibilityElement element = (PolicyExtensibilityElement) (new ExtensionFactoryImpl())
- .getExtensionElement(ExtensionConstants.POLICY);
- element.setPolicyElement(policyElement);
- return element;
- }
-
- private WSDLExtensibilityAttribute getExtensibilitiyAttribute(
- PolicyReference policyReference) {
- WSDLExtensibilityAttribute extensibilityAttribute = new AxisDescWSDLComponentFactory()
- .createWSDLExtensibilityAttribute();
- extensibilityAttribute.setKey(new QName(
- PolicyConstants.WSU_NAMESPACE_URI, "PolicyURIs"));
- extensibilityAttribute.setValue(new QName(policyReference
- .getPolicyURIString()));
- return extensibilityAttribute;
- }
-
- private void addPolicyAsExtElements(WSDLDescription description,
- List policyList, Component component, PolicyInclude policyInclude) {
- Iterator policyElementIterator = policyList.iterator();
- Object policyElement;
-
- while (policyElementIterator.hasNext()) {
- policyElement = policyElementIterator.next();
-
- if (policyElement instanceof PolicyReference) {
- String policyURIString = ((PolicyReference) policyElement)
- .getPolicyURIString();
- description
- .addExtensibilityElement(getExtensibilityElement(policyInclude
- .getPolicy(policyURIString)));
- }
-
- component
- .addExtensibilityElement(getExtensibilityElement(policyElement));
- }
- }
-
- private void addPolicyAsExtAttributes(WSDLDescription description,
- List policyList, Component component, PolicyInclude policyInclude) {
- Iterator policyElementIterator = policyList.iterator();
- Object policyElement;
-
- while (policyElementIterator.hasNext()) {
- policyElement = policyElementIterator.next();
-
- if (policyElement instanceof PolicyReference) {
- String policyURIString = ((PolicyReference) policyElement)
- .getPolicyURIString();
- component
- .addExtensibleAttributes(getExtensibilitiyAttribute((PolicyReference) policyElement));
- description
- .addExtensibilityElement(getExtensibilityElement(policyInclude
- .getPolicy(policyURIString)));
-
- }
- }
- }
+ private String targetNamespece;
+
+ private String targetNamespecheprefix;
+
+ public AxisService2WOM(XmlSchema schema, AxisService service,
+ String targetNamespece, String targetNamespecheprefix,
+ String [] serviceURL) {
+ this.schema = schema;
+ this.axisService = service;
+ url = serviceURL;
+
+ if (targetNamespece != null && !targetNamespece.trim().equals("")) {
+ this.targetNamespece = targetNamespece;
+ } else {
+ this.targetNamespece = SchemaGenerator.TARGET_NAMESPACE;
+ }
+ if (targetNamespecheprefix != null
+ && !targetNamespecheprefix.trim().equals("")) {
+ this.targetNamespecheprefix = targetNamespecheprefix;
+ } else {
+ this.targetNamespecheprefix = SchemaGenerator.TARGET_NAMESPACE_PREFIX;
+ }
+
+ }
+
+ public WSDLDescription generateWOM() throws Exception {
+ DocumentBuilderFactory domFactory = DocumentBuilderFactory
+ .newInstance();
+ DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
+ StringWriter writer = new StringWriter();
+ if (schema == null) {
+ throw new Exception("no scheam found for the service");
+ }
+ schema.write(writer);
+ writer.flush();
+ Document doc = domBuilder.parse(new ByteArrayInputStream(writer
+ .toString().getBytes()));
+ Element documentElement = doc.getDocumentElement();
+ WSDLComponentFactory wsdlComponentFactory = new WSDLDescriptionImpl();
+ womDescription = wsdlComponentFactory.createDescription();
+ HashMap namespaceMap = new HashMap();
+ namespaceMap.put("soap", Constants.URI_WSDL11_SOAP);
+ namespaceMap.put(targetNamespecheprefix, targetNamespece);
+ namespaceMap.put("ns1", "http://org.apache.axis2/xsd");
+ namespaceMap.put("xs", Constants.URI_2001_SCHEMA_XSD);
+ womDescription.setNamespaces(namespaceMap);
+ womDescription.setTargetNameSpace(targetNamespece);
+
+ // generating port type
+ WSDLInterface portType = generatePortType(womDescription,
+ wsdlComponentFactory, documentElement);
+ womDescription.addInterface(portType);
+
+ QName bindingName = new QName(targetNamespece, axisService.getName()
+ + "Binding", targetNamespecheprefix);
+ // generating binding
+ WSDLBinding binding = generateBinding(wsdlComponentFactory, portType,
+ bindingName, "document", "literal",
+ Constants.URI_SOAP11_HTTP,
+ "http://www.org.apache.axis2");
+ womDescription.addBinding(binding);
+
+ // generating axisService
+ WSDLService service = generateService(wsdlComponentFactory, binding,
+ axisService.getName(), url);
+ womDescription.addService(service);
+ return womDescription;
+ }
+
+ private WSDLInterface generatePortType(WSDLDescription womDescription,
+ WSDLComponentFactory wsdlComponentFactory, Element documentElement) {
+ WSDLTypes wsdlTypes = wsdlComponentFactory.createTypes();
+ ExtensionFactory extensionFactory = wsdlComponentFactory
+ .createExtensionFactory();
+ Schema schemaExtensibilityElement = (Schema) extensionFactory
+ .getExtensionElement(ExtensionConstants.SCHEMA);
+ wsdlTypes.addExtensibilityElement(schemaExtensibilityElement);
+ schemaExtensibilityElement.setElement(documentElement);
+ womDescription.setTypes(wsdlTypes);
+
+ WSDLInterface portType = womDescription.createInterface();
+ portType.setName(new QName(axisService.getName() + "Port"));
+
+ ArrayList policyElements;
+ PolicyInclude include;
+
+ include = axisService.getPolicyInclude();
+
+ // adding policies defined in wsdl:portType
+ policyElements = include.getPolicyElements(PolicyInclude.PORT_TYPE_POLICY);
+ addPolicyAsExtAttributes(womDescription, policyElements, portType, include);
+
+ Iterator operations = axisService.getOperations();
+ while (operations.hasNext()) {
+ AxisOperation axisOperation = (AxisOperation) operations.next();
+ if (axisOperation.isControlOperation()) {
+ // we do not need to expose control operation in the WSDL
+ continue;
+ }
+ WSDLOperation wsdlOperation = womDescription.createOperation();
+ wsdlOperation.setName(axisOperation.getName());
+
+ // adding policies defined in wsdl:portType -> wsdl:operation
+ include = axisOperation.getPolicyInclude();
+
+ policyElements = include.getPolicyElements(PolicyInclude.OPERATION_POLICY);
+ addPolicyAsExtElements(womDescription, policyElements, wsdlOperation, include);
+
+ AxisMessage inaxisMessage = axisOperation
+ .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ if (inaxisMessage != null) {
+ MessageReference messageRefinput = wsdlComponentFactory
+ .createMessageReference();
+ messageRefinput
+ .setElementQName(inaxisMessage.getElementQName());
+ messageRefinput
+ .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
+
+ // adding policies defined in wsdl:portType -> wsdl:operation ->
+ // wsdl:input
+ include = inaxisMessage.getPolicyInclude();
+
+ policyElements = include.getPolicyElements(PolicyInclude.INPUT_POLICY);
+ addPolicyAsExtAttributes(womDescription, policyElements, messageRefinput, include);
+
+ wsdlOperation.setInputMessage(messageRefinput);
+ }
+
+ try {
+ AxisMessage outaxisMessage = axisOperation
+ .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+ if (outaxisMessage != null
+ && outaxisMessage.getElementQName() != null) {
+ MessageReference messageRefout = wsdlComponentFactory
+ .createMessageReference();
+ messageRefout.setElementQName(outaxisMessage
+ .getElementQName());
+ messageRefout
+ .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);
+
+ // adding policies defined in wsdl:portType -> wsdl:operation
+ // -> wsdl:output
+ include = outaxisMessage.getPolicyInclude();
+
+ policyElements = include.getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
+ addPolicyAsExtAttributes(womDescription, policyElements, messageRefout, include);
+
+ wsdlOperation.setOutputMessage(messageRefout);
+ }
+ } catch (UnsupportedOperationException e) {
+ // operation does not have an out message so , no need to do
+ // anything here
+ }
+ portType.setOperation(wsdlOperation);
+
+ }
+ return portType;
+ }
+
+ private WSDLService generateService(
+ WSDLComponentFactory wsdlComponentFactory, WSDLBinding binding,
+ String ServiceName, String [] URL) {
+ WSDLService service = wsdlComponentFactory.createService();
+ service.setName(new QName(ServiceName));
+
+ /*
+ * Adding policies defined in services.xml
+ */
+
+ ArrayList policyElementList;
+ PolicyInclude include;
+
+ // Policies defined in Axis2.xml
+ AxisDescription axisConfiguration = null;
+
+ AxisDescription serviceGroup = axisService.getParent();
+ if (serviceGroup != null) {
+ axisConfiguration = serviceGroup.getParent();
+ }
+
+ if (axisConfiguration != null) {
+ include = axisConfiguration.getPolicyInclude();
+ policyElementList = include
+ .getPolicyElements(PolicyInclude.AXIS_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementList, service,
+ include);
+ }
+
+ for (int i = 0; i < URL.length; i++) {
+ String epr = URL[i];
+ WSDLEndpoint endpoints = wsdlComponentFactory.createEndpoint();
+ endpoints.setBinding(binding);
+ endpoints.setName(new QName(ServiceName + "PortType"));
+ SOAPAddressImpl address = new SOAPAddressImpl();
+ address.setLocationURI(epr);
+ endpoints.addExtensibilityElement(address);
+ service.setEndpoint(endpoints);
+ }
+ return service;
+ }
+
+ private WSDLBinding generateBinding(
+ WSDLComponentFactory wsdlComponentFactory, WSDLInterface portType,
+ QName bindingName, String style, String use, String trsportURI,
+ String namespeceURI) {
+
+ WSDLBinding binding = wsdlComponentFactory.createBinding();
+
+ ExtensionFactory extensionFactory = wsdlComponentFactory
+ .createExtensionFactory();
+
+ binding.setBoundInterface(portType);
+ binding.setName(bindingName);
+
+ PolicyInclude include;
+ ArrayList policyElementsList;
+
+ include = axisService.getPolicyInclude();
+
+ // adding policies defined in services.xml
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.AXIS_SERVICE_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList, binding,
+ include);
+
+ // adding policies defined in wsdl:binding
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.BINDING_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList, binding,
+ include);
+
+ SOAPBinding soapbindingImpl = (SOAPBinding) extensionFactory
+ .getExtensionElement(ExtensionConstants.SOAP_11_BINDING);
+ soapbindingImpl.setStyle(style);
+ soapbindingImpl.setTransportURI(trsportURI);
+ binding.addExtensibilityElement(soapbindingImpl);
+
+ Iterator op_itr = portType.getOperations().keySet().iterator();
+ while (op_itr.hasNext()) {
+ String opName = (String) op_itr.next();
+ WSDLOperation wsdlOperation = portType.getOperation(opName);
+ MessageReference inMessage = wsdlOperation.getInputMessage();
+
+ WSDLBindingOperation bindingoperation = wsdlComponentFactory
+ .createWSDLBindingOperation();
+ bindingoperation.setName(new QName(opName));
+ bindingoperation.setOperation(wsdlOperation);
+
+ AxisOperation axisOperation = axisService.getOperation(new QName(
+ opName));
+ include = axisOperation.getPolicyInclude();
+
+ // adding policies defined in operation element in services.xml
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.AXIS_OPERATION_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ bindingoperation, include);
+
+ // adding policies defined in wsdl:binding -> wsdl:operation
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.BINDING_OPERATION_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ bindingoperation, include);
+
+ binding.addBindingOperation(bindingoperation);
+
+ SOAPOperation soapOpimpl = (SOAPOperation) extensionFactory
+ .getExtensionElement(ExtensionConstants.SOAP_11_OPERATION);
+ soapOpimpl.setStyle(style);
+ // to do heve to set a proper SOAPAction
+ soapOpimpl.setSoapAction(opName);
+ bindingoperation.addExtensibilityElement(soapOpimpl);
+
+ if (inMessage != null) {
+ WSDLBindingMessageReference bindingInMessage = wsdlComponentFactory
+ .createWSDLBindingMessageReference();
+ bindingInMessage
+ .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_IN);
+ bindingoperation.setInput(bindingInMessage);
+
+ SOAPBody requestSoapbody = (SOAPBody) extensionFactory
+ .getExtensionElement(ExtensionConstants.SOAP_11_BODY);
+ requestSoapbody.setUse(use);
+ // TODO need to fix this
+ requestSoapbody.setNamespaceURI(namespeceURI);
+ bindingInMessage.addExtensibilityElement(requestSoapbody);
+
+ AxisMessage axisInMessage = axisOperation
+ .getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ include = axisInMessage.getPolicyInclude();
+
+ // adding policies defined in message element in services.xml
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ inMessage, include);
+
+ // adding policies defined in wsdl:binding -> wsdl:operation ->
+ // wsdl:input
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.BINDING_INPUT_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ inMessage, include);
+
+ }
+
+ MessageReference outMessage = wsdlOperation.getOutputMessage();
+ if (outMessage != null) {
+ WSDLBindingMessageReference bindingOutMessage = wsdlComponentFactory
+ .createWSDLBindingMessageReference();
+
+ bindingOutMessage
+ .setDirection(WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT);
+ bindingoperation.setOutput(bindingOutMessage);
+ SOAPBody resSoapbody = (SOAPBody) extensionFactory
+ .getExtensionElement(ExtensionConstants.SOAP_11_BODY);
+ resSoapbody.setUse(use);
+ resSoapbody.setNamespaceURI(namespeceURI);
+ bindingOutMessage.addExtensibilityElement(resSoapbody);
+
+ // adding policies
+ AxisMessage axisOutMessage = axisOperation
+ .getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+ include = axisOutMessage.getPolicyInclude();
+
+ // adding policies defined in message element in services.xml
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.AXIS_MESSAGE_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ outMessage, include);
+
+ // adding policies defined in wsdl:binding -> wsdl:operation ->
+ // wsdl:output
+ policyElementsList = include
+ .getPolicyElements(PolicyInclude.BINDING_OUTPUT_POLICY);
+ addPolicyAsExtElements(womDescription, policyElementsList,
+ outMessage, include);
+ }
+ }
+ return binding;
+ }
+
+ private PolicyExtensibilityElement getExtensibilityElement(
+ Object policyElement) {
+ PolicyExtensibilityElement element = (PolicyExtensibilityElement) (new ExtensionFactoryImpl())
+ .getExtensionElement(ExtensionConstants.POLICY);
+ element.setPolicyElement(policyElement);
+ return element;
+ }
+
+ private WSDLExtensibilityAttribute getExtensibilitiyAttribute(
+ PolicyReference policyReference) {
+ WSDLExtensibilityAttribute extensibilityAttribute = new AxisDescWSDLComponentFactory()
+ .createWSDLExtensibilityAttribute();
+ extensibilityAttribute.setKey(new QName(
+ PolicyConstants.WSU_NAMESPACE_URI, "PolicyURIs"));
+ extensibilityAttribute.setValue(new QName(policyReference
+ .getPolicyURIString()));
+ return extensibilityAttribute;
+ }
+
+ private void addPolicyAsExtElements(WSDLDescription description,
+ List policyList, Component component, PolicyInclude policyInclude) {
+ Iterator policyElementIterator = policyList.iterator();
+ Object policyElement;
+
+ while (policyElementIterator.hasNext()) {
+ policyElement = policyElementIterator.next();
+
+ if (policyElement instanceof PolicyReference) {
+ String policyURIString = ((PolicyReference) policyElement)
+ .getPolicyURIString();
+ description
+ .addExtensibilityElement(getExtensibilityElement(policyInclude
+ .getPolicy(policyURIString)));
+ }
+
+ component
+ .addExtensibilityElement(getExtensibilityElement(policyElement));
+ }
+ }
+
+ private void addPolicyAsExtAttributes(WSDLDescription description,
+ List policyList, Component component, PolicyInclude policyInclude) {
+ Iterator policyElementIterator = policyList.iterator();
+ Object policyElement;
+
+ while (policyElementIterator.hasNext()) {
+ policyElement = policyElementIterator.next();
+
+ if (policyElement instanceof PolicyReference) {
+ String policyURIString = ((PolicyReference) policyElement)
+ .getPolicyURIString();
+ component
+ .addExtensibleAttributes(getExtensibilitiyAttribute((PolicyReference) policyElement));
+ description
+ .addExtensibilityElement(getExtensibilityElement(policyInclude
+ .getPolicy(policyURIString)));
+
+ }
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/SimpleHTTPServer.java?rev=381641&r1=381640&r2=381641&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/SimpleHTTPServer.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/SimpleHTTPServer.java Tue Feb 28 04:20:20 2006
@@ -68,7 +68,7 @@
*/
protected ConfigurationContext configurationContext;
- public SimpleHTTPServer(){
+ public SimpleHTTPServer() {
}
public SimpleHTTPServer(ConfigurationContext systemContext, int port) throws AxisFault {
@@ -225,8 +225,14 @@
throw AxisFault.makeFault(e);
}
- return new EndpointReference("http://" + hostAddress + ":" + (embedded.getLocalPort())
- + "/axis2/services/" + serviceName);
+
+ if (embedded != null) {
+ // todo this has to fix
+ return new EndpointReference("http://" + hostAddress + ":" + (embedded.getLocalPort())
+ + "/axis2/services/" + serviceName);
+ } else {
+ throw new AxisFault("Unable to generate EPR for the transport : http");
+ }
}
/**
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/tcp/TCPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/tcp/TCPServer.java?rev=381641&r1=381640&r2=381641&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/tcp/TCPServer.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/tcp/TCPServer.java Tue Feb 28 04:20:20 2006
@@ -172,9 +172,12 @@
* @see org.apache.axis2.transport.TransportListener#replyToEPR(java.lang.String)
*/
public EndpointReference getEPRForService(String serviceName) throws AxisFault {
-
- // todo this has to fix
- return new EndpointReference("tcp://127.0.0.1:" + (serversocket.getLocalPort())
- + "/axis2/services/" + serviceName);
+ if (serversocket != null) {
+ // todo this has to fix
+ return new EndpointReference("tcp://127.0.0.1:" + (serversocket.getLocalPort())
+ + "/axis2/services/" + serviceName);
+ } else {
+ throw new AxisFault("Unable to generate EPR for the transport tcp");
+ }
}
}