[logback-dev] svn commit: r1627 - in logback/trunk/logback-core/src: main/java/ch/qos/logback/core/util test/java/ch/qos/logback/core/util

noreply.ceki at qos.ch noreply.ceki at qos.ch
Tue Mar 4 16:48:11 CET 2008


Author: ceki
Date: Tue Mar  4 16:48:11 2008
New Revision: 1627

Modified:
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java
   logback/trunk/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java

Log:
- undefined substitution variables are now marked as _IS_UNDEFINED

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java	Tue Mar  4 16:48:11 2008
@@ -9,8 +9,6 @@
  */
 package ch.qos.logback.core.util;
 
-import java.util.Map;
-
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreGlobal;
 
@@ -71,7 +69,8 @@
   final static char DELIM_STOP = '}';
   final static int DELIM_START_LEN = 2;
   final static int DELIM_STOP_LEN = 1;
-
+  final static String _IS_UNDEFINED = "_IS_UNDEFINED";
+  
   /**
    * Perform variable substitution in string <code>val</code> from the values
    * of keys found in context property map, and if that fails, then in the
@@ -185,6 +184,9 @@
             // x2=${x1}
             String recursiveReplacement = substVars(replacement, context);
             sbuf.append(recursiveReplacement);
+          } else {
+            // if we could not find a replacement, then signal the error
+            sbuf.append(key+"_IS_UNDEFINED");
           }
 
           i = k + DELIM_STOP_LEN;

Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java	(original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java	Tue Mar  4 16:48:11 2008
@@ -28,26 +28,33 @@
     super.tearDown();
   }
 
-  public void testSubstVarsNoSubstitution() {
-    String noSubst = "testing if it works";
-    
-    String result = OptionHelper.substVars(noSubst, null);
+  public void testLiteral() {
+    String noSubst = "hello world";
+    String result = OptionHelper.substVars(noSubst, context);
     assertEquals(noSubst, result);
   }
- 
+
+  
+  public void testUndefinedValues() {
+    String withUndefinedValues = "${axyz}";
+    
+    String result = OptionHelper.substVars(withUndefinedValues, context);
+    assertEquals("axyz"+OptionHelper._IS_UNDEFINED, result);
+  }
+  
   public void testSubstVarsVariableNotClosed() {
     String noSubst = "testing if ${v1 works";
     
     try {
       @SuppressWarnings("unused")
-      String result = OptionHelper.substVars(noSubst, null);
+      String result = OptionHelper.substVars(noSubst, context);
       fail();
     } catch (IllegalArgumentException e) {
       //ok
     }
   }
   
-  public void testSubstVarsPrimaryOnly() {
+  public void testSubstVarsContextOnly() {
     context.putProperty("v1", "if");
     context.putProperty("v2", "works");
     



More information about the logback-dev mailing list