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.util.Collections; 22 import java.util.List; 23 24 import org.eclipse.aether.artifact.Artifact; 25 26 /** 27 * A query to the local repository for the existence of an artifact. 28 * 29 * @see LocalRepositoryManager#find(org.eclipse.aether.RepositorySystemSession, LocalArtifactRequest) 30 */ 31 public final class LocalArtifactRequest { 32 33 private Artifact artifact; 34 35 private String context = ""; 36 37 private List<RemoteRepository> repositories = Collections.emptyList(); 38 39 /** 40 * Creates an uninitialized query. 41 */ 42 public LocalArtifactRequest() { 43 // enables default constructor 44 } 45 46 /** 47 * Creates a query with the specified properties. 48 * 49 * @param artifact The artifact to query for, may be {@code null}. 50 * @param repositories The remote repositories that should be considered as potential sources for the artifact, may 51 * be {@code null} or empty to only consider locally installed artifacts. 52 * @param context The resolution context for the artifact, may be {@code null}. 53 */ 54 public LocalArtifactRequest(Artifact artifact, List<RemoteRepository> repositories, String context) { 55 setArtifact(artifact); 56 setRepositories(repositories); 57 setContext(context); 58 } 59 60 /** 61 * Gets the artifact to query for. 62 * 63 * @return The artifact or {@code null} if not set. 64 */ 65 public Artifact getArtifact() { 66 return artifact; 67 } 68 69 /** 70 * Sets the artifact to query for. 71 * 72 * @param artifact The artifact, may be {@code null}. 73 * @return This query for chaining, never {@code null}. 74 */ 75 public LocalArtifactRequest setArtifact(Artifact artifact) { 76 this.artifact = artifact; 77 return this; 78 } 79 80 /** 81 * Gets the resolution context. 82 * 83 * @return The resolution context, never {@code null}. 84 */ 85 public String getContext() { 86 return context; 87 } 88 89 /** 90 * Sets the resolution context. 91 * 92 * @param context The resolution context, may be {@code null}. 93 * @return This query for chaining, never {@code null}. 94 */ 95 public LocalArtifactRequest setContext(String context) { 96 this.context = (context != null) ? context : ""; 97 return this; 98 } 99 100 /** 101 * Gets the remote repositories to consider as sources of the artifact. 102 * 103 * @return The remote repositories, never {@code null}. 104 */ 105 public List<RemoteRepository> getRepositories() { 106 return repositories; 107 } 108 109 /** 110 * Sets the remote repositories to consider as sources of the artifact. 111 * 112 * @param repositories The remote repositories, may be {@code null} or empty to only consider locally installed 113 * artifacts. 114 * @return This query for chaining, never {@code null}. 115 */ 116 public LocalArtifactRequest setRepositories(List<RemoteRepository> repositories) { 117 if (repositories != null) { 118 this.repositories = repositories; 119 } else { 120 this.repositories = Collections.emptyList(); 121 } 122 return this; 123 } 124 125 @Override 126 public String toString() { 127 return getArtifact() + " @ " + getRepositories(); 128 } 129 }