Get original object state for audit purpose
-------------------------------------------

                 Key: OPENJPA-1775
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1775
             Project: OpenJPA
          Issue Type: Question
          Components: Enhance, kernel
    Affects Versions: 2.0.0
         Environment: GlassFish 3, OpenJpa 2.0
            Reporter: Radu B


I need to get original object state before a merge() is called.

I tried in my service edit() method, by using :

    public void edit(Customer customer) {
        Customer initialState = null;
        log.info("About to update customer id " + customer.getCustomerId() + " 
with name " + customer.getName());

        PersistenceCapable currentState = (PersistenceCapable)customer;

        try {
            StateManagerImpl sm = 
(StateManagerImpl)currentState.pcGetStateManager();

            SaveFieldManager sfm = sm.getSaveFieldManager();
            PersistenceCapable oldState = sfm.getState();

            initialState = (Customer)oldState;

            log.info("Customer id " + customer.getCustomerId() + " OLD NAME WAS 
" + initialState.getName());
        }
        catch (Exception e) {
            log.severe("Failed to get old object state: " + e.toString());
        }        

        getEntityManager().merge(customer);
    }


I get the error:

SEVERE: Failed to get old object state: java.lang.ClassCastException: 
org.apache.openjpa.kernel.DetachedStateManager cannot be cast to 
org.apache.openjpa.kernel.StateManagerImpl

Can you please suggest a way to get the original loaded object?


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to