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.installation; 20 21 import java.util.ArrayList; 22 import java.util.Collection; 23 import java.util.Collections; 24 25 import org.eclipse.aether.artifact.Artifact; 26 import org.eclipse.aether.metadata.Metadata; 27 28 import static java.util.Objects.requireNonNull; 29 30 /** 31 * The result of installing artifacts and their accompanying metadata into the a remote repository. 32 * 33 * @see org.eclipse.aether.RepositorySystem#install(org.eclipse.aether.RepositorySystemSession, InstallRequest) 34 */ 35 public final class InstallResult { 36 37 private final InstallRequest request; 38 39 private Collection<Artifact> artifacts; 40 41 private Collection<Metadata> metadata; 42 43 /** 44 * Creates a new result for the specified request. 45 * 46 * @param request The installation request, must not be {@code null}. 47 */ 48 public InstallResult(InstallRequest request) { 49 this.request = requireNonNull(request, "install request cannot be null"); 50 artifacts = Collections.emptyList(); 51 metadata = Collections.emptyList(); 52 } 53 54 /** 55 * Gets the install request that was made. 56 * 57 * @return The install request, never {@code null}. 58 */ 59 public InstallRequest getRequest() { 60 return request; 61 } 62 63 /** 64 * Gets the artifacts that got installed. 65 * 66 * @return The installed artifacts, never {@code null}. 67 */ 68 public Collection<Artifact> getArtifacts() { 69 return artifacts; 70 } 71 72 /** 73 * Sets the artifacts that got installed. 74 * 75 * @param artifacts The installed artifacts, may be {@code null}. 76 * @return This result for chaining, never {@code null}. 77 */ 78 public InstallResult setArtifacts(Collection<Artifact> artifacts) { 79 if (artifacts == null) { 80 this.artifacts = Collections.emptyList(); 81 } else { 82 this.artifacts = artifacts; 83 } 84 return this; 85 } 86 87 /** 88 * Adds the specified artifacts to the result. 89 * 90 * @param artifact The installed artifact to add, may be {@code null}. 91 * @return This result for chaining, never {@code null}. 92 */ 93 public InstallResult addArtifact(Artifact artifact) { 94 if (artifact != null) { 95 if (artifacts.isEmpty()) { 96 artifacts = new ArrayList<>(); 97 } 98 artifacts.add(artifact); 99 } 100 return this; 101 } 102 103 /** 104 * Gets the metadata that got installed. Note that due to automatically generated metadata, there might have been 105 * more metadata installed than originally specified in the install request. 106 * 107 * @return The installed metadata, never {@code null}. 108 */ 109 public Collection<Metadata> getMetadata() { 110 return metadata; 111 } 112 113 /** 114 * Sets the metadata that got installed. 115 * 116 * @param metadata The installed metadata, may be {@code null}. 117 * @return This result for chaining, never {@code null}. 118 */ 119 public InstallResult setMetadata(Collection<Metadata> metadata) { 120 if (metadata == null) { 121 this.metadata = Collections.emptyList(); 122 } else { 123 this.metadata = metadata; 124 } 125 return this; 126 } 127 128 /** 129 * Adds the specified metadata to this result. 130 * 131 * @param metadata The installed metadata to add, may be {@code null}. 132 * @return This result for chaining, never {@code null}. 133 */ 134 public InstallResult addMetadata(Metadata metadata) { 135 if (metadata != null) { 136 if (this.metadata.isEmpty()) { 137 this.metadata = new ArrayList<>(); 138 } 139 this.metadata.add(metadata); 140 } 141 return this; 142 } 143 144 @Override 145 public String toString() { 146 return getArtifacts() + ", " + getMetadata(); 147 } 148 }