public static ValueObjectIdDTO valueObjectId(Object ownerLocalId, Class ownerClass, String fragment){ return new ValueObjectIdDTO(ownerClass, ownerLocalId, fragment); }
@Test public void shouldSupportInterfaceProperty() { // given TestClassWithInterfaceProperty foo = new TestClassWithInterfaceProperty("1", new TestInterfaceImpl("Foo")); TestClassWithInterfaceProperty bar = new TestClassWithInterfaceProperty("1", new TestInterfaceImpl("Bar")); Javers javers = JaversBuilder.javers().build(); // when Diff diff = javers.compare(foo, bar); System.out.println(diff); // then assertTrue(diff.getChanges().size() == 1); ValueChange change = diff.getChangesByType(ValueChange.class).get(0); ValueObjectIdDTO voId = ValueObjectIdDTO.valueObjectId("1", TestClassWithInterfaceProperty.class, "interfaceProperty"); Assertions.assertThat(change.getAffectedGlobalId().value()).isEqualTo(voId.value()); Assertions.assertThat(change.getPropertyName()).isEqualTo("value"); Assertions.assertThat(change.getLeft()).isEqualTo("Foo"); Assertions.assertThat(change.getRight()).isEqualTo("Bar"); }
public GlobalId createFromDto(GlobalIdDTO globalIdDTO){ if (globalIdDTO instanceof InstanceIdDTO){ InstanceIdDTO idDTO = (InstanceIdDTO) globalIdDTO; return createInstanceId(idDTO.getCdoId(), idDTO.getEntity()); } if (globalIdDTO instanceof UnboundedValueObjectIdDTO){ UnboundedValueObjectIdDTO idDTO = (UnboundedValueObjectIdDTO) globalIdDTO; return createUnboundedValueObjectId(idDTO.getVoClass()); } if (globalIdDTO instanceof ValueObjectIdDTO){ ValueObjectIdDTO idDTO = (ValueObjectIdDTO) globalIdDTO; GlobalId ownerId = createFromDto(idDTO.getOwnerIdDTO()); return createValueObjectIdFromPath(ownerId, idDTO.getPath()); } throw new RuntimeException("type " + globalIdDTO.getClass() + " is not implemented"); }
return new QueryBuilder(new IdFilterDefinition(ValueObjectIdDTO.valueObjectId(ownerLocalId, ownerEntityClass, path)));
public static ValueObjectIdDTO withUnboundedValueObjectOwner(Class ownerClass, String fragment){ return new ValueObjectIdDTO(ownerClass, fragment); }