You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ck...@apache.org on 2013/04/19 07:34:50 UTC

svn commit: r1469700 - /jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java

Author: ckoell
Date: Fri Apr 19 05:34:50 2013
New Revision: 1469700

URL: http://svn.apache.org/r1469700
Log:
JCR-3570 Make immediately Repository start configureable in JCAManagedConnectionFactory

Modified:
    jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java

Modified: jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java?rev=1469700&r1=1469699&r2=1469700&view=diff
==============================================================================
--- jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java (original)
+++ jackrabbit/branches/2.6/jackrabbit-jca/src/main/java/org/apache/jackrabbit/jca/JCAManagedConnectionFactory.java Fri Apr 19 05:34:50 2013
@@ -63,6 +63,13 @@ public class JCAManagedConnectionFactory
     private Boolean bindSessionToTransaction = Boolean.TRUE;
 
     /**
+     * Flag indicating whether the Repository should start
+     * immediately or lazy on first access. Per default true so the Repository will
+     * start immediately if this JCAManagedConnectionFactory will be initialized.
+     */
+    private Boolean startRepositoryImmediately = Boolean.TRUE;
+
+    /**
      * Repository.
      */
     private transient Repository repository;
@@ -142,9 +149,9 @@ public class JCAManagedConnectionFactory
      */
     public Object createConnectionFactory(ConnectionManager cm)
             throws ResourceException {
-        // JCR-3491 Start the Repository immediatly in JCA Environment. 
-        // If this Instance is in a Cluster it would not get any changes till someone performs a first login 
-        createRepository();
+    	if (startRepositoryImmediately) {
+    		createRepository();
+    	}
         JCARepositoryHandle handle = new JCARepositoryHandle(this, cm);
         log("Created repository handle (" + handle + ")");
         return handle;
@@ -221,7 +228,17 @@ public class JCAManagedConnectionFactory
     /**
      * Return the repository, automatically creating it if needed.
      */
-    public Repository getRepository() throws RepositoryException {
+    @SuppressWarnings("deprecation")
+	public Repository getRepository() throws RepositoryException {
+    	if (repository == null) {
+    		synchronized (this) {
+    			try {
+    				createRepository();
+    			} catch (ResourceException e) {
+    				throw (RepositoryException) e.getLinkedException();
+    			}
+			}
+    	}
         return repository;
     }
     
@@ -288,4 +305,12 @@ public class JCAManagedConnectionFactory
         this.bindSessionToTransaction = bindSessionToTransaction;
     }
 
+    public Boolean getStartRepositoryImmediately() {
+        return startRepositoryImmediately;
+    }
+
+    public void setStartRepositoryImmediately(Boolean startRepositoryImmediately) {
+        this.startRepositoryImmediately = startRepositoryImmediately;
+    }
+
 }