| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| package org.apache.ivy.core.cache; |
| |
| import org.apache.ivy.core.module.descriptor.Artifact; |
| import org.apache.ivy.util.Checks; |
| |
| /** |
| * This class contains information about the origin of an artifact. |
| * |
| * @see org.apache.ivy.plugins.resolver.BasicResolver |
| * @see org.apache.ivy.plugins.resolver.util.ResolvedResource |
| */ |
| public class ArtifactOrigin { |
| private static final String UNKNOWN = "UNKNOWN"; |
| |
| /** |
| * @param artifact ditto |
| * @return ArtifactOrigin |
| * @deprecated because of renaming due spell check. |
| */ |
| @Deprecated |
| public static final ArtifactOrigin unkwnown(Artifact artifact) { |
| return unknown(artifact); |
| } |
| |
| /** |
| * ArtifactOrigin instance used when the origin is unknown. |
| * |
| * @param artifact ditto |
| * @return ArtifactOrigin |
| */ |
| public static final ArtifactOrigin unknown(Artifact artifact) { |
| return new ArtifactOrigin(artifact, false, UNKNOWN); |
| } |
| |
| public static final boolean isUnknown(ArtifactOrigin artifact) { |
| return artifact == null || UNKNOWN.equals(artifact.getLocation()); |
| } |
| |
| public static final boolean isUnknown(String location) { |
| return location == null || UNKNOWN.equals(location); |
| } |
| |
| private static final int MAGIC_HASH_VALUE = 31; |
| |
| private boolean isLocal; |
| |
| private String location; |
| |
| private Artifact artifact; |
| |
| private Long lastChecked; |
| |
| private boolean exists = true; |
| |
| /** |
| * Create a new instance |
| * |
| * @param artifact |
| * the artifact pointed by this location. Must not be <code>null</code>. |
| * @param isLocal |
| * <code>boolean</code> value indicating if the resource is local (on the |
| * filesystem). |
| * @param location |
| * the location of the resource (normally a url). Must not be <code>null</code>. |
| */ |
| public ArtifactOrigin(Artifact artifact, boolean isLocal, String location) { |
| Checks.checkNotNull(artifact, "artifact"); |
| Checks.checkNotNull(location, "location"); |
| this.artifact = artifact; |
| this.isLocal = isLocal; |
| this.location = location; |
| } |
| |
| /** |
| * Is this resource local to this host, i.e. is it on the file system? |
| * |
| * @return <code>boolean</code> value indicating if the resource is local. |
| */ |
| public boolean isLocal() { |
| return isLocal; |
| } |
| |
| /** |
| * Return the location of the resource (normally a url) |
| * |
| * @return the location of the resource |
| */ |
| public String getLocation() { |
| return location; |
| } |
| |
| public void setLocation(String location) { |
| this.location = location; |
| } |
| |
| /** |
| * Return the artifact that this location is pointing at. |
| * |
| * @return the artifact that this location is pointing at. |
| */ |
| public Artifact getArtifact() { |
| return artifact; |
| } |
| |
| /** |
| * The last time the resource was checked to be up to date. Maybe <code>null</code> if this |
| * information is not actually used by in some case. |
| * |
| * @return Long timestamp |
| */ |
| public Long getLastChecked() { |
| return lastChecked; |
| } |
| |
| public void setLastChecked(Long lastChecked) { |
| this.lastChecked = lastChecked; |
| } |
| |
| public boolean isExists() { |
| return exists; |
| } |
| |
| public void setExist(boolean exists) { |
| this.exists = exists; |
| } |
| |
| public String toString() { |
| return "ArtifactOrigin { isLocal=" + isLocal + ", location=" + location + ", lastChecked=" |
| + lastChecked + ", exists=" + exists + "}"; |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) { |
| return true; |
| } |
| if (!(o instanceof ArtifactOrigin)) { |
| return false; |
| } |
| |
| ArtifactOrigin that = (ArtifactOrigin) o; |
| |
| if (isLocal != that.isLocal || !location.equals(that.location)) { |
| return false; |
| } |
| if (lastChecked == null) { |
| if (that.lastChecked != null) { |
| return false; |
| } |
| } else if (!lastChecked.equals(that.lastChecked)) { |
| return false; |
| } |
| |
| return exists == that.exists; |
| } |
| |
| public int hashCode() { |
| int result; |
| result = (isLocal ? 1 : 0); |
| result = MAGIC_HASH_VALUE * result + location.hashCode(); |
| result = MAGIC_HASH_VALUE * result + ((lastChecked == null) ? 0 : lastChecked.hashCode()); |
| result = MAGIC_HASH_VALUE * result + (exists ? 1 : 0); |
| return result; |
| } |
| } |