use of com.sun.xml.ws.api.model.wsdl.WSDLOperation in project metro-jax-ws by eclipse-ee4j.
the class WSDLModelImpl method finalizeRpcLitBinding.
public void finalizeRpcLitBinding(EditableWSDLBoundPortType boundPortType) {
assert (boundPortType != null);
QName portTypeName = boundPortType.getPortTypeName();
if (portTypeName == null)
return;
WSDLPortType pt = portTypes.get(portTypeName);
if (pt == null)
return;
for (EditableWSDLBoundOperation bop : boundPortType.getBindingOperations()) {
WSDLOperation pto = pt.get(bop.getName().getLocalPart());
WSDLMessage inMsgName = pto.getInput().getMessage();
if (inMsgName == null)
continue;
EditableWSDLMessage inMsg = messages.get(inMsgName.getName());
int bodyindex = 0;
if (inMsg != null) {
for (EditableWSDLPart part : inMsg.parts()) {
String name = part.getName();
ParameterBinding pb = bop.getInputBinding(name);
if (pb.isBody()) {
part.setIndex(bodyindex++);
part.setBinding(pb);
bop.addPart(part, Mode.IN);
}
}
}
bodyindex = 0;
if (pto.isOneWay())
continue;
WSDLMessage outMsgName = pto.getOutput().getMessage();
if (outMsgName == null)
continue;
EditableWSDLMessage outMsg = messages.get(outMsgName.getName());
if (outMsg != null) {
for (EditableWSDLPart part : outMsg.parts()) {
String name = part.getName();
ParameterBinding pb = bop.getOutputBinding(name);
if (pb.isBody()) {
part.setIndex(bodyindex++);
part.setBinding(pb);
bop.addPart(part, Mode.OUT);
}
}
}
}
}
use of com.sun.xml.ws.api.model.wsdl.WSDLOperation in project metro-jax-ws by eclipse-ee4j.
the class WsaTubeHelper method getEffectiveInputAction.
/**
* This method gives the Input addressing Action for a message.
* It gives the Action set in the wsdl operation for the corresponding payload.
* If it is not explicitly set, it gives the soapAction
* @return input Action
*/
public String getEffectiveInputAction(Packet packet) {
// non-default SOAPAction beomes wsa:action
if (packet.soapAction != null && !packet.soapAction.equals("")) {
return packet.soapAction;
}
String action;
if (wsdlPort != null) {
WSDLOperationMapping wsdlOp = packet.getWSDLOperationMapping();
if (wsdlOp != null) {
WSDLBoundOperation wbo = wsdlOp.getWSDLBoundOperation();
WSDLOperation op = wbo.getOperation();
action = op.getInput().getAction();
} else {
action = packet.soapAction;
}
} else {
action = packet.soapAction;
}
return action;
}
use of com.sun.xml.ws.api.model.wsdl.WSDLOperation in project metro-jax-ws by eclipse-ee4j.
the class WsaTubeHelper method isInputActionDefault.
public boolean isInputActionDefault(Packet packet) {
if (wsdlPort == null) {
return false;
}
WSDLOperationMapping wsdlOp = packet.getWSDLOperationMapping();
if (wsdlOp == null) {
return false;
}
WSDLBoundOperation wbo = wsdlOp.getWSDLBoundOperation();
WSDLOperation op = wbo.getOperation();
return op.getInput().isDefaultAction();
}
use of com.sun.xml.ws.api.model.wsdl.WSDLOperation in project metro-jax-ws by eclipse-ee4j.
the class WsaTubeHelper method getFaultAction.
String getFaultAction(@Nullable WSDLBoundOperation wbo, Packet responsePacket) {
String action = AddressingUtils.getAction(responsePacket.getMessage().getHeaders(), addVer, soapVer);
if (action != null) {
return action;
}
action = addVer.getDefaultFaultAction();
if (wbo == null) {
return action;
}
try {
SOAPMessage sm = responsePacket.getMessage().copy().readAsSOAPMessage();
if (sm == null) {
return action;
}
if (sm.getSOAPBody() == null) {
return action;
}
if (sm.getSOAPBody().getFault() == null) {
return action;
}
Detail detail = sm.getSOAPBody().getFault().getDetail();
if (detail == null) {
return action;
}
String ns = detail.getFirstChild().getNamespaceURI();
String name = detail.getFirstChild().getLocalName();
WSDLOperation o = wbo.getOperation();
WSDLFault fault = o.getFault(new QName(ns, name));
if (fault == null) {
return action;
}
action = fault.getAction();
return action;
} catch (SOAPException e) {
throw new WebServiceException(e);
}
}
use of com.sun.xml.ws.api.model.wsdl.WSDLOperation in project metro-jax-ws by eclipse-ee4j.
the class FODTest method testFreezeFOD.
// OrderProcessorService service = null;
public void testFreezeFOD() throws Exception {
/*
* Verify that we can get messages from a port type by walking the model.
*
*/
// File f = new File("testcases/fromwsdl/freeze/concrete.wsdl");
// System.out.println(f.getAbsolutePath());
// URL wsdl = new URL("file:/scratch/bnaugle/bugs/fod/v2/concrete.wsdl");
// URL wsdl = new URL("file:/scratch/bnaugle/bugs/fod/FusionOrderDemoShared/services/orderbooking/output/concrete.wsdl");
String WSDL_NAME = "concrete.wsdl";
Source wsdlSource = getSource(WSDL_NAME);
WSDLModel model = RuntimeWSDLParser.parse(getURL(WSDL_NAME), wsdlSource, XmlUtil.createDefaultCatalogResolver(), true, Container.NONE, new WSDLParserExtension[] {});
Map<QName, ? extends WSDLPortType> portTypes = model.getPortTypes();
Set<QName> keySet = portTypes.keySet();
for (QName name : keySet) {
WSDLPortType pt = portTypes.get(name);
System.out.println(name.toString() + portTypes.get(name));
Iterable<? extends WSDLOperation> operations = pt.getOperations();
for (WSDLOperation operation : operations) {
assertNotNull(operation.getInput().getMessage());
}
}
}
Aggregations