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