Hi OpenJPA team, hi Pinaki!

I've finally managed to check out the new auditing facility of OpenJPA 2.2 and 
have some feedback for you guys:

1) No test possible for tracking updates?

I first tried to reuse my Junit tests for auditing and wondered why your new 
implementation did not work. The explanation seems to be that I don't get the 
"audit" event for updates if my Junit test rolls back the transaction. I saw 
that the TransactionEventManager does not fire the #beforeCommit in that case. 
Do you have an idea how I could re-write my tests?

2) Still problems with Maps

I did not do a broad implementation of the auditor but instantly tried out the 
problem that I already got with maps (see my older posts). Unfortunately the 
problem is still there. This is my scenario:

@Entity
class A {
  @ElementCollection(fetch = FetchType.EAGER)
  private Map<String, StringAttribute> stringAttributes = new HashMap<String, 
StringAttribute>();
}

@Embeddable
class StringAttribute extends AbstractAttribute<String> {
  private String value;
}

class AuditTest {
  
  @Test
  public void test() {
    // create the object
    A a = new A();
        a.getStringAttributes().put("key", new StringAttribute("value"));
        em.persist(a);
        
        em.clear();
        
        // modify the object
        a = em.find(A.class, a.getId());
        a.getStringAttributes().get("key").setValue("new value"));
        em.flush();
  }
}

I try to explain what I do and what happens: When changing a value of a 
StringAttribute from "A#stringAttributes" my auditor gets a notification. 
Unfortunately the Maps of the original and the managed object contain the same 
values, i.e. the same instance of StringAttribute that already has the new 
value. That's why I can't track the old value of the StringAttribute.

Do you have any idea if there is a problem with my implementation or with the 
auditor?

Thanks a lot,

Christopher
-- 
NEU: FreePhone - 0ct/min Handyspartarif mit Geld-zurück-Garantie!               
Jetzt informieren: http://www.gmx.net/de/go/freephone

Reply via email to