1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 package org.eclipse.aether.repository; 20 21 import java.io.File; 22 import java.util.Objects; 23 24 /** 25 * A repository on the local file system used to cache contents of remote repositories and to store locally installed 26 * artifacts. Note that this class merely describes such a repository, actual access to the contained artifacts is 27 * handled by a {@link LocalRepositoryManager} which is usually determined from the {@link #getContentType() type} of 28 * the repository. 29 */ 30 public final class LocalRepository implements ArtifactRepository { 31 32 private final File basedir; 33 34 private final String type; 35 36 /** 37 * Creates a new local repository with the specified base directory and unknown type. 38 * 39 * @param basedir The base directory of the repository, may be {@code null}. 40 */ 41 public LocalRepository(String basedir) { 42 this((basedir != null) ? new File(basedir) : null, ""); 43 } 44 45 /** 46 * Creates a new local repository with the specified base directory and unknown type. 47 * 48 * @param basedir The base directory of the repository, may be {@code null}. 49 */ 50 public LocalRepository(File basedir) { 51 this(basedir, ""); 52 } 53 54 /** 55 * Creates a new local repository with the specified properties. 56 * 57 * @param basedir The base directory of the repository, may be {@code null}. 58 * @param type The type of the repository, may be {@code null}. 59 */ 60 public LocalRepository(File basedir, String type) { 61 this.basedir = basedir; 62 this.type = (type != null) ? type : ""; 63 } 64 65 public String getContentType() { 66 return type; 67 } 68 69 public String getId() { 70 return "local"; 71 } 72 73 /** 74 * Gets the base directory of the repository. 75 * 76 * @return The base directory or {@code null} if none. 77 */ 78 public File getBasedir() { 79 return basedir; 80 } 81 82 @Override 83 public String toString() { 84 return getBasedir() + " (" + getContentType() + ")"; 85 } 86 87 @Override 88 public boolean equals(Object obj) { 89 if (this == obj) { 90 return true; 91 } 92 if (obj == null || !getClass().equals(obj.getClass())) { 93 return false; 94 } 95 96 LocalRepository that = (LocalRepository) obj; 97 98 return Objects.equals(basedir, that.basedir) && Objects.equals(type, that.type); 99 } 100 101 @Override 102 public int hashCode() { 103 int hash = 17; 104 hash = hash * 31 + hash(basedir); 105 hash = hash * 31 + hash(type); 106 return hash; 107 } 108 109 private static int hash(Object obj) { 110 return obj != null ? obj.hashCode() : 0; 111 } 112 }