aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java215
1 files changed, 215 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java b/framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
new file mode 100644
index 00000000..8efc45cd
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
@@ -0,0 +1,215 @@
+package org.apache.maven.artifact;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+
+import org.apache.maven.artifact.versioning.VersionRange;
+
+public final class ArtifactUtils
+{
+
+ public static boolean isSnapshot( String version )
+ {
+ if ( version != null )
+ {
+ if ( version.regionMatches( true, version.length() - Artifact.SNAPSHOT_VERSION.length(),
+ Artifact.SNAPSHOT_VERSION, 0, Artifact.SNAPSHOT_VERSION.length() ) )
+ {
+ return true;
+ }
+ else if ( Artifact.VERSION_FILE_PATTERN.matcher( version ).matches() )
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static String toSnapshotVersion( String version )
+ {
+ if ( version == null )
+ {
+ throw new IllegalArgumentException( "version: null" );
+ }
+
+ Matcher m = Artifact.VERSION_FILE_PATTERN.matcher( version );
+ if ( m.matches() )
+ {
+ return m.group( 1 ) + "-" + Artifact.SNAPSHOT_VERSION;
+ }
+ else
+ {
+ return version;
+ }
+ }
+
+ public static String versionlessKey( Artifact artifact )
+ {
+ return versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
+ }
+
+ public static String versionlessKey( String groupId, String artifactId )
+ {
+ if ( groupId == null )
+ {
+ throw new NullPointerException( "groupId is null" );
+ }
+ if ( artifactId == null )
+ {
+ throw new NullPointerException( "artifactId is null" );
+ }
+ return groupId + ":" + artifactId;
+ }
+
+ public static String key( Artifact artifact )
+ {
+ return key( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+ }
+
+ public static String key( String groupId, String artifactId, String version )
+ {
+ if ( groupId == null )
+ {
+ throw new NullPointerException( "groupId is null" );
+ }
+ if ( artifactId == null )
+ {
+ throw new NullPointerException( "artifactId is null" );
+ }
+ if ( version == null )
+ {
+ throw new NullPointerException( "version is null" );
+ }
+
+ return groupId + ":" + artifactId + ":" + version;
+ }
+
+ public static Map<String, Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
+ {
+ Map<String, Artifact> artifactMap = new LinkedHashMap<String, Artifact>();
+
+ if ( artifacts != null )
+ {
+ for ( Artifact artifact : artifacts )
+ {
+ artifactMap.put( versionlessKey( artifact ), artifact );
+ }
+ }
+
+ return artifactMap;
+ }
+
+ public static Artifact copyArtifactSafe( Artifact artifact )
+ {
+ return ( artifact != null ) ? copyArtifact( artifact ) : null;
+ }
+
+ public static Artifact copyArtifact( Artifact artifact )
+ {
+ VersionRange range = artifact.getVersionRange();
+
+ // For some reason with the introduction of MNG-1577 we have the case in Yoko where a depMan section has
+ // something like the following:
+ //
+ // <dependencyManagement>
+ // <dependencies>
+ // <!-- Yoko modules -->
+ // <dependency>
+ // <groupId>org.apache.yoko</groupId>
+ // <artifactId>yoko-core</artifactId>
+ // <version>${version}</version>
+ // </dependency>
+ // ...
+ //
+ // And the range is not set so we'll check here and set it. jvz.
+
+ if ( range == null )
+ {
+ range = VersionRange.createFromVersion( artifact.getVersion() );
+ }
+
+ DefaultArtifact clone = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), range.cloneOf(),
+ artifact.getScope(), artifact.getType(), artifact.getClassifier(),
+ artifact.getArtifactHandler(), artifact.isOptional() );
+ clone.setRelease( artifact.isRelease() );
+ clone.setResolvedVersion( artifact.getVersion() );
+ clone.setResolved( artifact.isResolved() );
+ clone.setFile( artifact.getFile() );
+
+ clone.setAvailableVersions( copyList( artifact.getAvailableVersions() ) );
+ if ( artifact.getVersion() != null )
+ {
+ clone.setBaseVersion( artifact.getBaseVersion() );
+ }
+ clone.setDependencyFilter( artifact.getDependencyFilter() );
+ clone.setDependencyTrail( copyList( artifact.getDependencyTrail() ) );
+ clone.setDownloadUrl( artifact.getDownloadUrl() );
+ clone.setRepository( artifact.getRepository() );
+
+ return clone;
+ }
+
+ /** Returns <code>to</code> collection */
+ public static <T extends Collection<Artifact>> T copyArtifacts( Collection<Artifact> from, T to )
+ {
+ for ( Artifact artifact : from )
+ {
+ to.add( ArtifactUtils.copyArtifact( artifact ) );
+ }
+ return to;
+ }
+
+ public static <K, T extends Map<K, Artifact>> T copyArtifacts( Map<K, ? extends Artifact> from, T to )
+ {
+ if ( from != null )
+ {
+ for ( Map.Entry<K, ? extends Artifact> entry : from.entrySet() )
+ {
+ to.put( entry.getKey(), ArtifactUtils.copyArtifact( entry.getValue() ) );
+ }
+ }
+
+ return to;
+ }
+
+ private static <T> List<T> copyList( List<T> original )
+ {
+ List<T> copy = null;
+
+ if ( original != null )
+ {
+ copy = new ArrayList<T>();
+
+ if ( !original.isEmpty() )
+ {
+ copy.addAll( original );
+ }
+ }
+
+ return copy;
+ }
+
+}