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:<command>:<pattern> 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);