Author: bdelacretaz
Date: Fri Aug 16 14:48:56 2013
New Revision: 1514742

URL: http://svn.apache.org/r1514742
Log:
SLING-2788 - enable Oak search functionality and add a few other Oak components

Modified:
    sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml
    
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
    
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/OakRepositoryIT.java
    
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/SlingRepositoryITBase.java
    sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml

Modified: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml?rev=1514742&r1=1514741&r2=1514742&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml Fri Aug 16 
14:48:56 2013
@@ -95,6 +95,12 @@
             <version>${oak.version}</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-lucene</artifactId>
+            <version>${oak.version}</version>
+            <scope>provided</scope>
+        </dependency>
         
         <dependency>
             <groupId>org.apache.sling</groupId>

Modified: 
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java?rev=1514742&r1=1514741&r2=1514742&view=diff
==============================================================================
--- 
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
 (original)
+++ 
sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/SlingRepositoryImpl.java
 Fri Aug 16 14:48:56 2013
@@ -31,6 +31,20 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.commit.JcrConflictHandler;
+import 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+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.name.NameValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceValidatorProvider;
+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;
@@ -54,10 +68,35 @@ public class SlingRepositoryImpl extends
     
     @Activate
     protected void activate(ComponentContext ctx) {
+        // TODO OpenSecurityProvider does not check anything, should use 
+        // at least a SecurityProviderImpl, but that doesn't work with oak 0.8
+        // (LoginModule class not found)
         final SecurityProvider sp = new OpenSecurityProvider();
-        // TODO barebones setup for now...might not provide much functionality.
-        // TODO for a simple config (tar persistence) we could use the 
SegmentNodeStoreService
-        oakRepository = new Jcr(new 
Oak(nodeStore)).with(sp).createRepository();
+        
+        oakRepository = new Jcr(new Oak(nodeStore))
+        .with(sp)
+        .with(new InitialContent())
+
+        .with(JcrConflictHandler.JCR_CONFLICT_HANDLER)
+        .with(new EditorHook(new VersionEditorProvider()))
+
+        .with(new NameValidatorProvider())
+        .with(new NamespaceValidatorProvider())
+        .with(new TypeEditorProvider())
+        .with(new RegistrationEditorProvider())
+        .with(new ConflictValidatorProvider())
+
+        // index stuff
+        .with(new PropertyIndexEditorProvider())
+
+        .with(new PropertyIndexProvider())
+        .with(new NodeTypeIndexProvider())
+
+        .with(new LuceneIndexEditorProvider())
+        .with(new LuceneIndexProvider())
+
+        //.withAsyncIndexing() // TODO oak 0.9?
+        .createRepository();
     }
     
     @Override

Modified: 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/OakRepositoryIT.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/OakRepositoryIT.java?rev=1514742&r1=1514741&r2=1514742&view=diff
==============================================================================
--- 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/OakRepositoryIT.java
 (original)
+++ 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/OakRepositoryIT.java
 Fri Aug 16 14:48:56 2013
@@ -104,11 +104,12 @@ public class OakRepositoryIT extends Sli
                 mavenBundle("org.apache.jackrabbit", "jackrabbit-jcr-commons", 
"2.7.0"),
                 mavenBundle("org.apache.jackrabbit", "jackrabbit-jcr-rmi", 
"2.4.2"),
                 mavenBundle("org.apache.jackrabbit", "oak-core", oakVersion),
-                //mavenBundle("org.apache.jackrabbit", "oak-jcr", oakVersion),
+                //embedded in server bundle for now 
mavenBundle("org.apache.jackrabbit", "oak-jcr", oakVersion),
                 mavenBundle("org.apache.jackrabbit", "oak-commons", 
oakVersion),
                 mavenBundle("org.apache.jackrabbit", "oak-mk", oakVersion),
                 mavenBundle("org.apache.jackrabbit", "oak-mk-api", oakVersion),
                 mavenBundle("org.apache.jackrabbit", "oak-mk-remote", 
oakVersion),
+                mavenBundle("org.apache.jackrabbit", "oak-lucene", oakVersion),
 
                 // Testing
                 mavenBundle("org.apache.sling", 
"org.apache.sling.testing.tools", "1.0.6"),

Modified: 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/SlingRepositoryITBase.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/SlingRepositoryITBase.java?rev=1514742&r1=1514741&r2=1514742&view=diff
==============================================================================
--- 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/SlingRepositoryITBase.java
 (original)
+++ 
sling/whiteboard/bdelacretaz/it-repository/src/test/java/org/apache/sling/jcr/repository/it/SlingRepositoryITBase.java
 Fri Aug 16 14:48:56 2013
@@ -23,9 +23,11 @@ import static org.junit.Assert.assertNot
 import javax.inject.Inject;
 import javax.jcr.Credentials;
 import javax.jcr.Node;
+import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
+import javax.jcr.query.Query;
 
 import org.apache.sling.jcr.api.SlingRepository;
 import org.junit.Ignore;
@@ -87,6 +89,34 @@ public abstract class SlingRepositoryITB
     }
 
     @Test
+    public void testQuery() throws RepositoryException {
+        final Session s = repository.loginAdministrative(null);
+        final String id = "ID_" + System.currentTimeMillis();
+        final String propName = "PROP_" + id;
+        final String value = "VALUE_" + id;
+        try {
+            final int N_NODES = 100;
+            for(int i=0 ; i < N_NODES; i++) {
+                final Node root = s.getRootNode();
+                root.addNode(id + i).setProperty(propName, value);
+            }
+            s.save();
+            
+            final String stmt = "SELECT * FROM nt:base WHERE " + propName + " 
IS NOT NULL";
+            final Query q = 
s.getWorkspace().getQueryManager().createQuery(stmt, Query.SQL);
+            final NodeIterator it = q.execute().getNodes();
+            int count = 0;
+            while(it.hasNext()) {
+                it.next();
+                count++;
+            }
+            assertEquals("Expected " + N_NODES + " result for query " + stmt, 
N_NODES, count);
+        } finally {
+            s.logout();
+        }
+    }
+    
+    @Test
     public final void checkRepositoryDescriptors() {
         doCheckRepositoryDescriptors();
     }

Modified: sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml?rev=1514742&r1=1514741&r2=1514742&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml 
(original)
+++ sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml Fri 
Aug 16 14:48:56 2013
@@ -526,6 +526,11 @@
             <artifactId>oak-mk-remote</artifactId>
             <version>0.8</version>
         </bundle>
+        <bundle>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-lucene</artifactId>
+            <version>0.8</version>
+        </bundle>
         
         <!-- Jackrabbit bundles that Oak 0.8 needs -->
         <bundle>


Reply via email to