You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/10/19 18:59:04 UTC

svn commit: r1400168 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/ oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ oak-core/src/main/java/org/apac...

Author: jukka
Date: Fri Oct 19 16:59:03 2012
New Revision: 1400168

URL: http://svn.apache.org/viewvc?rev=1400168&view=rev
Log:
OAK-41: Initial repository setup

Rename MicroKernelTracker to RepositoryInitializer since it's now based on NodeState and in any case only does initialization

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java   (contents, props changed)
      - copied, changed from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiMicroKernelTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java   (contents, props changed)
      - copied, changed from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeMicroKernelTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java   (contents, props changed)
      - copied, changed from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/MicroKernelTracker.java
Removed:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiMicroKernelTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeMicroKernelTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/DefaultMicroKernelTracker.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/MicroKernelTracker.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/InitialContent.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1400168&r1=1400167&r2=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Fri Oct 19 16:59:03 2012
@@ -38,7 +38,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ValidatingHook;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
-import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
@@ -61,7 +61,7 @@ public class Oak {
 
     private final MicroKernel kernel;
 
-    private final List<MicroKernelTracker> initializers = Lists.newArrayList();
+    private final List<RepositoryInitializer> initializers = Lists.newArrayList();
 
     private final List<QueryIndexProvider> queryIndexProviders = Lists.newArrayList();
 
@@ -82,7 +82,7 @@ public class Oak {
     }
 
     @Nonnull
-    public Oak with(@Nonnull MicroKernelTracker initializer) {
+    public Oak with(@Nonnull RepositoryInitializer initializer) {
        initializers.add(checkNotNull(initializer));
        return this;
     }
@@ -186,8 +186,8 @@ public class Oak {
 
     public ContentRepository createContentRepository() {
         KernelNodeStore store = new KernelNodeStore(kernel);
-        for (MicroKernelTracker initializer : initializers) {
-            initializer.available(store);
+        for (RepositoryInitializer initializer : initializers) {
+            initializer.initialize(store);
         }
 
         withValidatorHook();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java?rev=1400168&r1=1400167&r2=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/Activator.java Fri Oct 19 16:59:03 2012
@@ -44,7 +44,7 @@ public class Activator implements Bundle
 
     private final OsgiValidatorProvider validatorProvider = new OsgiValidatorProvider();
 
-    private final OsgiMicroKernelTracker kernelTracker = new OsgiMicroKernelTracker();
+    private final OsgiRepositoryInitializer kernelTracker = new OsgiRepositoryInitializer();
 
     private final Map<ServiceReference, ServiceRegistration> services =
             new HashMap<ServiceReference, ServiceRegistration>();
@@ -80,7 +80,7 @@ public class Activator implements Bundle
         Object service = context.getService(reference);
         if (service instanceof MicroKernel) {
             MicroKernel kernel = (MicroKernel) service;
-            kernelTracker.available(new KernelNodeStore(kernel));
+            kernelTracker.initialize(new KernelNodeStore(kernel));
             Oak oak = new Oak(kernel)
                     .with(new CompositeHook(
                         // TODO: DefaultTypeEditor is JCR specific and does not belong here

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java (from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiMicroKernelTracker.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiMicroKernelTracker.java&r1=1400143&r2=1400168&rev=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiMicroKernelTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java Fri Oct 19 16:59:03 2012
@@ -18,45 +18,45 @@
  */
 package org.apache.jackrabbit.oak.osgi;
 
-import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.osgi.framework.ServiceReference;
 
 /**
  * Implements a service tracker that keeps track of all
- * {@link MicroKernelTracker}s in the system and calls the available
+ * {@link RepositoryInitializer}s in the system and calls the available
  * method once the micro kernel is available.
  */
-public class OsgiMicroKernelTracker
-        extends AbstractServiceTracker<MicroKernelTracker>
-        implements MicroKernelTracker {
+public class OsgiRepositoryInitializer
+        extends AbstractServiceTracker<RepositoryInitializer>
+        implements RepositoryInitializer {
 
     /**
      * The reference to the micro kernel once available.
      */
     private volatile NodeStore store;
 
-    public OsgiMicroKernelTracker() {
-        super(MicroKernelTracker.class);
+    public OsgiRepositoryInitializer() {
+        super(RepositoryInitializer.class);
     }
 
     @Override
-    public void available(NodeStore store) {
+    public void initialize(NodeStore store) {
         this.store = store;
         if (store != null) {
-            for (MicroKernelTracker mki : getServices()) {
-                mki.available(store);
+            for (RepositoryInitializer mki : getServices()) {
+                mki.initialize(store);
             }
         }
     }
 
     @Override
     public Object addingService(ServiceReference reference) {
-        MicroKernelTracker mki =
-                (MicroKernelTracker) super.addingService(reference);
+        RepositoryInitializer mki =
+                (RepositoryInitializer) super.addingService(reference);
         NodeStore store = this.store;
         if (store != null) {
-            mki.available(store);
+            mki.initialize(store);
         }
         return mki;
     }

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRepositoryInitializer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/InitialContent.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/InitialContent.java?rev=1400168&r1=1400167&r2=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/InitialContent.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/InitialContent.java Fri Oct 19 16:59:03 2012
@@ -21,22 +21,21 @@ import org.apache.felix.scr.annotations.
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.core.RootImpl;
-import org.apache.jackrabbit.oak.spi.lifecycle.DefaultMicroKernelTracker;
-import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 
 /**
- * {@code InitialContent} implements a {@link MicroKernelTracker} and
+ * {@code InitialContent} implements a {@link RepositoryInitializer} and
  * registers built-in node types when the micro kernel becomes available.
  */
 @Component
-@Service(MicroKernelTracker.class)
-public class InitialContent extends DefaultMicroKernelTracker {
+@Service(RepositoryInitializer.class)
+public class InitialContent implements RepositoryInitializer {
 
     @Override
-    public void available(NodeStore store) {
+    public void initialize(NodeStore store) {
         NodeStoreBranch branch = store.branch();
 
         NodeBuilder root = branch.getRoot().builder();

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java (from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeMicroKernelTracker.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeMicroKernelTracker.java&r1=1400143&r2=1400168&rev=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeMicroKernelTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java Fri Oct 19 16:59:03 2012
@@ -18,34 +18,32 @@
  */
 package org.apache.jackrabbit.oak.spi.lifecycle;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.List;
 
-import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
 /**
- * <code>CompositeMicroKernelTracker</code> consists of multiple micro kernel
- * trackers and calls them all on {@link #available(MicroKernel)}.
+ * Composite repository initializer that delegates the
+ * {@link #initialize(NodeStore)} call in sequence to all the
+ * component initializers.
  */
-public class CompositeMicroKernelTracker implements MicroKernelTracker {
+public class CompositeInitializer implements RepositoryInitializer {
 
-    private final List<MicroKernelTracker> trackers = new ArrayList<MicroKernelTracker>();
+    private final Collection<RepositoryInitializer> initializers;
 
-    public CompositeMicroKernelTracker(Collection<MicroKernelTracker> trackers) {
-        this.trackers.addAll(trackers);
+    public CompositeInitializer(Collection<RepositoryInitializer> trackers) {
+        this.initializers = trackers;
     }
 
-    public CompositeMicroKernelTracker(MicroKernelTracker... trackers) {
-        this.trackers.addAll(Arrays.asList(trackers));
+    public CompositeInitializer(RepositoryInitializer... initializers) {
+        this.initializers = Arrays.asList(initializers);
     }
 
     @Override
-    public void available(NodeStore store) {
-        for (MicroKernelTracker tracker : trackers) {
-            tracker.available(store);
+    public void initialize(NodeStore store) {
+        for (RepositoryInitializer tracker : initializers) {
+            tracker.initialize(store);
         }
     }
 }

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/CompositeInitializer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java (from r1400143, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/MicroKernelTracker.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/MicroKernelTracker.java&r1=1400143&r2=1400168&rev=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/MicroKernelTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java Fri Oct 19 16:59:03 2012
@@ -18,21 +18,24 @@
  */
 package org.apache.jackrabbit.oak.spi.lifecycle;
 
-import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
 /**
- * This interface is mainly used in an OSGi environment where various components
- * of Oak are started by container and one would like to plug in some code that
- * is executed when the micro kernel becomes available in the system.
+ * Initializer of repository content. A component that needs to add specific
+ * content to a new repository can implement this interface. Then when a
+ * repository becomes available, all the configured initializers are invoked
+ * in sequence.
  */
-public interface MicroKernelTracker {
+public interface RepositoryInitializer {
 
     /**
-     * This method is called when both the {@link MicroKernel} service and this
-     * tracker become available in the system.
-     * @param mk the {@link MicroKernel} instance.
+     * Initializes repository content. This method is called as soon as a
+     * repository becomes available. Note that the repository may already
+     * have been initialized, so the implementation of this method should
+     * check for that before blindly adding new content.
+     *
+     * @param store node store of the repository
      */
-    public void available(NodeStore store);
+    public void initialize(NodeStore store);
 
 }

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/RepositoryInitializer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java?rev=1400168&r1=1400167&r2=1400168&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java Fri Oct 19 16:59:03 2012
@@ -45,7 +45,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
-import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 
@@ -91,7 +91,7 @@ public class Jcr {
     }
 
     @Nonnull
-    public Jcr with(@Nonnull MicroKernelTracker initializer) {
+    public Jcr with(@Nonnull RepositoryInitializer initializer) {
        oak.with(checkNotNull(initializer));
        return this;
     }