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 20:19:51 UTC

svn commit: r1547535 - in /jackrabbit/oak/trunk: oak-core/pom.xml 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 19:19:51 2013
New Revision: 1547535

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

Use the OSGi service registry to look up the available plugins

Modified:
    jackrabbit/oak/trunk/oak-core/pom.xml
    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-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1547535&r1=1547534&r2=1547535&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Tue Dec  3 19:19:51 2013
@@ -39,7 +39,7 @@
         <configuration>
           <instructions>
             <Import-Package>
-            		*
+              *
             </Import-Package>
             <Export-Package>
               org.apache.jackrabbit.oak,
@@ -47,6 +47,7 @@
               org.apache.jackrabbit.oak.kernel,
               org.apache.jackrabbit.oak.util,
               org.apache.jackrabbit.oak.namepath,
+              org.apache.jackrabbit.oak.osgi,
               org.apache.jackrabbit.oak.plugins.backup,
               org.apache.jackrabbit.oak.plugins.commit,
               org.apache.jackrabbit.oak.plugins.identifier,
@@ -87,10 +88,10 @@
             </Export-Package>
             <Jaas-ModuleClass>
               org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule,
-           	  org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl,
+              org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl,
               org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule,
               org.apache.jackrabbit.oak.security.authentication.ldap.LdapLoginModule
-           	</Jaas-ModuleClass>
+            </Jaas-ModuleClass>
             <Bundle-Activator>
               org.apache.jackrabbit.oak.osgi.Activator
             </Bundle-Activator>

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=1547535&r1=1547534&r2=1547535&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 19:19:51 2013
@@ -108,7 +108,7 @@ public class OSGiIT {
     @Test
     public void testRepository() throws RepositoryException {
         System.out.println(repository);
-        System.out.println(repository.login().getRootNode());
+        System.out.println(repository.getDescriptor(Repository.REP_NAME_DESC));
     }
 
 }

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=1547535&r1=1547534&r2=1547535&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 19:19:51 2013
@@ -24,25 +24,23 @@ 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.osgi.OsgiEditorProvider;
+import org.apache.jackrabbit.oak.osgi.OsgiIndexEditorProvider;
+import org.apache.jackrabbit.oak.osgi.OsgiIndexProvider;
 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.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
+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.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.OsgiWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
+import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -54,27 +52,59 @@ public class Activator implements Bundle
 
     private BundleContext context;
 
-    private Whiteboard whiteboard;
-
-    private SecurityProvider securityProvider = new OpenSecurityProvider(); // TODO review
-
     private ServiceTracker tracker;
 
     private final Map<ServiceReference, ServiceRegistration> services =
             new HashMap<ServiceReference, ServiceRegistration>();
 
+    private final OsgiEditorProvider editorProvider =
+            new OsgiEditorProvider();
+
+    private final OsgiIndexEditorProvider indexEditorProvider =
+            new OsgiIndexEditorProvider();
+
+    private final OsgiIndexProvider indexProvider =
+            new OsgiIndexProvider();
+
+    // TODO should not be hardcoded
+    private final SecurityProvider securityProvider =
+            new SecurityProviderImpl(buildSecurityConfig());
+
+    private static ConfigurationParameters buildSecurityConfig() {
+        Map<String, Object> userConfig = new HashMap<String, Object>();
+        userConfig.put(UserConstants.PARAM_GROUP_PATH, "/home/groups");
+        userConfig.put(UserConstants.PARAM_USER_PATH, "/home/users");
+        userConfig.put(UserConstants.PARAM_DEFAULT_DEPTH, 1);
+        userConfig.put(AccessControlAction.USER_PRIVILEGE_NAMES, new String[] {PrivilegeConstants.JCR_ALL});
+        userConfig.put(AccessControlAction.GROUP_PRIVILEGE_NAMES, new String[] {PrivilegeConstants.JCR_READ});
+        userConfig.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT);
+
+        Map<String, Object> config = new HashMap<String, Object>();
+        config.put(
+                UserConfiguration.NAME,
+                ConfigurationParameters.of(userConfig));
+        return ConfigurationParameters.of(config);
+    }
+
     //-----------------------------------------------------< BundleActivator >--
 
     @Override
     public void start(BundleContext bundleContext) throws Exception {
         context = bundleContext;
-        whiteboard = new OsgiWhiteboard(context);
         tracker = new ServiceTracker(context, NodeStore.class.getName(), this);
         tracker.open();
+
+        editorProvider.start(bundleContext);
+        indexEditorProvider.start(bundleContext);
+        indexProvider.start(bundleContext);
     }
 
     @Override
     public void stop(BundleContext bundleContext) throws Exception {
+        indexProvider.stop();
+        indexEditorProvider.stop();
+        editorProvider.stop();
+
         tracker.close();
     }
 
@@ -84,23 +114,16 @@ public class Activator implements Bundle
     public Object addingService(ServiceReference reference) {
         Object service = context.getService(reference);
         if (service instanceof NodeStore) {
-            // FIXME: get most of these plugins through OSGi
+            Whiteboard whiteboard = new OsgiWhiteboard(context);
+
             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())
+                .with(editorProvider)
+                .with(indexEditorProvider)
+                .with(indexProvider)
                 .withAsyncIndexing()
                 .createContentRepository();