You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2012/10/24 13:31:38 UTC

svn commit: r1401623 - in /sling/trunk/bundles/jcr/jackrabbit-server: ./ src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/ src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/security/ src/main/java/org/apache/sling/jcr/jackrabbit/server...

Author: cziegeler
Date: Wed Oct 24 11:31:38 2012
New Revision: 1401623

URL: http://svn.apache.org/viewvc?rev=1401623&view=rev
Log:
SLING-2624 : Improving Jackrabbit integration with OSGi Service Registry. Reverting as test case is failing

Removed:
    sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/security/OsgiAwareSecurityManager.java
    sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/security/SlingDefaultLoginModule.java
Modified:
    sling/trunk/bundles/jcr/jackrabbit-server/pom.xml
    sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/Activator.java
    sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/SlingServerRepository.java
    sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml

Modified: sling/trunk/bundles/jcr/jackrabbit-server/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/pom.xml?rev=1401623&r1=1401622&r2=1401623&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/jackrabbit-server/pom.xml (original)
+++ sling/trunk/bundles/jcr/jackrabbit-server/pom.xml Wed Oct 24 11:31:38 2012
@@ -97,10 +97,7 @@
                              org.apache.sling.jcr.jackrabbit.server;version=2.1.0,
                              org.apache.sling.jcr.jackrabbit.server.security;version=2.0.4-incubator,
                              org.apache.sling.jcr.jackrabbit.server.security.accessmanager;version=2.1.0,
-                             org.apache.jackrabbit.core.security.principal;version=2.2.5,
-                             org.apache.jackrabbit.core.security.authentication;version=2.2.5,
-                             org.apache.jackrabbit.core.security.authentication.token;version=2.2.5,
-                             org.apache.jackrabbit.core.security.user.action;version=2.4.0
+                             org.apache.jackrabbit.core.security.principal;version=2.2.5
                         </Export-Package>
                         <Private-Package>
                             org.apache.sling.jcr.jackrabbit.server.impl.*,
@@ -140,8 +137,6 @@
                             org.apache.jackrabbit.commons.*,
                             org.apache.jackrabbit.spi.commons.*,
 
-                            org.apache.felix.jaas.boot;resolution:=optional,
-
                             <!-- optional JDBC driver import -->
                             com.microsoft.sqlserver.jdbc;
                             oracle.jdbc;
@@ -160,17 +155,11 @@
                         <Embed-Transitive>true</Embed-Transitive>
                         <Embed-Dependency>
                             jackrabbit-core,
-                            org.apache.sling.jcr.jackrabbit.base,
                             lucene-core,
                             concurrent,
                             commons-dbcp,
                             commons-pool
                         </Embed-Dependency>
-                        <Jaas-ModuleClass>
-                            org.apache.jackrabbit.core.security.authentication.DefaultLoginModule,
-                            org.apache.jackrabbit.core.security.simple.SimpleLoginModule,
-                            org.apache.sling.jcr.jackrabbit.server.security.SlingDefaultLoginModule
-                        </Jaas-ModuleClass>
                         <_removeheaders>
                             Embed-Dependency,
                             Embed-Transitive,
@@ -211,12 +200,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.jcr.jackrabbit.base</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.jcr.base</artifactId>
             <version>2.1.0</version>
             <scope>compile</scope>
@@ -232,7 +215,7 @@
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>jackrabbit-core</artifactId>
-            <version>2.5.2</version>
+            <version>2.4.2</version>
             <scope>compile</scope>
         </dependency>
 

Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/Activator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/Activator.java?rev=1401623&r1=1401622&r2=1401623&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/Activator.java (original)
+++ sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/Activator.java Wed Oct 24 11:31:38 2012
@@ -17,19 +17,14 @@
 package org.apache.sling.jcr.jackrabbit.server.impl;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.Dictionary;
 import java.util.Hashtable;
 
 import org.apache.sling.jcr.base.AbstractSlingRepository;
 import org.apache.sling.jcr.base.util.RepositoryAccessor;
