private MessagePartInfo getFaultMessagePart(QName qname, OperationInfo op) { for (FaultInfo faultInfo : op.getFaults()) { for (MessagePartInfo mpi : faultInfo.getMessageParts()) { String ns = null; if (mpi.isElement()) { ns = mpi.getElementQName().getNamespaceURI(); } else { ns = mpi.getTypeQName().getNamespaceURI(); } if (qname.getLocalPart().equals(mpi.getConcreteName().getLocalPart()) && qname.getNamespaceURI().equals(ns)) { return mpi; } } } return null; }
for (BindingFaultInfo fi : boi.getFaults()) { Class<?> c = fi.getFaultInfo().getProperty(Class.class.getName(), Class.class); if (c != null && c.isInstance(ex)) { return ex;
private boolean checkPortTypeOperationFault(BindingFaultInfo bfi) { InterfaceInfo ini = null; if ((bfi.getBindingOperation() != null) && (bfi.getBindingOperation().getOperationInfo() != null)) { ini = bfi.getBindingOperation().getOperationInfo().getInterface(); } return (ini != null) && (ini.getName() != null) && (bfi.getBindingOperation().getName() != null) && (bfi.getFaultInfo().getFaultName() != null) && wsdl11XPointer.matchesPortTypeOperationFault( ini.getName().getNamespaceURI(), ini.getName().getLocalPart(), bfi.getBindingOperation().getName().getLocalPart(), bfi.getFaultInfo().getFaultName().getLocalPart()); }
FaultInfo faultInfo = getFaultInfo(operation, faultAction.className()); if (faultInfo != null && !StringUtils.isEmpty(faultAction.value())) { faultInfo.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, faultAction .value()); faultInfo.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, faultAction .value()); faultInfo = getFaultInfo(operation.getUnwrappedOperation(), faultAction.className()); if (faultInfo != null && !StringUtils.isEmpty(faultAction.value())) { faultInfo.addExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME, faultAction .value()); faultInfo.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, faultAction .value()); for (FaultInfo fi : operation.getFaults()) { if (fi.getExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME) == null) { String f = "/Fault/" + fi.getName().getLocalPart(); fi.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, computeAction(operation, f)); if (operation.isUnwrappedCapable()) { fi = operation.getUnwrappedOperation().getFault(fi.getName()); fi.addExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME, computeAction(operation, f));
protected void createFaultForException(Class<?> exClass, FaultInfo fi) { Field[] fields = exClass.getDeclaredFields(); for (Field field : fields) { MessagePartInfo mpi = fi .addMessagePart(new QName(fi.getName().getNamespaceURI(), field.getName())); mpi.setProperty(Class.class.getName(), field.getType()); } MessagePartInfo mpi = fi.addMessagePart(new QName(fi.getName().getNamespaceURI(), "message")); mpi.setProperty(Class.class.getName(), String.class); }
return; QName qname = new QName(exDetail.getNamespaceURI(), exDetail.getLocalName()); FaultInfo faultWanted = null; MessagePartInfo part = null; return; if (boi.isUnwrapped()) { boi = boi.getWrappedOperation(); for (FaultInfo faultInfo : boi.getOperationInfo().getFaults()) { for (MessagePartInfo mpi : faultInfo.getMessageParts()) { if (qname.equals(mpi.getConcreteName())) { faultWanted = faultInfo; part = mpi; for (FaultInfo faultInfo : boi.getOperationInfo().getFaults()) { for (MessagePartInfo mpi : faultInfo.getMessageParts()) { if (qname.getLocalPart().equals(mpi.getConcreteName().getLocalPart())) { faultWanted = faultInfo; part = mpi; Class<?> exClass = faultWanted.getProperty(Class.class.getName(), Class.class); if (exClass == null) { return;
Operation operation = null; try { operation = operationInfo.getProperty( WSDLServiceBuilder.WSDL_OPERATION, Operation.class); } catch (ClassCastException e) { addDocumentation(input, operationInfo.getInput().getDocumentation()); input.setName(operationInfo.getInputName()); Message message = def.createMessage(); if (operationInfo.getOutput() != null) { Output output = def.createOutput(); addDocumentation(output, operationInfo.getOutput().getDocumentation()); output.setName(operationInfo.getOutputName()); message = def.createMessage(); for (FaultInfo faultInfo : faults) { fault = def.createFault(); addDocumentation(fault, faultInfo.getDocumentation()); fault.setName(faultInfo.getFaultName().getLocalPart()); message = def.createMessage(); buildMessage(message, faultInfo, def); this.addExtensibilityAttributes(def, fault, faultInfo.getExtensionAttributes()); this.addExtensibilityElements(def, fault, getWSDL11Extensors(faultInfo)); fault.setMessage(message);
for (FaultInfo fi : o.getFaults()) { mpiMap.put(fi, fi.getMessageParts()); QName name = getFaultName(o.getInterface(), o, exClass, beanClass); List<MessagePartInfo> mpis = entry.getValue(); if (mpis.size() != 1) { Message message = new Message("NO_FAULT_PART", LOG, fi.getFaultName()); LOG.log(Level.WARNING, message.toString()); if (mpi.isElement()) { ns = mpi.getElementQName().getNamespaceURI(); } else { ns = mpi.getTypeQName().getNamespaceURI(); if (mpi.getConcreteName().getLocalPart().equals(name.getLocalPart()) && name.getNamespaceURI().equals(ns)) { fi.setProperty(Class.class.getName(), exClass); mpi.setTypeClass(beanClass); sendEvent(Event.OPERATIONINFO_FAULT, o, exClass, fi);
QName qname = new QName(exDetail.getNamespaceURI(), exDetail.getLocalName()); BindingInfo bindingInfo = ((ReliableJMSTransportDestination) destination).getEndpointInfo().getBinding(); for (BindingOperationInfo b : bindingInfo.getOperations()) { Collection<BindingFaultInfo> bindingFaults = b.getFaults(); if (bindingFaults != null) { for (BindingFaultInfo bindingFaultInfo : bindingFaults) { if (bindingFaultInfo.getFaultInfo().getMessageParts().get(0).getConcreteName().equals( qname)) { String currentOperationName = b.getOperationInfo().getName().toString(); if (operationName.equals(currentOperationName)) { contextInfo.setCorrelationID(correlationID); if (matchingBindingOperationInfo != null) { contextInfo.setWsdlOperation(matchingBindingOperationInfo.getName()); contextInfo.setWsdlService((QName) exchange.get("javax.xml.ws.wsdl.service")); contextInfo.setWsdlInterface((QName) exchange.get("javax.xml.ws.wsdl.interface"));
for (BindingFaultInfo faultInfo : b.getFaults()) { SoapFault soapFault = SOAPBindingUtil.createSoapFault(extensionRegistry, isSoap12); soapFault.setUse("literal"); soapFault.setName(faultInfo.getFaultInfo().getFaultName().getLocalPart()); faultInfo.addExtensor(soapFault); SoapOperationInfo soi = b.getExtensor(SoapOperationInfo.class); boolean isRpc = "rpc".equals(soapOperation.getStyle()); b.addExtensor(soapOperation); if (b.getInput() != null) { bodyParts = new ArrayList<>(); for (MessagePartInfo part : b.getInput().getMessageParts()) { bodyParts.add(part.getName().getLocalPart()); BindingOutput.class, isSoap12); soapHeader.setMessage(b.getOutput().getMessageInfo().getName()); soapHeader.setPart(headerInfo.getPart().getName().getLocalPart()); soapHeader.setUse("literal");
private boolean checkBindingOperationFault(BindingFaultInfo bfi) { return (bfi.getFaultInfo() != null) && (bfi.getFaultInfo().getFaultName() != null) && (bfi.getBindingOperation().getName() != null) && (bfi.getBindingOperation().getBinding() != null) && (bfi.getBindingOperation().getBinding().getName() != null) && wsdl11XPointer.matchesBindingOperationFault( bfi.getFaultInfo().getFaultName().getNamespaceURI(), bfi.getBindingOperation().getBinding().getName().getLocalPart(), bfi.getBindingOperation().getName().getLocalPart(), bfi.getFaultInfo().getFaultName().getLocalPart()); }
private static boolean matchFault(Throwable t, FaultInfo fi) { //REVISIT not sure if this class-based comparison works in general as the fault class defined // in the service interface has no direct relationship to the message body's type. MessagePartInfo fmpi = fi.getFirstMessagePart(); Class<?> fiTypeClass = fmpi.getTypeClass(); if (fiTypeClass != null && t.getClass().isAssignableFrom(fiTypeClass)) { return true; } // CXF-6575 QName fiName = fmpi.getConcreteName(); WebFault wf = t.getClass().getAnnotation(WebFault.class); return wf != null && fiName != null && wf.targetNamespace() != null && wf.targetNamespace().equals(fiName.getNamespaceURI()) && wf.name() != null && wf.name().equals(fiName.getLocalPart()); }
private void createFaultDetail(Document faultData, FaultInfo faultInfo, Fault faultEx) { MessagePartInfo partInfo = faultInfo.getMessageParts().get(0); QName partInfoName = partInfo.getElementQName(); Document faultDoc = DOMUtils.getEmptyDocument(); Element faultElement = faultDoc.createElement("detail"); Element partElement = faultDoc.createElementNS(partInfoName.getNamespaceURI(), partInfoName.getLocalPart()); Element faultDataElement = (Element) faultData.getFirstChild(); Node node = faultDataElement.getFirstChild(); while (node != null) { Node importedFaultData = faultDoc.importNode(node, true); partElement.appendChild(importedFaultData); node = node.getNextSibling(); } faultElement.appendChild(partElement); faultEx.setDetail(faultElement); }
private JavaException getExceptionClass(JavaMethod method, FaultInfo faultInfo) { for (JavaException exception : method.getExceptions()) { QName faultName = faultInfo.getName(); if (exception.getTargetNamespace().equals(faultName.getNamespaceURI()) && exception.getName().toLowerCase().startsWith(faultName.getLocalPart().toLowerCase())) { return exception; } } return null; } }
protected void processFaultDetail(Fault fault, Message msg) { if (fault.getDetail() == null) { return; } Element exDetail = (Element) DOMUtils.getChild(fault.getDetail(), Node.ELEMENT_NODE); if (exDetail == null) { return; } QName qname = new QName(exDetail.getNamespaceURI(), exDetail .getLocalName()); faultWanted = null; BindingOperationInfo boi = msg.getExchange().get( BindingOperationInfo.class); if (boi.isUnwrapped()) { boi = boi.getWrappedOperation(); } for (BindingFaultInfo bfi : boi.getFaults()) { for (MessagePartInfo mpi : bfi.getFaultInfo().getMessageParts()) { if (qname.equals(mpi.getConcreteName())) { faultWanted = bfi; msg.put(BindingFaultInfo.class, faultWanted); break; } } if (faultWanted != null) { break; } } }
public void end(FaultInfo fault) { MessagePartInfo part = fault.getFirstMessagePart(); Class<?> cls = part.getTypeClass(); Class<?> cl2 = (Class<?>)fault.getProperty(Class.class.getName()); if (cls != cl2) { QName name = (QName)fault.getProperty("elementName"); part.setElementQName(name); JAXBBeanInfo beanInfo = getBeanInfo(cls); if (beanInfo == null) { throw new Fault(new Message("NO_BEAN_INFO", LOG, cls.getName())); SchemaInfo schemaInfo = serviceInfo.getSchema(part.getElementQName().getNamespaceURI()); if (schemaInfo != null && !isExistSchemaElement(schemaInfo.getSchema(), part.getElementQName())) { el.setName(part.getElementQName().getLocalPart()); el.setNillable(true); SchemaInfo schemaInfo = serviceInfo.getSchema(part.getElementQName().getNamespaceURI()); if (schemaInfo == null || isExistSchemaElement(schemaInfo.getSchema(), part.getElementQName())) {
private void processFault(JavaMethod method, FaultInfo faultMessage) throws ToolException { JavaModel model = method.getInterface().getJavaModel(); String name = NameUtil.mangleNameToClassName(faultMessage.getName().getLocalPart()); String namespace = faultMessage.getName().getNamespaceURI(); String packageName = ProcessorUtil.parsePackageName(namespace, context.mapPackageName(namespace)); if (namespace.equals(method.getInterface().getNamespace())) { JAXWSBinding jaxwsBinding = faultMessage.getExtensor(JAXWSBinding.class); if (jaxwsBinding != null) { if (jaxwsBinding.getPackage() != null) { method.addException(new JavaException(faultMessage.getName().getLocalPart(), samePackage ? name : fullClassName, namespace)); List<MessagePartInfo> faultParts = faultMessage.getMessageParts(); String fNamespace = null; if (part.getElementQName() != null) { fNamespace = part.getElementQName().getNamespaceURI(); fName = part.getConcreteName().getLocalPart(); } else { fNamespace = part.getTypeQName().getNamespaceURI(); expClass.setClassJavaDoc(faultMessage.getDocumentation());
message.getExchange().getBindingOperationInfo(); if (bindingOpInfo != null) { if (bindingOpInfo.isUnwrappedCapable()) { bindingOpInfo = bindingOpInfo.getUnwrappedOperation(); MessageInfo msgInfo = ContextUtils.isRequestor(message) ? bindingOpInfo.getOperationInfo().getInput() : bindingOpInfo.getOperationInfo().getOutput(); String cachedAction = (String)msgInfo.getProperty(ContextUtils.ACTION); if (cachedAction == null) { action = getActionFromMessageAttributes(msgInfo); for (BindingFaultInfo bfi : bindingOpInfo.getFaults()) { FaultInfo fi = bfi.getFaultInfo(); if (fi.size() == 0) { continue; if (fi.getExtensionAttributes() == null) { continue; fi.getExtensionAttributes().get(Names.WSAW_ACTION_QNAME); if (attr == null) { attr = (String) fi.getExtensionAttributes() .get(new QName(Names.WSA_NAMESPACE_WSDL_NAME_OLD, Names.WSAW_ACTION_NAME));
protected void buildBindingFault(Definition def, BindingOperation bindingOperation, Collection<BindingFaultInfo> bindingFaultInfos) { BindingFault bindingFault = null; for (BindingFaultInfo bindingFaultInfo : bindingFaultInfos) { bindingFault = def.createBindingFault(); addDocumentation(bindingFault, bindingFaultInfo.getDocumentation()); bindingFault.setName(bindingFaultInfo.getFaultInfo().getFaultName().getLocalPart()); bindingOperation.addBindingFault(bindingFault); addExtensibilityAttributes(def, bindingFault, bindingFaultInfo.getExtensionAttributes()); addExtensibilityElements(def, bindingFault, getWSDL11Extensors(bindingFaultInfo)); } }
List<Policy> later = CastUtils.cast((List<?>)binfo.getOperationInfo() .removeProperty(EXTRA_POLICIES)); if (later != null) { for (Policy p : later) { case BINDING_OPERATION: addPolicy(binfo, service, p, cls, binfo.getName().getLocalPart() + "BindingOpPolicy"); break; case BINDING_OPERATION_INPUT: addPolicy(binfo.getInput(), service, p, cls, binfo.getName().getLocalPart() + "BindingOpInputPolicy"); break; case BINDING_OPERATION_OUTPUT: addPolicy(binfo.getOutput(), service, p, cls, binfo.getName().getLocalPart() + "BindingOpOutputPolicy"); break; case BINDING_OPERATION_FAULT: { for (BindingFaultInfo f : binfo.getFaults()) { if (p.faultClass().equals(f.getFaultInfo() .getProperty(Class.class.getName()))) { addPolicy(f, service, p, cls, f.getFaultInfo().getName().getLocalPart() + "BindingOpFaultPolicy");