ARIES-727 make the commons-jexl a optional dependency. People won't need this if they don't use the syntax ${a+b} in blueprint-ext.

git-svn-id: https://svn.apache.org/repos/asf/aries/branches/0.3-RCx@1163899 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/blueprint/blueprint-annotation-itest/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java b/blueprint/blueprint-annotation-itest/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
index dea1618..4f43c9c 100644
--- a/blueprint/blueprint-annotation-itest/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
+++ b/blueprint/blueprint-annotation-itest/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
@@ -222,7 +222,8 @@
                 mavenBundle("org.apache.aries", "org.apache.aries.util"), 
                 mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy"),
                 mavenBundle("asm", "asm-all"),
-                mavenBundle("org.apache.commons", "commons-jexl"),
+                //no syntax like ${a+b} is used in blueprint-ext of the blueprint samples, so don't need this
+                //mavenBundle("org.apache.commons", "commons-jexl"),
 
                 equinox().version("3.5.0")
                 );
diff --git a/blueprint/blueprint-bundle/pom.xml b/blueprint/blueprint-bundle/pom.xml
index ec3d3c7..125d786 100644
--- a/blueprint/blueprint-bundle/pom.xml
+++ b/blueprint/blueprint-bundle/pom.xml
@@ -49,6 +49,7 @@
             org.apache.aries.blueprint.annotation.service;resolution:=optional,
             org.apache.aries.quiesce.manager;version="[0.2,1.0)";resolution:=optional,
             org.apache.aries.quiesce.participant;version="[0.2,1.0)";resolution:=optional,
+            org.apache.commons.jexl2;resolution:=optional,
             *
         </aries.osgi.import>
         <aries.osgi.export>
diff --git a/blueprint/blueprint-core/pom.xml b/blueprint/blueprint-core/pom.xml
index 44daee4..7822ee0 100644
--- a/blueprint/blueprint-core/pom.xml
+++ b/blueprint/blueprint-core/pom.xml
@@ -48,6 +48,7 @@
         org.apache.aries.blueprint.annotation.service;resolution:=optional,
         org.apache.aries.quiesce.manager;version="[0.2,1.0)";resolution:=optional,
         org.apache.aries.quiesce.participant;version="[0.2,1.0)";resolution:=optional,
+        org.apache.commons.jexl2;resolution:=optional,
         *
       </aries.osgi.import>
       <aries.osgi.export.service>
diff --git a/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java b/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java
index 1698cc7..c4d5cd0 100644
--- a/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java
+++ b/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ext/PropertyPlaceholder.java
@@ -148,13 +148,19 @@
         String result = super.retrieveValue(expression);
         
         if (result == null){
-            JexlExpressionParser parser = getJexlParser();
             try {
-                Object obj = parser.evaluate(expression);
-                if (obj!=null) {
-                    result = obj.toString();
+                Class.forName("org.apache.commons.jexl2.JexlEngine");
+                JexlExpressionParser parser = getJexlParser();
+                try {
+                    Object obj = parser.evaluate(expression);
+                    if (obj!=null) {
+                        result = obj.toString();
+                    }
+                } catch (Exception e) {
+                    LOGGER.info("Could not evaluate expression: {}", expression);
+                    LOGGER.info("Exception:", e);
                 }
-            } catch (Exception e) {
+            } catch (ClassNotFoundException e) {
                 LOGGER.info("Could not evaluate expression: {}", expression);
                 LOGGER.info("Exception:", e);
             }
diff --git a/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java b/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
index 5f549ed..fcb3ecd 100644
--- a/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
+++ b/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
@@ -224,7 +224,8 @@
                 mavenBundle("org.apache.aries", "org.apache.aries.util"), 
                 mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy"),
                 mavenBundle("asm", "asm-all"),
-                mavenBundle("org.apache.commons", "commons-jexl"),
+                //no syntax like ${a+b} is used in blueprint-ext of the blueprint samples, so don't need this
+                //mavenBundle("org.apache.commons", "commons-jexl"),
 
                 equinox().version("3.5.0")
                 );
diff --git a/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/QuiesceBlueprintTest.java b/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/QuiesceBlueprintTest.java
index 97ed0df..de97d99 100644
--- a/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/QuiesceBlueprintTest.java
+++ b/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/QuiesceBlueprintTest.java
@@ -91,8 +91,8 @@
             systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG"),
 
             // Bundles
-            mavenBundle("org.apache.aries.quiesce", "org.apache.aries.quiesce.api"),
-            mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint"), 
+            mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint"),
+            mavenBundle("org.apache.aries.quiesce", "org.apache.aries.quiesce.api"), 
             mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.testbundlea").noStart(),
             mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.testbundleb").noStart(),
             mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.testquiescebundle")