Author: xavier
Date: Mon Nov 26 12:10:49 2007
New Revision: 598408
URL: http://svn.apache.org/viewvc?rev=598408&view=rev
Log:
IMPROVEMENT: New text representation for main module metadata concepts (IVY-649)
Modified:
incubator/ivy/core/trunk/CHANGES.txt
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/module/id/ModuleRevisionIdTest.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpConflictManagerTest.java
Modified: incubator/ivy/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/CHANGES.txt?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
--- incubator/ivy/core/trunk/CHANGES.txt (original)
+++ incubator/ivy/core/trunk/CHANGES.txt Mon Nov 26 12:10:49 2007
@@ -80,6 +80,7 @@
- IMPROVEMENT: ivy html reports now refers http://ant.apache.org (partial
IVY-414)
- IMPROVEMENT: Improvements on hello ivy example (IVY-626) (with contribution
from Jacob Grydholt Jensen)
- IMPROVEMENT: Make the root attribute in the ivyrep resolver mandatory
(IVY-625)
+- IMPROVEMENT: New text representation for main module metadata concepts
(IVY-649)
- NEW: Add a task/code to create M2 POM files from Ivy configurations (IVY-416)
- NEW: [Build] Publish the ivy sources (IVY-646) (thanks to Nicolas Lalevée)
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
Mon Nov 26 12:10:49 2007
@@ -64,8 +64,10 @@
/** [EMAIL PROTECTED] */
public String toString() {
- return getModuleId() + " " + getName() + "." + getType();
- }
+ return getModuleId()
+ + "!" + getName() + "." + getExt()
+ + (getType().equals(getExt()) ? "" : "(" + getType() + ")");
+}
/**
* @return Returns the module id.
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
Mon Nov 26 12:10:49 2007
@@ -90,9 +90,9 @@
}
public String toString() {
- return "[ " + getModuleRevisionId().getOrganisation() + " | "
- + getModuleRevisionId().getName() + " | " +
getModuleRevisionId().getRevision()
- + " :: " + getName() + " . " + getExt() + " ( " + getType() +
" ) ]";
+ return getModuleRevisionId()
+ + "!" + getName() + "." + getExt()
+ + (getType().equals(getExt()) ? "" : "(" + getType() + ")");
}
/**
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
Mon Nov 26 12:10:49 2007
@@ -85,7 +85,7 @@
/** [EMAIL PROTECTED] */
public String toString() {
- return "[ " + organisation + " | " + name + " ]";
+ return organisation + "#" + name;
}
/** [EMAIL PROTECTED] */
Modified:
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
(original)
+++
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
Mon Nov 26 12:10:49 2007
@@ -20,6 +20,8 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.ivy.Ivy;
import org.apache.ivy.core.IvyContext;
@@ -35,6 +37,43 @@
private static final String ENCODE_PREFIX = "+";
private static final String NULL_ENCODE = "@#:NULL:#@";
+
+ private static final String STRICT_CHARS_PATTERN = "[a-zA-Z0-9\\-/\\._+=]";
+ private static final String REV_STRICT_CHARS_PATTERN =
"[a-zA-Z0-9\\-/\\._+=,\\[\\]\\{\\}:]";
+ private static final Pattern MRID_PATTERN =
+ Pattern.compile(
+ "(" + STRICT_CHARS_PATTERN + "*)"
+ + "#(" + STRICT_CHARS_PATTERN + "+)"
+ + "(?:#(" + STRICT_CHARS_PATTERN + "+))?"
+ + ";(" + REV_STRICT_CHARS_PATTERN + "+)");
+
+ /**
+ * Parses a module revision id text representation and returns a new
[EMAIL PROTECTED] ModuleRevisionId}
+ * instance corresponding to the parsed String.
+ * <p>
+ * The result is unspecified if the module doesn't respect strict name
conventions.
+ * </p>
+ *
+ * @param mrid
+ * the text representation of the module (as returned by [EMAIL
PROTECTED] #toString()}). Must
+ * not be <code>null</code>.
+ * @return a [EMAIL PROTECTED] ModuleRevisionId} corresponding to the
given text representation
+ * @throws IllegalArgumentException
+ * if the given text representation does not match the [EMAIL
PROTECTED] ModuleRevisionId} text
+ * representation rules.
+ */
+ public static ModuleRevisionId parse(String mrid) {
+ Matcher m = MRID_PATTERN.matcher(mrid.trim());
+ if (!m.matches()) {
+ throw new IllegalArgumentException(
+ "module revision text representation do not match expected
pattern."
+ + " given mrid='" + mrid + "' expected form=" +
MRID_PATTERN);
+ }
+
+ //CheckStyle:MagicNumber| OFF
+ return newInstance(m.group(1), m.group(2), m.group(3), m.group(4));
+ //CheckStyle:MagicNumber| ON
+ }
public static ModuleRevisionId newInstance(String organisation, String
name, String revision) {
return new ModuleRevisionId(new ModuleId(organisation, name),
revision);
@@ -144,9 +183,9 @@
public String toString() {
- return "[ " + moduleId.getOrganisation() + " | " + moduleId.getName()
- + (branch == null || branch.length() == 0 ? "" : " | " +
branch) + " | "
- + (revision == null ? "NONE" : revision) + " ]";
+ return moduleId
+ + (branch == null || branch.length() == 0 ? "" : "#" + branch)
+ ";"
+ + (revision == null ? "NONE" : revision);
}
public String encodeToString() {
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/module/id/ModuleRevisionIdTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/module/id/ModuleRevisionIdTest.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/module/id/ModuleRevisionIdTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/module/id/ModuleRevisionIdTest.java
Mon Nov 26 12:10:49 2007
@@ -23,6 +23,28 @@
import junit.framework.TestCase;
public class ModuleRevisionIdTest extends TestCase {
+
+ public void testParse() throws Exception {
+ testParse("#A;1.0");
+ testParse("org#module;2.0");
+ testParse("org#module#branch;myversion");
+ testParse("org#module#branch;[1.2,1.3]");
+ testParse(" org#module#branch;[1.2,1.3] ");
+
+ testParseFailure("bad");
+ testParseFailure("org#mod");
+ testParseFailure("#;1");
+ testParseFailure("#A%;1.0");
+ }
+
+ private void testParseFailure(String mrid) {
+ try {
+ ModuleRevisionId.parse(mrid);
+ fail("ModuleRevisionId.parse is supposed to raise an exception
with "+mrid);
+ } catch (IllegalArgumentException ex) {
+ assertTrue(ex.getMessage().indexOf(mrid) != - 1);
+ }
+ }
public void testEncodeDecodeToString() {
testEncodeDecodeToString(ModuleRevisionId.newInstance("org", "name",
"revision"));
@@ -45,5 +67,9 @@
private void testEncodeDecodeToString(ModuleRevisionId mrid) {
assertEquals(mrid, ModuleRevisionId.decode(mrid.encodeToString()));
+ }
+
+ private void testParse(String mrid) {
+ assertEquals(mrid.trim(), ModuleRevisionId.parse(mrid).toString());
}
}
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
Mon Nov 26 12:10:49 2007
@@ -2364,7 +2364,7 @@
fail("no exception with circular dependency strategy set to
error");
} catch (CircularDependencyException ex) {
assertEquals(
- "[ org6 | mod6.3 | 1.0 ]->[ org6 | mod6.2 | 1.0 ]->[ org6 |
mod6.3 | latest.integration ]",
+
"org6#mod6.3;1.0->org6#mod6.2;1.0->org6#mod6.3;latest.integration",
ex.getMessage());
}
}
@@ -2384,7 +2384,7 @@
} catch (CircularDependencyException ex) {
// ok
assertEquals(
- "[ org8 | mod8.5 | NONE ]->[ org8 | mod8.6 | 2.+ ]->[ org8 |
mod8.5 | 2.+ ]", ex
+ "org8#mod8.5;NONE->org8#mod8.6;2.+->org8#mod8.5;2.+", ex
.getMessage());
}
}
@@ -2422,7 +2422,7 @@
fail("no exception with circular dependency strategy set to
error");
} catch (CircularDependencyException ex) {
assertEquals(
- "[ org6 | mod6.3 | 1.2 ]->[ org6 | mod6.2 | 1.1 ]->[ org6 |
mod6.3 | 1.2 ]", ex
+ "org6#mod6.3;1.2->org6#mod6.2;1.1->org6#mod6.3;1.2", ex
.getMessage());
}
}
Modified:
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpConflictManagerTest.java
URL:
http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpConflictManagerTest.java?rev=598408&r1=598407&r2=598408&view=diff
==============================================================================
---
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpConflictManagerTest.java
(original)
+++
incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/conflict/RegexpConflictManagerTest.java
Mon Nov 26 12:10:49 2007
@@ -64,7 +64,7 @@
e
.getMessage()
.indexOf(
- "[ org1 | mod1.2 | 2.0.0 ]:2.0 (needed by [[
apache | resolve-noconflict | 1.0 ]])") != -1);
+ "org1#mod1.2;2.0.0:2.0 (needed by
[apache#resolve-noconflict;1.0])") != -1);
assertTrue("bad exception message: " + e.getMessage(),
e.getMessage().indexOf(
"conflicts with") != -1);
assertTrue(
@@ -72,7 +72,7 @@
e
.getMessage()
.indexOf(
- "[ org1 | mod1.2 | 2.1.0 ]:2.1 (needed by [[
apache | resolve-noconflict | 1.0 ]])") != -1);
+ "org1#mod1.2;2.1.0:2.1 (needed by
[apache#resolve-noconflict;1.0])") != -1);
}
}