Author: cziegeler
Date: Thu Mar 25 08:38:48 2010
New Revision: 927303

URL: http://svn.apache.org/viewvc?rev=927303&view=rev
Log:
SLING-1462 : Add methods to get the sling home to SlingSettingsService

Modified:
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/SlingConstants.java
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/services/SlingSettingsService.java
    
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/EngineConstants.java
    
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/SlingSettingsService.java
    
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingSettingsServiceImpl.java
    
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/AbstractRepositoryEventHandlerTest.java

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/SlingConstants.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/SlingConstants.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/SlingConstants.java 
(original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/SlingConstants.java 
Thu Mar 25 08:38:48 2010
@@ -349,4 +349,34 @@ public class SlingConstants {
      * @since 2.0.6
      */
     public static final String PROPERTY_ADAPTER_CLASSES = "adapters";
+
+    /**
+     * The name of the framework property defining the Sling home directory
+     * (value is "sling.home"). This is a Platform file system directory below
+     * which all runtime data, such as the Felix bundle archives, logfiles, the
+     * repository, etc., is located.
+     * <p>
+     * This property is available calling the
+     * <code>BundleContext.getProperty(String)</code> method.
+     *
+     * @see #SLING_HOME_URL
+     * @since 2.1
+     */
+    public static final String SLING_HOME = "sling.home";
+
+    /**
+     * The name of the framework property defining the Sling home directory as
+     * an URL (value is "sling.home.url").
+     * <p>
+     * The value of this property is assigned the value of
+     * <code>new File(${sling.home}).toURI().toString()</code> before
+     * resolving the property variables.
+     * <p>
+     * This property is available calling the
+     * <code>BundleContext.getProperty(String)</code> method.
+     *
+     * @see #SLING_HOME
+     * @since 2.1
+     */
+    public static final String SLING_HOME_URL = "sling.home.url";
 }

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/services/SlingSettingsService.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/services/SlingSettingsService.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/services/SlingSettingsService.java
 (original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/services/SlingSettingsService.java
 Thu Mar 25 08:38:48 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.api.services;
 
+import java.net.URL;
+
 /**
  * The <code>SlingSettingsService</code> provides basic Sling settings.
  *
@@ -29,4 +31,16 @@ public interface SlingSettingsService {
      * The identifier of the running Sling instance.
      */
     String getSlingId();
+
+    /**
+     * Returns the value of the {...@link 
org.apache.sling.api.SlingConstants#SLING_HOME}
+     * property.
+     */
+    String getSlingHomePath();
+
+    /**
+     * Returns the value of the {...@link 
org.apache.sling.api.SlingConstants#SLING_HOME_URL}
+     * property.
+     */
+    URL getSlingHome();
 }

Modified: 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/EngineConstants.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/EngineConstants.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/EngineConstants.java
 (original)
+++ 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/EngineConstants.java
 Thu Mar 25 08:38:48 2010
@@ -36,7 +36,9 @@ public class EngineConstants {
      * <code>BundleContext.getProperty(String)</code> method.
      *
      * @see #SLING_HOME_URL
+     * @deprecated Use {...@link 
org.apache.sling.api.SlingConstants#SLING_HOME}
      */
+    @Deprecated
     public static final String SLING_HOME = "sling.home";
 
     /**
@@ -51,7 +53,9 @@ public class EngineConstants {
      * <code>BundleContext.getProperty(String)</code> method.
      *
      * @see #SLING_HOME
+     * @deprecated Use {...@link 
org.apache.sling.api.SlingConstants#SLING_HOME_URL}
      */
+    @Deprecated
     public static final String SLING_HOME_URL = "sling.home.url";
 
     /**
@@ -86,6 +90,7 @@ public class EngineConstants {
      *
      * @deprecated as of bundle version 2.1
      */
+    @Deprecated
     public static final String SESSION = "javax.jcr.Session";
 
 }

Modified: 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/SlingSettingsService.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/SlingSettingsService.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/SlingSettingsService.java
 (original)
+++ 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/SlingSettingsService.java
 Thu Mar 25 08:38:48 2010
@@ -23,8 +23,7 @@ package org.apache.sling.engine;
  * @deprecated Use the {...@link 
org.apache.sling.api.services.SlingSettingsService}
  */
 @Deprecated
-public interface SlingSettingsService
-    extends org.apache.sling.api.services.SlingSettingsService {
+public interface SlingSettingsService {
 
     /**
      * The identifier of the running Sling instance.

Modified: 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingSettingsServiceImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingSettingsServiceImpl.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingSettingsServiceImpl.java
 (original)
+++ 
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingSettingsServiceImpl.java
 Thu Mar 25 08:38:48 2010
@@ -22,8 +22,11 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.UUID;
 
+import org.apache.sling.api.SlingConstants;
 import org.apache.sling.engine.SlingSettingsService;
 import org.osgi.framework.BundleContext;
 import org.slf4j.LoggerFactory;
@@ -31,7 +34,8 @@ import org.slf4j.LoggerFactory;
 /**
  * This is the basic implementation of the sling settings service.
  */
-public class SlingSettingsServiceImpl implements SlingSettingsService {
+public class SlingSettingsServiceImpl
+    implements SlingSettingsService, 
org.apache.sling.api.services.SlingSettingsService {
 
     /** The logger */
     private org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -39,7 +43,22 @@ public class SlingSettingsServiceImpl im
     /** The sling instance id. */
     private String slingId;
 
+    /** The sling home */
+    private final String slingHome;
+
+    /** The sling home url */
+    private URL slingHomeUrl;
+
     public SlingSettingsServiceImpl(final BundleContext context) {
+        this.slingHome = context.getProperty(SlingConstants.SLING_HOME);
+        final String url = context.getProperty(SlingConstants.SLING_HOME_URL);
+        if ( url != null ) {
+            try {
+                this.slingHomeUrl = new URL(url);
+            } catch (MalformedURLException e) {
+                logger.error("Sling home url is not a url: {}", url);
+            }
+        }
         // try to read the id from the id file first
         File idFile = context.getDataFile("sling.id.file");
         if ( idFile == null ) {
@@ -100,4 +119,18 @@ public class SlingSettingsServiceImpl im
     public String getSlingId() {
         return this.slingId;
     }
+
+    /**
+     * @see org.apache.sling.api.services.SlingSettingsService#getSlingHome()
+     */
+    public URL getSlingHome() {
+        return this.slingHomeUrl;
+    }
+
+    /**
+     * @see 
org.apache.sling.api.services.SlingSettingsService#getSlingHomePath()
+     */
+    public String getSlingHomePath() {
+        return this.slingHome;
+    }
 }

Modified: 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/AbstractRepositoryEventHandlerTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/AbstractRepositoryEventHandlerTest.java?rev=927303&r1=927302&r2=927303&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/AbstractRepositoryEventHandlerTest.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/AbstractRepositoryEventHandlerTest.java
 Thu Mar 25 08:38:48 2010
@@ -20,6 +20,7 @@ package org.apache.sling.event.impl;
 
 import static org.junit.Assert.assertTrue;
 
+import java.net.URL;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
@@ -88,6 +89,14 @@ public abstract class AbstractRepository
             public String getSlingId() {
                 return SLING_ID;
             }
+
+            public URL getSlingHome() {
+                return null;
+            }
+
+            public String getSlingHomePath() {
+                return null;
+            }
         };
 
         // we need a thread pool


Reply via email to