[MRESOLVER-42] Use pre-compiled pattern in DefaultArtifact constructor
Compiling a pattern is a rather expensive operation and doing it
a user-convenient constructor is very hurtful. Cache the compiled
pattern in a static final field, just like other classes in this
artifact do.
This closes #16
diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
index 786af74..6003756 100644
--- a/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
+++ b/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/DefaultArtifact.java
@@ -33,6 +33,8 @@
public final class DefaultArtifact
extends AbstractArtifact
{
+ private static final Pattern COORDINATE_PATTERN =
+ Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" );
private final String groupId;
@@ -70,8 +72,7 @@
*/
public DefaultArtifact( String coords, Map<String, String> properties )
{
- Pattern p = Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" );
- Matcher m = p.matcher( coords );
+ Matcher m = COORDINATE_PATTERN.matcher( coords );
if ( !m.matches() )
{
throw new IllegalArgumentException( "Bad artifact coordinates " + coords