package org.drools.grid.service.directory.impl; import java.io.ObjectStreamException; import java.io.Serializable; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.drools.grid.GridServiceDescription; import org.drools.grid.service.directory.Address; public class AddressJpa implements Address, Serializable { private Address detached; transient private EntityManagerFactory emf; public AddressJpa(Address detached, EntityManagerFactory emf) { this.detached = detached; this.emf = emf; } public GridServiceDescription getGridServiceDescription() { return this.detached.getGridServiceDescription(); } public Object getObject() { return this.detached.getObject(); } public String getTransport() { return this.detached.getTransport(); } public void setObject(Object object) { EntityManager em = this.emf.createEntityManager(); em.getTransaction().begin(); this.detached = em.find( AddressImpl.class, ((AddressImpl) this.detached).getId() ); this.detached.setObject( object ); em.getTransaction().commit(); em.close(); } private Object readResolve() throws ObjectStreamException { return this.detached; } }