public class Clazz
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
protected static class |
Clazz.Assoc |
class |
Clazz.ClassConstant |
class |
Clazz.Def |
class |
Clazz.FieldDef |
static class |
Clazz.JAVA |
class |
Clazz.MethodDef |
static class |
Clazz.QUERY |
class |
Clazz.TypeDef |
Modifier and Type | Field and Description |
---|---|
static java.util.EnumSet<Clazz.QUERY> |
HAS_ARGUMENT |
static java.util.Comparator<Clazz> |
NAME_COMPARATOR |
Constructor and Description |
---|
Clazz(Analyzer analyzer,
java.lang.String path,
Resource resource) |
Modifier and Type | Method and Description |
---|---|
protected void |
constantClass(java.io.DataInputStream in,
int poolIndex) |
protected void |
constantDouble(java.io.DataInputStream in,
int poolIndex) |
protected void |
constantLong(java.io.DataInputStream in,
int poolIndex) |
protected void |
constantUtf8(java.io.DataInputStream in,
int poolIndex) |
protected void |
crawl(byte[] code)
We must find Class.forName references ...
|
java.lang.String |
getAbsolutePath() |
int |
getAccess() |
java.util.Set<Descriptors.PackageRef> |
getAPIUses() |
Descriptors.TypeRef |
getClassName() |
java.lang.String |
getClassSignature() |
Clazz.TypeDef |
getExtends(Descriptors.TypeRef type) |
Clazz.JAVA |
getFormat() |
java.lang.String |
getFQN() |
Clazz.TypeDef |
getImplements(Descriptors.TypeRef type) |
Descriptors.TypeRef[] |
getInterfaces() |
Clazz.MethodDef |
getMethodDef(int access,
java.lang.String name,
java.lang.String descriptor)
To provide an enclosing instance
|
java.util.Set<Descriptors.PackageRef> |
getReferred() |
java.lang.String |
getSourceFile() |
Descriptors.TypeRef |
getSuper() |
boolean |
hasPublicNoArgsConstructor() |
boolean |
is(Clazz.QUERY query,
Instruction instr,
Analyzer analyzer) |
boolean |
isAbstract() |
boolean |
isAnnotation() |
boolean |
isDeprecated() |
boolean |
isEnum() |
boolean |
isFinal() |
boolean |
isInterface() |
boolean |
isProtected() |
boolean |
isPublic() |
protected void |
nameAndType(java.io.DataInputStream in,
int poolIndex,
byte tag) |
static java.lang.String |
objectDescriptorToFQN(java.lang.String string) |
java.util.Set<Descriptors.TypeRef> |
parseClassFile() |
java.util.Set<Descriptors.TypeRef> |
parseClassFile(java.io.InputStream in) |
java.util.Set<Descriptors.TypeRef> |
parseClassFile(java.io.InputStream in,
ClassDataCollector cd) |
java.util.Set<Descriptors.TypeRef> |
parseClassFileWithCollector(ClassDataCollector cd) |
void |
parseDescriptor(java.lang.String descriptor,
int modifiers)
This method parses a descriptor and adds the package of the descriptor to
the referenced packages.
|
protected void |
pool(java.lang.Object[] pool,
int[] intPool) |
void |
reset()
.class construct for different compilers sun 1.1 Detect static variable
class$com$acme$MyClass 1.2 " 1.3 " 1.4 " 1.5 ldc_w (class) 1.6 " eclipse
1.1 class$0, ldc (string), invokestatic Class.forName 1.2 " 1.3 " 1.5 ldc
(class) 1.6 " 1.5 and later is not an issue, sun pre 1.5 is easy to
detect the static variable that decodes the class name.
|
void |
setDeprecated(boolean b) |
void |
setInnerAccess(int access) |
java.lang.String |
toString() |
static java.lang.String |
unCamel(java.lang.String id) |
public static final java.util.EnumSet<Clazz.QUERY> HAS_ARGUMENT
public static final java.util.Comparator<Clazz> NAME_COMPARATOR
public java.util.Set<Descriptors.TypeRef> parseClassFile() throws java.lang.Exception
java.lang.Exception
public java.util.Set<Descriptors.TypeRef> parseClassFile(java.io.InputStream in) throws java.lang.Exception
java.lang.Exception
public java.util.Set<Descriptors.TypeRef> parseClassFileWithCollector(ClassDataCollector cd) throws java.lang.Exception
java.lang.Exception
public java.util.Set<Descriptors.TypeRef> parseClassFile(java.io.InputStream in, ClassDataCollector cd) throws java.lang.Exception
java.lang.Exception
protected void pool(java.lang.Object[] pool, int[] intPool)
protected void nameAndType(java.io.DataInputStream in, int poolIndex, byte tag) throws java.io.IOException
in
- poolIndex
- tag
- java.io.IOException
protected void constantClass(java.io.DataInputStream in, int poolIndex) throws java.io.IOException
in
- poolIndex
- java.io.IOException
protected void constantDouble(java.io.DataInputStream in, int poolIndex) throws java.io.IOException
in
- java.io.IOException
protected void constantLong(java.io.DataInputStream in, int poolIndex) throws java.io.IOException
in
- java.io.IOException
protected void constantUtf8(java.io.DataInputStream in, int poolIndex) throws java.io.IOException
in
- poolIndex
- java.io.IOException
protected void crawl(byte[] code)
code
- public void parseDescriptor(java.lang.String descriptor, int modifiers)
descriptor ::= ( '(' reference * ')' )? reference reference ::= 'L' classname ( '<' references '>' )? ';' | 'B' | 'Z' | ... | '+' | '-' | '['This methods uses heavy recursion to parse the descriptor and a roving pointer to limit the creation of string objects.
descriptor
- The to be parsed descriptorrover
- The pointer to start atpublic java.util.Set<Descriptors.PackageRef> getReferred()
public java.lang.String getAbsolutePath()
public java.lang.String getSourceFile()
public void reset()
public boolean is(Clazz.QUERY query, Instruction instr, Analyzer analyzer) throws java.lang.Exception
java.lang.Exception
public java.lang.String toString()
toString
in class java.lang.Object
public boolean isPublic()
public boolean isProtected()
public boolean isEnum()
public Clazz.JAVA getFormat()
public static java.lang.String objectDescriptorToFQN(java.lang.String string)
public static java.lang.String unCamel(java.lang.String id)
public boolean isInterface()
public boolean isAbstract()
public boolean hasPublicNoArgsConstructor()
public int getAccess()
public Descriptors.TypeRef getClassName()
public Clazz.MethodDef getMethodDef(int access, java.lang.String name, java.lang.String descriptor)
access
- name
- descriptor
- public Descriptors.TypeRef getSuper()
public java.lang.String getFQN()
public Descriptors.TypeRef[] getInterfaces()
public void setInnerAccess(int access)
public boolean isFinal()
public void setDeprecated(boolean b)
public boolean isDeprecated()
public boolean isAnnotation()
public java.util.Set<Descriptors.PackageRef> getAPIUses()
public Clazz.TypeDef getExtends(Descriptors.TypeRef type)
public Clazz.TypeDef getImplements(Descriptors.TypeRef type)
public java.lang.String getClassSignature()