aQute.lib.osgi
Class Clazz
java.lang.Object
aQute.lib.osgi.Clazz
public class Clazz
- extends Object
|
Method Summary |
protected void |
constantClass(DataInputStream in,
int poolIndex)
|
protected void |
constantDouble(DataInputStream in,
int poolIndex)
|
protected void |
constantLong(DataInputStream in,
int poolIndex)
|
protected void |
constantUtf8(DataInputStream in,
int poolIndex)
|
protected void |
crawl(byte[] code)
We must find Class.forName references ... |
String |
getFQN()
|
static String |
getPackage(String clazz)
|
String |
getPath()
|
Map<String,Map<String,String>> |
getReferred()
|
String |
getSourceFile()
|
boolean |
is(Clazz.QUERY query,
Instruction instr,
Map<String,Clazz> classspace)
|
protected void |
nameAndType(DataInputStream in,
int poolIndex,
byte tag)
|
Set<String> |
parseClassFile()
|
Set<String> |
parseClassFile(InputStream in)
|
Set<String> |
parseClassFile(InputStream in,
ClassDataCollector cd)
|
Set<String> |
parseClassFileWithCollector(ClassDataCollector cd)
|
void |
parseDescriptor(String descriptor)
This method parses a descriptor and adds the package of the descriptor to
the referenced packages. |
protected void |
pool(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. |
String |
toString()
|
HAS_ARGUMENT
public static EnumSet<Clazz.QUERY> HAS_ARGUMENT
Clazz
public Clazz(String path,
Resource resource)
parseClassFile
public Set<String> parseClassFile()
throws IOException
- Throws:
IOException
parseClassFile
public Set<String> parseClassFile(InputStream in)
throws IOException
- Throws:
IOException
parseClassFileWithCollector
public Set<String> parseClassFileWithCollector(ClassDataCollector cd)
throws IOException
- Throws:
IOException
parseClassFile
public Set<String> parseClassFile(InputStream in,
ClassDataCollector cd)
throws IOException
- Throws:
IOException
pool
protected void pool(Object[] pool,
int[] intPool)
nameAndType
protected void nameAndType(DataInputStream in,
int poolIndex,
byte tag)
throws IOException
- Parameters:
in - poolIndex - tag -
- Throws:
IOException
constantClass
protected void constantClass(DataInputStream in,
int poolIndex)
throws IOException
- Parameters:
in - poolIndex -
- Throws:
IOException
constantDouble
protected void constantDouble(DataInputStream in,
int poolIndex)
throws IOException
- Parameters:
in -
- Throws:
IOException
constantLong
protected void constantLong(DataInputStream in,
int poolIndex)
throws IOException
- Parameters:
in -
- Throws:
IOException
constantUtf8
protected void constantUtf8(DataInputStream in,
int poolIndex)
throws IOException
- Parameters:
in - poolIndex -
- Throws:
IOException
crawl
protected void crawl(byte[] code)
- We must find Class.forName references ...
- Parameters:
code -
parseDescriptor
public void parseDescriptor(String descriptor)
- This method parses a descriptor and adds the package of the descriptor to
the referenced packages.
The syntax of the descriptor is:
descriptor ::= ( '(' references ')' )? references
references ::= 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.
- Parameters:
descriptor - The to be parsed descriptorrover - The pointer to start at
getPackage
public static String getPackage(String clazz)
getReferred
public Map<String,Map<String,String>> getReferred()
getPath
public String getPath()
getSourceFile
public String getSourceFile()
reset
public 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. For eclipse, the class$0 gives away
we have a reference encoded in a string.
compilerversions/compilerversions.jar contains test versions of all
versions/compilers.
is
public boolean is(Clazz.QUERY query,
Instruction instr,
Map<String,Clazz> classspace)
toString
public String toString()
- Overrides:
toString in class Object
getFQN
public String getFQN()
Copyright © 2010 aQute SARL. All Rights Reserved.