Author: davsclaus
Date: Fri Feb 26 13:14:30 2010
New Revision: 916669

URL: http://svn.apache.org/viewvc?rev=916669&view=rev
Log:
CAMEL-2503: Added sysenv to simple language

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=916669&r1=916668&r2=916669&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
 Fri Feb 26 13:14:30 2010
@@ -381,6 +381,41 @@
     }
 
     /**
+     * Returns an expression for a system environment value with the given name
+     *
+     * @param propertyName the name of the system environment the expression 
will return
+     * @return an expression object which will return the system property value
+     */
+    public static Expression systemEnvironmentExpression(final String 
propertyName) {
+        return systemEnvironmentExpression(propertyName, null);
+    }
+
+    /**
+     * Returns an expression for a system environment value with the given name
+     *
+     * @param propertyName the name of the system environment the expression 
will return
+     * @param defaultValue default value to return if no system environment 
exists
+     * @return an expression object which will return the system environment 
value
+     */
+    public static Expression systemEnvironmentExpression(final String 
propertyName,
+                                                         final String 
defaultValue) {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                String answer = System.getenv(propertyName);
+                if (answer == null) {
+                    answer = defaultValue;
+                }
+                return answer;
+            }
+
+            @Override
+            public String toString() {
+                return "systemEnvironment(" + propertyName + ")";
+            }
+        };
+    }
+
+    /**
      * Returns an expression for the constant value
      *
      * @param value the value the expression will return

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java?rev=916669&r1=916668&r2=916669&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
 Fri Feb 26 13:14:30 2010
@@ -33,6 +33,7 @@
  * <li>out.header.foo to access an outbound header called 'foo'</li>
  * <li>property.foo to access the exchange property called 'foo'</li>
  * <li>sys.foo to access the system property called 'foo'</li>
+ * <li>sysenv.foo to access the system environment called 'foo'</li>
  * <li>exception.messsage to access the exception message</li>
  * <li>date:&lt;command&gt;:&lt;pattern&gt; for date formatting using the 
{...@link java.text.SimpleDateFormat} patterns.
  *     Supported commands are: <tt>now</tt> for current timestamp,
@@ -128,6 +129,12 @@
             return ExpressionBuilder.systemPropertyExpression(remainder);
         }
 
+        // system property
+        remainder = ifStartsWithReturnRemainder("sysenv.", expression);
+        if (remainder != null) {
+            return ExpressionBuilder.systemEnvironmentExpression(remainder);
+        }
+
         // file: prefix
         remainder = ifStartsWithReturnRemainder("file:", expression);
         if (remainder != null) {

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=916669&r1=916668&r2=916669&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java 
(original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java 
Fri Feb 26 13:14:30 2010
@@ -59,6 +59,13 @@
         assertExpression("sys.who", "I was here");
     }
 
+    public void testSimpleSystemEnvironmentExpressions() throws Exception {
+        String path = System.getenv("PATH");
+        if (path != null) {
+            assertExpression("sysenv.PATH", path);
+        }
+    }
+
     public void testDateExpressions() throws Exception {
         Calendar cal = GregorianCalendar.getInstance();
         cal.set(1974, Calendar.APRIL, 20);


Reply via email to