BVAL-159 drop commons dependencies
diff --git a/bval-jsr/pom.xml b/bval-jsr/pom.xml
index b94b02d..d810e0d 100644
--- a/bval-jsr/pom.xml
+++ b/bval-jsr/pom.xml
@@ -151,11 +151,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>commons-beanutils</groupId>
-            <artifactId>commons-beanutils-core</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-weaver-privilizer-api</artifactId>
         </dependency>
@@ -195,7 +190,7 @@
         <dependency>
           <groupId>org.apache.geronimo.specs</groupId>
           <artifactId>geronimo-interceptor_1.2_spec</artifactId>
-          <version>1.0-alpha-1</version>
+          <version>1.0</version>
           <scope>provided</scope>
         </dependency>
         <dependency>
@@ -204,10 +199,6 @@
             <version>1.0</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-	        <groupId>com.oracle</groupId>
-	        <artifactId>javafx</artifactId>
-        </dependency>
 
         <!-- Testing dependencies -->
         <dependency>
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathNavigation.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathNavigation.java
index 06d486c..6a6497a 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathNavigation.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathNavigation.java
@@ -16,11 +16,7 @@
  */
 package org.apache.bval.jsr.util;
 
-import javax.validation.ValidationException;
-
-import org.apache.bval.util.Exceptions;
-import org.apache.bval.util.Validate;
-import org.apache.commons.lang3.StringEscapeUtils;
+import static org.apache.bval.util.Escapes.unescapeJava;
 
 import java.io.IOException;
 import java.io.StringWriter;
