/******************************************************************************* * Copyright (c) 2010, 2012 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.repository; import java.util.UUID; /** * A repository backed by an IDE workspace, the output of a build session or similar ad-hoc collection of artifacts. As * far as the repository system is concerned, a workspace repository is read-only, i.e. can only be used for artifact * resolution but not installation/deployment. Note that this class merely describes such a repository, actual access to * the contained artifacts is handled by a {@link WorkspaceReader}. */ public final class WorkspaceRepository implements ArtifactRepository { private final String type; private final Object key; /** * Creates a new workspace repository of type {@code "workspace"} and a random key. */ public WorkspaceRepository() { this( "workspace" ); } /** * Creates a new workspace repository with the specified type and a random key. * * @param type The type of the repository, may be {@code null}. */ public WorkspaceRepository( String type ) { this( type, null ); } /** * Creates a new workspace repository with the specified type and key. The key is used to distinguish one workspace * from another and should be sensitive to the artifacts that are (potentially) available in the workspace. * * @param type The type of the repository, may be {@code null}. * @param key The (comparison) key for the repository, may be {@code null} to generate a unique random key. */ public WorkspaceRepository( String type, Object key ) { this.type = ( type != null ) ? type : ""; this.key = ( key != null ) ? key : UUID.randomUUID().toString().replace( "-", "" ); } public String getContentType() { return type; } public String getId() { return "workspace"; } /** * Gets the key of this workspace repository. The key is used to distinguish one workspace from another and should * be sensitive to the artifacts that are (potentially) available in the workspace. * * @return The (comparison) key for this workspace repository, never {@code null}. */ public Object getKey() { return key; } @Override public String toString() { return "(" + getContentType() + ")"; } @Override public boolean equals( Object obj ) { if ( this == obj ) { return true; } if ( obj == null || !getClass().equals( obj.getClass() ) ) { return false; } WorkspaceRepository that = (WorkspaceRepository) obj; return getContentType().equals( that.getContentType() ) && getKey().equals( that.getKey() ); } @Override public int hashCode() { int hash = 17; hash = hash * 31 + getKey().hashCode(); hash = hash * 31 + getContentType().hashCode(); return hash; } }