Ejemplo n.º 1
0
  public static <T> String toRepo(
      ItemDefinition parentDefinition, QName itemName, T value, PrismContext prismContext)
      throws SchemaException, JAXBException {
    if (value == null) {
      return null;
    }

    if (value instanceof Objectable) {
      return prismContext.serializeObjectToString(
          ((Objectable) value).asPrismObject(), PrismContext.LANG_XML);
    }

    ItemDefinition definition = null;
    if (parentDefinition instanceof PrismContainerDefinition) {
      definition = ((PrismContainerDefinition) parentDefinition).findItemDefinition(itemName);
      if (definition == null) {
        definition = parentDefinition;
      }
    } else {
      definition = parentDefinition;
    }

    return ValueSerializationUtil.serializeValue(
        value,
        definition,
        itemName,
        parentDefinition.getName(),
        prismContext,
        PrismContext.LANG_XML);
  }
  @Test
  public void testParseTaskRoundtrip() throws Exception {
    System.out.println("===[ testParseTaskRoundtrip ]===");

    // GIVEN
    PrismContext prismContext = PrismTestUtil.getPrismContext();

    PrismObject<TaskType> task = prismContext.parseObject(TASK_FILE);

    System.out.println("Parsed task:");
    System.out.println(task.debugDump());

    assertTask(task);

    // SERIALIZE

    String serializedTask = prismContext.serializeObjectToString(task, PrismContext.LANG_XML);

    System.out.println("serialized task:");
    System.out.println(serializedTask);

    // RE-PARSE

    PrismObject<TaskType> reparsedTask = prismContext.parseObject(serializedTask);

    System.out.println("Re-parsed task:");
    System.out.println(reparsedTask.debugDump());

    // Cannot assert here. It will cause parsing of some of the raw values and diff will fail
    assertTask(reparsedTask);

    ObjectDelta<TaskType> objectDelta = task.diff(reparsedTask);
    System.out.println("Delta:");
    System.out.println(objectDelta.debugDump());
    assertTrue("Delta is not empty", objectDelta.isEmpty());

    PrismAsserts.assertEquivalent("Task re-parsed equivalence", task, reparsedTask);
  }