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 2008/02/22 13:09:16 UTC

svn commit: r630169 - in /incubator/sling/trunk/jcr: base/src/main/java/org/apache/sling/jcr/base/util/ jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/

Author: bdelacretaz
Date: Fri Feb 22 04:09:08 2008
New Revision: 630169

URL: http://svn.apache.org/viewvc?rev=630169&view=rev
Log:
SLING-254 - sling.repository.url.override property is now used by bundle Activator to create default configuration

Modified:
    incubator/sling/trunk/jcr/base/src/main/java/org/apache/sling/jcr/base/util/RepositoryAccessor.java
    incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/Activator.java
    incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/SlingServerRepository.java

Modified: incubator/sling/trunk/jcr/base/src/main/java/org/apache/sling/jcr/base/util/RepositoryAccessor.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/base/src/main/java/org/apache/sling/jcr/base/util/RepositoryAccessor.java?rev=630169&r1=630168&r2=630169&view=diff
==============================================================================
--- incubator/sling/trunk/jcr/base/src/main/java/org/apache/sling/jcr/base/util/RepositoryAccessor.java (original)
+++ incubator/sling/trunk/jcr/base/src/main/java/org/apache/sling/jcr/base/util/RepositoryAccessor.java Fri Feb 22 04:09:08 2008
@@ -40,6 +40,12 @@
     
     /** Prefix for JNDI Repository URLs */
     public static final String JNDI_PREFIX = "jndi://";
+    
+    /** Name of the property that the jcr client and server bundles
+     *  to override their default configuration settings and connect
+     *  to the specified repository instead (SLING-254 and SLING-260)
+     */
+    public static final String REPOSITORY_URL_OVERRIDE_PROPERTY = "sling.repository.url.override";
  
     public static class RepositoryUrlException extends SlingException {
         RepositoryUrlException(String reason) {

Modified: incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/Activator.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/Activator.java?rev=630169&r1=630168&r2=630169&view=diff
==============================================================================
--- incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/Activator.java (original)
+++ incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/Activator.java Fri Feb 22 04:09:08 2008
@@ -17,8 +17,11 @@
 package org.apache.sling.jcr.jackrabbit.server;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Hashtable;
 
+import org.apache.sling.jcr.base.util.RepositoryAccessor;
+
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -136,36 +139,22 @@
                 return;
             }
 
-            String slingHome = bundleContext.getProperty("sling.home");
-
-            // make sure jackrabbit home exists
-            File homeDir = new File(slingHome, this.getRepositoryName());
-            if (!homeDir.isDirectory()) {
-                if (!homeDir.mkdirs()) {
-                    log.info("verifyConfiguration: Cannot create Jackrabbit home "
-                        + homeDir + ", failed creating default configuration");
-                    return;
-                }
+            // No config, create a default one.
+            Hashtable<String, String> defaultConfig = new Hashtable<String, String>();
+            final String overrideUrl = bundleContext.getProperty(RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY);
+            if(overrideUrl != null && overrideUrl.length() > 0) {
+                // Ignore other parameters if override URL (SLING-254) is set 
+                defaultConfig.put(RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY, overrideUrl);
+                log.debug(RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY + "=" + overrideUrl + 
+                    ", using it to create the default configuration");
+                
+            } else {
+               initDefaultConfig(defaultConfig, bundleContext); 
             }
-
-            // ensure the configuration file
-            File configFile = new File(slingHome, "repository.xml");
-            SlingServerRepository.copyFile(bundleContext.getBundle(),
-                "repository.xml", configFile);
-
-            // we have no configuration, create from default settings
-            Hashtable<String, String> props = new Hashtable<String, String>();
-            props.put(SLING_CONTEXT, slingContext);
-            props.put(SlingServerRepository.REPOSITORY_CONFIG_URL,
-                configFile.getPath());
-            props.put(SlingServerRepository.REPOSITORY_HOME_DIR,
-                homeDir.getPath());
-            props.put(SlingServerRepository.REPOSITORY_REGISTRATION_NAME,
-                this.getRepositoryName());
-
+            
             // create the factory and set the properties
             Configuration config = ca.createFactoryConfiguration(SERVER_REPOSITORY_FACTORY_PID);
-            config.update(props);
+            config.update(defaultConfig);
 
             log.debug("verifyConfiguration: Created configuration {} for {}",
                 config.getPid(), config.getFactoryPid());
@@ -176,5 +165,34 @@
         } finally {
             bundleContext.ungetService(ref);
         }
+    }
+    
+    private void initDefaultConfig(Hashtable<String, String> props, BundleContext bundleContext) throws IOException {
+        String slingHome = bundleContext.getProperty("sling.home");
+        log.debug("Creating default config, sling.home=" + slingHome);
+
+        // make sure jackrabbit home exists
+        File homeDir = new File(slingHome, this.getRepositoryName());
+        if (!homeDir.isDirectory()) {
+            if (!homeDir.mkdirs()) {
+                log.info("verifyConfiguration: Cannot create Jackrabbit home "
+                    + homeDir + ", failed creating default configuration");
+                return;
+            }
+        }
+
+        // ensure the configuration file
+        File configFile = new File(slingHome, "repository.xml");
+        SlingServerRepository.copyFile(bundleContext.getBundle(),
+            "repository.xml", configFile);
+
+        // default config values
+        props.put(SLING_CONTEXT, slingContext);
+        props.put(SlingServerRepository.REPOSITORY_CONFIG_URL,
+            configFile.getPath());
+        props.put(SlingServerRepository.REPOSITORY_HOME_DIR,
+            homeDir.getPath());
+        props.put(SlingServerRepository.REPOSITORY_REGISTRATION_NAME,
+            this.getRepositoryName());
     }
 }

