package edu.umd.cs.findbugs.classfile.impl;
import java.io.IOException;
import java.io.InputStream;
import edu.umd.cs.findbugs.classfile.ClassDescriptor;
import edu.umd.cs.findbugs.classfile.ICodeBase;
import edu.umd.cs.findbugs.classfile.ICodeBaseEntry;
import edu.umd.cs.findbugs.classfile.InvalidClassFileFormatException;
import edu.umd.cs.findbugs.classfile.ResourceNotFoundException;
/**
* Codebase entry for a single-file codebase.
*
* @author David Hovemeyer
*/
public class SingleFileCodeBaseEntry implements ICodeBaseEntry {
private final SingleFileCodeBase codeBase;
private String overriddenResourceName;
/**
* Constructor.
*
* @param codeBase
* parent codebase
*/
public SingleFileCodeBaseEntry(SingleFileCodeBase codeBase) {
this.codeBase = codeBase;
}
/*
* (non-Javadoc)
*
* @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getNumBytes()
*/
public int getNumBytes() {
return codeBase.getNumBytes();
}
/*
* (non-Javadoc)
*
* @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getResourceName()
*/
public String getResourceName() {
if (overriddenResourceName != null)
return overriddenResourceName;
return codeBase.getResourceName();
}
/*
* (non-Javadoc)
*
* @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#openResource()
*/
public InputStream openResource() throws IOException {
return codeBase.openFile();
}
/*
* (non-Javadoc)
*
* @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getCodeBase()
*/
public ICodeBase getCodeBase() {
return codeBase;
}
/*
* (non-Javadoc)
*
* @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getClassDescriptor()
*/
public ClassDescriptor getClassDescriptor() throws ResourceNotFoundException, InvalidClassFileFormatException {
return codeBase.getClassDescriptor();
}
/*
* (non-Javadoc)
*
* @see
* edu.umd.cs.findbugs.classfile.ICodeBaseEntry#overrideResourceName(java
* .lang.String)
*/
public void overrideResourceName(String resourceName) {
overriddenResourceName = resourceName;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
SingleFileCodeBaseEntry other = (SingleFileCodeBaseEntry) obj;
return other.codeBase.equals(this.codeBase);
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return codeBase.hashCode();
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return codeBase.getPathName();
}
}