Adam Yong
Adam Yong

Reputation: 59

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

Upvotes: 0

Views: 187

Answers (1)

Bartek Walacik
Bartek Walacik

Reputation: 3496

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 )

Upvotes: 2

Related Questions