1 19 20 package edu.umd.cs.findbugs.classfile.impl; 21 22 import java.io.IOException ; 23 24 import edu.umd.cs.findbugs.classfile.ICodeBase; 25 import edu.umd.cs.findbugs.classfile.ICodeBaseLocator; 26 import edu.umd.cs.findbugs.classfile.IScannableCodeBase; 27 import edu.umd.cs.findbugs.classfile.ResourceNotFoundException; 28 29 34 public class NestedZipFileCodeBaseLocator implements ICodeBaseLocator { 35 private final ICodeBase parentCodeBase; 36 private final String resourceName; 37 38 public NestedZipFileCodeBaseLocator(ICodeBase parentCodeBase, String resourceName) { 39 this.parentCodeBase = parentCodeBase; 40 this.resourceName = resourceName; 41 } 42 43 46 public ICodeBase getParentCodeBase() { 47 return parentCodeBase; 48 } 49 50 53 public String getResourceName() { 54 return resourceName; 55 } 56 57 60 public ICodeBaseLocator createRelativeCodeBaseLocator(String relativePath) { 61 return new NestedZipFileCodeBaseLocator(parentCodeBase, relativePath); 63 } 64 65 68 public ICodeBase openCodeBase() throws ResourceNotFoundException, IOException { 69 return ClassFactory.createNestedZipFileCodeBase(this); 70 } 71 72 75 @Override 76 public String toString() { 77 return "nested:[" + parentCodeBase.getCodeBaseLocator() + "]" + resourceName; 78 } 79 80 83 @Override 84 public boolean equals(Object obj) { 85 if (obj == null || obj.getClass() != this.getClass()) { 86 return false; 87 } 88 NestedZipFileCodeBaseLocator other = (NestedZipFileCodeBaseLocator) obj; 89 return this.parentCodeBase.equals(other.parentCodeBase) 90 && this.resourceName.equals(other.resourceName); 91 } 92 93 96 @Override 97 public int hashCode() { 98 return 7919 * parentCodeBase.hashCode() + resourceName.hashCode(); 99 } 100 } 101 | Popular Tags |