You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/09/11 17:48:17 UTC

svn commit: r1521913 - in /sling/whiteboard/bdelacretaz: bdelacretaz-oak-server/ bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/ it-repository/ it-repository/src/test/java/org/apache/sling/jcr/repository/it/ oak-launchpad/src/main/bun...

Author: bdelacretaz
Date: Wed Sep 11 15:48:17 2013
New Revision: 1521913

URL: http://svn.apache.org/r1521913
Log:
SLING-2788 - loginAdministrative and Sling node types work now

Modified:
    sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml
    sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/JcrRepositoryHacks.java
    sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepository.java
    sling/whiteboard/bdelacretaz/it-repository/pom.xml
    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=1521913&r1=1521912&r2=1521913&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/pom.xml Wed Sep 11 15:48:17 2013
@@ -38,7 +38,7 @@
 
     <properties>
         <sling.java.version>6</sling.java.version>
-        <oak.version>0.8-r1520083</oak.version>
+        <oak.version>0.9-SNAPSHOT</oak.version>
     </properties>
 
     <build>

Modified: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/JcrRepositoryHacks.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/JcrRepositoryHacks.java?rev=1521913&r1=1521912&r2=1521913&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/JcrRepositoryHacks.java (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/JcrRepositoryHacks.java Wed Sep 11 15:48:17 2013
@@ -23,7 +23,7 @@ import javax.jcr.Session;
 
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
+import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 

Modified: sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepository.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepository.java?rev=1521913&r1=1521912&r2=1521913&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepository.java (original)
+++ sling/whiteboard/bdelacretaz/bdelacretaz-oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepository.java Wed Sep 11 15:48:17 2013
@@ -17,7 +17,11 @@
  */
 package org.apache.sling.oak.server;
 
+import static com.google.common.collect.ImmutableSet.of;
+import static com.google.common.collect.Lists.newArrayList;
 import static java.util.Collections.singleton;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefinition;
 
 import java.security.Principal;
 import java.security.PrivilegedActionException;
@@ -44,10 +48,27 @@ import org.apache.felix.scr.annotations.
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.AuthInfo;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
+import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl;
+import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.commit.JcrConflictHandler;
+import org.apache.jackrabbit.oak.plugins.index.aggregate.AggregateIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
+import org.apache.jackrabbit.oak.plugins.index.aggregate.SimpleNodeAggregator;
 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.lucene.util.LuceneIndexHelper;
+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.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl;
@@ -57,6 +78,8 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.OsgiWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
@@ -89,11 +112,34 @@ public class OakSlingRepository extends 
         final Whiteboard whiteboard = new OsgiWhiteboard(ctx.getBundleContext());
         securityProvider = new SecurityProviderImpl(buildSecurityConfig());
         final Oak oak = new Oak(nodeStore)
+        .with(new InitialContent())
+        .with(new ExtraSlingContent())
+
+        .with(JcrConflictHandler.JCR_CONFLICT_HANDLER)
+        .with(new EditorHook(new VersionEditorProvider()))
+
         .with(securityProvider)
+
+        .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())
+        .with(AggregateIndexProvider.wrap(new LuceneIndexProvider()
+                .with(getNodeAggregator())))
+
+        .with(getDefaultWorkspace())
         .withAsyncIndexing()
-        .with(whiteboard);
+        .with(whiteboard)
+        ;
         
         final ContentRepository contentRepository = oak.createContentRepository();  
         jcrRepository = new JcrRepositoryHacks(contentRepository, whiteboard, securityProvider);
@@ -106,6 +152,12 @@ public class OakSlingRepository extends 
         tearDown();
     }
     
+    private static NodeAggregator getNodeAggregator() {
+        return new SimpleNodeAggregator()
+            .newRuleWithName("nt:file", newArrayList("jcr:content"))
+            ;
+    }
+    
     @Override
     public String getDescriptor(String key) {
         return jcrRepository.getDescriptor(key);
@@ -177,6 +229,59 @@ public class OakSlingRepository extends 
         return adminSession;
     }
     
