public class ToolFactory extends Object
This class provides static methods only; it is not intended to be instantiated or subclassed by clients.
Constructor and Description |
---|
ToolFactory() |
Modifier and Type | Method and Description |
---|---|
static ICodeFormatter |
createCodeFormatter()
Deprecated.
- should use #createCodeFormatter(Map) instead. Extension point is discontinued
|
static CodeFormatter |
createCodeFormatter(Map options)
Create an instance of the built-in code formatter.
|
static ClassFileBytesDisassembler |
createDefaultClassFileBytesDisassembler()
Create a classfile bytecode disassembler, able to produce a String representation of a given classfile.
|
static IClassFileDisassembler |
createDefaultClassFileDisassembler()
Deprecated.
- should use factory method creating ClassFileBytesDisassembler instead
|
static IClassFileReader |
createDefaultClassFileReader(IClassFile classfile,
int decodingFlag)
Create a classfile reader onto a classfile Java element.
|
static IClassFileReader |
createDefaultClassFileReader(InputStream stream,
int decodingFlag)
Create a default classfile reader, able to expose the internal representation of a given classfile
according to the decoding flag used to initialize the reader.
|
static IClassFileReader |
createDefaultClassFileReader(String fileName,
int decodingFlag)
Create a default classfile reader, able to expose the internal representation of a given classfile
according to the decoding flag used to initialize the reader.
|
static IClassFileReader |
createDefaultClassFileReader(String zipFileName,
String zipEntryName,
int decodingFlag)
Create a default classfile reader, able to expose the internal representation of a given classfile
according to the decoding flag used to initialize the reader.
|
static ICodeFormatter |
createDefaultCodeFormatter(Map options)
Deprecated.
- use #createCodeFormatter(Map) instead
|
static IScanner |
createScanner(boolean tokenizeComments,
boolean tokenizeWhiteSpace,
boolean assertMode,
boolean recordLineSeparator)
Create a scanner, indicating the level of detail requested for tokenizing.
|
static IScanner |
createScanner(boolean tokenizeComments,
boolean tokenizeWhiteSpace,
boolean recordLineSeparator,
String sourceLevel)
Create a scanner, indicating the level of detail requested for tokenizing.
|
static IScanner |
createScanner(boolean tokenizeComments,
boolean tokenizeWhiteSpace,
boolean recordLineSeparator,
String sourceLevel,
String complianceLevel)
Create a scanner, indicating the level of detail requested for tokenizing.
|
public static ICodeFormatter createCodeFormatter()
ICodeFormatter
,
createDefaultCodeFormatter(Map)
public static CodeFormatter createCodeFormatter(Map options)
The given options should at least provide the source level (JavaCore.COMPILER_SOURCE
),
the compiler compliance level (JavaCore.COMPILER_COMPLIANCE
) and the target platform
(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM
).
Without these options, it is not possible for the code formatter to know what kind of source it needs to format.
options
- - the options map to use for formatting with the default code formatter. Recognized options
are documented on JavaCore#getDefaultOptions()
. If set to null
, then use
the current settings from JavaCore#getOptions
.CodeFormatter
,
JavaCore.getOptions()
public static ClassFileBytesDisassembler createDefaultClassFileBytesDisassembler()
ClassFileBytesDisassembler
public static IClassFileDisassembler createDefaultClassFileDisassembler()
IClassFileDisassembler
public static IClassFileReader createDefaultClassFileReader(IClassFile classfile, int decodingFlag)
classfile
- the classfile element to introspectdecodingFlag
- the flag used to decode the class file reader.IClassFileReader
public static IClassFileReader createDefaultClassFileReader(InputStream stream, int decodingFlag)
stream
- the given input stream to readdecodingFlag
- the flag used to decode the class file reader.IClassFileReader
public static IClassFileReader createDefaultClassFileReader(String fileName, int decodingFlag)
fileName
- the name of the file to be readdecodingFlag
- the flag used to decode the class file reader.IClassFileReader
public static IClassFileReader createDefaultClassFileReader(String zipFileName, String zipEntryName, int decodingFlag)
zipFileName
- the name of the zip filezipEntryName
- the name of the entry in the zip file to be readdecodingFlag
- the flag used to decode the class file reader.IClassFileReader
public static ICodeFormatter createDefaultCodeFormatter(Map options)
options
- - the options map to use for formatting with the default code formatter. Recognized options
are documented on JavaCore#getDefaultOptions()
. If set to null
, then use
the current settings from JavaCore#getOptions
.ICodeFormatter
,
createCodeFormatter()
,
JavaCore.getOptions()
public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator)
IScanner scanner = ToolFactory.createScanner(false, false, false, false);
scanner.setSource("int i = 0;".toCharArray());
while (true) {
int token = scanner.getNextToken();
if (token == ITerminalSymbols.TokenNameEOF) break;
System.out.println(token + " : " + new String(scanner.getCurrentTokenSource()));
}
The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
by using API with extra boolean parameter (strictCommentMode
).
tokenizeComments
- if set to false
, comments will be silently consumedtokenizeWhiteSpace
- if set to false
, white spaces will be silently consumed,assertMode
- if set to false
, occurrences of 'assert' will be reported as identifiers
(ITerminalSymbols#TokenNameIdentifier
), whereas if set to true
, it
would report assert keywords (ITerminalSymbols#TokenNameassert
). Java 1.4 has introduced
a new 'assert' keyword.recordLineSeparator
- if set to true
, the scanner will record positions of encountered line
separator ends. In case of multi-character line separators, the last character position is considered. These positions
can then be extracted using IScanner#getLineEnds
. Only non-unicode escape sequences are
considered as valid line separators.IScanner
public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel)
IScanner scanner = ToolFactory.createScanner(false, false, false, false);
scanner.setSource("int i = 0;".toCharArray());
while (true) {
int token = scanner.getNextToken();
if (token == ITerminalSymbols.TokenNameEOF) break;
System.out.println(token + " : " + new String(scanner.getCurrentTokenSource()));
}
The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
by using API with extra boolean parameter (strictCommentMode
).
tokenizeComments
- if set to false
, comments will be silently consumedtokenizeWhiteSpace
- if set to false
, white spaces will be silently consumed,recordLineSeparator
- if set to true
, the scanner will record positions of encountered line
separator ends. In case of multi-character line separators, the last character position is considered. These positions
can then be extracted using IScanner#getLineEnds
. Only non-unicode escape sequences are
considered as valid line separators.sourceLevel
- if set to "1.3"
or null
, occurrences of 'assert' will be reported as identifiers
(ITerminalSymbols#TokenNameIdentifier
), whereas if set to "1.4"
, it
would report assert keywords (ITerminalSymbols#TokenNameassert
). Java 1.4 has introduced
a new 'assert' keyword.IScanner
public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel, String complianceLevel)
IScanner scanner = ToolFactory.createScanner(false, false, false, false);
scanner.setSource("int i = 0;".toCharArray());
while (true) {
int token = scanner.getNextToken();
if (token == ITerminalSymbols.TokenNameEOF) break;
System.out.println(token + " : " + new String(scanner.getCurrentTokenSource()));
}
The returned scanner will tolerate unterminated line comments (missing line separator). It can be made stricter
by using API with extra boolean parameter (strictCommentMode
).
tokenizeComments
- if set to false
, comments will be silently consumedtokenizeWhiteSpace
- if set to false
, white spaces will be silently consumed,recordLineSeparator
- if set to true
, the scanner will record positions of encountered line
separator ends. In case of multi-character line separators, the last character position is considered. These positions
can then be extracted using IScanner#getLineEnds
. Only non-unicode escape sequences are
considered as valid line separators.sourceLevel
- if set to "1.3"
or null
, occurrences of 'assert' will be reported as identifiers
(ITerminalSymbols#TokenNameIdentifier
), whereas if set to "1.4"
, it
would report assert keywords (ITerminalSymbols#TokenNameassert
). Java 1.4 has introduced
a new 'assert' keyword.complianceLevel
- This is used to support the Unicode 4.0 character sets. if set to 1.5 or above,
the Unicode 4.0 is supporte, otherwise Unicode 3.0 is supported.IScanner
Copyright (c) IBM Corp. and others 2000, 2006. All Rights Reserved.