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

Method Summary
 boolean buildClosure(String externalClsName)
           
 Collection getClosure()
           
 Map getFailed()
           
 void reset()
          Clear the internal cache.
 

Method Detail

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.