001: package edu.umd.cs.findbugs.classfile.impl;
002:
003: import java.io.IOException;
004: import java.io.InputStream;
005:
006: import edu.umd.cs.findbugs.classfile.ClassDescriptor;
007: import edu.umd.cs.findbugs.classfile.ICodeBase;
008: import edu.umd.cs.findbugs.classfile.ICodeBaseEntry;
009: import edu.umd.cs.findbugs.classfile.InvalidClassFileFormatException;
010: import edu.umd.cs.findbugs.classfile.ResourceNotFoundException;
011:
012: /**
013: * Codebase entry for a single-file codebase.
014: *
015: * @author David Hovemeyer
016: */
017: public class SingleFileCodeBaseEntry implements ICodeBaseEntry {
018: private final SingleFileCodeBase codeBase;
019: private String overriddenResourceName;
020:
021: /**
022: * Constructor.
023: *
024: * @param codeBase parent codebase
025: */
026: public SingleFileCodeBaseEntry(SingleFileCodeBase codeBase) {
027: this .codeBase = codeBase;
028: }
029:
030: /* (non-Javadoc)
031: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getNumBytes()
032: */
033: public int getNumBytes() {
034: return codeBase.getNumBytes();
035: }
036:
037: /* (non-Javadoc)
038: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getResourceName()
039: */
040: public String getResourceName() {
041: if (overriddenResourceName != null)
042: return overriddenResourceName;
043: return codeBase.getResourceName();
044: }
045:
046: /* (non-Javadoc)
047: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#openResource()
048: */
049: public InputStream openResource() throws IOException {
050: return codeBase.openFile();
051: }
052:
053: /* (non-Javadoc)
054: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getCodeBase()
055: */
056: public ICodeBase getCodeBase() {
057: return codeBase;
058: }
059:
060: /* (non-Javadoc)
061: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#getClassDescriptor()
062: */
063: public ClassDescriptor getClassDescriptor()
064: throws ResourceNotFoundException,
065: InvalidClassFileFormatException {
066: return codeBase.getClassDescriptor();
067: }
068:
069: /* (non-Javadoc)
070: * @see edu.umd.cs.findbugs.classfile.ICodeBaseEntry#overrideResourceName(java.lang.String)
071: */
072: public void overrideResourceName(String resourceName) {
073: overriddenResourceName = resourceName;
074: }
075:
076: /* (non-Javadoc)
077: * @see java.lang.Object#equals(java.lang.Object)
078: */
079: @Override
080: public boolean equals(Object obj) {
081: if (obj == null || obj.getClass() != this .getClass()) {
082: return false;
083: }
084: SingleFileCodeBaseEntry other = (SingleFileCodeBaseEntry) obj;
085: return other.codeBase.equals(this .codeBase);
086: }
087:
088: /* (non-Javadoc)
089: * @see java.lang.Object#hashCode()
090: */
091: @Override
092: public int hashCode() {
093: return codeBase.hashCode();
094: }
095:
096: /* (non-Javadoc)
097: * @see java.lang.Object#toString()
098: */
099: @Override
100: public String toString() {
101: return codeBase.getPathName();
102: }
103: }
|