-import org.apache.sling.jcr.jackrabbit.base.config.OsgiBeanFactory;
-import org.apache.sling.jcr.jackrabbit.base.security.MultiplexingAuthorizableAction;
-import org.apache.sling.jcr.jackrabbit.base.security.PrincipalProviderTracker;
 import org.apache.sling.jcr.jackrabbit.server.security.LoginModulePlugin;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -43,7 +38,6 @@ import org.osgi.service.cm.Configuration
 import org.osgi.util.tracker.ServiceTracker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.xml.sax.InputSource;
 
 /**
  * The <code>Activator</code> TODO
@@ -90,12 +84,6 @@ public class Activator implements Bundle
     private String slingContext;
     private static AccessManagerFactoryTracker accessManagerFactoryTracker;
 
-    private static PrincipalProviderTracker principalProviderTracker;
-
-    private OsgiBeanFactory beanFactory;
-
-    private MultiplexingAuthorizableAction authorizableActionTracker;
-
     protected String getRepositoryName() {
     	String repoName = bundleContext.getProperty("sling.repository.name");
     	if (repoName != null) {
@@ -141,16 +129,6 @@ public class Activator implements Bundle
             accessManagerFactoryTracker = new AccessManagerFactoryTracker(bundleContext);
         }
         accessManagerFactoryTracker.open();
-
-        if(principalProviderTracker == null){
-            principalProviderTracker = new PrincipalProviderTracker(bundleContext);
-        }
-        principalProviderTracker.open();
-
-        if(authorizableActionTracker == null){
-            authorizableActionTracker = new MultiplexingAuthorizableAction(bundleContext);
-        }
-        authorizableActionTracker.open();
     }
 
     public void stop(BundleContext arg0) {
@@ -169,21 +147,6 @@ public class Activator implements Bundle
             accessManagerFactoryTracker = null;
         }
 
-        if(principalProviderTracker != null){
-            principalProviderTracker.close();
-            principalProviderTracker = null;
-        }
-
-        if(beanFactory != null){
-            beanFactory.close();
-            beanFactory = null;
-        }
-
-        if(authorizableActionTracker != null){
-            authorizableActionTracker.close();
-            authorizableActionTracker = null;
-        }
-
         // clear the bundle context field
         bundleContext = null;
     }
@@ -247,10 +210,6 @@ public class Activator implements Bundle
         return accessManagerFactoryTracker;
     }
 
-    public static PrincipalProviderTracker getPrincipalProviderTracker(){
-        return principalProviderTracker;
-    }
-
     // ---------- internal -----------------------------------------------------
 
     private void verifyConfiguration(ServiceReference ref) {
@@ -270,7 +229,6 @@ public class Activator implements Bundle
                     "verifyConfiguration: {} Configurations available for {}, nothing to do",
                     new Object[] { new Integer(cfgs.length),
                         SERVER_REPOSITORY_FACTORY_PID });
-                createBeanFactory(cfgs[0]);
                 return;
             }
 
@@ -290,7 +248,7 @@ public class Activator implements Bundle
             // create the factory and set the properties
             Configuration config = ca.createFactoryConfiguration(SERVER_REPOSITORY_FACTORY_PID);
             config.update(defaultConfig);
-            createBeanFactory(config);
+
             log.info("verifyConfiguration: Created configuration {} for {}",
                 config.getPid(), config.getFactoryPid());
 
@@ -302,47 +260,6 @@ public class Activator implements Bundle
         }
     }
 
-    /**
-     * Creates the BeanFactory by finding out the location of repository
-     * configuration. Currently it depends on internal of SlingServerRepository implementation on how it accesses the
-     * repository configuration.
-     *
-     * TODO - Find a better way to centralize logic related to configuration access
-     */
-    private void createBeanFactory(Configuration c){
-        InputSource source = null;
-        try {
-            Dictionary config = c.getProperties();
-            String home = (String) config.get(SlingServerRepository.REPOSITORY_HOME_DIR);
-
-            //1. Check override url
-            String configUrl = (String) config.get(RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY);
-
-            //2. Check default url
-            if(configUrl == null){
-              configUrl = (String) config.get(SlingServerRepository.REPOSITORY_CONFIG_URL);
-            }
-
-            //If url found create InputSource from it else
-            //point to repository home director
-            if(configUrl != null){
-                source = new InputSource(new FileInputStream(new File(configUrl)));
-            }else if(home != null){
-                String homePath = SlingServerRepository.getAbsoluteHomePath(config,bundleContext);
-                source = SlingServerRepository.getRepositoryConfigSource(new File(homePath));
-            }
-
-            if(source == null){
-                throw new IllegalStateException("Cannot determine repository configuration file location");
-            }
-
-            beanFactory = new OsgiBeanFactory(bundleContext);
-            beanFactory.initialize(source);
-        } catch (Exception e) {
-            throw new RuntimeException("Error occurred while initializing bean factory",e);
-        }
-    }
-
     private void initDefaultConfig(Hashtable<String, String> props, BundleContext bundleContext) throws IOException {
         String slingHomePath = bundleContext.getProperty("sling.home");
         String home = getHomePath(bundleContext, slingHomePath);

Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/SlingServerRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/SlingServerRepository.java?rev=1401623&r1=1401622&r2=1401623&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/SlingServerRepository.java (original)
+++ sling/trunk/bundles/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/impl/SlingServerRepository.java Wed Oct 24 11:31:38 2012
@@ -35,14 +35,10 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.ConfigurationPolicy;
 import org.apache.felix.scr.annotations.Properties;
 import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.api.management.DataStoreGarbageCollector;
 import org.apache.jackrabbit.api.management.RepositoryManager;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.config.BeanFactory;
-import org.apache.jackrabbit.core.config.ConfigurationException;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
-import org.apache.jackrabbit.core.config.RepositoryConfigurationParser;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.jcr.base.AbstractSlingRepository;
 import org.apache.sling.jcr.jackrabbit.server.impl.security.AdministrativeCredentials;
@@ -51,7 +47,6 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.log.LogService;
-import org.xml.sax.InputSource;
 
 /**
  * The <code>SlingServerRepository</code> TODO
@@ -95,9 +90,6 @@ public class SlingServerRepository exten
     @Property(value="")
     public static final String REPOSITORY_REGISTRATION_NAME = "name";
 
-    @Reference
-    private BeanFactory beanFactory;
-
     //---------- Repository Management ----------------------------------------
 
     @Override
@@ -110,8 +102,21 @@ public class SlingServerRepository exten
         @SuppressWarnings("unchecked")
         Dictionary<String, Object> environment = this.getComponentContext().getProperties();
         String configURLObj = (String) environment.get(REPOSITORY_CONFIG_URL);
-        String home = getAbsoluteHomePath(environment,getComponentContext().getBundleContext());
+        String home = (String) environment.get(REPOSITORY_HOME_DIR);
+
+        // ensure absolute home (path)
         File homeFile = new File(home);
+        if (!homeFile.isAbsolute()) {
+            BundleContext context = getComponentContext().getBundleContext();
+            String slingHomePath = context.getProperty("sling.home");
+            if (slingHomePath != null) {
+                homeFile = new File(slingHomePath, home);
+            } else {
+                homeFile = homeFile.getAbsoluteFile();
+            }
+            home = homeFile.getAbsolutePath();
+        }
+
         // somewhat dirty hack to have the derby.log file in a sensible
         // location, but don't overwrite anything already set
         if (System.getProperty("derby.stream.error.file") == null) {
@@ -152,9 +157,9 @@ public class SlingServerRepository exten
                         log(LogService.LOG_INFO, "Using configuration file " + configFile.getAbsolutePath());
                     }
                 }
-                crc = create(new InputSource(ins), homeFile);
+                crc = RepositoryConfig.create(ins, home);
             } else {
-                crc = create(getRepositoryConfigSource(homeFile), homeFile);
+                crc = RepositoryConfig.create(homeFile);
             }
 
             return RepositoryImpl.create(crc);
@@ -184,7 +189,6 @@ public class SlingServerRepository exten
         return null;
     }
 
-
     @Override
     protected void disposeRepository(Repository repository) {
         super.disposeRepository(repository);
@@ -299,27 +303,6 @@ public class SlingServerRepository exten
         }
     }
 
-    public static String getAbsoluteHomePath(Dictionary<String, Object> p,BundleContext context){
-        String home = (String) p.get(REPOSITORY_HOME_DIR);
-
-        // ensure absolute home (path)
-        File homeFile = new File(home);
-        if (!homeFile.isAbsolute()) {
-            String slingHomePath = context.getProperty("sling.home");
-            if (slingHomePath != null) {
-                homeFile = new File(slingHomePath, home);
-            } else {
-                homeFile = homeFile.getAbsoluteFile();
-            }
-            home = homeFile.getAbsolutePath();
-        }
-        return home;
-    }
-
-    public static InputSource getRepositoryConfigSource(File homeFile) throws FileNotFoundException {
-        return new InputSource(new FileInputStream(new File(homeFile, "repository.xml")));
-    }
-
     /**
      * {@inheritDoc}
      * @see org.apache.sling.jcr.base.AbstractSlingRepository#getAdministrativeCredentials(java.lang.String)
@@ -337,16 +320,4 @@ public class SlingServerRepository exten
     protected Credentials getAnonCredentials(String anonUser) {
         return new AnonCredentials(anonUser);
     }
-
-    private RepositoryConfig create(InputSource xml, File dir) throws ConfigurationException {
-        java.util.Properties variables = new java.util.Properties(System.getProperties());
-        variables.setProperty(RepositoryConfigurationParser.REPOSITORY_HOME_VARIABLE, dir.getPath());
-        RepositoryConfigurationParser parser =
-                new RepositoryConfigurationParser(variables);
-        parser.setBeanFactory(beanFactory);
-        RepositoryConfig config = parser.parseRepositoryConfig(xml);
-        config.init();
-        return config;
-    }
-
 }

Modified: sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml?rev=1401623&r1=1401622&r2=1401623&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml (original)
+++ sling/trunk/bundles/jcr/jackrabbit-server/src/main/resources/repository.xml Wed Oct 24 11:31:38 2012
@@ -18,8 +18,8 @@
   under the License.
 -->
 <!DOCTYPE Repository
-          PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.4//EN"
-          "http://jackrabbit.apache.org/dtd/repository-2.4.dtd">
+          PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.0//EN"
+          "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
 
 <Repository>
     <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
@@ -30,11 +30,6 @@
 
     <Security appName="Jackrabbit">
         <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" workspaceName="security">
-            <UserManager class="org.apache.jackrabbit.core.security.user.UserManagerImpl">
-                <param name="defaultDepth" value="1"/>
-                <param name="autoExpandTree" value="true"/>
-                <AuthorizableAction class="org.apache.jackrabbit.core.security.user.action.AuthorizableAction" />
-            </UserManager>
         </SecurityManager>
 
         <AccessManager class="org.apache.sling.jcr.jackrabbit.server.impl.security.PluggableDefaultAccessManager">