@Override public ICodeBaseEntry lookupResource(String resourceName) throws ResourceNotFoundException { // See if we have cached the codebase entry for this resource ICodeBaseEntry result = codeBaseEntryMap.get(resourceName); if (result == null) { // No previously resolved entry - look up the resources in the // codebases // First try application codebases result = search(appCodeBaseList, resourceName); if (result == null) { // Next try aux codebases result = search(auxCodeBaseList, resourceName); } // If not found in any codebase, then throw // ResourceNotFoundException if (result == null) { throw new ResourceNotFoundException(resourceName); } // Cache the entry for future lookups codeBaseEntryMap.put(resourceName, result); } return result; }
ClassDescriptor getClassDescriptor() throws ResourceNotFoundException, InvalidClassFileFormatException { DataInputStream in = null; try { try { in = new DataInputStream(new BufferedInputStream(new FileInputStream(fileName))); ClassParserInterface classParser = new ClassParser(in, null, new SingleFileCodeBaseEntry(this)); ClassNameAndSuperclassInfo.Builder builder = new ClassNameAndSuperclassInfo.Builder(); classParser.parse(builder); return builder.build().getClassDescriptor(); } finally { if (in != null) { IO.close(in); } } } catch (IOException e) { // XXX: file name isn't really the resource name, but whatever throw new ResourceNotFoundException(fileName); } }
throw new ResourceNotFoundException(resourceName);
@Override public JavaClass analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException { try { ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor); JavaClass javaClass = new ClassParser(classData.getInputStream(), descriptor.toResourceName()).parse(); // Make sure that the JavaClass object knows the repository // it was loaded from. javaClass.setRepository(Repository.getRepository()); if (DEBUG_MISSING_CLASSES && !(javaClass.getRepository() instanceof AnalysisCacheToRepositoryAdapter)) { throw new IllegalStateException("this should not happen"); } return javaClass; } catch (RuntimeException e) { throw new RuntimeException("Unable to parse classfile for " + descriptor, e); } catch (IOException e) { throw new ResourceNotFoundException(descriptor.toResourceName(), e); } }
throw new ResourceNotFoundException("java/lang/Object.class");
@Override public ICodeBaseEntry lookupResource(String resourceName) throws ResourceNotFoundException { // See if we have cached the codebase entry for this resource ICodeBaseEntry result = codeBaseEntryMap.get(resourceName); if (result == null) { // No previously resolved entry - look up the resources in the // codebases // First try application codebases result = search(appCodeBaseList, resourceName); if (result == null) { // Next try aux codebases result = search(auxCodeBaseList, resourceName); } // If not found in any codebase, then throw // ResourceNotFoundException if (result == null) { throw new ResourceNotFoundException(resourceName); } // Cache the entry for future lookups codeBaseEntryMap.put(resourceName, result); } return result; }
ClassDescriptor getClassDescriptor() throws ResourceNotFoundException, InvalidClassFileFormatException { DataInputStream in = null; try { try { in = new DataInputStream(new BufferedInputStream(new FileInputStream(fileName))); ClassParserInterface classParser = new ClassParser(in, null, new SingleFileCodeBaseEntry(this)); ClassNameAndSuperclassInfo.Builder builder = new ClassNameAndSuperclassInfo.Builder(); classParser.parse(builder); return builder.build().getClassDescriptor(); } finally { if (in != null) { IO.close(in); } } } catch (IOException e) { // XXX: file name isn't really the resource name, but whatever throw new ResourceNotFoundException(fileName); } }
throw new ResourceNotFoundException(resourceName);
@Override public JavaClass analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException { try { ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor); JavaClass javaClass = new ClassParser(classData.getInputStream(), descriptor.toResourceName()).parse(); // Make sure that the JavaClass object knows the repository // it was loaded from. javaClass.setRepository(Repository.getRepository()); if (DEBUG_MISSING_CLASSES && !(javaClass.getRepository() instanceof AnalysisCacheToRepositoryAdapter)) { throw new IllegalStateException("this should not happen"); } return javaClass; } catch (RuntimeException e) { throw new RuntimeException("Unable to parse classfile for " + descriptor, e); } catch (IOException e) { throw new ResourceNotFoundException(descriptor.toResourceName(), e); } }