use of com.sun.tools.ws.wsdl.document.Operation in project metro-jax-ws by eclipse-ee4j.
the class W3CAddressingJavaGeneratorExtension method writeMethodAnnotations.
@Override
public void writeMethodAnnotations(TWSDLOperation two, JMethod jMethod) {
JAnnotationUse actionAnn = null;
if (!(two instanceof Operation))
return;
Operation o = ((Operation) two);
// explicit input action
if (o.getInput().getAction() != null && !o.getInput().getAction().equals("")) {
// explicitly specified
actionAnn = jMethod.annotate(Action.class);
actionAnn.param("input", o.getInput().getAction());
}
// explicit output action
if (o.getOutput() != null && o.getOutput().getAction() != null && !o.getOutput().getAction().equals("")) {
// explicitly specified
if (actionAnn == null)
actionAnn = jMethod.annotate(Action.class);
actionAnn.param("output", o.getOutput().getAction());
}
// explicit fault action
if (o.getFaults() != null && o.getFaults().size() > 0) {
Map<String, JClass> map = o.getFaults();
JAnnotationArrayMember jam = null;
for (Fault f : o.faults()) {
if (f.getAction() == null)
continue;
if (f.getAction().equals(""))
continue;
if (actionAnn == null) {
actionAnn = jMethod.annotate(Action.class);
}
if (jam == null) {
jam = actionAnn.paramArray("fault");
}
final JAnnotationUse faAnn = jam.annotate(FaultAction.class);
faAnn.param("className", map.get(f.getName()));
faAnn.param("value", f.getAction());
}
}
}
use of com.sun.tools.ws.wsdl.document.Operation in project metro-jax-ws by eclipse-ee4j.
the class WSDLParser method parsePortTypeOperation.
private Operation parsePortTypeOperation(TWSDLParserContextImpl context, Element e) {
context.push();
context.registerNamespaces(e);
Operation operation = new Operation(forest.locatorTable.getStartLocation(e));
String name = Util.getRequiredAttribute(e, Constants.ATTR_NAME);
operation.setName(name);
String parameterOrderAttr = XmlUtil.getAttributeOrNull(e, Constants.ATTR_PARAMETER_ORDER);
operation.setParameterOrder(parameterOrderAttr);
boolean gotDocumentation = false;
boolean gotInput = false;
boolean gotOutput = false;
boolean gotFault = false;
boolean inputBeforeOutput = false;
for (Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext(); ) {
Element e2 = Util.nextElement(iter);
if (e2 == null)
break;
if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation) {
errReceiver.error(forest.locatorTable.getStartLocation(e2), WsdlMessages.PARSING_ONLY_ONE_DOCUMENTATION_ALLOWED(e2.getLocalName()));
}
gotDocumentation = true;
if (operation.getDocumentation() == null)
operation.setDocumentation(getDocumentationFor(e2));
} else if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_INPUT)) {
if (gotInput) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_TOO_MANY_ELEMENTS(Constants.TAG_INPUT, Constants.TAG_OPERATION, name));
}
context.push();
context.registerNamespaces(e2);
Input input = new Input(forest.locatorTable.getStartLocation(e2), errReceiver);
input.setParent(operation);
String messageAttr = Util.getRequiredAttribute(e2, Constants.ATTR_MESSAGE);
input.setMessage(context.translateQualifiedName(context.getLocation(e2), messageAttr));
String nameAttr = XmlUtil.getAttributeOrNull(e2, Constants.ATTR_NAME);
input.setName(nameAttr);
operation.setInput(input);
gotInput = true;
if (gotOutput) {
inputBeforeOutput = false;
}
// check for extensiblity attributes
for (Iterator iter2 = XmlUtil.getAllAttributes(e2); iter2.hasNext(); ) {
Attr e3 = (Attr) iter2.next();
if (e3.getLocalName().equals(Constants.ATTR_MESSAGE) || e3.getLocalName().equals(Constants.ATTR_NAME))
continue;
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlAttribute(e3);
handleExtension(context, input, e3, e2);
}
// verify that there is at most one child element and it is a documentation element
boolean gotDocumentation2 = false;
for (Iterator iter2 = XmlUtil.getAllChildren(e2); iter2.hasNext(); ) {
Element e3 = Util.nextElement(iter2);
if (e3 == null)
break;
if (XmlUtil.matchesTagNS(e3, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation2) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_ONLY_ONE_DOCUMENTATION_ALLOWED(e.getLocalName()));
}
gotDocumentation2 = true;
input.setDocumentation(getDocumentationFor(e3));
} else {
errReceiver.error(forest.locatorTable.getStartLocation(e3), WsdlMessages.PARSING_INVALID_ELEMENT(e3.getTagName(), e3.getNamespaceURI()));
}
}
context.pop();
} else if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_OUTPUT)) {
if (gotOutput) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_TOO_MANY_ELEMENTS(Constants.TAG_INPUT, Constants.TAG_OPERATION, name));
}
context.push();
context.registerNamespaces(e2);
Output output = new Output(forest.locatorTable.getStartLocation(e2), errReceiver);
output.setParent(operation);
String messageAttr = Util.getRequiredAttribute(e2, Constants.ATTR_MESSAGE);
output.setMessage(context.translateQualifiedName(context.getLocation(e2), messageAttr));
String nameAttr = XmlUtil.getAttributeOrNull(e2, Constants.ATTR_NAME);
output.setName(nameAttr);
operation.setOutput(output);
gotOutput = true;
if (gotInput) {
inputBeforeOutput = true;
}
// check for extensiblity attributes
for (Iterator iter2 = XmlUtil.getAllAttributes(e2); iter2.hasNext(); ) {
Attr e3 = (Attr) iter2.next();
if (e3.getLocalName().equals(Constants.ATTR_MESSAGE) || e3.getLocalName().equals(Constants.ATTR_NAME))
continue;
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlAttribute(e3);
handleExtension(context, output, e3, e2);
}
// verify that there is at most one child element and it is a documentation element
boolean gotDocumentation2 = false;
for (Iterator iter2 = XmlUtil.getAllChildren(e2); iter2.hasNext(); ) {
Element e3 = Util.nextElement(iter2);
if (e3 == null)
break;
if (XmlUtil.matchesTagNS(e3, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation2) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_ONLY_ONE_DOCUMENTATION_ALLOWED(e.getLocalName()));
}
gotDocumentation2 = true;
output.setDocumentation(getDocumentationFor(e3));
} else {
errReceiver.error(forest.locatorTable.getStartLocation(e3), WsdlMessages.PARSING_INVALID_ELEMENT(e3.getTagName(), e3.getNamespaceURI()));
}
}
context.pop();
} else if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_FAULT)) {
context.push();
context.registerNamespaces(e2);
Fault fault = new Fault(forest.locatorTable.getStartLocation(e2));
fault.setParent(operation);
String messageAttr = Util.getRequiredAttribute(e2, Constants.ATTR_MESSAGE);
fault.setMessage(context.translateQualifiedName(context.getLocation(e2), messageAttr));
String nameAttr = XmlUtil.getAttributeOrNull(e2, Constants.ATTR_NAME);
fault.setName(nameAttr);
operation.addFault(fault);
gotFault = true;
// check for extensiblity attributes
for (Iterator iter2 = XmlUtil.getAllAttributes(e2); iter2.hasNext(); ) {
Attr e3 = (Attr) iter2.next();
if (e3.getLocalName().equals(Constants.ATTR_MESSAGE) || e3.getLocalName().equals(Constants.ATTR_NAME))
continue;
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlAttribute(e3);
handleExtension(context, fault, e3, e2);
}
// verify that there is at most one child element and it is a documentation element
boolean gotDocumentation2 = false;
for (Iterator iter2 = XmlUtil.getAllChildren(e2); iter2.hasNext(); ) {
Element e3 = Util.nextElement(iter2);
if (e3 == null)
break;
if (XmlUtil.matchesTagNS(e3, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation2) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_ONLY_ONE_DOCUMENTATION_ALLOWED(e.getLocalName()));
}
gotDocumentation2 = true;
if (fault.getDocumentation() == null)
fault.setDocumentation(getDocumentationFor(e3));
} else {
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlElement(e3);
if (!handleExtension(context, fault, e3)) {
checkNotWsdlRequired(e3);
}
}
/*else {
Util.fail(
"parsing.invalidElement",
e3.getTagName(),
e3.getNamespaceURI());
}*/
}
context.pop();
} else {
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlElement(e2);
if (!handleExtension(context, operation, e2)) {
checkNotWsdlRequired(e2);
}
}
/*else {
Util.fail(
"parsing.invalidElement",
e2.getTagName(),
e2.getNamespaceURI());
}*/
}
if (gotInput && !gotOutput && !gotFault) {
operation.setStyle(OperationStyle.ONE_WAY);
} else if (gotInput && gotOutput && inputBeforeOutput) {
operation.setStyle(OperationStyle.REQUEST_RESPONSE);
} else if (gotInput && gotOutput && !inputBeforeOutput) {
operation.setStyle(OperationStyle.SOLICIT_RESPONSE);
} else if (gotOutput && !gotInput && !gotFault) {
operation.setStyle(OperationStyle.NOTIFICATION);
} else {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_INVALID_OPERATION_STYLE(name));
}
context.pop();
context.fireDoneParsingEntity(WSDLConstants.QNAME_OPERATION, operation);
return operation;
}
use of com.sun.tools.ws.wsdl.document.Operation in project metro-jax-ws by eclipse-ee4j.
the class WSDLParser method parsePortType.
private PortType parsePortType(TWSDLParserContextImpl context, Definitions definitions, Element e) {
context.push();
context.registerNamespaces(e);
PortType portType = new PortType(definitions, forest.locatorTable.getStartLocation(e), errReceiver);
String name = Util.getRequiredAttribute(e, Constants.ATTR_NAME);
portType.setName(name);
boolean gotDocumentation = false;
for (Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext(); ) {
Element e2 = Util.nextElement(iter);
if (e2 == null)
break;
if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation) {
errReceiver.error(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_ONLY_ONE_DOCUMENTATION_ALLOWED(e.getLocalName()));
}
gotDocumentation = true;
if (portType.getDocumentation() == null)
portType.setDocumentation(getDocumentationFor(e2));
} else if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_OPERATION)) {
Operation op = parsePortTypeOperation(context, e2);
op.setParent(portType);
portType.add(op);
} else {
// possible extensibility element -- must live outside the WSDL namespace
checkNotWsdlElement(e2);
if (!handleExtension(context, portType, e2)) {
checkNotWsdlRequired(e2);
}
}
/*else {
Util.fail(
"parsing.invalidElement",
e2.getTagName(),
e2.getNamespaceURI());
}*/
}
context.pop();
context.fireDoneParsingEntity(WSDLConstants.QNAME_PORT_TYPE, portType);
return portType;
}
Aggregations