You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ri...@apache.org on 2007/11/30 12:16:49 UTC

svn commit: r599779 - in /maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum: model/project/ store/api/ store/jpa/

Author: rinku
Date: Fri Nov 30 03:16:44 2007
New Revision: 599779

URL: http://svn.apache.org/viewvc?rev=599779&view=rev
Log:
o  Updates to Store<T> extension implementations.
o  minor refactorings.

Added:
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java   (with props)
Modified:
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/model/project/ProjectGroup.java
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/EntityNotFoundException.java
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/StoreException.java
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectGroupStore.java
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectStore.java

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/model/project/ProjectGroup.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/model/project/ProjectGroup.java?rev=599779&r1=599778&r2=599779&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/model/project/ProjectGroup.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/model/project/ProjectGroup.java Fri Nov 30 03:16:44 2007
@@ -1,5 +1,6 @@
 package org.apache.maven.continuum.model.project;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -114,6 +115,8 @@
      */
     public List<Project> getProjects()
     {
+        if ( null == this.projects )
+            this.projects = new ArrayList<Project>();
         return projects;
     }
 

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/EntityNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/EntityNotFoundException.java?rev=599779&r1=599778&r2=599779&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/EntityNotFoundException.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/EntityNotFoundException.java Fri Nov 30 03:16:44 2007
@@ -25,6 +25,11 @@
  */
 public class EntityNotFoundException extends StoreException
 {
+    public EntityNotFoundException()
+    {
+        super();
+    }
+
     public EntityNotFoundException( String message )
     {
         super( message );

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/StoreException.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/StoreException.java?rev=599779&r1=599778&r2=599779&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/StoreException.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/api/StoreException.java Fri Nov 30 03:16:44 2007
@@ -25,6 +25,13 @@
  */
 public class StoreException extends Exception
 {
+
+   
+    public StoreException()
+    {
+        super();
+    }
+
     public StoreException( String msg )
     {
         super( msg );

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectGroupStore.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectGroupStore.java?rev=599779&r1=599778&r2=599779&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectGroupStore.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectGroupStore.java Fri Nov 30 03:16:44 2007
@@ -7,16 +7,17 @@
 
 import org.apache.maven.continuum.model.project.ProjectGroup;
 import org.apache.maven.continuum.store.api.EntityNotFoundException;
-import org.apache.maven.continuum.store.api.StoreException;
 import org.apache.maven.continuum.store.api.Query;
 import org.apache.maven.continuum.store.api.Store;
+import org.apache.maven.continuum.store.api.StoreException;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
  * @version $Id$
  * @since 1.2
  */
-public class JpaProjectGroupStore implements Store<ProjectGroup>
+public class JpaProjectGroupStore extends StoreSupport implements Store<ProjectGroup>
 {
 
     /**
@@ -24,10 +25,10 @@
      * 
      * @see org.apache.maven.continuum.store.api.Store#delete(java.lang.Object)
      */
+    @Transactional( readOnly = false )
     public void delete( ProjectGroup entity ) throws StoreException
     {
-        // TODO Auto-generated method stub
-
+        getJpaTemplate().remove( entity );
     }
 
     /**
@@ -37,9 +38,7 @@
      */
     public ProjectGroup lookup( Long id ) throws StoreException, EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-
-        return null;
+        return lookup( ProjectGroup.class, id );
     }
 
     /**
@@ -47,20 +46,27 @@
      * 
      * @see org.apache.maven.continuum.store.api.Store#save(java.lang.Object)
      */
+    @Transactional( readOnly = false )
     public ProjectGroup save( ProjectGroup entity ) throws StoreException
     {
-        // TODO Auto-generated method stub
-        return null;
+        if ( null != entity )
+        {
+            if ( null == entity.getId() )
+                getJpaTemplate().persist( entity );
+            else
+                entity = getJpaTemplate().merge( entity );
+        }
+        return entity;
     }
 
-    /*
-     * (non-Javadoc)
+    /**
+     * {@inheritDoc}
      * 
      * @see org.apache.maven.continuum.store.api.Store#query(org.apache.maven.continuum.store.api.Query)
      */
     public List<ProjectGroup> query( Query query ) throws StoreException
     {
-        // TODO Auto-generated method stub
+        // TODO Implement!
         return null;
     }
 

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectStore.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectStore.java?rev=599779&r1=599778&r2=599779&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectStore.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/JpaProjectStore.java Fri Nov 30 03:16:44 2007
@@ -7,16 +7,17 @@
 
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.store.api.EntityNotFoundException;
-import org.apache.maven.continuum.store.api.StoreException;
 import org.apache.maven.continuum.store.api.Query;
 import org.apache.maven.continuum.store.api.Store;
+import org.apache.maven.continuum.store.api.StoreException;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
  * @version $Id$
  * @since 1.2
  */
-public class JpaProjectStore implements Store<Project>
+public class JpaProjectStore extends StoreSupport implements Store<Project>
 {
 
     /**
@@ -24,10 +25,10 @@
      * 
      * @see org.apache.maven.continuum.store.api.Store#delete(java.lang.Object)
      */
+    @Transactional( readOnly = false )
     public void delete( Project entity ) throws StoreException
     {
-        // TODO Auto-generated method stub
-
+        getJpaTemplate().remove( entity );
     }
 
     /**
@@ -37,8 +38,7 @@
      */
     public Project lookup( Long id ) throws StoreException, EntityNotFoundException
     {
-        // TODO Auto-generated method stub
-        return null;
+        return lookup( Project.class, id );
     }
 
     /**
@@ -46,10 +46,17 @@
      * 
      * @see org.apache.maven.continuum.store.api.Store#save(java.lang.Object)
      */
+    @Transactional( readOnly = false )
     public Project save( Project entity ) throws StoreException
     {
-        // TODO Auto-generated method stub
-        return null;
+        if ( null != entity )
+        {
+            if ( null == entity.getId() )
+                getJpaTemplate().persist( entity );
+            else
+                entity = getJpaTemplate().merge( entity );
+        }
+        return entity;
     }
 
     /**
@@ -59,7 +66,7 @@
      */
     public List<Project> query( Query query ) throws StoreException
     {
-        // TODO Auto-generated method stub
+        // TODO Implement!
         return null;
     }
 

Added: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java?rev=599779&view=auto
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java (added)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java Fri Nov 30 03:16:44 2007
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package org.apache.maven.continuum.store.jpa;
+
+import org.apache.maven.continuum.model.CommonPersistableEntity;
+import org.apache.maven.continuum.store.api.EntityNotFoundException;
+import org.apache.maven.continuum.store.api.Store;
+import org.springframework.orm.jpa.JpaObjectRetrievalFailureException;
+import org.springframework.orm.jpa.support.JpaDaoSupport;
+
+/**
+ * Base class for concrete {@link Store} implementations that provides service methods for Entity retrievals.
+ * 
+ * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
+ * @version $Id$
+ * @since 1.2
+ */
+public abstract class StoreSupport extends JpaDaoSupport
+{
+
+    /**
+     * Service method to lookup matching entities.
+     * 
+     * @param <E>
+     * @param klass
+     * @param id
+     * @return
+     * @throws EntityNotFoundException
+     */
+    protected <E extends CommonPersistableEntity> E lookup( Class<E> klass, Long id ) throws EntityNotFoundException
+    {
+        if ( id == null )
+            throw new EntityNotFoundException();
+        E entity = null;
+        try
+        {
+            entity = getJpaTemplate().find( klass, id );
+        }
+        catch ( JpaObjectRetrievalFailureException e )
+        {
+            throw new EntityNotFoundException();
+        }
+        if ( entity == null )
+            throw new EntityNotFoundException();
+        return entity;
+    }
+
+}

Propchange: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/main/java/org/apache/maven/continuum/store/jpa/StoreSupport.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"