blob: d6623d134b23967ae836a6bf5688546e3caa1ea8 [file] [log] [blame]
/*
* 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;
}
}