]> source.dussan.org Git - archiva.git/commitdiff
correctlt close jcr session in case of exception
authorOlivier Lamy <olamy@apache.org>
Sat, 25 Feb 2012 20:45:46 +0000 (20:45 +0000)
committerOlivier Lamy <olamy@apache.org>
Sat, 25 Feb 2012 20:45:46 +0000 (20:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1293682 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/RepositorySession.java

index 64ff4077a1e4bd835d7ebb8bffa4b11324a354e2..84ac9fdcdfcf564643cf0a3da46e15c9e94adaed 100644 (file)
@@ -19,6 +19,9 @@ package org.apache.archiva.metadata.repository;
  * under the License.
  */
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * The repository session provides a single interface to accessing Archiva repositories. It provides access to three
  * resources:
@@ -40,6 +43,8 @@ public class RepositorySession
 
     private boolean dirty;
 
+    private Logger log = LoggerFactory.getLogger( getClass() );
+
     // FIXME: include storage here too - perhaps a factory based on repository ID, or one per type to retrieve and
     //        operate on a given repo within the storage API
 
@@ -60,32 +65,17 @@ public class RepositorySession
     }
 
     public void save()
+        throws MetadataRepositoryException
     {
-        try
-        {
-            repository.save();
-        }
-        catch ( MetadataRepositoryException e )
-        {
-            // FIXME
-            throw new RuntimeException( e );
-        }
+        repository.save();
 
         dirty = false;
     }
 
     public void revert()
+        throws MetadataRepositoryException
     {
-        try
-        {
-            repository.revert();
-        }
-        catch ( MetadataRepositoryException e )
-        {
-            // FIXME
-            throw new RuntimeException( e );
-        }
-
+        repository.revert();
         dirty = false;
     }
 
@@ -96,13 +86,24 @@ public class RepositorySession
      * exception occurs.
      */
     public void close()
+        throws MetadataRepositoryException
     {
-        if ( dirty )
+        try
         {
-            save();
+            if ( dirty )
+            {
+                save();
+            }
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            // olamy use revert here ?
+            throw e;
+        }
+        finally
+        {
+            repository.close();
         }
-
-        repository.close();
     }
 
     public void markDirty()