You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/01/25 11:19:18 UTC

svn commit: r1063205 - /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java

Author: sergeyb
Date: Tue Jan 25 10:19:18 2011
New Revision: 1063205

URL: http://svn.apache.org/viewvc?rev=1063205&view=rev
Log:
[CXF-3262] Applying a patch on behalf of Jason Downey, thanks

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java?rev=1063205&r1=1063204&r2=1063205&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java Tue Jan 25 10:19:18 2011
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
 
 import javax.ws.rs.Path;
 import javax.ws.rs.core.MultivaluedMap;
@@ -351,11 +350,11 @@ public final class URITemplate {
             if (uriChunk == null || "".equals(uriChunk)) {
                 throw new IllegalArgumentException("uriChunk is empty");
             }
-            try {
-                return new Variable(uriChunk);
-            } catch (IllegalArgumentException e) {
-                return new Literal(uriChunk);
+            UriChunk uriChunkRepresentation = Variable.create(uriChunk);
+            if (uriChunkRepresentation == null) {
+                uriChunkRepresentation = Literal.create(uriChunk);
             }
+            return uriChunkRepresentation;
         }
 
         public abstract String getValue();
@@ -369,11 +368,17 @@ public final class URITemplate {
     private static final class Literal extends UriChunk {
         private String value;
 
-        public Literal(String uriChunk) {
+        private Literal() {
+            // empty constructor
+        }
+
+        public static Literal create(String uriChunk) {
             if (uriChunk == null || "".equals(uriChunk)) {
                 throw new IllegalArgumentException("uriChunk is empty");
             }
-            value = uriChunk;
+            Literal literal = new Literal();
+            literal.value = uriChunk;
+            return literal;
         }
 
         @Override
@@ -391,30 +396,34 @@ public final class URITemplate {
         private String name;
         private Pattern pattern;
 
+        private Variable() {
+            // empty constructor
+        }
+
         /**
          * Creates variable from stringified part of URI.
-         * 
-         * @param uriChunk chunk that depicts variable
-         * @throws IllegalArgumentException when param is null, empty or does not have variable syntax.
-         * @throws PatternSyntaxException when pattern of variable has wrong syntax.
+         *
+         * @param uriChunk uriChunk chunk that depicts variable
+         * @return Variable if variable was successfully created; null if uriChunk was not a variable
          */
-        public Variable(String uriChunk) throws IllegalArgumentException, PatternSyntaxException {
+        public static Variable create(String uriChunk) {
+            Variable newVariable = new Variable();
             if (uriChunk == null || "".equals(uriChunk)) {
-                throw new IllegalArgumentException("uriChunk is empty");
+                return null;
             }
             if (CurlyBraceTokenizer.insideBraces(uriChunk)) {
                 uriChunk = CurlyBraceTokenizer.stripBraces(uriChunk).trim();
                 Matcher matcher = VARIABLE_PATTERN.matcher(uriChunk);
                 if (matcher.matches()) {
-                    name = matcher.group(1).trim();
+                    newVariable.name = matcher.group(1).trim();
                     if (matcher.group(2) != null && matcher.group(3) != null) {
                         String patternExpression = matcher.group(3).trim();
-                        pattern = Pattern.compile(patternExpression);
+                        newVariable.pattern = Pattern.compile(patternExpression);
                     }
-                    return;
+                    return newVariable;
                 }
             }
-            throw new IllegalArgumentException("not a variable syntax");
+            return null;
         }
 
         public String getName() {