+    private static final class ExtraSlingContent implements RepositoryInitializer {
+
+        @Override
+        public NodeState initialize(NodeState state) {
+            NodeBuilder root = state.builder();
+            if (root.hasChildNode(INDEX_DEFINITIONS_NAME)) {
+                NodeBuilder index = root.child(INDEX_DEFINITIONS_NAME);
+                
+                // jcr: 
+                property(index, "jcrLanguage", "jcr:language");
+                property(index, "jcrLockOwner", "jcr:lockOwner");
+                
+                // sling:
+                property(index, "slingAlias", "sling:alias");
+                property(index, "slingResource", "sling:resource");
+                property(index, "slingResourceType", "sling:resourceType");
+                property(index, "slingVanityPath", "sling:vanityPath");
+                
+                // various
+                property(index, "event.job.topic", "event.job.topic");
+                property(index, "extensionType", "extensionType");
+                property(index, "lockCreated", "lock.created");
+                property(index, "status", "status");
+                property(index, "type", "type");
+
+                // lucene full-text index
+                if (!index.hasChildNode("lucene")) {
+                    LuceneIndexHelper.newLuceneIndexDefinition(
+                            index, "lucene", LuceneIndexHelper.JR_PROPERTY_INCLUDES,
+                            of(
+                               "jcr:createdBy",
+                               "jcr:lastModifiedBy", 
+                               "sling:alias", 
+                               "sling:resourceType",
+                               "sling:vanityPath"),
+                            "async");
+                }
+                
+            }
+            return root.getNodeState();
+        }
+        
+        /**
+         * A convenience method to create a non-unique property index.
+         */
+        private static void property(NodeBuilder index, String indexName, String propertyName) {
+            if (!index.hasChildNode(indexName)) {
+                createIndexDefinition(index, indexName, true, false, singleton(propertyName), null);
+            }
+        }
+        
+    }
+    
     // TODO: use proper osgi configuration (once that works in oak)
     private static ConfigurationParameters buildSecurityConfig() {
         Map<String, Object> userConfig = new HashMap<String, Object>();

Modified: sling/whiteboard/bdelacretaz/it-repository/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-repository/pom.xml?rev=1521913&r1=1521912&r2=1521913&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/it-repository/pom.xml (original)
+++ sling/whiteboard/bdelacretaz/it-repository/pom.xml Wed Sep 11 15:48:17 2013
@@ -27,7 +27,7 @@
         <url.version>1.5.2</url.version>
         <org.ops4j.pax.logging.DefaultServiceLog.level>INFO</org.ops4j.pax.logging.DefaultServiceLog.level>
         <org.ops4j.pax.url.mvn.settings></org.ops4j.pax.url.mvn.settings>
-        <oak.version>0.8-r1520083</oak.version>
+        <oak.version>0.9-SNAPSHOT</oak.version>
     </properties>
 
     <build>

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=1521913&r1=1521912&r2=1521913&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 Wed Sep 11 15:48:17 2013
@@ -104,7 +104,7 @@ public class OakRepositoryIT extends Sli
                 mavenBundle("org.apache.jackrabbit", "jackrabbit-jcr-commons", "2.8-SNAPSHOT"),
                 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 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),

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=1521913&r1=1521912&r2=1521913&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 Wed Sep 11 15:48:17 2013
@@ -55,12 +55,19 @@ public abstract class SlingRepositoryITB
     }
     
     @Test
-    public void testLogin() throws RepositoryException {
+    public void testLoginAdministrative() throws RepositoryException {
         final Session s = repository.loginAdministrative(null);
         assertNotNull(s);
         s.logout();
     }
 
+    @Test
+    @Ignore("Fails on Oak: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule")
+    public void testAdminLogin() throws RepositoryException {
+        final Credentials creds = new SimpleCredentials("admin", "admin".toCharArray());
+        repository.login(creds).logout();
+    }
+    
     @Test(expected=RepositoryException.class)
     public void testWrongLogin() throws RepositoryException {
         final Credentials creds = new SimpleCredentials("badName", "badPAssword".toCharArray());
@@ -93,7 +100,6 @@ public abstract class SlingRepositoryITB
     }
 
     @Test
-    @Ignore("doesn't seem to work with Oak 0.8")
     public void testCreateRetrieveSlingFolder() throws RepositoryException {
         assertCreateRetrieveNode("sling:Folder");
     }

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=1521913&r1=1521912&r2=1521913&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml (original)
+++ sling/whiteboard/bdelacretaz/oak-launchpad/src/main/bundles/list.xml Wed Sep 11 15:48:17 2013
@@ -502,37 +502,39 @@
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-core</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
+<!-- embedded for now
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-jcr</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
+-->
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-commons</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-mk</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-mk-api</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-mk-remote</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
         <bundle>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-lucene</artifactId>
-            <version>0.8-r1520083</version>
+            <version>0.9-SNAPSHOT</version>
         </bundle>
         
         <!-- Jackrabbit bundles that Oak 0.8 needs -->