List of usage examples for javax.xml.bind JAXBElement JAXBElement
public JAXBElement(QName name, Class<T> declaredType, T value)
From source file:ddf.security.realm.sts.StsRealm.java
/** * Creates a binary security token based on the provided credential. *//*from w ww . j av a 2 s . c o m*/ private String getBinarySecurityToken(String credential) { BinarySecurityTokenType binarySecurityTokenType = new BinarySecurityTokenType(); binarySecurityTokenType.setValueType("#CAS"); binarySecurityTokenType.setEncodingType(WSConstants.SOAPMESSAGE_NS + "#Base64Binary"); binarySecurityTokenType.setId("CAS"); binarySecurityTokenType.setValue(Base64.encode(credential.getBytes())); JAXBElement<BinarySecurityTokenType> binarySecurityTokenElement = new JAXBElement<BinarySecurityTokenType>( new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "BinarySecurityToken"), BinarySecurityTokenType.class, binarySecurityTokenType); Writer writer = new StringWriter(); JAXB.marshal(binarySecurityTokenElement, writer); String binarySecurityToken = writer.toString(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Binary Security Token: " + binarySecurityToken); } return binarySecurityToken; }
From source file:fr.fastconnect.factory.tibco.bw.maven.packaging.ApplicationManagement.java
/** * /application/services/adapter//w w w . j av a 2s . com */ private Adapter getAdapter(String name) { List<Adapter> services = getAdapterServices(); if (services != null) { for (Adapter service : services) { if (service.getName().equals(name)) { return service; } } } Adapter result = new Adapter(); result.setName(name); services.add(result); QName qName = new QName(APPLICATION_MANAGEMENT_NAMESPACE, "adapter"); JAXBElement<Adapter> j = new JAXBElement<Adapter>(qName, Adapter.class, result); application.getServices().getBaseService().add(j); return result; }
From source file:gov.va.ds4p.ds4pmobileportal.pep.XACMLPolicyEnforcement.java
private String dumpResponseToString(ResultType resp) { String res = ""; JAXBElement<ResultType> element = new JAXBElement<ResultType>( new QName("urn:oasis:names:tc:xacml:2.0:context:schema:os", "Result"), ResultType.class, resp); try {/*w w w . ja va 2 s . c o m*/ JAXBContext context = JAXBContext.newInstance(ResultType.class); Marshaller marshaller = context.createMarshaller(); StringWriter sw = new StringWriter(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); marshaller.marshal(element, sw); res = sw.toString(); } catch (Exception ex) { ex.printStackTrace(); } return res; }
From source file:org.castor.jaxb.CastorMarshallerTest.java
/** * Creates the {@link JAXBElement} from passed object. * * @param obj the object to use/* w w w .j a v a 2s . co m*/ * * @return the {@link JAXBElement} that wrapps the passed entity */ private JAXBElement createJAXBElement(Object obj) { return new JAXBElement(new QName(""), obj.getClass(), obj); }
From source file:com.evolveum.midpoint.prism.util.JaxbTestUtil.java
public static String marshalWrap(Object jaxbObject) throws JAXBException { JAXBElement<Object> jaxbElement = new JAXBElement<Object>(DEFAULT_ELEMENT_NAME, (Class) jaxbObject.getClass(), jaxbObject); return getInstance().marshalElementToString(jaxbElement); }
From source file:com.evolveum.liferay.usercreatehook.ws.ModelPortWrapper.java
@SuppressWarnings("unchecked") private static <T> JAXBElement<T> toJaxbElement(QName name, T value) { return new JAXBElement<T>(name, (Class<T>) value.getClass(), value); }
From source file:com.virtualparadigm.packman.processor.JPackageManager.java
private static void marshallToFile(Collection<Package> packages, String filePath) { try {/*w w w . java2 s .c o m*/ Marshaller marshaller = jaxbContext.createMarshaller(); // removes the xml header: marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); StringWriter stringWriter = new StringWriter(); for (Package installedPackage : packages) { marshaller.marshal( new JAXBElement<Package>(new QName(null, "package"), Package.class, installedPackage), stringWriter); stringWriter.append("\n"); } FileUtils.writeStringToFile(new File(filePath), stringWriter.toString(), "UTF-8"); } catch (Exception e) { logger.error("", e); } }
From source file:com.evolveum.midpoint.prism.marshaller.BeanUnmarshaller.java
/** * Parses either a map entry, or a fictitious heterogeneous list property. * * It makes sure that a 'key' property is inserted into 'bean' object, being sourced from 'node' structure. * Node itself can be single-valued or multi-valued, corresponding to single or multi-valued 'key' property. * ---// w w w . ja v a2s . co m * A notable (and quite ugly) exception is processing of fictitious heterogeneous lists. * In this case we have a ListXNode that should be interpreted as a MapXNode, inserting fictitious property * named after abstract multivalued property in the parent bean. * * For example, when we have (embedded in ExecuteScriptType): * { * pipeline: *[ * { element: search, ... }, * { element: sequence, ... } * ] * } * * ...it should be, in fact, read as if it would be: * * { * pipeline: { * scriptingExpression: [ * { type: SearchExpressionType, ... }, * { type: ExpressionSequenceType, ... } * ] * } * } * * (The only difference is in element names, which are missing in the latter snippet, but let's ignore that here.) * * Fictitious heterogeneous list entry here is "scriptingExpression", a property of pipeline (ExpressionPipelineType). * * We have to create the following data structure (corresponding to latter snippet): * * instance of ExecuteScriptType: * scriptingExpression = instance of JAXBElement(pipeline, ExpressionPipelineType): [1] * scriptingExpression = List of [2] * - JAXBElement(search, SearchExpressionType) * - JAXBElement(sequence, ExpressionSequenceType) * * We in fact invoke this method twice with the same node (a two-entry list, marked as '*' in the first snippet): * 1) bean=ExecuteScriptType, key=pipeline, node=HList(*), isHeteroListProperty=false * 2) bean=ExpressionPipelineType, key=scriptingExpression, node=HList(*), isHeteroListProperty=true <<< * * During the first call we fill in scriptingExpression (single value) in ExecuteScriptType [1]; during the second one * we fill in scriptingExpression (multivalued) in ExpressionPipelineType [2]. * * Now let's expand the sample. * * This XNode tree: * { * pipeline: *[ * { element: search, type: RoleType, searchFilter: {...}, action: log }, * { element: sequence, value: **[ * { element: action, type: delete }, * { element: action, type: assign, parameter: {...} }, * { element: search, type: UserType } * ] } * ] * } * * Should be interpreted as: * { * pipeline: { * scriptingExpression: [ * { type: SearchExpressionType, type: RoleType, searchFilter: {...}, action: log } * { type: ExpressionSequenceType, scriptingExpression: [ * { type: ActionExpressionType, type: delete }, * { type: ActionExpressionType, type: assign, parameter: {...} }, * { type: SearchExpressionType, type: UserType } * ] } * ] * } * } * * Producing the following data: * * instance of ExecuteScriptType: * scriptingExpression = instance of JAXBElement(pipeline, ExpressionPipelineType): [1] * scriptingExpression = List of [2] * - JAXBElement(search, instance of SearchExpressionType): * type: RoleType, * searchFilter: (...), * action: log, * - JAXBElement(sequence, instance of ExpressionSequenceType): * scriptingExpression = List of * - JAXBElement(action, instance of ActionExpressionType): * type: delete * - JAXBElement(action, instance of ActionExpressionType): * type: assign * parameter: (...), * - JAXBElement(search, instance of SearchExpressionType): * type: UserType * * Invocations of this method will be: * 1) bean=ExecuteScriptType, key=pipeline, node=HList(*), isHeteroListProperty=false * 2) bean=ExpressionPipelineType, key=scriptingExpression, node=HList(*), isHeteroListProperty=true <<< * 3) bean=SearchExpressionType, key=type, node='type: c:RoleType', isHeteroListProperty=false * 4) bean=SearchExpressionType, key=searchFilter, node=XNode(map:1 entries), isHeteroListProperty=false * 5) bean=SearchExpressionType, key=action, node=XNode(map:1 entries), isHeteroListProperty=false * 6) bean=ActionExpressionType, key=type, node='type: log', isHeteroListProperty=false * 7) bean=ExpressionSequenceType, key=scriptingExpression, node=HList(**), isHeteroListProperty=true <<< * 8) bean=ActionExpressionType, key=type, node='type: delete', isHeteroListProperty=false * 9) bean=ActionExpressionType, key=type, node='type: assign', isHeteroListProperty=false * 10) bean=ActionExpressionType, key=parameter, node=XNode(map:2 entries), isHeteroListProperty=false * 11) bean=ActionParameterValueType, key=name, node='name: role', isHeteroListProperty=false * 12) bean=ActionParameterValueType, key=value, node='value: rome555c-7797-11e2-94a6-001e8c717e5b', isHeteroListProperty=false * 13) bean=SearchExpressionType, key=type, node='type: UserType', isHeteroListProperty=false * * Here we have 2 calls with isHeteroListProperty=true; first for pipeline.scriptingExpression, second for * sequence.scriptingExpression. */ private <T> void unmarshalEntry(@NotNull T bean, @NotNull Class<T> beanClass, @NotNull QName key, @NotNull XNode node, @NotNull XNode containingNode, boolean isHeteroListProperty, @NotNull ParsingContext pc) throws SchemaException { //System.out.println("bean=" + bean.getClass().getSimpleName() + ", key=" + key.getLocalPart() + ", node=" + node + ", isHeteroListProperty=" + isHeteroListProperty); final String propName = key.getLocalPart(); // this code is just to keep this method reasonably short PropertyAccessMechanism mechanism = new PropertyAccessMechanism(); if (!mechanism.compute(bean, beanClass, propName, key, node, pc)) { return; } final String actualPropertyName = mechanism.actualPropertyName; final boolean storeAsRawType = mechanism.storeAsRawType; final Method getter = mechanism.getter; final Method setter = mechanism.setter; final boolean wrapInJaxbElement = mechanism.wrapInJaxbElement; if (Element.class.isAssignableFrom(mechanism.paramType)) { throw new IllegalArgumentException( "DOM not supported in field " + actualPropertyName + " in " + beanClass); } // The type T that is expected by the bean, i.e. either by // - setMethod(T value), or // - Collection<T> getMethod() // We use it to retrieve the correct value when parsing the node. // We might specialize it using the information derived from the node (to deal with inclusive polymorphism, // i.e. storing ExclusionPolicyConstraintType where AbstractPolicyConstraintType is expected). @NotNull Class<?> paramType; if (!storeAsRawType && !isHeteroListProperty) { Class<?> t = specializeParamType(node, mechanism.paramType, pc); if (t == null) { // indicates a problem return; } else { paramType = t; } } else { paramType = mechanism.paramType; } if (!(node instanceof ListXNode) && Object.class.equals(paramType) && !storeAsRawType) { throw new IllegalArgumentException("Object property (without @Raw) not supported in field " + actualPropertyName + " in " + beanClass); } // String paramNamespace = inspector.determineNamespace(paramType); boolean problem = false; Object propValue = null; Collection<Object> propValues = null; // For heterogeneous lists we have to create multi-valued fictitious property first. So we have to treat node as a map // (instead of list) and process it as a single value. Only when if (node instanceof ListXNode && (!node.isHeterogeneousList() || isHeteroListProperty)) { ListXNode xlist = (ListXNode) node; if (setter != null) { try { Object value = unmarshalSinglePropValue(node, actualPropertyName, paramType, storeAsRawType, beanClass, pc); if (wrapInJaxbElement) { propValue = wrapInJaxbElement(value, mechanism.objectFactory, mechanism.elementFactoryMethod, propName, beanClass, pc); } else { propValue = value; } } catch (SchemaException e) { problem = processSchemaException(e, node, pc); } } else { // No setter, we have to use collection getter propValues = new ArrayList<>(xlist.size()); for (XNode xsubsubnode : xlist) { try { Object valueToAdd; Object value = unmarshalSinglePropValue(xsubsubnode, actualPropertyName, paramType, storeAsRawType, beanClass, pc); if (value != null) { if (isHeteroListProperty) { QName elementName = xsubsubnode.getElementName(); if (elementName == null) { // TODO better error handling throw new SchemaException( "Heterogeneous list with a no-elementName node: " + xsubsubnode); } Class valueClass = value.getClass(); QName jaxbElementName; if (QNameUtil.hasNamespace(elementName)) { jaxbElementName = elementName; } else { // Approximate solution: find element in schema registry - check for type compatibility // in order to exclude accidental name matches (like c:expression/s:expression). Optional<ItemDefinition> itemDefOpt = getSchemaRegistry() .findItemDefinitionsByElementName(elementName).stream() .filter(def -> getSchemaRegistry() .findTypeDefinitionsByType(def.getTypeName()).stream() .anyMatch(typeDef -> typeDef.getCompileTimeClass() != null && typeDef.getCompileTimeClass() .isAssignableFrom(valueClass))) .findFirst(); if (itemDefOpt.isPresent()) { jaxbElementName = itemDefOpt.get().getName(); } else { LOGGER.warn("Heterogeneous list member with unknown element name '" + elementName + "': " + value); jaxbElementName = elementName; // unqualified } } @SuppressWarnings("unchecked") JAXBElement jaxbElement = new JAXBElement<>(jaxbElementName, valueClass, value); valueToAdd = jaxbElement; } else { if (wrapInJaxbElement) { valueToAdd = wrapInJaxbElement(value, mechanism.objectFactory, mechanism.elementFactoryMethod, propName, beanClass, pc); } else { valueToAdd = value; } } propValues.add(valueToAdd); } } catch (SchemaException e) { problem = processSchemaException(e, xsubsubnode, pc); } } } } else { try { propValue = unmarshalSinglePropValue(node, actualPropertyName, paramType, storeAsRawType, beanClass, pc); if (wrapInJaxbElement) { propValue = wrapInJaxbElement(propValue, mechanism.objectFactory, mechanism.elementFactoryMethod, propName, beanClass, pc); } } catch (SchemaException e) { problem = processSchemaException(e, node, pc); } } if (setter != null) { try { setter.invoke(bean, propValue); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { throw new SystemException( "Cannot invoke setter " + setter + " on bean of type " + beanClass + ": " + e.getMessage(), e); } } else if (getter != null) { Object getterReturn; Collection<Object> col; try { getterReturn = getter.invoke(bean); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { throw new SystemException( "Cannot invoke getter " + getter + " on bean of type " + beanClass + ": " + e.getMessage(), e); } try { col = (Collection<Object>) getterReturn; } catch (ClassCastException e) { throw new SystemException("Getter " + getter + " on bean of type " + beanClass + " returned " + getterReturn + " instead of collection"); } if (propValue != null) { col.add(propValue); } else if (propValues != null) { for (Object propVal : propValues) { col.add(propVal); } } else if (!problem) { throw new IllegalStateException("Strange. Multival property " + propName + " in " + beanClass + " produced null values list, parsed from " + containingNode); } if (!isHeteroListProperty) { checkJaxbElementConsistence(col, pc); } } else { throw new IllegalStateException("Uh? No setter nor getter."); } }
From source file:com.aurel.track.exchange.docx.exporter.AssembleWordprocessingMLPackage.java
public static JAXBElement getWrappedFldChar(FldChar fldchar) { return new JAXBElement(new QName(Namespaces.NS_WORD12, "fldChar"), FldChar.class, fldchar); }
From source file:com.flexoodb.common.FlexUtils.java
/** * extracts the plain XML equivalent of the passed object. * * @param obj the object containing the elements that will be used to populate the XML. * @return XML string./*from w w w .jav a 2s. c o m*/ * @see Hashtable *@see Element */ static public String getSimpleXML(Object obj) throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); JAXBContext context = JAXBContext.newInstance(((FlexContainer) obj).getObject().getClass()); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(new JAXBElement(new QName("", ((FlexContainer) obj).getObject().getClass().getSimpleName()), ((FlexContainer) obj).getObject().getClass(), ((FlexContainer) obj).getObject()), bos); return new String(bos.toByteArray()); }