public MapXNodeImpl serializeFilter(ObjectFilter filter) throws SchemaException{ return serializeFilter(filter, prismContext.xnodeSerializer()); }
public static <IV extends PrismValue,ID extends ItemDefinition> List<JAXBElement<RawType>> serializeValueElements(Item<IV,ID> item, String contextDescription) throws SchemaException { if (item == null) { return null; } List<JAXBElement<RawType>> elements = new ArrayList<>(item.size()); for (PrismValue value : item.getValues()) { RootXNode xnode = item.getPrismContext().xnodeSerializer().serialize(value); RawType rawType = new RawType(xnode.getSubnode(), item.getPrismContext()); JAXBElement<RawType> jaxbElement = new JAXBElement<>(SchemaConstants.C_VALUE, RawType.class, rawType); elements.add(jaxbElement); } return elements; }
@Nullable public <T> XNodeImpl marshall(@Nullable T bean, @Nullable SerializationContext ctx) throws SchemaException { if (bean == null) { return null; } Marshaller marshaller = specialMarshallers.get(bean.getClass()); if (marshaller != null) { return marshaller.marshal(bean, ctx); } // avoiding chatty PolyString serializations (namespace declaration + orig + norm) if (bean instanceof PolyString) { bean = (T) ((PolyString) bean).getOrig(); } else if (bean instanceof PolyStringType) { bean = (T) ((PolyStringType) bean).getOrig(); } if (bean instanceof Containerable) { return (XNodeImpl) prismContext.xnodeSerializer().context(ctx).serializeRealValue(bean, new QName("dummy")).getSubnode(); } else if (bean instanceof Enum) { return marshalEnum((Enum) bean, ctx); } else if (bean.getClass().getAnnotation(XmlType.class) != null) { return marshalXmlType(bean, ctx); } else { return marshalToPrimitive(bean, ctx); } }
private static XNode toXNode(ItemDelta delta, @NotNull PrismValue value, DeltaConversionOptions options) throws SchemaException{ return delta.getPrismContext().xnodeSerializer() .definition(delta.getDefinition()) .options(DeltaConversionOptions.isSerializeReferenceNames(options) ? SerializationOptions.createSerializeReferenceNames() : null) .serialize(value) .getSubnode(); }
public XNode serializeToXNode() throws SchemaException { if (xnode != null) { // QName type = xnode.getTypeQName(); // if (xnode instanceof PrimitiveXNode && type != null){ // if (!((PrimitiveXNode)xnode).isParsed()){ // Object realValue = PrismUtil.getXnodeProcessor(prismContext).parseAnyValue(xnode, ParsingContext.createDefault()); // ((PrimitiveXNode)xnode).setValue(realValue, type); // } // } return xnode; } else if (parsed != null) { checkPrismContext(); XNode rv = prismContext.xnodeSerializer().root(new QName("dummy")).serialize(parsed).getSubnode(); prismContext.xnodeMutator().setXNodeType(rv, explicitTypeName, explicitTypeDeclaration); return rv; } else { return null; // or an exception here? } } //endregion
@Test public void test340ParseXNode() throws Exception { System.out.println("===[ test340ParseXNode ]==="); PrismObject<UserType> jack = getJack(); RootXNode xnode = getPrismContext().xnodeSerializer().serialize(jack); measure("parse XNode", () -> getPrismContext().parserFor(xnode).parse()); }
@Test(enabled = false) public void testParseEventHandler() throws Exception { final String TEST_NAME = "testParseEventHandler"; displayTestTitle(TEST_NAME); // GIVEN LexicalProcessor lexicalProcessor = createParser(); PrismContext prismContext = PrismTestUtil.getPrismContext(); // WHEN (parse to xnode) RootXNodeImpl xnode = lexicalProcessor.read(getFileSource(EVENT_HANDLER_FILE_BASENAME), createDefaultParsingContext()); System.out.println("XNode after parsing:"); System.out.println(xnode.debugDump()); // WHEN (parse to prism) EventHandlerType eventHandlerType = prismContext.parserFor(xnode).parseRealValue(EventHandlerChainType.class); // THEN System.out.println("Parsed object:"); System.out.println(eventHandlerType); // WHEN2 (marshalling) MapXNodeImpl marshalled = (MapXNodeImpl) (prismContext.xnodeSerializer().serializeRealValue(eventHandlerType).getSubnode()); System.out.println("XNode after unmarshalling and marshalling back:"); System.out.println(marshalled.debugDump()); }
@Test public void testParseSerialize() throws Exception{ displayTestTitle("testParseSerialize"); PrismContext prismContext = getPrismContext(); PrismParser parser = prismContext.parserFor(getFile()); PrismContainerValue<MappingType> mappingPval = parser.parseItemValue(); System.out.println("\nmappingPval:\n"+mappingPval.debugDump(1)); PrismSerializer<RootXNode> serializer = prismContext.xnodeSerializer(); RootXNode xnode = serializer.root(new QName("dummy")).serialize(mappingPval); System.out.println("\nSerialized xnode:\n"+xnode.debugDump(1)); MapXNode xexpression = (MapXNode)((MapXNode)xnode.getSubnode()).get(new QName("expression")); ListXNode xconstList = (ListXNode) xexpression.get(new QName("const")); XNode xconst = xconstList.get(0); if (!(xconst instanceof PrimitiveXNode<?>)) { AssertJUnit.fail("const is not primitive: "+xconst); } }
@Test public void testAccountRefDelta() throws Exception { System.out.println("===[ testAccountRefDelta ]===="); // GIVEN ObjectModificationType objectChange = new ObjectModificationType(); objectChange.setOid("12345"); ItemDeltaType modificationDeleteAccountRef = new ItemDeltaType(); modificationDeleteAccountRef.setModificationType(ModificationTypeType.DELETE); ObjectReferenceType accountRefToDelete = new ObjectReferenceType(); accountRefToDelete.setOid("54321"); PrismContext prismContext = getPrismContext(); RawType modificationValue = new RawType(prismContext.xnodeSerializer().root(new QName("dummy")).serializeRealValue(accountRefToDelete).getSubnode(), prismContext); modificationDeleteAccountRef.getValue().add(modificationValue); objectChange.getItemDelta().add(modificationDeleteAccountRef); ItemPathType itemPathType = new ItemPathType(UserType.F_LINK_REF); modificationDeleteAccountRef.setPath(itemPathType); PrismObjectDefinition<UserType> objDef = PrismTestUtil.getObjectDefinition(UserType.class); // WHEN Collection<? extends ItemDelta> modifications = DeltaConvertor.toModifications(objectChange, objDef); // THEN assertNotNull("Null modifications", modifications); assertFalse("Empty modifications", modifications.isEmpty()); // TODO: more asserts }
XNode serializedXNode = prismContext.xnodeSerializer() .options(SerializationOptions.createSerializeCompositeObjects()) .serialize(resource);
RootXNode serializedXNode = prismContext.xnodeSerializer() .options(SerializationOptions.createSerializeCompositeObjects()) .serialize(user);
/** * Similar to previous test just the request is constructed a bit differently. */ @Test public void test023ChangeUserPasswordJAXB() throws Exception { final String TEST_NAME = "test023ChangeUserPasswordJAXB"; displayTestTitle(TEST_NAME); // GIVEN final String NEW_PASSWORD = "abandonSHIP"; Document doc = ModelClientUtil.getDocumnent(); ObjectDeltaType userDelta = new ObjectDeltaType(); userDelta.setOid(USER_JACK_OID); userDelta.setChangeType(ChangeTypeType.MODIFY); userDelta.setObjectType(UserType.COMPLEX_TYPE); ItemDeltaType passwordDelta = new ItemDeltaType(); passwordDelta.setModificationType(ModificationTypeType.REPLACE); passwordDelta.setPath(ModelClientUtil.createItemPathType("credentials/password/value", prismContext)); ProtectedStringType pass = new ProtectedStringType(); pass.setClearValue(NEW_PASSWORD); XNode passValue = prismContext.xnodeSerializer().root(new QName("dummy")).serializeRealValue(pass).getSubnode(); System.out.println("PASSWORD VALUE: " + passValue.debugDump()); RawType passwordValue = new RawType(passValue, prismContext); passwordDelta.getValue().add(passwordValue); userDelta.getItemDelta().add(passwordDelta); // WHEN ObjectTypes.USER.getTypeQName(), OperationResultType result = modifyObjectViaModelWS(userDelta); // THEN assertUserPasswordChange(NEW_PASSWORD, result); }
ObjectReferenceType accountRefToDelete = new ObjectReferenceType(); accountRefToDelete.setOid(accountShadowOidDerby); RawType modificationValue = new RawType(prismContext.xnodeSerializer().root(new QName("dummy")).serializeRealValue(accountRefToDelete).getSubnode(), prismContext); modificationDeleteAccountRef.getValue().add(modificationValue); modificationDeleteAccountRef.setPath(new ItemPathType(UserType.F_LINK_REF));
XNode passPsXnode = prismContext.xnodeSerializer().root(new QName("dummy")).serializeRealValue(passPs).getSubnode(); RawType value = new RawType(passPsXnode, prismContext); propMod.getValue().add(value);
passwordDelta.setModificationType(ModificationTypeType.REPLACE); passwordDelta.setPath(ModelClientUtil.createItemPathType("credentials/password/value", prismContext)); RawType passwordValue = new RawType(prismContext.xnodeSerializer().root(new QName("dummy")).serializeRealValue(ModelClientUtil.createProtectedString(newPassword)).getSubnode(), prismContext); passwordDelta.getValue().add(passwordValue);