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 2013/12/03 16:36:05 UTC

svn commit: r1547439 - in /jackrabbit/oak/trunk: oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java

Author: jukka
Date: Tue Dec  3 15:36:05 2013
New Revision: 1547439

URL: http://svn.apache.org/r1547439
Log:
OAK-795: OSGi init issues

Make the JCR Repository available in OSGi again. Note the TODOs

Modified:
    jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java

Modified: jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java?rev=1547439&r1=1547438&r2=1547439&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java (original)
+++ jackrabbit/oak/trunk/oak-it/osgi/src/test/java/org/apache/jackrabbit/oak/osgi/OSGiIT.java Tue Dec  3 15:36:05 2013
@@ -27,6 +27,8 @@ import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 
 import javax.inject.Inject;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.junit.Test;
@@ -97,7 +99,16 @@ public class OSGiIT {
     @Test
     public void testNodeStore() {
         System.out.println(store);
-        // System.out.println(store.getRoot());
+        System.out.println(store.getRoot());
+    }
+
+    @Inject
+    private Repository repository;
+
+    @Test
+    public void testRepository() throws RepositoryException {
+        System.out.println(repository);
+        System.out.println(repository.login().getRootNode());
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java?rev=1547439&r1=1547438&r2=1547439&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/Activator.java Tue Dec  3 15:36:05 2013
@@ -22,9 +22,25 @@ import java.util.Properties;
 
 import javax.jcr.Repository;
 
+import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.commit.JcrConflictHandler;
+import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceIndexProvider;
+import org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.RegistrationEditorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
+import org.apache.jackrabbit.oak.plugins.version.VersionEditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.OsgiWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 import org.osgi.framework.BundleActivator;
@@ -53,8 +69,7 @@ public class Activator implements Bundle
     public void start(BundleContext bundleContext) throws Exception {
         context = bundleContext;
         whiteboard = new OsgiWhiteboard(context);
-        tracker = new ServiceTracker(
-                context, ContentRepository.class.getName(), this);
+        tracker = new ServiceTracker(context, NodeStore.class.getName(), this);
         tracker.open();
     }
 
@@ -68,11 +83,30 @@ public class Activator implements Bundle
     @Override
     public Object addingService(ServiceReference reference) {
         Object service = context.getService(reference);
-        if (service instanceof ContentRepository) {
-            ContentRepository repository = (ContentRepository) service;
+        if (service instanceof NodeStore) {
+            // FIXME: get most of these plugins through OSGi
+            ContentRepository cr = new Oak((NodeStore) service)
+                .with(new InitialContent())
+                .with(JcrConflictHandler.JCR_CONFLICT_HANDLER)
+                .with(new EditorHook(new VersionEditorProvider()))
+                .with(whiteboard)
+                .with(securityProvider)
+                .with(new NameValidatorProvider())
+                .with(new NamespaceEditorProvider())
+                .with(new TypeEditorProvider())
+                .with(new RegistrationEditorProvider())
+                .with(new ConflictValidatorProvider())
+                .with(new ReferenceEditorProvider())
+                .with(new ReferenceIndexProvider())
+                .with(new PropertyIndexEditorProvider())
+                .with(new PropertyIndexProvider())
+                .with(new NodeTypeIndexProvider())
+                .withAsyncIndexing()
+                .createContentRepository();
+
             services.put(reference, context.registerService(
                     Repository.class.getName(),
-                    new OsgiRepository(repository, whiteboard, securityProvider),
+                    new OsgiRepository(cr, whiteboard, securityProvider),
                     new Properties()));
             return service;
         } else {