@Override public ClassInfo analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException { if (descriptor instanceof ClassInfo) { return (ClassInfo) descriptor; } ClassData classData; try { classData = analysisCache.getClassAnalysis(ClassData.class, descriptor); } catch (edu.umd.cs.findbugs.classfile.MissingClassException e) { if (!"package-info".equals(descriptor.getSimpleName())) { throw e; } ClassInfo.Builder builder = new ClassInfo.Builder(); builder.setClassDescriptor(descriptor); builder.setAccessFlags(1536); return builder.build(); } // Read the class info FBClassReader reader = analysisCache.getClassAnalysis(FBClassReader.class, descriptor); ClassParserInterface parser = new ClassParserUsingASM(reader, descriptor, classData.getCodeBaseEntry()); ClassInfo.Builder classInfoBuilder = new ClassInfo.Builder(); parser.parse(classInfoBuilder); ClassInfo classInfo = classInfoBuilder.build(); if (!classInfo.getClassDescriptor().equals(descriptor)) { throw new ClassNameMismatchException(descriptor, classInfo.getClassDescriptor(), classData.getCodeBaseEntry()); } return classInfo; }
String simpleName = info.interfaceForCall.getSimpleName(); if ( simpleName.toLowerCase().endsWith("map") || "Hashtable".equals(simpleName)) { expectedTypeParameters = 2;
@Test public void testSimpleName() { ClassDescriptor p = DescriptorFactory.createClassDescriptor("com/bla/Parent"); assertEquals("com/bla/Parent", p.getClassName()); assertEquals("com.bla.Parent", p.getDottedClassName()); assertEquals("Lcom/bla/Parent;", p.getSignature()); assertEquals("com.bla", p.getPackageName()); assertEquals("Parent", p.getSimpleName()); ClassDescriptor c = DescriptorFactory.createClassDescriptor("com/bla/Parent$Child"); assertEquals("com/bla/Parent$Child", c.getClassName()); assertEquals("com.bla.Parent$Child", c.getDottedClassName()); assertEquals("Lcom/bla/Parent$Child;", c.getSignature()); assertEquals("com.bla", c.getPackageName()); assertEquals("Child", c.getSimpleName()); ClassDescriptor a = DescriptorFactory.createClassDescriptor("com/bla/Parent$Child$1"); assertEquals("com/bla/Parent$Child$1", a.getClassName()); assertEquals("com.bla.Parent$Child$1", a.getDottedClassName()); assertEquals("Lcom/bla/Parent$Child$1;", a.getSignature()); assertEquals("com.bla", a.getPackageName()); assertEquals("1", a.getSimpleName()); } }
&& !inheritedEquals.getClassDescriptor().getSimpleName().contains("Abstract") && !"java/lang/Enum".equals(inheritedEquals.getClassDescriptor().getClassName())) {
@Override public ClassInfo analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException { if (descriptor instanceof ClassInfo) { return (ClassInfo) descriptor; } ClassData classData; try { classData = analysisCache.getClassAnalysis(ClassData.class, descriptor); } catch (edu.umd.cs.findbugs.classfile.MissingClassException e) { if (!"package-info".equals(descriptor.getSimpleName())) { throw e; } ClassInfo.Builder builder = new ClassInfo.Builder(); builder.setClassDescriptor(descriptor); builder.setAccessFlags(1536); return builder.build(); } // Read the class info FBClassReader reader = analysisCache.getClassAnalysis(FBClassReader.class, descriptor); ClassParserInterface parser = new ClassParserUsingASM(reader, descriptor, classData.getCodeBaseEntry()); ClassInfo.Builder classInfoBuilder = new ClassInfo.Builder(); parser.parse(classInfoBuilder); ClassInfo classInfo = classInfoBuilder.build(); if (!classInfo.getClassDescriptor().equals(descriptor)) { throw new ClassNameMismatchException(descriptor, classInfo.getClassDescriptor(), classData.getCodeBaseEntry()); } return classInfo; }
String simpleName = info.interfaceForCall.getSimpleName(); if ( simpleName.toLowerCase().endsWith("map") || "Hashtable".equals(simpleName)) { expectedTypeParameters = 2;
&& !inheritedEquals.getClassDescriptor().getSimpleName().contains("Abstract") && !"java/lang/Enum".equals(inheritedEquals.getClassDescriptor().getClassName())) {