You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2014/05/09 19:55:14 UTC

svn commit: r1593586 - in /commons/proper/jcs/trunk: commons-jcs-jcache-extras/ commons-jcs-jcache/ commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/ commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/

Author: rmannibucau
Date: Fri May  9 17:55:13 2014
New Revision: 1593586

URL: http://svn.apache.org/r1593586
Log:
adding substitution feature to jcache properties, using [lang3] is present or raw mode (whole property) if not

Added:
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/DefaultSubsitutor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Lang3Substitutor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Subsitutor.java
Modified:
    commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml
    commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java

Modified: commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml?rev=1593586&r1=1593585&r2=1593586&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml Fri May  9 17:55:13 2014
@@ -47,6 +47,12 @@
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-interceptor_1.1_spec</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-servlet_3.0_spec</artifactId>
+      <version>1.0</version>
+      <scope>provided</scope>
+    </dependency>
 
     <dependency>
       <groupId>junit</groupId>

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml?rev=1593586&r1=1593585&r2=1593586&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml Fri May  9 17:55:13 2014
@@ -51,6 +51,13 @@
     </dependency>
 
     <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.2.1</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java?rev=1593586&r1=1593585&r2=1593586&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/JCSCache.java Fri May  9 17:55:13 2014
@@ -21,6 +21,7 @@ package org.apache.commons.jcs.jcache;
 import org.apache.commons.jcs.jcache.jmx.JCSCacheMXBean;
 import org.apache.commons.jcs.jcache.jmx.JCSCacheStatisticsMXBean;
 import org.apache.commons.jcs.jcache.jmx.JMXs;
+import org.apache.commons.jcs.jcache.lang.Subsitutor;
 import org.apache.commons.jcs.jcache.proxy.ExceptionWrapperHandler;
 import org.apache.commons.jcs.jcache.serialization.Serializations;
 import org.apache.commons.jcs.jcache.thread.DaemonThreadFactory;
@@ -65,6 +66,8 @@ import static org.apache.commons.jcs.jca
 
 public class JCSCache<K extends Serializable, V extends Serializable, C extends CompleteConfiguration<K, V>> implements Cache<K, V>
 {
+    private static final Subsitutor SUBSTITUTOR = Subsitutor.Helper.INSTANCE;
+
     private final ConcurrentMap<JCSKey<K>, JCSElement<V>> delegate;
     private final JCSCachingManager manager;
     private final JCSConfiguration<K, V> config;
@@ -173,7 +176,7 @@ public class JCSCache<K extends Serializ
 
     private static String property(final Properties properties, final String cacheName, final String name, final String defaultValue)
     {
-        return properties.getProperty(cacheName + "." + name, properties.getProperty(name, defaultValue));
+        return SUBSTITUTOR.substitute(properties.getProperty(cacheName + "." + name, properties.getProperty(name, defaultValue)));
     }
 
     private void assertNotClosed()

Added: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/DefaultSubsitutor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/DefaultSubsitutor.java?rev=1593586&view=auto
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/DefaultSubsitutor.java (added)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/DefaultSubsitutor.java Fri May  9 17:55:13 2014
@@ -0,0 +1,13 @@
+package org.apache.commons.jcs.jcache.lang;
+
+public class DefaultSubsitutor implements Subsitutor
+{
+    @Override
+    public String substitute(final String value)
+    {
+        if (value.startsWith("${") && value.endsWith("}")) {
+            return System.getProperty(value.substring("${".length(), value.length() - 1), value);
+        }
+        return value;
+    }
+}

Added: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Lang3Substitutor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Lang3Substitutor.java?rev=1593586&view=auto
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Lang3Substitutor.java (added)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Lang3Substitutor.java Fri May  9 17:55:13 2014
@@ -0,0 +1,15 @@
+package org.apache.commons.jcs.jcache.lang;
+
+import org.apache.commons.lang3.text.StrLookup;
+import org.apache.commons.lang3.text.StrSubstitutor;
+
+public class Lang3Substitutor implements Subsitutor
+{
+    private static final StrSubstitutor SUBSTITUTOR = new StrSubstitutor(StrLookup.systemPropertiesLookup());
+
+    @Override
+    public String substitute(final String value)
+    {
+        return SUBSTITUTOR.replace(value);
+    }
+}

Added: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Subsitutor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Subsitutor.java?rev=1593586&view=auto
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Subsitutor.java (added)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/lang/Subsitutor.java Fri May  9 17:55:13 2014
@@ -0,0 +1,34 @@
+package org.apache.commons.jcs.jcache.lang;
+
+public interface Subsitutor
+{
+    String substitute(String value);
+
+    public static class Helper {
+        public static final Subsitutor INSTANCE;
+        static {
+            Subsitutor value = null;
+            for (final String name : new String[]
+            { // ordered by features
+                    "org.apache.commons.jcs.jcache.lang.Lang3Substitutor",
+                    "org.apache.commons.jcs.jcache.lang.DefaultSubsitutor"
+            })
+            {
+                try
+                {
+                    value = Subsitutor.class.cast(
+                            Subsitutor.class.getClassLoader().loadClass(name).newInstance());
+                    value.substitute("${java.version}"); // ensure it works
+                }
+                catch (final Throwable e) // not Exception otherwise NoClassDefFoundError
+                {
+                    // no-op: next
+                }
+            }
+            if (value == null) {
+                throw new IllegalStateException("Can't find a " + Subsitutor.class.getName());
+            }
+            INSTANCE = value;
+        }
+    }
+}