Keeping only README in this repository
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 08aeeed..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.archiva.redback.components</groupId>
- <artifactId>redback-components</artifactId>
- <version>2.5-SNAPSHOT</version>
- </parent>
-
- <version>2.2-SNAPSHOT</version>
- <artifactId>expression-evaluator</artifactId>
- <name>Expression Evaluator Components</name>
-
- <properties>
- <scmBrowseUrl>https://gitbox.apache.org/repos/asf?a=tree;p=archiva-redback-components-expression-evaluator.git</scmBrowseUrl>
- <site.staging.base>${project.basedir}/../site</site.staging.base>
- </properties>
-
-
- <url>${webUrl}/${project.artifactId}</url>
-
- <scm>
- <connection>scm:git:http://gitbox.apache.org/repos/asf/archiva-redback-components-expression-evaluator.git</connection>
- <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/archiva-redback-components-expression-evaluator.git</developerConnection>
- <url>${scmBrowseUrl}</url>
- </scm>
-
-
- <dependencies>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/DefaultExpressionEvaluator.java b/src/main/java/org/apache/archiva/redback/components/evaluator/DefaultExpressionEvaluator.java
deleted file mode 100644
index 6fd389b..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/DefaultExpressionEvaluator.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.apache.archiva.redback.components.evaluator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * DefaultExpressionEvaluator
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public class DefaultExpressionEvaluator
- implements ExpressionEvaluator
-{
- private List<ExpressionSource> expressionSources;
-
- public DefaultExpressionEvaluator()
- {
- expressionSources = new ArrayList<>();
- }
-
- public void addExpressionSource( ExpressionSource source )
- {
- expressionSources.add( source );
- }
-
- public String expand( String str )
- throws EvaluatorException
- {
- return recursiveExpand( str, new ArrayList<String>() );
- }
-
- private String recursiveExpand( String str, List<String> seenExpressions )
- throws EvaluatorException
- {
- if ( StringUtils.isEmpty( str ) )
- {
- // Empty string. Fail fast.
- return str;
- }
-
- if ( str.indexOf( "${" ) < 0 )
- {
- // Contains no potential expressions. Fail fast.
- return str;
- }
-
- if ( this.expressionSources.isEmpty() )
- {
- throw new EvaluatorException( "Unable to expand expressions with empty ExpressionSource list." );
- }
-
- Pattern pat = Pattern.compile( "(?<=[^$]|^)(\\$\\{[^}]*\\})" );
- Matcher mat = pat.matcher( str );
- int offset = 0;
- String expression;
- String value;
- StringBuilder expanded = new StringBuilder();
-
- while ( mat.find( offset ) )
- {
- expression = mat.group( 1 );
-
- if ( seenExpressions.contains( expression ) )
- {
- throw new EvaluatorException( "A recursive cycle has been detected with expression " + expression + "." );
- }
-
- seenExpressions.add( expression );
-
- expanded.append( str.substring( offset, mat.start( 1 ) ) );
- value = findValue( expression );
- if ( value != null )
- {
- String resolvedValue = recursiveExpand( value, seenExpressions );
- expanded.append( resolvedValue );
- }
- else
- {
- expanded.append( expression );
- }
- offset = mat.end( 1 );
- }
-
- expanded.append( str.substring( offset ) );
-
- if ( expanded.indexOf( "$$" ) >= 0 )
- {
- // Special case for escaped content.
- return expanded.toString().replaceAll( "\\$\\$", "\\$" );
- }
- else
- {
- // return expanded
- return expanded.toString();
- }
- }
-
- private String findValue( String expression )
- {
- String newExpression = expression.trim();
- if ( newExpression.startsWith( "${" ) && newExpression.endsWith( "}" ) )
- {
- newExpression = newExpression.substring( 2, newExpression.length() - 1 );
- }
-
- if ( StringUtils.isEmpty( newExpression ) )
- {
- return null;
- }
-
- String value = null;
- Iterator it = this.expressionSources.iterator();
- while ( it.hasNext() )
- {
- ExpressionSource source = (ExpressionSource) it.next();
- value = source.getExpressionValue( newExpression );
- if ( value != null )
- {
- return value;
- }
- }
- return null;
- }
-
- public List getExpressionSourceList()
- {
- return this.expressionSources;
- }
-
- public boolean removeExpressionSource( ExpressionSource source )
- {
- return this.expressionSources.remove( source );
- }
-}
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/EvaluatorException.java b/src/main/java/org/apache/archiva/redback/components/evaluator/EvaluatorException.java
deleted file mode 100644
index df186b8..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/EvaluatorException.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.archiva.redback.components.evaluator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * EvaluatorException
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public class EvaluatorException
- extends Exception
-{
- public EvaluatorException()
- {
- super();
- }
-
- public EvaluatorException( String message, Throwable cause )
- {
- super( message, cause );
- }
-
- public EvaluatorException( String message )
- {
- super( message );
- }
-
- public EvaluatorException( Throwable cause )
- {
- super( cause );
- }
-}
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionEvaluator.java b/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionEvaluator.java
deleted file mode 100644
index 5a76ed0..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionEvaluator.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.archiva.redback.components.evaluator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-/**
- * ExpressionEvaluator
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public interface ExpressionEvaluator
-{
- /**
- * Add a source for expression resolution.
- *
- * @param source the source to add.
- */
- void addExpressionSource( ExpressionSource source );
-
- /**
- * Evaluate a string, and expand expressions as needed.
- *
- * @param str the expression
- * @return the value of the expression
- * @throws EvaluatorException if a problem occurs whilst evaluating
- */
- String expand( String str )
- throws EvaluatorException;
-
- /**
- * Get the List of expression sources.
- *
- * @return the list of expression sources.
- */
- List getExpressionSourceList();
-
- /**
- * Remove a specific expression source.
- *
- * @param source the source to remove.
- * @return true if expression source was removed.
- */
- boolean removeExpressionSource( ExpressionSource source );
-}
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionSource.java b/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionSource.java
deleted file mode 100644
index 514d6dd..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/ExpressionSource.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.archiva.redback.components.evaluator;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * ExpressionSource
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public interface ExpressionSource
-{
- /**
- * Gets a value for a provided Expression.
- *
- * @param expression the expression to attempt to get a value for.
- * @return the value for the expression, or null if no value found.
- */
- String getExpressionValue( String expression );
-}
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/sources/PropertiesExpressionSource.java b/src/main/java/org/apache/archiva/redback/components/evaluator/sources/PropertiesExpressionSource.java
deleted file mode 100644
index c58f172..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/sources/PropertiesExpressionSource.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.archiva.redback.components.evaluator.sources;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.archiva.redback.components.evaluator.ExpressionSource;
-
-import java.util.Properties;
-
-/**
- * PropertiesExpressionSource
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- *
- */
-public class PropertiesExpressionSource
- implements ExpressionSource
-{
- private Properties properties;
-
- public String getExpressionValue( String expression )
- {
- if ( properties == null )
- {
- throw new IllegalStateException( "Properties object has not been initialized." );
- }
-
- try
- {
- return properties.getProperty( expression );
- }
- catch ( Exception e )
- {
- return null;
- }
- }
-
- public Properties getProperties()
- {
- return properties;
- }
-
- public void setProperties( Properties properties )
- {
- this.properties = properties;
- }
-
-}
diff --git a/src/main/java/org/apache/archiva/redback/components/evaluator/sources/SystemPropertyExpressionSource.java b/src/main/java/org/apache/archiva/redback/components/evaluator/sources/SystemPropertyExpressionSource.java
deleted file mode 100644
index fb9442c..0000000
--- a/src/main/java/org/apache/archiva/redback/components/evaluator/sources/SystemPropertyExpressionSource.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.archiva.redback.components.evaluator.sources;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.archiva.redback.components.evaluator.ExpressionSource;
-
-/**
- * SystemPropertyExpressionSource
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public class SystemPropertyExpressionSource
- implements ExpressionSource
-{
- public String getExpressionValue( String expression )
- {
- try
- {
- return System.getProperty( expression );
- }
- catch ( Exception e )
- {
- return null;
- }
- }
-}
diff --git a/src/site/site.xml b/src/site/site.xml
deleted file mode 100644
index bb67626..0000000
--- a/src/site/site.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-
-<project name="Expression Evaluator" >
-
- <publishDate format="yyyy-MM-dd" position="none" />
-
- <body>
- <menu ref="modules" />
- <menu ref="reports" />
- <menu ref="ASF" />
- <breadcrumbs>
- <item name="Redback Components" href="../index.html" />
- <item name="Expression Evaluator" href="index.html" />
- </breadcrumbs>
- </body>
-</project>
diff --git a/src/test/java/org/apache/archiva/redback/components/evaluator/sources/DefaultExpressionEvaluatorTest.java b/src/test/java/org/apache/archiva/redback/components/evaluator/sources/DefaultExpressionEvaluatorTest.java
deleted file mode 100644
index 845303c..0000000
--- a/src/test/java/org/apache/archiva/redback/components/evaluator/sources/DefaultExpressionEvaluatorTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-package org.apache.archiva.redback.components.evaluator.sources;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-import org.apache.archiva.redback.components.evaluator.DefaultExpressionEvaluator;
-import org.apache.archiva.redback.components.evaluator.EvaluatorException;
-import org.apache.archiva.redback.components.evaluator.sources.PropertiesExpressionSource;
-import org.apache.archiva.redback.components.evaluator.sources.SystemPropertyExpressionSource;
-import org.apache.archiva.redback.components.evaluator.ExpressionEvaluator;
-
-import java.util.Properties;
-
-/**
- * DefaultExpressionEvaluatorTest
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- *
- */
-public class DefaultExpressionEvaluatorTest
- extends TestCase
-{
- private ExpressionEvaluator evaluator;
-
- protected void setUp()
- throws Exception
- {
- super.setUp();
-
- evaluator = new DefaultExpressionEvaluator();
- }
-
- public void testSimple()
- throws EvaluatorException
- {
- Properties props = new Properties();
- props.setProperty( "fruit", "apple" );
-
- PropertiesExpressionSource propsSource = new PropertiesExpressionSource();
- propsSource.setProperties( props );
- evaluator.addExpressionSource( propsSource );
-
- String expression = "${fruit}";
- String expected = "apple";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testSimpleStartOfLine()
- throws EvaluatorException
- {
- Properties props = new Properties();
- props.setProperty( "fruit", "apple" );
-
- PropertiesExpressionSource propsSource = new PropertiesExpressionSource();
- propsSource.setProperties( props );
- evaluator.addExpressionSource( propsSource );
-
- String expression = "${fruit} is good for you.";
- String expected = "apple is good for you.";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testSimpleEndOfLine()
- throws EvaluatorException
- {
- Properties props = new Properties();
- props.setProperty( "fruit", "apple" );
-
- PropertiesExpressionSource propsSource = new PropertiesExpressionSource();
- propsSource.setProperties( props );
- evaluator.addExpressionSource( propsSource );
-
- String expression = "watch out for the worm in the ${fruit}";
- String expected = "watch out for the worm in the apple";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testSimpleSystemProperty()
- throws EvaluatorException
- {
- evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
-
- String userHome = System.getProperty( "user.home" );
- String expression = "My HOME directory is ${user.home}";
- String expected = "My HOME directory is " + userHome;
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testMultiExpression()
- throws EvaluatorException
- {
- evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
-
- String userName = System.getProperty( "user.name" );
- String userHome = System.getProperty( "user.home" );
- String expression = "${user.name}'s home directory is ${user.home}";
- String expected = userName + "'s home directory is " + userHome;
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- /**
- * This use case was discovered by a user of archiva.
- * The last expression doesn't get evaluated properly.
- * <p/>
- * The result (with the bug) was "2.0.4${prj.ver.suf}"
- */
- public void testMultiExpressionVersionBug()
- throws EvaluatorException
- {
- Properties props = new Properties();
- props.setProperty( "prj.ver.maj", "2" );
- props.setProperty( "prj.ver.min", "0" );
- props.setProperty( "prj.ver.inc", "4" );
- props.setProperty( "prj.ver.suf", "-SNAPSHOT" );
-
- PropertiesExpressionSource propsSource = new PropertiesExpressionSource();
- propsSource.setProperties( props );
- evaluator.addExpressionSource( propsSource );
-
- String expression = "${prj.ver.maj}.${prj.ver.min}.${prj.ver.inc}${prj.ver.suf}";
- String expected = "2.0.4-SNAPSHOT";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testEscaping()
- throws EvaluatorException
- {
- evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
-
- String userName = System.getProperty( "user.name" );
- String userHome = System.getProperty( "user.home" );
- String expression = "${user.name}'s home directory is ${user.home} (fetched via $${user.home} expression)";
- String expected = userName + "'s home directory is " + userHome + " (fetched via ${user.home} expression)";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testRecursiveSimple()
- throws EvaluatorException
- {
- PropertiesExpressionSource propsource = new PropertiesExpressionSource();
- Properties props = new Properties();
-
- // Create intentional recursive lookup.
- props.setProperty( "main.dir", "${target.dir}/classes" );
- props.setProperty( "target.dir", "./target" );
-
- propsource.setProperties( props );
-
- evaluator.addExpressionSource( propsource );
- evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
-
- String expression = "My classes directory is ${main.dir}";
- String expected = "My classes directory is ./target/classes";
-
- String actual = evaluator.expand( expression );
- assertEquals( expected, actual );
- }
-
- public void testRecursiveCycle()
- {
- PropertiesExpressionSource propsource = new PropertiesExpressionSource();
- Properties props = new Properties();
-
- // Create intentional recursive lookup.
- props.setProperty( "main.dir", "${test.dir}/target/classes" );
- props.setProperty( "test.dir", "${main.dir}/target/test-classes" );
-
- propsource.setProperties( props );
-
- evaluator.addExpressionSource( propsource );
- evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
-
- try
- {
- evaluator.expand( "My main dir is ${main.dir}" );
- fail( "Should have thrown an EvaluatorException due to recursive cycle." );
- }
- catch ( EvaluatorException e )
- {
- // Expected path.
- }
- }
-}