]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5073 Limited tokens split on separator for refNames, allowing separator to...
authorPatrick Schmitz <pschmitz@berkeley.edu>
Sat, 2 Jun 2012 02:05:52 +0000 (19:05 -0700)
committerPatrick Schmitz <pschmitz@berkeley.edu>
Sat, 2 Jun 2012 02:05:52 +0000 (19:05 -0700)
services/common/src/main/java/org/collectionspace/services/common/vocabulary/RefNameUtils.java

index 981acd8482e51dfe64ac70e4a7f0a25bfa8fbef8..920261c45f5d10b83f1de052b0ce4834bdd5326a 100644 (file)
@@ -53,6 +53,8 @@ public class RefNameUtils {
     private static final int AUTH_INSTANCE_TOKEN = 2;  // name(Entry Methods)'Entry Methods'\r
     private static final int ITEMS_TOKEN = 3;                  // 'item', 'person', etc.\r
     private static final int ITEM_INSTANCE_TOKEN = 4;  // name(Entry Methods)'Entry Methods'\r
+    private static final int AUTH_REFNAME_TOKENS = 3;  // domain, resource, auth\r
+    private static final int AUTH_ITEM_REFNAME_TOKENS = 5;     // domain, resource, auth, "items", item\r
     // Tokenizing the INSTANCE, these are indices for each item-part\r
     private static final int INSTANCE_SPEC_TYPE_TOKEN = 0;     // 'name' or 'id' \r
     private static final int INSTANCE_SPEC_TOKEN = 1;          // name or id value\r
@@ -193,14 +195,16 @@ public class RefNameUtils {
             throws IllegalArgumentException {\r
        if(refName==null || !refName.startsWith(URN_PREFIX))\r
                throw new IllegalArgumentException( "Null or invalid refName syntax");\r
-       return new AuthorityInfo(refName.substring(URN_PREFIX_LEN).split(SEPARATOR));\r
+       String[] refNameTokens = refName.substring(URN_PREFIX_LEN).split(SEPARATOR, AUTH_REFNAME_TOKENS);\r
+       return new AuthorityInfo(refNameTokens);\r
     }\r
 \r
     public static AuthorityTermInfo parseAuthorityTermInfo(String refName)\r
             throws IllegalArgumentException {\r
        if(refName==null || !refName.startsWith(URN_PREFIX))\r
                throw new IllegalArgumentException( "Null or invalid refName syntax");\r
-       return new AuthorityTermInfo(refName.substring(URN_PREFIX_LEN).split(SEPARATOR));\r
+       String[] refNameTokens = refName.substring(URN_PREFIX_LEN).split(SEPARATOR, AUTH_ITEM_REFNAME_TOKENS);\r
+       return new AuthorityTermInfo(refNameTokens);\r
     }\r
 \r
     public static String implodeStringArray(String tokens[], String separator) {\r
@@ -223,7 +227,7 @@ public class RefNameUtils {
     public static String getItemShortId(String refName) {\r
         String name = "";\r
         try {\r
-            String [] refNameTokens = refName.substring(URN_PREFIX_LEN).split(SEPARATOR);\r
+               String[] refNameTokens = refName.substring(URN_PREFIX_LEN).split(SEPARATOR, AUTH_ITEM_REFNAME_TOKENS);\r
             AuthorityTermInfo authTermInfo = new AuthorityTermInfo(refNameTokens);\r
             name = authTermInfo.name;\r
         } catch(Exception e) {\r