You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/05/27 12:35:15 UTC

svn commit: r948770 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: RepositoryCopier.java RepositoryImpl.java RepositoryManagerImpl.java

Author: jukka
Date: Thu May 27 10:35:15 2010
New Revision: 948770

URL: http://svn.apache.org/viewvc?rev=948770&view=rev
Log:
JCR-2640: Internal repository context

Address Stefan's point about not accessing the context variable directly from external classes

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryCopier.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryCopier.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryCopier.java?rev=948770&r1=948769&r2=948770&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryCopier.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryCopier.java Thu May 27 10:35:15 2010
@@ -60,14 +60,14 @@ public class RepositoryCopier {
         LoggerFactory.getLogger(RepositoryCopier.class);
 
     /**
-     * Source repository.
+     * Source repository context.
      */
-    private final RepositoryImpl source;
+    private final RepositoryContext source;
 
     /**
-     * Target repository.
+     * Target repository context.
      */
-    private final RepositoryImpl target;
+    private final RepositoryContext target;
 
     /**
      * Copies the contents of the repository in the given source directory
@@ -175,8 +175,12 @@ public class RepositoryCopier {
      * @param target target repository
      */
     public RepositoryCopier(RepositoryImpl source, RepositoryImpl target) {
-        this.source = source;
-        this.target = target;
+        // TODO: It would be better if we were given the RepositoryContext
+        // instances directly. Perhaps we should use something like
+        // RepositoryImpl.getRepositoryCopier(RepositoryImpl target)
+        // instead of this public constructor to achieve that.
+        this.source = source.getRepositoryContext();
+        this.target = target.getRepositoryContext();
     }
 
     /**
@@ -196,8 +200,8 @@ public class RepositoryCopier {
     public void copy() throws RepositoryException {
         logger.info(
                 "Copying repository content from {} to {}",
-                source.repConfig.getHomeDir(),
-                target.repConfig.getHomeDir());
+                source.getRepository().repConfig.getHomeDir(),
+                target.getRepository().repConfig.getHomeDir());
         try {
             copyNamespaces();
             copyNodeTypes();
@@ -209,8 +213,8 @@ public class RepositoryCopier {
     }
 
     private void copyNamespaces() throws RepositoryException {
-        NamespaceRegistry sourceRegistry = source.context.getNamespaceRegistry();
-        NamespaceRegistry targetRegistry = target.context.getNamespaceRegistry();
+        NamespaceRegistry sourceRegistry = source.getNamespaceRegistry();
+        NamespaceRegistry targetRegistry = target.getNamespaceRegistry();
 
         logger.info("Copying registered namespaces");
         Collection<String> existing = Arrays.asList(targetRegistry.getURIs());
@@ -224,8 +228,8 @@ public class RepositoryCopier {
     }
 
     private void copyNodeTypes() throws RepositoryException {
-        NodeTypeRegistry sourceRegistry = source.context.getNodeTypeRegistry();
-        NodeTypeRegistry targetRegistry = target.context.getNodeTypeRegistry();
+        NodeTypeRegistry sourceRegistry = source.getNodeTypeRegistry();
+        NodeTypeRegistry targetRegistry = target.getNodeTypeRegistry();
 
         logger.info("Copying registered node types");
         Collection<Name> existing =
@@ -247,33 +251,36 @@ public class RepositoryCopier {
     private void copyVersionStore() throws RepositoryException {
         logger.info("Copying version histories");
         PersistenceCopier copier = new PersistenceCopier(
-                source.context.getInternalVersionManager().getPersistenceManager(),
-                target.context.getInternalVersionManager().getPersistenceManager(),
-                target.getDataStore());
+                source.getInternalVersionManager().getPersistenceManager(),
+                target.getInternalVersionManager().getPersistenceManager(),
+                target.getRepository().getDataStore());
         copier.copy(RepositoryImpl.VERSION_STORAGE_NODE_ID);
         copier.copy(RepositoryImpl.ACTIVITIES_NODE_ID);
     }
 
     private void copyWorkspaces() throws RepositoryException {
-        Collection<String> existing = Arrays.asList(target.getWorkspaceNames());
-        for (String name : source.getWorkspaceNames()) {
+        Collection<String> existing =
+            Arrays.asList(target.getRepository().getWorkspaceNames());
+        for (String name : source.getRepository().getWorkspaceNames()) {
             logger.info("Copying workspace {}" , name);
 
             if (!existing.contains(name)) {
-                target.createWorkspace(name);
+                target.getRepository().createWorkspace(name);
             }
 
             // Copy all the workspace content
             PersistenceCopier copier = new PersistenceCopier(
-                    source.getWorkspaceInfo(name).getPersistenceManager(),
-                    target.getWorkspaceInfo(name).getPersistenceManager(),
-                    target.getDataStore());
+                    source.getRepository().getWorkspaceInfo(name).getPersistenceManager(),
+                    target.getRepository().getWorkspaceInfo(name).getPersistenceManager(),
+                    target.getRepository().getDataStore());
             copier.excludeNode(RepositoryImpl.SYSTEM_ROOT_NODE_ID);
             copier.copy(RepositoryImpl.ROOT_NODE_ID);
 
             // Copy all the active open-scoped locks
-            LockManagerImpl sourceLockManager = source.getLockManager(name);
-            LockManagerImpl targetLockManager = target.getLockManager(name);
+            LockManagerImpl sourceLockManager =
+                source.getRepository().getLockManager(name);
+            LockManagerImpl targetLockManager =
+                target.getRepository().getLockManager(name);
             targetLockManager.copyOpenScopedLocksFrom(sourceLockManager);
         }
     }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=948770&r1=948769&r2=948770&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Thu May 27 10:35:15 2010
@@ -418,6 +418,19 @@ public class RepositoryImpl extends Abst
         }
     }
 
+    /**
+     * Returns the internal component context of this repository.
+     * This package-private method should only be used when there is
+     * no other reasonable way to access the repository context.
+     * A better design would be to access the repository instance
+     * through the repository context.
+     *
+     * @return repository context
+     */
+    RepositoryContext getRepositoryContext() { // TODO: Get rid of this method
+        return context;
+    }
+
     public DataStore getDataStore() {
         return dataStore;
     }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java?rev=948770&r1=948769&r2=948770&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java Thu May 27 10:35:15 2010
@@ -46,7 +46,8 @@ public class RepositoryManagerImpl imple
             throw new RepositoryException("Repository is stopped");
         }
         ArrayList<PersistenceManager> pmList = new ArrayList<PersistenceManager>();
-        InternalVersionManagerImpl vm = rep.context.getInternalVersionManager();
+        InternalVersionManagerImpl vm =
+            rep.getRepositoryContext().getInternalVersionManager();
         PersistenceManager pm = vm.getPersistenceManager();
         pmList.add(pm);
         String[] wspNames = rep.getWorkspaceNames();
@@ -55,8 +56,8 @@ public class RepositoryManagerImpl imple
             String wspName = wspNames[i];
             WorkspaceInfo wspInfo = rep.getWorkspaceInfo(wspName);
             // this will initialize the workspace if required
-            SessionImpl session =
-                SystemSession.create(rep.context, wspInfo.getConfig());
+            SessionImpl session = SystemSession.create(
+                    rep.getRepositoryContext(), wspInfo.getConfig());
             // mark this session as 'active' so the workspace does not get disposed
             // by the workspace-janitor until the garbage collector is done
             rep.onSessionCreated(session);