[infinispan-commits] Infinispan SVN: r979 - in trunk/core/src: test/java/org/infinispan/config and 1 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Tue Oct 20 12:31:50 EDT 2009


Author: vblagojevic at jboss.com
Date: 2009-10-20 12:31:50 -0400 (Tue, 20 Oct 2009)
New Revision: 979

Modified:
   trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
   trunk/core/src/test/java/org/infinispan/config/StringPropertyReplacementTest.java
   trunk/core/src/test/resources/configs/string-property-replaced.xml
Log:
support token replacement for all attribute values

Modified: trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java	2009-10-20 11:57:31 UTC (rev 978)
+++ trunk/core/src/main/java/org/infinispan/config/InfinispanConfiguration.java	2009-10-20 16:31:50 UTC (rev 979)
@@ -24,6 +24,7 @@
 import org.infinispan.Version;
 import org.infinispan.config.parsing.XmlConfigurationParser;
 import org.infinispan.util.FileLookup;
+import org.jboss.util.StringPropertyReplacer;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Unmarshaller;
@@ -35,9 +36,13 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.SchemaFactory;
+
+import java.io.BufferedReader;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -66,6 +71,8 @@
 public class InfinispanConfiguration implements XmlConfigurationParser {
 
    public static final String VALIDATING_SYSTEM_PROPERTY = "infinispan.config.validate";
+   
+   public static final String SKIP_TOKEN_REPLACEMENT = "infinispan.config.skipTokenReplacement";
 
    public static final String SCHEMA_SYSTEM_PROPERTY = "infinispan.config.schema";
 
@@ -199,8 +206,15 @@
                }
             });
          }
-
-         InfinispanConfiguration ic = (InfinispanConfiguration) u.unmarshal(config);     
+         
+         StreamSource source = null;
+         if (skipTokenReplacement()) {
+            source = new StreamSource(config);
+         } else {
+            source = replaceProperties(config);
+         }
+         InfinispanConfiguration ic = (InfinispanConfiguration) u.unmarshal(source);                    
+       
          // legacy, don't ask
          GlobalConfiguration gconf = ic.parseGlobalConfiguration();
          gconf.setDefaultConfiguration(ic.parseDefaultConfiguration());
@@ -219,10 +233,31 @@
       }
    }
 
+   private static StreamSource replaceProperties(InputStream config) throws Exception{
+      BufferedReader br = new BufferedReader ( new InputStreamReader(config));
+      StringBuilder w = new StringBuilder();
+      String line;
+      while ((line = br.readLine()) != null) {
+         int dollar = line.indexOf('$');
+         if(dollar >0 && line.indexOf('{',dollar) > 0 && line.indexOf('}',dollar)>0) {
+            String replacedLine = StringPropertyReplacer.replaceProperties(line);
+            w.append(replacedLine);
+         } else {
+            w.append(line);
+         }         
+      }
+      return new StreamSource(new StringReader(w.toString()));
+   }
+
    private static boolean skipSchemaValidation() {
       String s = System.getProperty(VALIDATING_SYSTEM_PROPERTY);
       return s != null && !Boolean.parseBoolean(s);
    }
+   
+   private static boolean skipTokenReplacement() {
+      String s = System.getProperty(SKIP_TOKEN_REPLACEMENT, "false");
+      return s != null && Boolean.parseBoolean(s);
+   }
 
    public static InputStream findSchemaInputStream() {
       boolean validating = !skipSchemaValidation();

Modified: trunk/core/src/test/java/org/infinispan/config/StringPropertyReplacementTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/config/StringPropertyReplacementTest.java	2009-10-20 11:57:31 UTC (rev 978)
+++ trunk/core/src/test/java/org/infinispan/config/StringPropertyReplacementTest.java	2009-10-20 16:31:50 UTC (rev 979)
@@ -38,8 +38,7 @@
    public void testDefaultCache() {
       Configuration configuration = cacheManager.getCache().getConfiguration();
       assert configuration.getIsolationLevel().equals(IsolationLevel.READ_COMMITTED);
-      assert configuration.isWriteSkewCheck();
-      assert configuration.getConcurrencyLevel() == 499;
+      assert !configuration.isWriteSkewCheck();      
       assert configuration.isSyncCommitPhase();
    }
 }

Modified: trunk/core/src/test/resources/configs/string-property-replaced.xml
===================================================================
--- trunk/core/src/test/resources/configs/string-property-replaced.xml	2009-10-20 11:57:31 UTC (rev 978)
+++ trunk/core/src/test/resources/configs/string-property-replaced.xml	2009-10-20 16:31:50 UTC (rev 979)
@@ -9,12 +9,16 @@
    <global>
 
       <asyncListenerExecutor factory="org.infinispan.executors.DefaultExecutorFactory">
+      	<properties>
          <property name="maxThreads" value="${test.property.asyncListenerMaxThreads:5}"/>
          <property name="threadNamePrefix" value="AsyncListenerThread"/>
+         </properties>
       </asyncListenerExecutor>
 
       <transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport">
+      <properties>
          <property name="configurationFile" value="${test.property.jgroupsConfigFile:udp.xml}"/>
+         </properties>
       </transport>
 
    </global>
@@ -24,7 +28,7 @@
    <!-- *************************** -->
    <default>
       <locking
-            isolationLevel="REPEATABLE_READ"
+            isolationLevel="${test.property.IsolationLevel:REPEATABLE_READ}"
             lockAcquisitionTimeout="${test.property.LockAcquisitionTimeout:15000}"
             writeSkewCheck="false"
             concurrencyLevel="500"/>



More information about the infinispan-commits mailing list