Author: norman
Date: Sun Jan 10 12:56:21 2010
New Revision: 897633

URL: http://svn.apache.org/viewvc?rev=897633&view=rev
Log:
Move openjpa specific code to extra class / package to allow better reuse of 
JPA code (IMAP-107)

Added:
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/OpenJPAMailboxMapper.java
      - copied, changed from r822681, 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/map/openjpa/OpenJPAMailboxMapper.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
Removed:
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/map/openjpa/
Modified:
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java
    
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java

Modified: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java?rev=897633&r1=897632&r2=897633&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java 
(original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java 
Sun Jan 10 12:56:21 2010
@@ -27,9 +27,9 @@
 
 import org.apache.james.imap.jpa.mail.JPAMailboxMapper;
 import org.apache.james.imap.jpa.mail.JPAMessageMapper;
-import org.apache.james.imap.jpa.mail.map.openjpa.OpenJPAMailboxMapper;
 import org.apache.james.imap.jpa.mail.model.JPAHeader;
 import org.apache.james.imap.jpa.mail.model.JPAMailboxMembership;
+import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.mail.MailboxMapper;
@@ -39,25 +39,28 @@
 import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.imap.store.mail.model.PropertyBuilder;
 
-public class JPAMailbox extends StoreMailbox {
+public abstract class JPAMailbox extends StoreMailbox {
 
-    private final EntityManagerFactory entityManagerFactory;
+    protected final EntityManagerFactory entityManagerFactory;
 
     public JPAMailbox(final Mailbox mailbox, final EntityManagerFactory 
entityManagerfactory) {
         super(mailbox);
         this.entityManagerFactory = entityManagerfactory;
     }    
 
+    /**
+     * Create MailboxMapper 
+     * 
+     * @return mapper
+     */
+    protected abstract JPAMailboxMapper createMailboxMapper();
+
     @Override
     protected Mailbox getMailboxRow() throws MailboxException {
         final MailboxMapper mapper = createMailboxMapper();
         return mapper.findMailboxById(mailboxId);
     }
 
-    private JPAMailboxMapper createMailboxMapper() {
-        final JPAMailboxMapper mapper = new 
OpenJPAMailboxMapper(entityManagerFactory.createEntityManager());
-        return mapper;
-    }
     
     @Override
     protected MessageMapper createMessageMapper() {

Modified: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java?rev=897633&r1=897632&r2=897633&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
 (original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailboxManager.java
 Sun Jan 10 12:56:21 2010
@@ -21,7 +21,7 @@
 import javax.persistence.EntityManagerFactory;
 
 import org.apache.james.imap.jpa.mail.JPAMailboxMapper;
-import org.apache.james.imap.jpa.mail.map.openjpa.OpenJPAMailboxMapper;
+import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailbox;
@@ -30,9 +30,9 @@
 import org.apache.james.imap.store.mail.MailboxMapper;
 import org.apache.james.imap.store.mail.model.Mailbox;
 
-public class JPAMailboxManager extends StoreMailboxManager {
+public abstract class JPAMailboxManager extends StoreMailboxManager {
 
-    private final EntityManagerFactory entityManagerFactory;
+    protected final EntityManagerFactory entityManagerFactory;
 
     public JPAMailboxManager(final Authenticator authenticator, final 
Subscriber subscriber, 
             final EntityManagerFactory entityManagerFactory) {
@@ -40,11 +40,6 @@
         this.entityManagerFactory = entityManagerFactory;
     }
     
-    @Override
-    protected MailboxMapper createMailboxMapper() {
-        final JPAMailboxMapper mapper = new 
OpenJPAMailboxMapper(entityManagerFactory.createEntityManager());
-        return mapper;
-    }
 
     @Override
     protected StoreMailbox createMailbox(Mailbox mailboxRow) {
@@ -61,4 +56,5 @@
         mapper.save(mailbox);
         mapper.commit();
     }
+    
 }

Copied: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/OpenJPAMailboxMapper.java
 (from r822681, 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/map/openjpa/OpenJPAMailboxMapper.java)
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/OpenJPAMailboxMapper.java?p2=james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/OpenJPAMailboxMapper.java&p1=james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/map/openjpa/OpenJPAMailboxMapper.java&r1=822681&r2=897633&rev=897633&view=diff
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/map/openjpa/OpenJPAMailboxMapper.java
 (original)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/openjpa/OpenJPAMailboxMapper.java
 Sun Jan 10 12:56:21 2010
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.imap.jpa.mail.map.openjpa;
+package org.apache.james.imap.jpa.mail.openjpa;
 
 import javax.persistence.EntityManager;
 
@@ -27,7 +27,7 @@
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 
 /**
- * Data access management for mailbox.
+ * OpenJPA implemetnation of MailboxMapper.
  */
 public class OpenJPAMailboxMapper extends JPAMailboxMapper {
     

Added: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java?rev=897633&view=auto
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
 (added)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailbox.java
 Sun Jan 10 12:56:21 2010
@@ -0,0 +1,48 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.imap.jpa.openjpa;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.james.imap.jpa.JPAMailbox;
+import org.apache.james.imap.jpa.mail.JPAMailboxMapper;
+import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
+import org.apache.james.imap.store.mail.model.Mailbox;
+
+/**
+ * OpenJPA implementation of Mailbox
+ *
+ */
+public class OpenJPAMailbox extends JPAMailbox{
+
+    public OpenJPAMailbox(Mailbox mailbox,
+                       EntityManagerFactory entityManagerfactory) {
+               super(mailbox, entityManagerfactory);
+       }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.jpa.JPAMailbox#createMailboxMapper()
+     */
+       protected JPAMailboxMapper createMailboxMapper() {
+        final JPAMailboxMapper mapper = new 
OpenJPAMailboxMapper(entityManagerFactory.createEntityManager());
+        return mapper;
+    }
+}

Added: 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java?rev=897633&view=auto
==============================================================================
--- 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
 (added)
+++ 
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/openjpa/OpenJPAMailboxManager.java
 Sun Jan 10 12:56:21 2010
@@ -0,0 +1,46 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.imap.jpa.openjpa;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.james.imap.jpa.JPAMailboxManager;
+import org.apache.james.imap.jpa.mail.openjpa.OpenJPAMailboxMapper;
+import org.apache.james.imap.store.Authenticator;
+import org.apache.james.imap.store.Subscriber;
+import org.apache.james.imap.store.mail.MailboxMapper;
+
+/**
+ * OpenJPA implementation of MailboxManager
+ *
+ */
+public class OpenJPAMailboxManager extends JPAMailboxManager{
+
+       public OpenJPAMailboxManager(Authenticator authenticator,
+                       Subscriber subscriber, EntityManagerFactory 
entityManagerFactory) {
+               super(authenticator, subscriber, entityManagerFactory);
+       }
+
+       @Override
+       protected MailboxMapper createMailboxMapper() {
+        return new 
OpenJPAMailboxMapper(entityManagerFactory.createEntityManager());
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to