Search code examples
javajavers

How to access Property?


From 1.4.0 release, "PropertyChange is now decoupled from Property, reference from propertyChange to concrete property is replaced with propertyName String field."

What's the alternative way to access Property after 1.4.0 changes ? As I would like to access "looksLikeId" in Property


Solution

  • You can do it with the following snippet:

    ManagedType managedType = (ManagedType)javers.getTypeMapping(Person.class);
    Property property = managedType.getProperty(propertyChange.getPropertyName());
    

    Full example (groovy):

    def "should extract Property from PropertyChange"(){
      given:
      def javers = JaversTestBuilder.newInstance()
    
      when:
      def diff = javers.compare(new Person('1','bob'), new Person('1','bobby'))
      PropertyChange propertyChange = diff.changes[0]
    
      ManagedType managedType = (ManagedType)javers.getTypeMapping(Person)
      Property property = managedType.getProperty(propertyChange.propertyName)
    
      then:
      property.name == 'name'
      !property.looksLikeId()
    }
    

    In version 1.4.1, I will add convenience getProperty() method to javers:

    Property property = javers.getProperty( propertyChange )