Modified: incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/SlingServerRepository.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/SlingServerRepository.java?rev=630169&r1=630168&r2=630169&view=diff
==============================================================================
--- incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/SlingServerRepository.java (original)
+++ incubator/sling/trunk/jcr/jackrabbit-server/src/main/java/org/apache/sling/jcr/jackrabbit/server/SlingServerRepository.java Fri Feb 22 04:09:08 2008
@@ -98,11 +98,6 @@
     public static final String REPOSITORY_REGISTRATION_NAME = "name";
 
     /**
-     * @scr.property value="sling.repository.url.override"
-     */
-    public static final String REPOSITORY_URL_OVERRIDE_NAME = "repository.url.override.property"; 
-
-    /**
      * @scr.reference
      */
     private LogService log;
@@ -166,23 +161,20 @@
         @SuppressWarnings("unchecked")
         Dictionary<String, Object> environment = this.getComponentContext().getProperties();
         
-        final String urlOverrideProperty = (String) environment.get(REPOSITORY_URL_OVERRIDE_NAME);
-        String repositoryUrl = null;
-        if(urlOverrideProperty!=null && urlOverrideProperty.length() > 0) {
-            repositoryUrl = System.getProperty(urlOverrideProperty);
-        }
+        // if the environment provides a repository override URL, other settings are ignored
+        final String overrideUrl = (String) environment.get(RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY);
         
-        if(repositoryUrl != null) {
+        if(overrideUrl != null && overrideUrl.length() > 0) {
             log.log(LogService.LOG_INFO, 
-                    "Will not use embedded repository due to system property " + urlOverrideProperty 
-                    + "=" + repositoryUrl
+                    "Will not use embedded repository due to property " + RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY 
+                    + "=" + overrideUrl
                     + ", acquiring repository using that URL"
                     );
-            return getRepositoryFromUrl(repositoryUrl);
+            return getRepositoryFromUrl(overrideUrl);
             
         } else {
             log.log(LogService.LOG_INFO, 
-                    "Repository URL override system property (" + urlOverrideProperty 
+                    "Repository URL override property (" +  RepositoryAccessor.REPOSITORY_URL_OVERRIDE_PROPERTY
                     + ") not set, using embedded repository"); 
             return getEmbeddedRepository(environment);
         }