Removed commented out code and also changed catalog

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5bd87e80
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5bd87e80
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5bd87e80

Branch: refs/heads/master
Commit: 5bd87e80d862b0dc9fb9721e229f00346b6cb188
Parents: 6a00524
Author: Arno Noordover <a...@noordover.net>
Authored: Mon May 23 14:44:22 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon May 23 17:21:24 2016 +0200

----------------------------------------------------------------------
 .../camel/converter/TimePatternConverter.java   |  6 +--
 .../camel/catalog/TimePatternConverter.java     | 50 +++++++++++++++-----
 2 files changed, 40 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5bd87e80/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java 
b/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
index 6729292..d70275e 100644
--- 
a/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
+++ 
b/camel-core/src/main/java/org/apache/camel/converter/TimePatternConverter.java
@@ -25,12 +25,12 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Converter from String syntax to milli seconds.
+ * Code is copied to org.apache.camel.catalog.TimePatternConverter in 
camel-catalog
  */
 @Converter
 public final class TimePatternConverter {   
     private static final Logger LOG = 
LoggerFactory.getLogger(TimePatternConverter.class);
     private static final String NUMBERS_ONLY_STRING_PATTERN = "^[-]?(\\d)+$";
-    //private static final String REPLACEMENT_PATTERN = 
"[our|inute|econd](s)?";
     private static final String HOUR_REGEX_PATTERN = 
"((\\d)*(\\d))h(our(s)?)?";
     private static final String MINUTES_REGEX_PATTERN = 
"((\\d)*(\\d))m(in(ute(s)?)?)?";
     private static final String SECONDS_REGEX_PATTERN = 
"((\\d)*(\\d))s(ec(ond(s)?)?)?";
@@ -55,10 +55,6 @@ public final class TimePatternConverter {
             //       This String -> long converter will be used for all 
strings.
             milliseconds = Long.valueOf(source);
         } else {            
-            //matcher = createMatcher(REPLACEMENT_PATTERN, source);
-
-            LOG.trace("Replaced original source {} to {}", source, source);
-            
             matcher = createMatcher(HOUR_REGEX_PATTERN, source);
             if (matcher.find()) {
                 milliseconds = milliseconds + (3600000 * 
Long.valueOf(matcher.group(1)));

http://git-wip-us.apache.org/repos/asf/camel/blob/5bd87e80/platforms/catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
----------------------------------------------------------------------
diff --git 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
index e49ee89..659b441 100644
--- 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
+++ 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
@@ -23,12 +23,10 @@ import java.util.regex.Pattern;
  * This class is a copy from camel-core so we can use it independent to 
validate uris with time patterns
  */
 public final class TimePatternConverter {
-
     private static final String NUMBERS_ONLY_STRING_PATTERN = "^[-]?(\\d)+$";
-    private static final String REPLACEMENT_PATTERN = "[our|inute|econd](s)?";
-    private static final String HOUR_REGEX_PATTERN = "((\\d)*(\\d))[h|H]";
-    private static final String MINUTES_REGEX_PATTERN = "((\\d)*(\\d))[m|M]";
-    private static final String SECONDS_REGEX_PATTERN = "((\\d)*(\\d))[s|S]";
+    private static final String HOUR_REGEX_PATTERN = 
"((\\d)*(\\d))h(our(s)?)?";
+    private static final String MINUTES_REGEX_PATTERN = 
"((\\d)*(\\d))m(in(ute(s)?)?)?";
+    private static final String SECONDS_REGEX_PATTERN = 
"((\\d)*(\\d))s(ec(ond(s)?)?)?";
 
     /**
      * Utility classes should not have a public constructor.
@@ -39,6 +37,8 @@ public final class TimePatternConverter {
     public static long toMilliSeconds(String source) throws 
IllegalArgumentException {
         long milliseconds = 0;
         boolean foundFlag = false;
+
+        checkCorrectnessOfPattern(source);
         Matcher matcher;
 
         matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
@@ -47,16 +47,13 @@ public final class TimePatternConverter {
             //       This String -> long converter will be used for all 
strings.
             milliseconds = Long.valueOf(source);
         } else {
-            matcher = createMatcher(REPLACEMENT_PATTERN, source);
-            String replacedSource = matcher.replaceAll("");
-
-            matcher = createMatcher(HOUR_REGEX_PATTERN, replacedSource);
+            matcher = createMatcher(HOUR_REGEX_PATTERN, source);
             if (matcher.find()) {
                 milliseconds = milliseconds + (3600000 * 
Long.valueOf(matcher.group(1)));
                 foundFlag = true;
             }
 
-            matcher = createMatcher(MINUTES_REGEX_PATTERN, replacedSource);
+            matcher = createMatcher(MINUTES_REGEX_PATTERN, source);
             if (matcher.find()) {
                 long minutes = Long.valueOf(matcher.group(1));
                 if ((minutes > 59) && foundFlag) {
@@ -66,7 +63,7 @@ public final class TimePatternConverter {
                 milliseconds = milliseconds + (60000 * minutes);
             }
 
-            matcher = createMatcher(SECONDS_REGEX_PATTERN, replacedSource);
+            matcher = createMatcher(SECONDS_REGEX_PATTERN, source);
             if (matcher.find()) {
                 long seconds = Long.valueOf(matcher.group(1));
                 if ((seconds > 59) && foundFlag) {
@@ -86,6 +83,37 @@ public final class TimePatternConverter {
         return milliseconds;
     }
 
+    private static void checkCorrectnessOfPattern(String source) {
+        //replace only numbers once
+        Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
+        String replaceSource = matcher.replaceFirst("");
+
+        //replace hour string once
+        matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Hours should not be specified 
more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        //replace minutes once
+        matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Minutes should not be 
specified more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        //replace seconds once
+        matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource);
+        if (matcher.find() && matcher.find()) {
+            throw new IllegalArgumentException("Seconds should not be 
specified more then once: " + source);
+        }
+        replaceSource = matcher.replaceFirst("");
+
+        if (replaceSource.length() > 0) {
+            throw new IllegalArgumentException("Illegal characters: " + 
source);
+        }
+    }
+
     private static Matcher createMatcher(String regexPattern, String source) {
         Pattern pattern = Pattern.compile(regexPattern, 
Pattern.CASE_INSENSITIVE);
         return pattern.matcher(source);

Reply via email to