X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Fartifact%2FDefaultArtifact.java;fp=org.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Fartifact%2FDefaultArtifact.java;h=0000000000000000000000000000000000000000;hb=ecc22e604e47533c79de9cecdcdeacbc752cbff1;hp=997103419ca233a4ec63e15ef51c141102125dbd;hpb=e07ded4632e53f8b8869763bc1f1f4091361e76e;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.repo/src/org/eclipse/aether/artifact/DefaultArtifact.java b/org.argeo.slc.repo/src/org/eclipse/aether/artifact/DefaultArtifact.java deleted file mode 100644 index 997103419..000000000 --- a/org.argeo.slc.repo/src/org/eclipse/aether/artifact/DefaultArtifact.java +++ /dev/null @@ -1,276 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Sonatype, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.aether.artifact; - -import java.io.File; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * A simple artifact. Note: Instances of this class are immutable and the exposed mutators return new objects - * rather than changing the current instance. - */ -public final class DefaultArtifact - extends AbstractArtifact -{ - - private final String groupId; - - private final String artifactId; - - private final String version; - - private final String classifier; - - private final String extension; - - private final File file; - - private final Map properties; - - /** - * Creates a new artifact with the specified coordinates. If not specified in the artifact coordinates, the - * artifact's extension defaults to {@code jar} and classifier to an empty string. - * - * @param coords The artifact coordinates in the format - * {@code :[:[:]]:}, must not be {@code null}. - */ - public DefaultArtifact( String coords ) - { - this( coords, Collections. emptyMap() ); - } - - /** - * Creates a new artifact with the specified coordinates and properties. If not specified in the artifact - * coordinates, the artifact's extension defaults to {@code jar} and classifier to an empty string. - * - * @param coords The artifact coordinates in the format - * {@code :[:[:]]:}, must not be {@code null}. - * @param properties The artifact properties, may be {@code null}. - */ - public DefaultArtifact( String coords, Map properties ) - { - Pattern p = Pattern.compile( "([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)" ); - Matcher m = p.matcher( coords ); - if ( !m.matches() ) - { - throw new IllegalArgumentException( "Bad artifact coordinates " + coords - + ", expected format is :[:[:]]:" ); - } - groupId = m.group( 1 ); - artifactId = m.group( 2 ); - extension = get( m.group( 4 ), "jar" ); - classifier = get( m.group( 6 ), "" ); - version = m.group( 7 ); - file = null; - this.properties = copyProperties( properties ); - } - - private static String get( String value, String defaultValue ) - { - return ( value == null || value.length() <= 0 ) ? defaultValue : value; - } - - /** - * Creates a new artifact with the specified coordinates and no classifier. Passing {@code null} for any of the - * coordinates is equivalent to specifying an empty string. - * - * @param groupId The group identifier of the artifact, may be {@code null}. - * @param artifactId The artifact identifier of the artifact, may be {@code null}. - * @param extension The file extension of the artifact, may be {@code null}. - * @param version The version of the artifact, may be {@code null}. - */ - public DefaultArtifact( String groupId, String artifactId, String extension, String version ) - { - this( groupId, artifactId, "", extension, version ); - } - - /** - * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is - * equivalent to specifying an empty string. - * - * @param groupId The group identifier of the artifact, may be {@code null}. - * @param artifactId The artifact identifier of the artifact, may be {@code null}. - * @param classifier The classifier of the artifact, may be {@code null}. - * @param extension The file extension of the artifact, may be {@code null}. - * @param version The version of the artifact, may be {@code null}. - */ - public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version ) - { - this( groupId, artifactId, classifier, extension, version, null, (File) null ); - } - - /** - * Creates a new artifact with the specified coordinates. Passing {@code null} for any of the coordinates is - * equivalent to specifying an empty string. The optional artifact type provided to this constructor will be used to - * determine the artifact's classifier and file extension if the corresponding arguments for this constructor are - * {@code null}. - * - * @param groupId The group identifier of the artifact, may be {@code null}. - * @param artifactId The artifact identifier of the artifact, may be {@code null}. - * @param classifier The classifier of the artifact, may be {@code null}. - * @param extension The file extension of the artifact, may be {@code null}. - * @param version The version of the artifact, may be {@code null}. - * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}. - */ - public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, - ArtifactType type ) - { - this( groupId, artifactId, classifier, extension, version, null, type ); - } - - /** - * Creates a new artifact with the specified coordinates and properties. Passing {@code null} for any of the - * coordinates is equivalent to specifying an empty string. The optional artifact type provided to this constructor - * will be used to determine the artifact's classifier and file extension if the corresponding arguments for this - * constructor are {@code null}. If the artifact type specifies properties, those will get merged with the - * properties passed directly into the constructor, with the latter properties taking precedence. - * - * @param groupId The group identifier of the artifact, may be {@code null}. - * @param artifactId The artifact identifier of the artifact, may be {@code null}. - * @param classifier The classifier of the artifact, may be {@code null}. - * @param extension The file extension of the artifact, may be {@code null}. - * @param version The version of the artifact, may be {@code null}. - * @param properties The properties of the artifact, may be {@code null} if none. - * @param type The artifact type from which to query classifier, file extension and properties, may be {@code null}. - */ - public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, - Map properties, ArtifactType type ) - { - this.groupId = emptify( groupId ); - this.artifactId = emptify( artifactId ); - if ( classifier != null || type == null ) - { - this.classifier = emptify( classifier ); - } - else - { - this.classifier = emptify( type.getClassifier() ); - } - if ( extension != null || type == null ) - { - this.extension = emptify( extension ); - } - else - { - this.extension = emptify( type.getExtension() ); - } - this.version = emptify( version ); - this.file = null; - this.properties = merge( properties, ( type != null ) ? type.getProperties() : null ); - } - - private static Map merge( Map dominant, Map recessive ) - { - Map properties; - - if ( ( dominant == null || dominant.isEmpty() ) && ( recessive == null || recessive.isEmpty() ) ) - { - properties = Collections.emptyMap(); - } - else - { - properties = new HashMap(); - if ( recessive != null ) - { - properties.putAll( recessive ); - } - if ( dominant != null ) - { - properties.putAll( dominant ); - } - properties = Collections.unmodifiableMap( properties ); - } - - return properties; - } - - /** - * Creates a new artifact with the specified coordinates, properties and file. Passing {@code null} for any of the - * coordinates is equivalent to specifying an empty string. - * - * @param groupId The group identifier of the artifact, may be {@code null}. - * @param artifactId The artifact identifier of the artifact, may be {@code null}. - * @param classifier The classifier of the artifact, may be {@code null}. - * @param extension The file extension of the artifact, may be {@code null}. - * @param version The version of the artifact, may be {@code null}. - * @param properties The properties of the artifact, may be {@code null} if none. - * @param file The resolved file of the artifact, may be {@code null}. - */ - public DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, - Map properties, File file ) - { - this.groupId = emptify( groupId ); - this.artifactId = emptify( artifactId ); - this.classifier = emptify( classifier ); - this.extension = emptify( extension ); - this.version = emptify( version ); - this.file = file; - this.properties = copyProperties( properties ); - } - - DefaultArtifact( String groupId, String artifactId, String classifier, String extension, String version, File file, - Map properties ) - { - // NOTE: This constructor assumes immutability of the provided properties, for internal use only - this.groupId = emptify( groupId ); - this.artifactId = emptify( artifactId ); - this.classifier = emptify( classifier ); - this.extension = emptify( extension ); - this.version = emptify( version ); - this.file = file; - this.properties = properties; - } - - private static String emptify( String str ) - { - return ( str == null ) ? "" : str; - } - - public String getGroupId() - { - return groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public String getVersion() - { - return version; - } - - public String getClassifier() - { - return classifier; - } - - public String getExtension() - { - return extension; - } - - public File getFile() - { - return file; - } - - public Map getProperties() - { - return properties; - } - -}