@@ -29,7 +25,11 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.logging.Logger;
+
+import javax.validation.ValidationException;
+
+import org.apache.bval.util.Exceptions;
+import org.apache.bval.util.Validate;
 
 /**
  * Defines a path navigation algorithm and a means of interacting with same.
@@ -142,18 +142,10 @@
         }
 
         protected void handleNextChar(CharSequence path, PathPosition pos, Writer target) throws IOException {
-            target.write(Character.toChars(Character.codePointAt(path, pos.getIndex())));
-            pos.next();
-        }
-    }
-
-    private static class FullQuotedStringParser extends QuotedStringParser {
-
-        @Override
-        protected void handleNextChar(CharSequence path, PathPosition pos, Writer target) throws IOException {
-            final int codePoints = StringEscapeUtils.UNESCAPE_JAVA.translate(path, pos.getIndex(), target);
+            final int codePoints = unescapeJava(path, pos.getIndex(), target);
             if (codePoints == 0) {
-                super.handleNextChar(path, pos, target);
+                target.write(Character.toChars(Character.codePointAt(path, pos.getIndex())));
+                pos.next();
             } else {
                 for (int i = 0; i < codePoints; i++) {
                     pos.plus(Character.charCount(Character.codePointAt(path, pos.getIndex())));
@@ -162,20 +154,7 @@
         }
     }
 
-    private static final Logger LOG = Logger.getLogger(PathNavigation.class.getName());
-
-    private static final QuotedStringParser QUOTED_STRING_PARSER;
-
-    static {
-        QuotedStringParser quotedStringParser;
-        try {
-            quotedStringParser = new FullQuotedStringParser();
-        } catch (Exception e) {
-            LOG.warning("Apache commons-lang3 is not on the classpath; Java escaping in quotes will not be available.");
-            quotedStringParser = new QuotedStringParser();
-        }
-        QUOTED_STRING_PARSER = quotedStringParser;
-    }
+    private static final QuotedStringParser QUOTED_STRING_PARSER = new QuotedStringParser();
 
     /**
      * Create a new PathNavigation instance.
@@ -262,8 +241,7 @@
 
     /**
      * Handles an index/key. If the text contained between [] is surrounded by a pair of " or ', it will be treated as a
-     * string which may contain Java escape sequences. This function is only available if commons-lang3 is available on
-     * the classpath!
+     * string which may contain Java escape sequences.
      * 
      * @param path
      * @param pos
diff --git a/bval-jsr/src/main/java/org/apache/bval/util/Escapes.java b/bval-jsr/src/main/java/org/apache/bval/util/Escapes.java
new file mode 100644
index 0000000..10ea1b2
--- /dev/null
+++ b/bval-jsr/src/main/java/org/apache/bval/util/Escapes.java
@@ -0,0 +1,203 @@
+/**
+ * Copyright (C) 2006-2018 Talend Inc. - www.talend.com
+ * <p>
+ * Licensed 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.
+ */
+package org.apache.bval.util;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+// taken from commons-lang3
+public final class Escapes {
+    private static final CharSequenceTranslator UNESCAPE_JAVA =
+            new AggregateTranslator(
+                    new OctalUnescaper(),     // .between('\1', '\377'),
+                    new UnicodeUnescaper(),
+                    new LookupTranslator(new String[][] {
+                            {"\\b", "\b"},
+                            {"\\n", "\n"},
+                            {"\\t", "\t"},
+                            {"\\f", "\f"},
+                            {"\\r", "\r"}
+                    }),
+                    new LookupTranslator(
+                            new String[][] {
+                                    {"\\\\", "\\"},
+                                    {"\\\"", "\""},
+                                    {"\\'", "'"},
+                                    {"\\", ""}
+                            })
+            );
+
+    private Escapes() {
+        // no-op
+    }
+
+    public static int unescapeJava(final CharSequence from, final int offset, final Writer output) {
+        // return StringEscapeUtils.UNESCAPE_JAVA.translate(path, pos.getIndex(), target);
+        return UNESCAPE_JAVA.translate(from, offset, output);
+    }
+
+    protected interface CharSequenceTranslator {
+        int translate(CharSequence input, int index, Writer out);
+    }
+
+    private static class AggregateTranslator implements CharSequenceTranslator {
+        private final CharSequenceTranslator[] translators;
+
+        private AggregateTranslator(final CharSequenceTranslator... translators) {
+            this.translators = translators;
+        }
+
+        @Override
+        public int translate(final CharSequence input, final int index, final Writer out) {
+            for (final CharSequenceTranslator translator : translators) {
+                final int consumed = translator.translate(input, index, out);
+                if(consumed != 0) {
+                    return consumed;
+                }
+            }
+            return 0;
+        }
+    }
+
+    private static class OctalUnescaper implements CharSequenceTranslator {
+        @Override
+        public int translate(final CharSequence input, final int index, final Writer out) {
+            final int remaining = input.length() - index - 1;
+            final StringBuilder builder = new StringBuilder();
+            if (input.charAt(index) == '\\' && remaining > 0 && isOctalDigit(input.charAt(index + 1))) {
+                final int next = index + 1;
+                final int next2 = index + 2;
+                final int next3 = index + 3;
+
+                builder.append(input.charAt(next));
+
+                if (remaining > 1 && isOctalDigit(input.charAt(next2))) {
+                    builder.append(input.charAt(next2));
+                    if (remaining > 2 && isZeroToThree(input.charAt(next)) && isOctalDigit(input.charAt(next3))) {
+                        builder.append(input.charAt(next3));
+                    }
+                }
+
+                try {
+                    out.write(Integer.parseInt(builder.toString(), 8));
+                } catch (IOException e) {
+                    throw new IllegalStateException(e);
+                }
+                return 1 + builder.length();
+            }
+            return 0;
+        }
+
+        private boolean isOctalDigit(final char ch) {
+            return ch >= '0' && ch <= '7';
+        }
+
+        private boolean isZeroToThree(final char ch) {
+            return ch >= '0' && ch <= '3';
+        }
+    }
+
+    public static class UnicodeUnescaper implements CharSequenceTranslator {
+        @Override
+        public int translate(final CharSequence input, final int index, final Writer out) {
+            if (input.charAt(index) == '\\' && index + 1 < input.length() && input.charAt(index + 1) == 'u') {
+                int i = 2;
+                while (index + i < input.length() && input.charAt(index + i) == 'u') {
+                    i++;
+                }
+
+                if (index + i < input.length() && input.charAt(index + i) == '+') {
+                    i++;
+                }
+
+                if (index + i + 4 <= input.length()) {
+                    // Get 4 hex digits
+                    final CharSequence unicode = input.subSequence(index + i, index + i + 4);
+
+                    try {
+                        final int value = Integer.parseInt(unicode.toString(), 16);
+                        out.write((char) value);
+                    } catch (final NumberFormatException nfe) {
+                        throw new IllegalArgumentException("Unable to parse unicode value: " + unicode, nfe);
+                    } catch (final IOException e) {
+                        throw new IllegalStateException(e);
+                    }
+                    return i + 4;
+                }
+                throw new IllegalArgumentException("Less than 4 hex digits in unicode value: '" + input.subSequence(index, input.length())
+                        + "' due to end of CharSequence");
+            }
+            return 0;
+        }
+    }
+
+    public static class LookupTranslator implements CharSequenceTranslator {
+        private final Map<String, String> lookupMap;
+        private final Set<Character> prefixSet;
+        private final int shortest;
+        private final int longest;
+
+        private LookupTranslator(final String[][] lookup) {
+            lookupMap = new HashMap<>();
+            prefixSet = new HashSet<>();
+            int _shortest = Integer.MAX_VALUE;
+            int _longest = 0;
+            if (lookup != null) {
+                for (final CharSequence[] seq : lookup) {
+                    this.lookupMap.put(seq[0].toString(), seq[1].toString());
+                    this.prefixSet.add(seq[0].charAt(0));
+                    final int sz = seq[0].length();
+                    if (sz < _shortest) {
+                        _shortest = sz;
+                    }
+                    if (sz > _longest) {
+                        _longest = sz;
+                    }
+                }
+            }
+            shortest = _shortest;
+            longest = _longest;
+        }
+
+        @Override
+        public int translate(final CharSequence input, final int index, final Writer out) {
+            if (prefixSet.contains(input.charAt(index))) {
+                int max = longest;
+                if (index + longest > input.length()) {
+                    max = input.length() - index;
+                }
+                for (int i = max; i >= shortest; i--) {
+                    final CharSequence subSeq = input.subSequence(index, index + i);
+                    final String result = lookupMap.get(subSeq.toString());
+
+                    if (result != null) {
+                        try {
+                            out.write(result);
+                        } catch (final IOException e) {
+                            throw new IllegalStateException(e);
+                        }
+                        return i;
+                    }
+                }
+            }
+            return 0;
+        }
+    }
+}
diff --git a/bval-jsr/src/test/java/org/apache/bval/jsr/xml/Demo.java b/bval-jsr/src/test/java/org/apache/bval/jsr/xml/Demo.java
index 2552a3d..793fa5f 100644
--- a/bval-jsr/src/test/java/org/apache/bval/jsr/xml/Demo.java
+++ b/bval-jsr/src/test/java/org/apache/bval/jsr/xml/Demo.java
@@ -23,7 +23,6 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.junit.Test;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
@@ -51,6 +50,6 @@
         InputSource xml = new InputSource(getClass().getResourceAsStream("/sample-validation2.xml"));
         xr.parse(xml);
         JAXBElement<ValidationConfigType> result = (JAXBElement<ValidationConfigType>) unmarshallerHandler.getResult();
-        System.out.println(ToStringBuilder.reflectionToString(result.getValue()));
+        System.out.println(result.getValue());
     }
 }
diff --git a/pom.xml b/pom.xml
index 8b2545a..1fe732b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -324,11 +324,6 @@
                 <optional>true</optional>
             </dependency>
             <dependency>
-                <groupId>commons-beanutils</groupId>
-                <artifactId>commons-beanutils-core</artifactId>
-                <version>1.8.3</version>
-            </dependency>
-            <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-weaver-privilizer-api</artifactId>
                 <version>${commons.weaver.version}</version>
@@ -364,16 +359,9 @@
             <dependency>
                 <groupId>org.apache.tomcat</groupId>
                 <artifactId>tomcat-el-api</artifactId>
-                <version>9.0.5</version>
+                <version>9.0.12</version>
                 <scope>provided</scope>
             </dependency>
-            <dependency>
-	            <groupId>com.oracle</groupId>
-	            <artifactId>javafx</artifactId>
-	            <version>8.0</version>
-	            <systemPath>${java.home}/lib/ext/jfxrt.jar</systemPath>
-	            <scope>system</scope>
-            </dependency>
         </dependencies>
     </dependencyManagement>