com.sun.enterprise.tools.verifier.apiscan.classfile
Interface ClosureCompiler
- All Known Implementing Classes:
- BCELClosureCompilerImpl, ClosureCompilerImpl, ClosureCompilerImplBase
public interface ClosureCompiler
This is single most important interface of the apiscan package. This class is
used to compute the complete closure of a set of classes.
- Author:
- Sanjeeb.Sahoo@Sun.COM
- See Also:
ClosureCompilerImpl
buildClosure
boolean buildClosure(String externalClsName)
- Parameters:
externalClsName
- class name (in external format) whose closure will
be computed.
- Returns:
- true if it can compute the closure for all the classes that are
new to it, else false. In other words, this operation is not
idempotent. e.g. ClosureCompiler cc; cc.reset(); boolean
first=cc.buildClosure("a.B"); boolean second=cc.buildClosure("a.B");
second will always be true irrespective of value of first. This
is because it uses list of classes that it has already visited.
That list gets cleared when
reset()
is called).
getClosure
Collection getClosure()
- Returns:
- unmodifiable collection of class names which it visited during
closure computation. e.g. Let's say a.class references b1.class
and b2.class. b1.class references c1.class, c2.class and c3.class
b2.class references d1.class, d2.class and d3.class.
c1/c2/d1/d2.class are all not loadable where as c3 and d3.class
are loadable. When we build the closure of a.class, closure will
contain the following... {"a", "b1", "b2", "c3", "d3"}
getFailed
Map getFailed()
- Returns:
- unmodifiable collection of class names whose closure could not be
computed. The typical reason for not able to build closure for a
class is that class not being found in loader's search path. See
it returns a map which is keyed by the access path and the value
is a list of class names which could not be loaded. e.g. Let's
say a.class references b1.class and b2.class. b1.class references
c1.class, c2.class and c3.class b2.class references d1.class,
d2.class and d3.class. c1/c2/d1/d2.class are all not loadable
where as c3 and d3.class are loadable. When we build the closure
of a.class, failed map will contain the following... {("a:b1",
{"c1","c2"}), ("a.b2", {"d1","d2"})}
reset
void reset()
- Clear the internal cache. It includes the result it has collected since
last reset(). But it does not clear the excludedd list. If you want to
reset the excluded list, create a new ClosureCompiler.
Copyright © 2013 Oracle Corporation. All Rights Reserved.