]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5271: Renamed UriTemplateBuilder to UriTemplateFactory; added initial unit...
authorAron Roberts <aron@socrates.berkeley.edu>
Thu, 7 Jun 2012 21:00:48 +0000 (14:00 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Thu, 7 Jun 2012 21:00:48 +0000 (14:00 -0700)
services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java
services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java [moved from services/common/src/main/java/org/collectionspace/services/common/UriTemplateBuilder.java with 68% similarity]
services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java [new file with mode: 0644]
services/common/src/test/resources/log4j.properties [new file with mode: 0644]

index a47f38db29d483539226eb7b4bf854b3b81d4ee9..261489d4095c81641a6178b207afe067e92f9400 100644 (file)
@@ -25,50 +25,70 @@ package org.collectionspace.services.common;
 import java.net.URI;\r
 import java.util.Map;\r
 import javax.ws.rs.core.UriBuilder;\r
+import javax.ws.rs.core.UriBuilderException;\r
 import org.collectionspace.services.common.api.Tools;\r
 \r
 public class UriTemplate {\r
 \r
     UriBuilder builder;\r
-    String path;\r
+    String uriPath;\r
 \r
     public UriTemplate(String path) {\r
         setUriPath(path);\r
         setBuilder();\r
     }\r
 \r
+    private void setUriPath(String path) {\r
+        if (Tools.notBlank(path)) {\r
+            this.uriPath = path;\r
+        }\r
+    }\r
+    \r
+    private String getUriPath() {\r
+        return uriPath;\r
+    }\r
+\r
     private void setBuilder() {\r
         if (builder == null) {\r
             try {\r
-                builder = UriBuilder.fromPath(path);\r
+                builder = UriBuilder.fromPath(getUriPath());\r
             } catch (IllegalArgumentException iae) {\r
                 // FIXME: Need to add logger and log error\r
-                // Will silently fail to initialize builder if relative URI is null\r
-                // No other checking of path format is apparently done\r
+                // URIBuilder can't be created if path is null\r
+                // No other checking of path format is performed\r
             }\r
         }\r
     }\r
 \r
-    private void setUriPath(String path) {\r
-        if (Tools.notBlank(this.path)) {\r
-            this.path = this.path;\r
-        }\r
-    }\r
-\r
     private UriBuilder getBuilder() {\r
         if (builder == null) {\r
             setBuilder();\r
         }\r
         return builder;\r
     }\r
+    \r
+    @Override\r
+    public String toString() {\r
+        return getUriPath();\r
+    }\r
 \r
     public String buildUri(Map<String, String> varsMap) {\r
-        URI uri = getBuilder().buildFromMap(varsMap);\r
-        if (uri != null) {\r
-            return uri.toString();\r
-        } else {\r
-            return "";\r
+        URI uri = null;\r
+        try {\r
+            uri = getBuilder().buildFromMap(varsMap);\r
+        } catch (IllegalArgumentException iae) {\r
+            // FIXME: Need to add logger and log error\r
+            // One or more parameters are missing or null.\r
+        } catch (UriBuilderException ube) {\r
+            // FIXME: Need to add logger and log error\r
+            // URI can't be constructed based on current state of the builder\r
+        } finally {\r
+            if (uri != null) {\r
+                return uri.toString();\r
+            } else {\r
+                return "";\r
+            }\r
         }\r
     }\r
-\r
+    \r
 }
\ No newline at end of file
similarity index 68%
rename from services/common/src/main/java/org/collectionspace/services/common/UriTemplateBuilder.java
rename to services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java
index c91f93d4db01a42469e38232ee53324864083d6f..2764206cfc7411fb4a833bee5680c87dc381dd27 100644 (file)
  */\r
 package org.collectionspace.services.common;\r
 \r
-public class UriTemplateBuilder {\r
+public class UriTemplateFactory {\r
 \r
-    UriTemplateType uriTemplateType = null;\r
-    final static String RESOURCE_TEMPLATE_PATTERN =\r
+    public final static String RESOURCE_TEMPLATE_PATTERN =\r
             "/{servicename}/{identifier}";\r
     // FIXME: Get static strings below (e.g. "items") from already-declared\r
     // constants elsewhere\r
-    final static String ITEM_TEMPLATE_PATTERN =\r
+    public final static String ITEM_TEMPLATE_PATTERN =\r
             "/{servicename}/{identifier}/items/{itemIdentifier}";\r
-    final static String CONTACT_TEMPLATE_PATTERN =\r
+    public final static String CONTACT_TEMPLATE_PATTERN =\r
             "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}";\r
-    final static UriTemplate RESOURCE_URI_TEMPLATE =\r
+    private final static UriTemplate RESOURCE_URI_TEMPLATE =\r
             new UriTemplate(RESOURCE_TEMPLATE_PATTERN);\r
-    final static UriTemplate ITEM_URI_TEMPLATE =\r
+    private final static UriTemplate ITEM_URI_TEMPLATE =\r
             new UriTemplate(ITEM_TEMPLATE_PATTERN);\r
-    final static UriTemplate CONTACT_URI_TEMPLATE =\r
+    private final static UriTemplate CONTACT_URI_TEMPLATE =\r
             new UriTemplate(CONTACT_TEMPLATE_PATTERN);\r
 \r
-    public UriTemplateBuilder(UriTemplateType type) {\r
-        this.uriTemplateType = type;\r
-    }\r
-\r
-    public UriTemplateType getType() {\r
-        return this.uriTemplateType;\r
-    }\r
-\r
-    @Override\r
-    public String toString() {\r
-        return "URI Builder of type " + getType().toString();\r
-    }\r
-\r
-    public UriTemplate getURITemplate() {\r
-        switch (uriTemplateType) {\r
+    public static UriTemplate getURITemplate(UriTemplateType type) {\r
+        switch (type) {\r
             case RESOURCE:\r
                 return RESOURCE_URI_TEMPLATE;\r
 \r
diff --git a/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java b/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java
new file mode 100644 (file)
index 0000000..6fae706
--- /dev/null
@@ -0,0 +1,50 @@
+/**\r
+ * This document is a part of the source code and related artifacts for\r
+ * CollectionSpace, an open source collections management system for museums and\r
+ * related institutions:\r
+ *\r
+ * http://www.collectionspace.org http://wiki.collectionspace.org\r
+ *\r
+ * Copyright (c) 2012 Regents of the University of California\r
+ *\r
+ * Licensed under the Educational Community License (ECL), Version 2.0. You may\r
+ * not use this file except in compliance with this License.\r
+ *\r
+ * You may obtain a copy of the ECL 2.0 License at\r
+ * https://source.collectionspace.org/collection-space/LICENSE.txt\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
+package org.collectionspace.services.common.test;\r
+\r
+import org.collectionspace.services.common.UriTemplate;\r
+import org.collectionspace.services.common.UriTemplateFactory;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.testng.Assert;\r
+import org.testng.annotations.Test;\r
+\r
+public class UriTemplateTest {\r
+\r
+    private static final Logger logger = LoggerFactory.getLogger(UriTemplateTest.class);\r
+\r
+    private void testBanner(String msg) {\r
+        String BANNER = "-------------------------------------------------------";\r
+        logger.debug("\r" + BANNER + "\r\n" + this.getClass().getName() + "\r\n" + msg + "\r\n" + BANNER);\r
+    }\r
+\r
+    @Test\r
+    public void testResourceUriTemplate() {\r
+        testBanner("testBuildResourceUri");\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        Assert.assertNotNull(resourceTemplate, "Resource template is null.");\r
+        logger.debug("Resource template URI path = " + resourceTemplate.toString());\r
+        Assert.assertNotNull(resourceTemplate.toString(), "Resource template URI path is null.");\r
+        Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_TEMPLATE_PATTERN,\r
+                "Resource template URI path doesn't match expected path.");\r
+    }\r
+}\r
diff --git a/services/common/src/test/resources/log4j.properties b/services/common/src/test/resources/log4j.properties
new file mode 100644 (file)
index 0000000..e2db432
--- /dev/null
@@ -0,0 +1,27 @@
+log4j.rootLogger=debug, stdout, R
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+# log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n
+log4j.appender.stdout.layout.ConversionPattern=%m%n
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=target/test-client.log
+
+log4j.appender.R.MaxFileSize=100KB
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n
+
+#packages
+log4j.logger.org.collectionspace.services.client.PoxPayloadIn=DEBUG
+log4j.logger.org.collectionspace.services.client.PoxPayloadOut=DEBUG
+
+log4j.logger.org.collectionspace=DEBUG
+log4j.logger.org.apache=INFO
+log4j.logger.httpclient=INFO
+log4j.logger.org.jboss.resteasy=INFO