Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 36752 invoked from network); 7 Feb 2007 12:51:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 7 Feb 2007 12:51:22 -0000 Received: (qmail 93500 invoked by uid 500); 7 Feb 2007 12:51:29 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 93476 invoked by uid 500); 7 Feb 2007 12:51:29 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 93467 invoked by uid 99); 7 Feb 2007 12:51:29 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Feb 2007 04:51:29 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Feb 2007 04:51:22 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 415861A981D; Wed, 7 Feb 2007 04:51:02 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r504530 - in /cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa: JtaEntityManagerFactory.java ResourceLocalEntityManagerFactory.java Date: Wed, 07 Feb 2007 12:51:02 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070207125102.415861A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Wed Feb 7 04:51:01 2007 New Revision: 504530 URL: http://svn.apache.org/viewvc?view=rev&rev=504530 Log: CAY-668: Link Cayenne callback API with JPA provider (done) Modified: cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/JtaEntityManagerFactory.java cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/ResourceLocalEntityManagerFactory.java Modified: cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/JtaEntityManagerFactory.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/JtaEntityManagerFactory.java?view=diff&rev=504530&r1=504529&r2=504530 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/JtaEntityManagerFactory.java (original) +++ cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/JtaEntityManagerFactory.java Wed Feb 7 04:51:01 2007 @@ -91,8 +91,9 @@ } @Override - protected EntityManager createEntityManagerInternal(Map map) { - EntityManager em = new JtaEntityManager(domain.createDataContext(), this); + public EntityManager createEntityManager(Map map) { + checkClosed(); + EntityManager em = new JtaEntityManager(createObjectContext(), this); if (isActiveTransaction()) { em.joinTransaction(); Modified: cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/ResourceLocalEntityManagerFactory.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/ResourceLocalEntityManagerFactory.java?view=diff&rev=504530&r1=504529&r2=504530 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/ResourceLocalEntityManagerFactory.java (original) +++ cayenne/main/trunk/framework/cayenne-jpa-unpublished/src/main/java/org/apache/cayenne/jpa/ResourceLocalEntityManagerFactory.java Wed Feb 7 04:51:01 2007 @@ -26,7 +26,12 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.spi.PersistenceUnitInfo; +import org.apache.cayenne.ObjectContext; +import org.apache.cayenne.access.DataContext; import org.apache.cayenne.access.DataDomain; +import org.apache.cayenne.access.ObjectStore; +import org.apache.cayenne.intercept.DataChannelCallbackInterceptor; +import org.apache.cayenne.intercept.ObjectContextCallbackInterceptor; /** * A Cayenne EntityManagerFactory that supports resource-local transactions. @@ -95,23 +100,33 @@ } /** - * Create a new EntityManager with the specified map of properties. Returns a new - * EntityManager instance every time it is invoked. The {@link EntityManager#isOpen()} - * method will return true of the returned instance. + * Creates a new resource-local EntityManager with the specified map of properties. + * Returns a new EntityManager instance every time it is invoked. The + * {@link EntityManager#isOpen()} method will return true of the returned instance. + * Parameter map is ignored as Cayenne provider defines no properties for + * EntityManager as of now. * * @return a new EntityManager instance. */ public EntityManager createEntityManager(Map map) { checkClosed(); - return createEntityManagerInternal(map); + return new ResourceLocalEntityManager(createObjectContext(), this); } /** - * Creates a new resource-local EntityManager. Parameter map is ignored as Cayenne - * provider defines no properties for EntityManager as of now. + * Creates a new Cayenne {@link ObjectContext} based on this factory DataDomain. + * Returned context has lifecycle callbacks enabled, as expected in the JPA + * environment. */ - protected EntityManager createEntityManagerInternal(Map map) { - return new ResourceLocalEntityManager(domain.createDataContext(), this); + protected ObjectContext createObjectContext() { + DataChannelCallbackInterceptor postInterceptor = new DataChannelCallbackInterceptor(); + postInterceptor.setChannel(domain); + ObjectStore objectStore = new ObjectStore(domain.getSharedSnapshotCache()); + + ObjectContextCallbackInterceptor preInterceptor = new ObjectContextCallbackInterceptor(); + preInterceptor.setContext(new DataContext(postInterceptor, objectStore)); + + return preInterceptor; } /**