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; }
private void generateMessagePart(ClassWriter cw, MessagePartInfo mpi, Method method, String className) { if (Boolean.TRUE.equals(mpi.getProperty(ReflectionServiceFactoryBean.HEADER))) { return; String name = mpi.getName().getLocalPart(); Class<?> clz = mpi.getTypeClass(); Object obj = mpi.getProperty(ReflectionServiceFactoryBean.RAW_CLASS); if (obj != null) { clz = (Class<?>)obj; Type genericType = (Type)mpi.getProperty(ReflectionServiceFactoryBean.GENERIC_TYPE); if (genericType instanceof ParameterizedType) { ParameterizedType tp = (ParameterizedType)genericType; av0.visit("name", name); if (Boolean.TRUE.equals(factory.isWrapperPartQualified(mpi))) { av0.visit("namespace", mpi.getConcreteName().getNamespaceURI());
QName catchAll = new QName("http://cxf.apache.org/jaxws/provider", "invoke"); bop.getOperationInfo().setUnwrappedOperation(null); if (o.getInput() != null) { final List<MessagePartInfo> messageParts; if (o.getInput().getMessagePartsNumber() == 0) { MessagePartInfo inf = o.getInput().addMessagePart(o.getName()); inf.setConcreteName(o.getName()); messageParts = o.getInput().getMessageParts(); bop.getInput().setMessageParts(messageParts); inf.setTypeClass(c); break; inf.setConcreteName(new QName(o.getName().getNamespaceURI(), inf.setTypeClass(c); break; mpi.setElement(true); mpi.setTypeClass(c); mpi.setTypeQName(Constants.XSD_ANYTYPE); mpi.setElement(true); mpi.setTypeClass(c); mpi.setTypeQName(Constants.XSD_ANYTYPE);
private Annotation[] getMethodParameterAnnotations(final MessagePartInfo mpi) { Annotation[] a = (Annotation[])mpi.getProperty(ReflectionServiceFactoryBean.PARAM_ANNOTATION); if (a != null) { return a; } Annotation[][] paramAnno = (Annotation[][])mpi .getProperty(ReflectionServiceFactoryBean.METHOD_PARAM_ANNOTATIONS); int index = mpi.getIndex(); if (paramAnno != null && index < paramAnno.length && index >= 0) { return paramAnno[index]; } return null; }
List<Class<?>> partClasses = new ArrayList<>(); QName wrapperName = null; for (MessagePartInfo p : wrappedMessageInfo.getMessageParts()) { if (p.getTypeClass() == wrapperClass) { wrapperName = p.getElementQName(); for (MessagePartInfo p : messageInfo.getMessageParts()) { if (p.getTypeClass() == null) { ensureSize(partNames, p.getIndex()); ensureSize(elTypeNames, p.getIndex()); ensureSize(partClasses, p.getIndex()); partNames.set(p.getIndex(), p.getName().getLocalPart()); if (p.getTypeQName() == null) { elementType = p.getTypeQName().getLocalPart(); elTypeNames.set(p.getIndex(), elementType); partClasses.set(p.getIndex(), p.getTypeClass());
private void writeWrapper(Message message, BindingOperationInfo bop, XMLStreamWriter xmlWriter) { if (bop.isUnwrapped()) { MessageInfo messageInfo; if (isRequestor(message)) { messageInfo = bop.getWrappedOperation().getOperationInfo().getInput(); } else { messageInfo = bop.getWrappedOperation().getOperationInfo().getOutput(); } MessagePartInfo outPart = messageInfo.getMessageParts().get(0); QName name = outPart.getConcreteName(); try { String pfx = StaxUtils.getUniquePrefix(xmlWriter, name.getNamespaceURI()); xmlWriter.setPrefix(pfx, name.getNamespaceURI()); xmlWriter.writeStartElement(pfx, name.getLocalPart(), name.getNamespaceURI()); xmlWriter.writeNamespace(pfx, name.getNamespaceURI()); } catch (XMLStreamException e) { throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_WRITE_EXC", BUNDLE), e); } } }
protected BindingOperationInfo findOperation(String suffix) { BindingInfo bi = client.getEndpoint().getBinding().getBindingInfo(); for (BindingOperationInfo boi : bi.getOperations()) { SoapOperationInfo soi = boi.getExtensor(SoapOperationInfo.class); String soapAction = soi != null ? soi.getAction() : null; Object o = boi.getOperationInfo().getInput() .getExtensionAttribute(new QName("http://www.w3.org/2007/05/addressing/metadata", "Action")); if (o instanceof QName) { o = ((QName)o).getLocalPart(); if (suffix.endsWith(boi.getName().getLocalPart())) { return boi; if (boi.getInput().getMessageInfo().getMessagePartsNumber() > 0) { MessagePartInfo mpi = boi.getInput().getMessageInfo().getFirstMessagePart(); if ("RequestSecurityToken".equals(mpi.getConcreteName().getLocalPart())) { return boi;
protected void checkForElement(ServiceInfo serviceInfo, MessagePartInfo mpi) { SchemaInfo si = getOrCreateSchema(serviceInfo, mpi.getElementQName().getNamespaceURI(), getQualifyWrapperSchema()); XmlSchemaElement e = si.getSchema().getElementByName(mpi.getElementQName().getLocalPart()); if (e != null) { mpi.setXmlSchema(e); return; } XmlSchema schema = si.getSchema(); si.setElement(null); //cached element is now invalid XmlSchemaElement el = new XmlSchemaElement(schema, true); el.setName(mpi.getElementQName().getLocalPart()); el.setNillable(true); XmlSchemaType tp = (XmlSchemaType)mpi.getXmlSchema(); if (tp == null) { throw new ServiceConstructionException(new Message("INTRACTABLE_PART", LOG, mpi.getName(), mpi.getMessageInfo().getName())); } el.setSchemaTypeName(tp.getQName()); mpi.setXmlSchema(el); }
private void createMessagePartInfo(OperationInfo oi, Class<?> type, QName qname, Method m, boolean input) { if (type == void.class || Source.class.isAssignableFrom(type)) { return; } if (InjectionUtils.isPrimitive(type) || Response.class == type) { return; } QName mName = new QName(qname.getNamespaceURI(), (input ? "in" : "out") + m.getName()); MessageInfo ms = oi.createMessage(mName, input ? MessageInfo.Type.INPUT : MessageInfo.Type.OUTPUT); if (input) { oi.setInput("in", ms); } else { oi.setOutput("out", ms); } QName mpQName = JAXRSUtils.getClassQName(type); MessagePartInfo mpi = ms.addMessagePart(mpQName); mpi.setConcreteName(mpQName); mpi.setTypeQName(mpQName); mpi.setTypeClass(type); }
public static List<String> getOperationInputPartNames(OperationInfo operation) { List<String> names = new ArrayList<>(); List<MessagePartInfo> parts = operation.getInput().getMessageParts(); if (parts == null || parts.isEmpty()) { return names; } for (MessagePartInfo part : parts) { XmlSchemaAnnotated schema = part.getXmlSchema(); if (schema instanceof XmlSchemaElement && ((XmlSchemaElement)schema).getSchemaType() instanceof XmlSchemaComplexType) { XmlSchemaElement element = (XmlSchemaElement)schema; XmlSchemaComplexType cplxType = (XmlSchemaComplexType)element.getSchemaType(); XmlSchemaSequence seq = (XmlSchemaSequence)cplxType.getParticle(); if (seq == null || seq.getItems() == null) { return names; } for (int i = 0; i < seq.getItems().size(); i++) { XmlSchemaElement elChild = (XmlSchemaElement)seq.getItems().get(i); names.add(elChild.getName()); } } else { names.add(part.getConcreteName().getLocalPart()); } } return names; }
MessagePartInfo mpi = wrapper.addMessagePart(new QName(namespaceURI, el.getName())); mpi.setTypeQName(el.getSchemaTypeName()); mpi.setElement(true); mpi.setElementQName(el.getWireName()); mpi.setConcreteName(el.getWireName()); mpi.setXmlSchema(el); } else if (el.getRef().getTargetQName() != null) { MessagePartInfo mpi = wrapper.addMessagePart(el.getRef().getTargetQName()); mpi.setTypeQName(el.getRef().getTargetQName()); mpi.setElementQName(el.getRef().getTargetQName()); mpi.setElement(true); mpi.setXmlSchema(el); mpi.setProperty("isRefElement", true); MessagePartInfo mpi = wrapper.addMessagePart(new QName(namespaceURI, el.getName())); mpi.setElementQName(mpi.getName()); mpi.setConcreteName(el.getWireName()); mpi.setElement(true); mpi.setXmlSchema(el);
parts = bop.getOutput().getMessageParts(); } else { parts = bop.getInput().getMessageParts(); throw new Fault(new org.apache.cxf.common.i18n.Message( "NOT_EQUAL_ARG_NUM", BUNDLE)); MessagePartInfo part = parts.get(idx); Object obj = objs.get(idx); if (!part.isElement()) { if (part.getTypeClass() == String.class) { xmlWriter.writeStartElement(NMRConstants.NS_JBI_WRAPPER, NMRConstants.JBI_WRAPPER_PART.getLocalPart()); xmlWriter.writeCharacters(obj.toString()); xmlWriter.writeEndElement(); } else { part = new MessagePartInfo(part.getName(), part.getMessageInfo()); part.setElement(false); part.setConcreteName(NMRConstants.JBI_WRAPPER_PART); dataWriter.write(obj, part, xmlWriter); NMRConstants.JBI_WRAPPER_PART.getLocalPart()); dataWriter.write(obj, part, xmlWriter); xmlWriter.writeEndElement(); throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_WRITE_EXC", BUNDLE), e);
protected MessagePartInfo getFaultMessagePartInfo(OperationInfo opInfo, QName faultName) { Iterator<FaultInfo> faults = opInfo.getFaults().iterator(); while (faults.hasNext()) { FaultInfo fault = faults.next(); MessagePartInfo partInfo = fault.getMessageParts().get(0); if (partInfo.isElement() && partInfo.getElementQName().getLocalPart().equals(faultName.getLocalPart())) { return partInfo; } else if (partInfo.getTypeQName().getLocalPart().equals(faultName.getLocalPart())) { return partInfo; } } return null; }
protected QName getMessageParamQName(MessageInfo msgInfo, String paramName, int index) { QName paramQName = null; MessagePartInfo part = msgInfo.getMessageParts().get(index); if (part != null && part.isElement()) { paramQName = part.getElementQName(); } else if (part != null) { paramQName = part.getName(); } return paramQName; }
if (bop.isUnwrapped()) { bop = bop.getWrappedOperation(); BindingMessageInfo bmi = client ? bop.getOutput() : bop.getInput(); SoapBodyInfo sbi = bmi.getExtensor(SoapBodyInfo.class); String partName = mpi.getConcreteName().getLocalPart(); if (foundAtts.contains(mpi.getIndex())) { continue; foundAtts.add(mpi.getIndex()); String ct = dh.getContentType(); Object o = null; Class<?> typeClass = mpi.getTypeClass(); if (DataHandler.class.isAssignableFrom(typeClass)) { o = dh;
String partName = mpi.getConcreteName().getLocalPart(); String ct = (String) mpi.getProperty(Message.CONTENT_TYPE); int idx = mpi.getIndex(); Object o = outObjects.get(idx); throw new Fault(new org.apache.cxf.common.i18n.Message("ATTACHMENT_NOT_SUPPORTED", LOG, o.getClass()));
OperationInfo op = binding.getInterface().getOperation(bo.getName()); if (op.getInput() != null && op.getInput().getMessagePartsNumber() == 1) { MessagePartInfo part = op.getInput().getFirstMessagePart(); if (part.getElementQName() == null) { continue; QName mName = part.getElementQName(); String action = getWSAAction(op.getInput()); QName opName = uniqueNames.get(mName); Message msg = new Message("NON_UNIQUE_BODY", LOG, endpoint.getName(), op.getName(), opName, mName); addErrorMessage(msg.toString()); return false; for (BindingFaultInfo fault : bo.getFaults()) { if (fault.getFaultInfo().getMessagePartsNumber() > 1) { Message msg = new Message("FAULT_WITH_MULTIPLE_PARTS", LOG, fault.getFaultInfo().getName() .getLocalPart()); addErrorMessage(msg.toString()); return false;
private void processInput(JavaMethod method, MessageInfo inputMessage) throws ToolException { if (requireOutOfBandHeader()) { try { Class.forName("org.apache.cxf.binding.soap.SoapBindingFactory"); } catch (Exception e) { LOG.log(Level.WARNING, new Message("SOAP_MISSING", LOG).toString()); } } JAXWSBinding mBinding = inputMessage.getOperation().getExtensor(JAXWSBinding.class); for (MessagePartInfo part : inputMessage.getMessageParts()) { if (isOutOfBandHeader(part) && !requireOutOfBandHeader()) { continue; } JavaParameter param = getParameterFromPart(method, part, JavaType.Style.IN); if (mBinding != null && mBinding.getJaxwsParas() != null) { for (JAXWSParameter jwp : mBinding.getJaxwsParas()) { if (part.getName().getLocalPart().equals(jwp.getPart())) { param.setName(jwp.getName()); } } } addParameter(part, method, param); } }
private String createResourceName(String noun, BindingOperationInfo bopWithParts) { StringBuilder builder = new StringBuilder(); builder.append(noun); for (MessagePartInfo part : bopWithParts.getInput().getMessageParts()) { if (isXSDPrimitive(part)) { builder.append("/{").append(part.getName().getLocalPart()).append("}"); } } return builder.toString(); }
public static String getPartType(MessagePartInfo part) { return part.getConcreteName().getLocalPart(); }