package org.jboss.windup.ast.java.data;
/**
* Contains a name that has been referenced by the Java source file. This can include the qualified name (for example, com.example.data.Foo) as well
* as information about the reference. Information includes indicating where the reference was found within the file (line, column, and length) as
* well as how it was used (import, method call, etc).
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*/
public class ClassReference
{
private final String qualifiedName;
private final String packageName;
private final String className;
private final String methodName;
private final ResolutionStatus resolutionStatus;
private final int lineNumber;
private final int column;
private final int length;
private final TypeReferenceLocation location;
private String line;
/**
* Creates the {@link ClassReference} with the given qualfiedName, location, lineNumber, column, and length.
*/
public ClassReference(String qualifiedName, String packageName, String className, String methodName, ResolutionStatus resolutionStatus,
TypeReferenceLocation location, int lineNumber,
int column, int length, String line)
{
this.qualifiedName = qualifiedName;
this.packageName = packageName;
this.className = className;
this.methodName = methodName;
this.resolutionStatus = resolutionStatus;
this.location = location;
this.lineNumber = lineNumber;
this.column = column;
this.length = length;
this.line = line;
}
/**
* Contains the raw text represented by this reference (class names are not resolved).
*/
public String getLine()
{
return line;
}
/**
* Contains the raw text represented by this reference (class names are not resolved).
*/
public void setLine(String line)
{
this.line = line;
}
/**
* Gets the fully qualified name of the Java element that was referenced.
*/
public String getQualifiedName()
{
return qualifiedName;
}
/**
* Gets the package name (eg, com.example.foo).
*/
public String getPackageName()
{
return packageName;
}
/**
* Gets the simple class name (eg, Foo).
*/
public String getClassName()
{
return className;
}
/**
* Gets the method name (eg, println).
*/
public String getMethodName()
{
return methodName;
}
/**
* Gets the line number where this reference was located.
*/
public int getLineNumber()
{
return lineNumber;
}
/**
* Gets the column where this reference was located.
*/
public int getColumn()
{
return column;
}
/**
* Gets the length of the reference.
*/
public int getLength()
{
return length;
}
/**
* The {@link TypeReferenceLocation} indicates how this reference was used within the file. For example, this can indicate whether it was used as
* an annotation or a method call.
*/
public TypeReferenceLocation getLocation()
{
return location;
}
public ResolutionStatus getResolutionStatus()
{
return resolutionStatus;
}
@Override
public boolean equals(Object o)
{
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
ClassReference reference = (ClassReference) o;
if (lineNumber != reference.lineNumber)
return false;
if (column != reference.column)
return false;
if (length != reference.length)
return false;
if (qualifiedName != null ? !qualifiedName.equals(reference.qualifiedName) : reference.qualifiedName != null)
return false;
if (resolutionStatus != reference.resolutionStatus)
return false;
if (location != reference.location)
return false;
return !(line != null ? !line.equals(reference.line) : reference.line != null);
}
@Override
public int hashCode()
{
int result = qualifiedName != null ? qualifiedName.hashCode() : 0;
result = 31 * result + (resolutionStatus != null ? resolutionStatus.hashCode() : 0);
result = 31 * result + lineNumber;
result = 31 * result + column;
result = 31 * result + length;
result = 31 * result + (location != null ? location.hashCode() : 0);
result = 31 * result + (line != null ? line.hashCode() : 0);
return result;
}
@Override
public String toString()
{
return "ClassReference{" +
"qualifiedName='" + qualifiedName + '\'' +
", packageName='" + packageName + '\'' +
", className='" + className + '\'' +
", resolutionStatus=" + resolutionStatus +
", lineNumber=" + lineNumber +
", column=" + column +
", length=" + length +
", location=" + location +
", line='" + line + '\'' +
'}';
}
}