axisservice2wsdl11.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 1,070 行 · 第 1/4 页
JAVA
1,070 行
+ BINDING_NAME_SUFFIX, null);
binding.addAttribute("type", tns.getPrefix() + ":"
+ axisService.getName() + PORT_TYPE_SUFFIX, null);
addPolicyAsExtElement(PolicyInclude.AXIS_SERVICE_POLICY, axisService
.getPolicyInclude(), binding);
addPolicyAsExtElement(PolicyInclude.BINDING_POLICY, axisService
.getPolicyInclude(), binding);
// Adding ext elements
addExtensionElement(fac, binding, BINDING_LOCAL_NAME, TRANSPORT,
TRANSPORT_URI, STYLE, style, soap);
// Add WS-Addressing UsingAddressing element if appropriate
// SHOULD be on the binding element per the specification
if (axisService.getWSAddressingFlag().equals(
AddressingConstants.ADDRESSING_OPTIONAL)) {
WSDLSerializationUtil.addExtensionElement(fac, binding,
AddressingConstants.USING_ADDRESSING,
DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",
wsaw);
} else if (axisService.getWSAddressingFlag().equals(
AddressingConstants.ADDRESSING_REQUIRED)) {
WSDLSerializationUtil.addExtensionElement(fac, binding,
AddressingConstants.USING_ADDRESSING,
DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",
wsaw);
}
for (Iterator operations = axisService.getOperations(); operations.hasNext();) {
AxisOperation axisOperation = (AxisOperation) operations.next();
if (axisOperation.isControlOperation() || axisOperation.getName() == null) {
continue;
}
String operationName = axisOperation.getName().getLocalPart();
OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,
wsdl);
binding.addChild(operation);
String soapAction = axisOperation.getSoapAction();
if (soapAction == null) {
soapAction = "";
}
addExtensionElement(fac, operation, OPERATION_LOCAL_NAME,
SOAP_ACTION, soapAction, STYLE, style, soap);
addPolicyAsExtElement(PolicyInclude.BINDING_OPERATION_POLICY,
axisOperation.getPolicyInclude(), operation);
addPolicyAsExtElement(PolicyInclude.AXIS_OPERATION_POLICY,
axisOperation.getPolicyInclude(), operation);
String MEP = axisOperation.getMessageExchangePattern();
if (WSDL2Constants.MEP_URI_IN_ONLY.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
.equals(MEP)
|| WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage inaxisMessage = axisOperation
.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
if (inaxisMessage != null) {
operation.addAttribute(ATTRIBUTE_NAME, operationName, null);
OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, input, SOAP_BODY, SOAP_USE, use,
null, targetNamespace, soap);
addPolicyAsExtElement(PolicyInclude.BINDING_INPUT_POLICY,
inaxisMessage.getPolicyInclude(), input);
operation.addChild(input);
writeSoapHeaders(inaxisMessage, fac, input, soap);
}
}
if (WSDL2Constants.MEP_URI_OUT_ONLY.equals(MEP)
|| WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
if (outAxisMessage != null) {
OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, output, SOAP_BODY, SOAP_USE, use,
null, targetNamespace, soap);
addPolicyAsExtElement(PolicyInclude.BINDING_OUTPUT_POLICY,
outAxisMessage.getPolicyInclude(), output);
operation.addChild(output);
writeSoapHeaders(outAxisMessage, fac, output, soap);
}
}
// generate fault Messages
ArrayList faultyMessages = axisOperation.getFaultMessages();
if (faultyMessages != null) {
for (int i = 0; i < faultyMessages.size(); i++) {
AxisMessage faultyMessage = (AxisMessage) faultyMessages
.get(i);
OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, fault, FAULT_LOCAL_NAME, SOAP_USE, use,
ATTRIBUTE_NAME, faultyMessage.getName(), soap);
fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(),
null);
// TODO adding policies for fault messages
operation.addChild(fault);
writeSoapHeaders(faultyMessage, fac, fault, soap);
}
}
}
}
/**
* Generate the <binding> for SOAP 1.2 underneath the passed definitions
*
* @param fac the active OMFactory
* @param defintions the WSDL <definitions> element under which to put the binding
* @throws Exception if there's a problem
*/
private void generateSOAP12Binding(OMFactory fac, OMElement defintions)
throws Exception {
OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);
defintions.addChild(binding);
binding.addAttribute(ATTRIBUTE_NAME, axisService.getName()
+ SOAP12BINDING_NAME_SUFFIX, null);
binding.addAttribute("type", tns.getPrefix() + ":"
+ axisService.getName() + PORT_TYPE_SUFFIX, null);
addPolicyAsExtElement(PolicyInclude.AXIS_SERVICE_POLICY, axisService
.getPolicyInclude(), binding);
addPolicyAsExtElement(PolicyInclude.BINDING_POLICY, axisService
.getPolicyInclude(), binding);
// Adding ext elements
addExtensionElement(fac, binding, BINDING_LOCAL_NAME, TRANSPORT,
TRANSPORT_URI, STYLE, style, soap12);
// Add WS-Addressing UsingAddressing element if appropriate
// SHOULD be on the binding element per the specification
if (axisService.getWSAddressingFlag().equals(
AddressingConstants.ADDRESSING_OPTIONAL)) {
WSDLSerializationUtil.addExtensionElement(fac, binding,
AddressingConstants.USING_ADDRESSING,
DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",
wsaw);
} else if (axisService.getWSAddressingFlag().equals(
AddressingConstants.ADDRESSING_REQUIRED)) {
WSDLSerializationUtil.addExtensionElement(fac, binding,
AddressingConstants.USING_ADDRESSING,
DEFAULT_WSDL_NAMESPACE_PREFIX + ":required", "true",
wsaw);
}
for (Iterator operations = axisService.getOperations(); operations.hasNext();) {
AxisOperation axisOperation = (AxisOperation) operations.next();
if (axisOperation.isControlOperation() || axisOperation.getName() == null) {
continue;
}
String opeartionName = axisOperation.getName().getLocalPart();
OMElement operation = fac.createOMElement(OPERATION_LOCAL_NAME,
wsdl);
binding.addChild(operation);
String soapAction = axisOperation.getSoapAction();
if (soapAction == null) {
soapAction = "";
}
addExtensionElement(fac, operation, OPERATION_LOCAL_NAME,
SOAP_ACTION, soapAction, STYLE, style, soap12);
addPolicyAsExtElement(PolicyInclude.BINDING_OPERATION_POLICY,
axisOperation.getPolicyInclude(), operation);
addPolicyAsExtElement(PolicyInclude.AXIS_OPERATION_POLICY,
axisOperation.getPolicyInclude(), operation);
String MEP = axisOperation.getMessageExchangePattern();
if (WSDL2Constants.MEP_URI_IN_ONLY.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
.equals(MEP)
|| WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage inaxisMessage = axisOperation
.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
if (inaxisMessage != null) {
operation.addAttribute(ATTRIBUTE_NAME, opeartionName, null);
OMElement input = fac.createOMElement(IN_PUT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, input, SOAP_BODY, SOAP_USE, use,
null, targetNamespace, soap12);
addPolicyAsExtElement(PolicyInclude.BINDING_INPUT_POLICY,
inaxisMessage.getPolicyInclude(), input);
operation.addChild(input);
writeSoapHeaders(inaxisMessage, fac, input, soap12);
}
}
if (WSDL2Constants.MEP_URI_OUT_ONLY.equals(MEP)
|| WSDL2Constants.MEP_URI_OUT_OPTIONAL_IN
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OPTIONAL_OUT
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_ROBUST_IN_ONLY
.equals(MEP)
|| WSDL2Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
if (outAxisMessage != null) {
OMElement output = fac.createOMElement(OUT_PUT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, output, SOAP_BODY, SOAP_USE, use,
null, targetNamespace, soap12);
addPolicyAsExtElement(PolicyInclude.BINDING_OUTPUT_POLICY,
outAxisMessage.getPolicyInclude(), output);
operation.addChild(output);
writeSoapHeaders(outAxisMessage, fac, output, soap12);
}
}
// generate fault Messages
ArrayList faultyMessages = axisOperation.getFaultMessages();
if (faultyMessages != null) {
for (int i = 0; i < faultyMessages.size(); i++) {
AxisMessage faultyMessage = (AxisMessage) faultyMessages
.get(i);
OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME,
wsdl);
addExtensionElement(fac, fault, FAULT_LOCAL_NAME, SOAP_USE, use,
ATTRIBUTE_NAME, faultyMessage.getName(), soap12);
fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(),
null);
// add policies for fault messages
operation.addChild(fault);
writeSoapHeaders(faultyMessage, fac, fault, soap12);
}
}
}
}
private void generateHTTPBinding(OMFactory fac, OMElement defintions)
throws Exception {
OMElement binding = fac.createOMElement(BINDING_LOCAL_NAME, wsdl);
defintions.addChild(binding);
binding.addAttribute(ATTRIBUTE_NAME, axisService.getName()
+ HTTP_BINDING, null);
binding.addAttribute("type", tns.getPrefix() + ":"
+ axisService.getName() + PORT_TYPE_SUFFIX, null);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?