Author: julien(a)jboss.com
Date: 2007-05-30 10:15:29 -0400 (Wed, 30 May 2007)
New Revision: 7362
Modified:
trunk/core/build.xml
trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectId.java
trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectPath.java
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectIdTestCase.java
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectPathTestCase.java
Log:
more complete coverage for PortalObjectId test case
Modified: trunk/core/build.xml
===================================================================
--- trunk/core/build.xml 2007-05-30 13:48:06 UTC (rev 7361)
+++ trunk/core/build.xml 2007-05-30 14:15:29 UTC (rev 7362)
@@ -613,7 +613,6 @@
<parameter name="Config"
value="transient-jboss-beans.xml"/>
</zest>
-->
-
<zest todir="${test.reports}"
name="org.jboss.portal.test.core.state.ProducerTestCase"
outfile="TEST-ProducerTestCase-WithoutRegistration">
<parameter name="UseRegistration"
value="false"/>
Modified: trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectId.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectId.java 2007-05-30
13:48:06 UTC (rev 7361)
+++ trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectId.java 2007-05-30
14:15:29 UTC (rev 7362)
@@ -37,16 +37,29 @@
public class PortalObjectId implements Comparable, Serializable
{
- /** . */
+ /** The namespace. */
private final String namespace;
- /** . */
+ /** The path. */
private final PortalObjectPath path;
- /** . */
+ /** The cached hash code. */
private Integer hashCode;
- public PortalObjectId(String namespace, PortalObjectPath path)
+ /** The lazy computed to string value for canonical format. */
+ private String toStringCanonicalFormat;
+
+ /** The lazy computed to string value for legacy format. */
+ private String toStringLegacyFormat;
+
+ /**
+ * Build a new portal object id.
+ *
+ * @param namespace the namespace value
+ * @param path the path object
+ * @throws IllegalArgumentException if any argument is null
+ */
+ public PortalObjectId(String namespace, PortalObjectPath path) throws
IllegalArgumentException
{
if (namespace == null)
{
@@ -60,11 +73,21 @@
this.path = path;
}
+ /**
+ * Returns the portal object namespace.
+ *
+ * @return the namespace
+ */
public String getNamespace()
{
return namespace;
}
+ /**
+ * Returns the portal object path.
+ *
+ * @return the path
+ */
public PortalObjectPath getPath()
{
return path;
@@ -93,13 +116,20 @@
return false;
}
- public String toString(PortalObjectPath.Format format)
+ /**
+ * Parse a portal object id given its string representation.
+ *
+ * @param idValue the id string value
+ * @param format the format
+ * @throws IllegalArgumentException if any argument is null or not well formed
+ * @return the PortalObjectId
+ */
+ public static PortalObjectId parse(String idValue, PortalObjectPath.Format format)
throws IllegalArgumentException
{
- return toString(namespace, path, format);
- }
-
- public static PortalObjectId parse(String idValue, PortalObjectPath.Format format)
- {
+ if (idValue == null)
+ {
+ throw new IllegalArgumentException("No null id value accepted");
+ }
int pos = idValue.indexOf(':');
//
@@ -115,13 +145,86 @@
}
}
- public static PortalObjectId parse(String namespace, String pathValue,
PortalObjectPath.Format format)
+ /**
+ * Parse a portal object id given the namespace and the path string representation.
+ *
+ * @param namespace the namespace value
+ * @param pathValue the path value
+ * @param format the path format
+ * @return the PortalObjectId
+ * @throws IllegalArgumentException if any argument is null or not well formed
+ */
+ public static PortalObjectId parse(String namespace, String pathValue,
PortalObjectPath.Format format) throws IllegalArgumentException
{
return new PortalObjectId(namespace, PortalObjectPath.parse(pathValue, format));
}
- public static String toString(String namespace, PortalObjectPath path,
PortalObjectPath.Format format)
+ /**
+ * Returns the canonical representation.
+ *
+ * @return the string value
+ */
+ public String toString()
{
+ return toString(PortalObjectPath.CANONICAL_FORMAT);
+ }
+
+ /**
+ * Returns the portal object id string value.
+ *
+ * @param format the path format
+ * @return a formated portal object id value
+ * @throws IllegalArgumentException if the format argument is null
+ */
+ public String toString(PortalObjectPath.Format format) throws
IllegalArgumentException
+ {
+ if (format == null)
+ {
+ throw new IllegalArgumentException("No null format accepted");
+ }
+
+ //
+ if (format == PortalObjectPath.LEGACY_FORMAT)
+ {
+ if (toStringLegacyFormat == null)
+ {
+ toStringLegacyFormat = toString(namespace, path, format);
+ }
+ return toStringLegacyFormat;
+ }
+ else if (format == PortalObjectPath.CANONICAL_FORMAT)
+ {
+ if (toStringCanonicalFormat == null)
+ {
+ toStringCanonicalFormat = toString(namespace, path, format);
+ }
+ return toStringCanonicalFormat;
+ }
+ else
+ {
+ return toString(namespace, path, format);
+ }
+ }
+
+ /**
+ * Format a portal object id values to a string value.
+ *
+ * @param namespace the id value
+ * @param path the id path
+ * @param format the desired format
+ * @return the formated value
+ * @throws IllegalArgumentException if any argument is null or not well formed
+ */
+ public static String toString(String namespace, PortalObjectPath path,
PortalObjectPath.Format format) throws IllegalArgumentException
+ {
+ if (namespace == null)
+ {
+ throw new IllegalArgumentException("No null namespace accepted");
+ }
+ if (path == null)
+ {
+ throw new IllegalArgumentException("No null path accepted");
+ }
if (namespace.length() > 0)
{
return namespace + ":" + path.toString(format);
Modified: trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectPath.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectPath.java 2007-05-30
13:48:06 UTC (rev 7361)
+++
trunk/core/src/main/org/jboss/portal/core/model/portal/PortalObjectPath.java 2007-05-30
14:15:29 UTC (rev 7362)
@@ -66,11 +66,6 @@
/** The lazy created parent that can be useful. */
private PortalObjectPath parent;
- public PortalObjectPath create()
- {
- return null;
- }
-
public PortalObjectPath()
{
this.names = EMPTY_STRINGS;
@@ -268,7 +263,11 @@
return Tools.iterator(names, from, to);
}
- /** Returns the canonical representation of the id. */
+ /**
+ * Returns the canonical representation.
+ *
+ * @return the string value
+ */
public String toString()
{
return toString(CANONICAL_FORMAT);
@@ -412,7 +411,7 @@
}
};
- /** The internal format when it is persisted, smth like a.b.c */
+ /** The internal format when it is persisted, smth like a.b.c . */
public static final PortalObjectPath.Format LEGACY_FORMAT = new
PortalObjectPath.LegacyFormat();
public static class LegacyFormat extends PortalObjectPath.Format
Modified:
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectIdTestCase.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectIdTestCase.java 2007-05-30
13:48:06 UTC (rev 7361)
+++
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectIdTestCase.java 2007-05-30
14:15:29 UTC (rev 7362)
@@ -34,23 +34,153 @@
*/
public class PortalObjectIdTestCase extends TestCase
{
- public void testCanonicalFormat()
+
+ public void testIAE()
{
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{})), PortalObjectId.parse("/", PortalObjectPath.CANONICAL_FORMAT));
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a"})), PortalObjectId.parse("/a",
PortalObjectPath.CANONICAL_FORMAT));
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a","b"})), PortalObjectId.parse("/a/b",
PortalObjectPath.CANONICAL_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{})), PortalObjectId.parse("ns:/", PortalObjectPath.CANONICAL_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{"a"})), PortalObjectId.parse("ns:/a",
PortalObjectPath.CANONICAL_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{"a","b"})), PortalObjectId.parse("ns:/a/b",
PortalObjectPath.CANONICAL_FORMAT));
+ try
+ {
+ PortalObjectId.parse("/", null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.parse(null, PortalObjectPath.CANONICAL_FORMAT);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.parse("", "/", null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.parse("", null, PortalObjectPath.CANONICAL_FORMAT);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.parse(null, "/", PortalObjectPath.CANONICAL_FORMAT);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.toString(null, PortalObjectPath.ROOT_PATH,
PortalObjectPath.CANONICAL_FORMAT);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.toString("", null, PortalObjectPath.CANONICAL_FORMAT);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ PortalObjectId.toString("", PortalObjectPath.ROOT_PATH, null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ PortalObjectId id = new PortalObjectId("", PortalObjectPath.ROOT_PATH);
+ try
+ {
+ id.toString(null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ new PortalObjectId(null, PortalObjectPath.ROOT_PATH);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ try
+ {
+ new PortalObjectId("", null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
}
- public void testLegacyFormat()
+ public void testParseCanonicalFormat()
{
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{})), PortalObjectId.parse("", PortalObjectPath.LEGACY_FORMAT));
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a"})), PortalObjectId.parse("a",
PortalObjectPath.LEGACY_FORMAT));
- assertEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a","b"})), PortalObjectId.parse("a.b",
PortalObjectPath.LEGACY_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{})), PortalObjectId.parse("ns:", PortalObjectPath.LEGACY_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{"a"})), PortalObjectId.parse("ns:a",
PortalObjectPath.LEGACY_FORMAT));
- assertEquals(new PortalObjectId("ns", new PortalObjectPath(new
String[]{"a","b"})), PortalObjectId.parse("ns:a.b",
PortalObjectPath.LEGACY_FORMAT));
+ assertCanonicalFormatEquals(new PortalObjectId("", new
PortalObjectPath(new String[]{})), "/");
+ assertCanonicalFormatEquals(new PortalObjectId("", new
PortalObjectPath(new String[]{"a"})), "/a");
+ assertCanonicalFormatEquals(new PortalObjectId("", new
PortalObjectPath(new String[]{"a","b"})), "/a/b");
+
+ //
+ assertCanonicalFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{})), "ns:/");
+ assertCanonicalFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{"a"})), "ns:/a");
+ assertCanonicalFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{"a","b"})), "ns:/a/b");
+
+ //
+ assertCanonicalFormatParse(new PortalObjectId("", new
PortalObjectPath(new String[]{})), ":/");
+ assertCanonicalFormatParse(new PortalObjectId("", new
PortalObjectPath(new String[]{"a"})), ":/a");
+ assertCanonicalFormatParse(new PortalObjectId("", new
PortalObjectPath(new String[]{"a","b"})), ":/a/b");
}
+
+ private void assertCanonicalFormatParse(PortalObjectId id, String string)
+ {
+ assertEquals(id, PortalObjectId.parse(string, PortalObjectPath.CANONICAL_FORMAT));
+ }
+
+ private void assertCanonicalFormatEquals(PortalObjectId id, String string)
+ {
+ assertEquals(id, PortalObjectId.parse(string, PortalObjectPath.CANONICAL_FORMAT));
+ assertEquals(id.toString(PortalObjectPath.CANONICAL_FORMAT), string);
+ }
+
+ public void testParseLegacyFormat()
+ {
+ assertLegacyFormatEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{})), "");
+ assertLegacyFormatEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a"})), "a");
+ assertLegacyFormatEquals(new PortalObjectId("", new PortalObjectPath(new
String[]{"a","b"})), "a.b");
+
+ //
+ assertLegacyFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{})), "ns:");
+ assertLegacyFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{"a"})), "ns:a");
+ assertLegacyFormatEquals(new PortalObjectId("ns", new
PortalObjectPath(new String[]{"a","b"})), "ns:a.b");
+
+ //
+ assertLegacyFormatParse(new PortalObjectId("", new PortalObjectPath(new
String[]{})), ":");
+ assertLegacyFormatParse(new PortalObjectId("", new PortalObjectPath(new
String[]{"a"})), ":a");
+ assertLegacyFormatParse(new PortalObjectId("", new PortalObjectPath(new
String[]{"a","b"})), ":a.b");
+ }
+
+ private void assertLegacyFormatParse(PortalObjectId id, String string)
+ {
+ assertEquals(id, PortalObjectId.parse(string, PortalObjectPath.LEGACY_FORMAT));
+ }
+
+ private void assertLegacyFormatEquals(PortalObjectId id, String string)
+ {
+ assertEquals(id, PortalObjectId.parse(string, PortalObjectPath.LEGACY_FORMAT));
+ assertEquals(id.toString(PortalObjectPath.LEGACY_FORMAT), string);
+ }
}
Modified:
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectPathTestCase.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectPathTestCase.java 2007-05-30
13:48:06 UTC (rev 7361)
+++
trunk/core/src/main/org/jboss/portal/test/core/model/portal/PortalObjectPathTestCase.java 2007-05-30
14:15:29 UTC (rev 7362)
@@ -141,6 +141,24 @@
assertEquals(new PortalObjectPath(new String[]{}),
PortalObjectPath.parse("/", PortalObjectPath.CANONICAL_FORMAT));
assertEquals(new PortalObjectPath(new String[]{"a"}),
PortalObjectPath.parse("/a", PortalObjectPath.CANONICAL_FORMAT));
assertEquals(new PortalObjectPath(new String[]{"a","b"}),
PortalObjectPath.parse("/a/b", PortalObjectPath.CANONICAL_FORMAT));
+
+ //
+ try
+ {
+ PortalObjectPath.parse("", PortalObjectPath.CANONICAL_FORMAT);
+ fail("Was expecting an IAE");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ try
+ {
+ PortalObjectPath.parse("a", PortalObjectPath.CANONICAL_FORMAT);
+ fail("Was expecting an IAE");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
}
public void testLegacyFormat()