axisservice2wsdl20.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 440 行 · 第 1/2 页
JAVA
440 行
for (int i = 0; i < eprs.length; i++) {
String epr = eprs[i];
OMElement endpointElement = axisEndpoint.toWSDL20(wsdl, tns, whttp, epr);
boolean endpointAlreadyAdded = false;
Iterator endpointsAdded = serviceElement.getChildren();
while (endpointsAdded.hasNext()) {
OMElement endpoint = (OMElement) endpointsAdded.next();
// Checking whether a endpoint with the same binding and address exists.
if (endpoint.getAttribute(new QName(WSDL2Constants.BINDING_LOCAL_NAME))
.getAttributeValue().equals(endpointElement.getAttribute(
new QName(WSDL2Constants.BINDING_LOCAL_NAME)).getAttributeValue())
&& endpoint
.getAttribute(new QName(WSDL2Constants.ATTRIBUTE_ADDRESS))
.getAttributeValue().equals(endpointElement.getAttribute(
new QName(WSDL2Constants.ATTRIBUTE_ADDRESS)).getAttributeValue())) {
endpointAlreadyAdded = true;
}
}
if (!endpointAlreadyAdded) {
serviceElement.addChild(endpointElement);
}
}
}
Iterator iter = bindings.iterator();
while (iter.hasNext()) {
AxisBinding binding = (AxisBinding) iter.next();
descriptionElement
.addChild(binding.toWSDL20(wsdl, tns, wsoap, whttp,
interfaceName,
axisService.getNamespaceMap(),
axisService.getWSAddressingFlag(),
axisService.getName(),wsaw));
}
descriptionElement.addChild(serviceElement);
} else {
// There are no andpoints defined hence generate default bindings and endpoints
descriptionElement.addChild(
WSDLSerializationUtil.generateSOAP11Binding(omFactory, axisService, wsdl, wsoap,
tns));
descriptionElement.addChild(
WSDLSerializationUtil.generateSOAP12Binding(omFactory, axisService, wsdl, wsoap,
tns));
if (!disableREST) {
descriptionElement.addChild(
WSDLSerializationUtil.generateHTTPBinding(omFactory, axisService, wsdl,
whttp,
tns));
}
descriptionElement
.addChild(WSDLSerializationUtil.generateServiceElement(omFactory, wsdl, tns,
axisService, disableREST, eprs));
}
return descriptionElement;
}
/**
* Generates the interface element for the service
*
* @param wsdl The WSDL namespace
* @param tns The target namespace
* @param wsdlx The WSDL extensions namespace
* @param fac The active OMFactory
* @param interfaceName The name of the interface
* @return The generated interface element
*/
private OMElement getInterfaceElement(OMNamespace wsdl, OMNamespace tns, OMNamespace wsdlx,
OMFactory fac, String interfaceName) {
OMElement interfaceElement = fac.createOMElement(WSDL2Constants.INTERFACE_LOCAL_NAME, wsdl);
interfaceElement.addAttribute(fac.createOMAttribute(WSDL2Constants.ATTRIBUTE_NAME, null,
interfaceName));
Iterator iterator = axisService.getOperations();
ArrayList interfaceOperations = new ArrayList();
ArrayList interfaceFaults = new ArrayList();
int i = 0;
while (iterator.hasNext()) {
AxisOperation axisOperation = (AxisOperation) iterator.next();
if (axisOperation.isControlOperation()) {
continue;
}
interfaceOperations.add(i, generateInterfaceOperationElement(axisOperation, wsdl, tns, wsdlx));
i++;
Iterator faultsIterator = axisOperation.getFaultMessages().iterator();
while (faultsIterator.hasNext()) {
AxisMessage faultMessage = (AxisMessage) faultsIterator.next();
String name = faultMessage.getName();
if (!interfaceFaults.contains(name)) {
OMElement faultElement =
fac.createOMElement(WSDL2Constants.FAULT_LOCAL_NAME, wsdl);
faultElement.addAttribute(
fac.createOMAttribute(WSDL2Constants.ATTRIBUTE_NAME, null, name));
faultElement.addAttribute(fac.createOMAttribute(
WSDL2Constants.ATTRIBUTE_ELEMENT, null, WSDLSerializationUtil
.getElementName(faultMessage, axisService.getNamespaceMap())));
interfaceFaults.add(name);
interfaceElement.addChild(faultElement);
}
}
}
for (i = 0; i < interfaceOperations.size(); i++) {
interfaceElement.addChild((OMNode) interfaceOperations.get(i));
}
return interfaceElement;
}
/**
* Generates the service element for the service
*
* @param wsdl the WSDL namespace
* @param tns the target namespace
* @param omFactory the active OMFactory
* @param interfaceName the name of the interface
* @return the generated service element
*/
private OMElement getServiceElement(OMNamespace wsdl, OMNamespace tns, OMFactory omFactory,
String interfaceName) {
OMElement serviceElement =
omFactory.createOMElement(WSDL2Constants.SERVICE_LOCAL_NAME, wsdl);
serviceElement.addAttribute(
omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_NAME, null,
axisService.getName()));
serviceElement.addAttribute(omFactory.createOMAttribute(WSDL2Constants.INTERFACE_LOCAL_NAME,
null, tns.getPrefix() + ":" +
interfaceName));
return serviceElement;
}
/**
* Generates the interface Operation element. As with the binding operations we dont need to
* ask AxisMessage to serialize its message cause AxisMessage does not have specific properties
* as bindings.
*
* @param axisOperation the operation to write
* @param wsdl the WSDL namespace
* @param tns the target namespace
* @param wsdlx the WSDL extentions namespace (WSDL 2.0)
* @return the generated <operation> element
*/
public OMElement generateInterfaceOperationElement(AxisOperation axisOperation,
OMNamespace wsdl,
OMNamespace tns,
OMNamespace wsdlx) {
OMFactory omFactory = OMAbstractFactory.getOMFactory();
OMElement axisOperationElement =
omFactory.createOMElement(WSDL2Constants.OPERATION_LOCAL_NAME, wsdl);
WSDLSerializationUtil.addWSDLDocumentationElement(axisOperation, axisOperationElement, omFactory, wsdl);
axisOperationElement.addAttribute(omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_NAME,
null,
axisOperation.getName().getLocalPart()));
URI[] opStyle = (URI[]) axisOperation.getParameterValue(WSDL2Constants.OPERATION_STYLE);
if (opStyle != null && opStyle.length > 0) {
String style = opStyle[0].toString();
for (int i = 1; i < opStyle.length; i++) {
URI uri = opStyle[i];
style = style + " " + uri;
}
axisOperationElement.addAttribute(
omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_STYLE, null, style));
}
axisOperationElement.addAttribute(omFactory.createOMAttribute(
WSDL2Constants.ATTRIBUTE_NAME_PATTERN, null, axisOperation.getMessageExchangePattern()));
Parameter param = axisOperation.getParameter(WSDL2Constants.ATTR_WSDLX_SAFE);
if (param != null) {
axisOperationElement.addAttribute(omFactory.createOMAttribute(
WSDL2Constants.ATTRIBUTE_SAFE, wsdlx, (param.getValue()).toString()));
}
AxisService axisService = axisOperation.getAxisService();
Map nameSpaceMap = axisService.getNamespaceMap();
// Add the input element
AxisMessage inMessage = (AxisMessage) axisOperation.getChild(WSDLConstants.WSDL_MESSAGE_IN_MESSAGE);
if (inMessage != null) {
OMElement inMessageElement = omFactory.createOMElement(WSDL2Constants.IN_PUT_LOCAL_NAME, wsdl);
inMessageElement.addAttribute(omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_ELEMENT, null, WSDLSerializationUtil.getElementName(inMessage, nameSpaceMap)));
WSDLSerializationUtil.addWSAWActionAttribute(inMessageElement, axisOperation.getInputAction(),wsaw);
WSDLSerializationUtil.addWSDLDocumentationElement(inMessage, inMessageElement, omFactory, wsdl);
axisOperationElement.addChild(inMessageElement);
}
// Add the output element
AxisMessage outMessage = (AxisMessage) axisOperation.getChild(WSDLConstants.WSDL_MESSAGE_OUT_MESSAGE);
if (outMessage != null) {
OMElement outMessageElement = omFactory.createOMElement(WSDL2Constants.OUT_PUT_LOCAL_NAME, wsdl);
outMessageElement.addAttribute(omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_ELEMENT, null, WSDLSerializationUtil.getElementName(outMessage, nameSpaceMap)));
WSDLSerializationUtil.addWSAWActionAttribute(outMessageElement, axisOperation.getOutputAction(),wsaw);
WSDLSerializationUtil.addWSDLDocumentationElement(outMessage, outMessageElement, omFactory, wsdl);
axisOperationElement.addChild(outMessageElement);
}
// Add the fault element
ArrayList faults = axisOperation.getFaultMessages();
if (faults != null) {
Iterator iterator = faults.iterator();
while (iterator.hasNext()) {
AxisMessage faultMessage = (AxisMessage) iterator.next();
OMElement faultElement;
if (WSDLConstants.WSDL_MESSAGE_DIRECTION_IN.equals(faultMessage.getDirection())) {
faultElement = omFactory.createOMElement(WSDL2Constants.IN_FAULT_LOCAL_NAME, wsdl);
} else {
faultElement = omFactory.createOMElement(WSDL2Constants.OUT_FAULT_LOCAL_NAME, wsdl);
}
faultElement.addAttribute(omFactory.createOMAttribute(WSDL2Constants.ATTRIBUTE_REF, null, tns.getPrefix() + ":" + faultMessage.getName()));
WSDLSerializationUtil.addWSAWActionAttribute(faultElement, axisOperation.getFaultAction(faultMessage.getName()),wsaw);
WSDLSerializationUtil.addWSDLDocumentationElement(faultMessage, faultElement, omFactory, wsdl);
axisOperationElement.addChild(faultElement);
}
}
return axisOperationElement;
}
public void setEPRs(String[] eprs) {
this.eprs = eprs;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?