Package org.apache.bcel.verifier
Class VerifierFactory
- java.lang.Object
-
- org.apache.bcel.verifier.VerifierFactory
-
public class VerifierFactory extends java.lang.Object
This class produces instances of the Verifier class. Its purpose is to make sure that they are singleton instances with respect to the class name they operate on. That means, for every class (represented by a unique fully qualified class name) there is at most one cached Verifier. The cache is bounded (seeMAX_CACHE_SIZE_PROPERTY); after eviction, a new Verifier is transparently created on the next request for that class name.The system property
org.apache.bcel.verifier.VerifierFactory.maxCacheSizecontrols how many Verifier instances this factory caches; least-recently-used entries are evicted first. Verifier names are taken from the constant pools of the (possibly untrusted) classes being verified, so an unbounded cache would let a single hostile class file referencing many distinct bogus type names grow the heap without limit in a long-running process. Set the property to0or a negative value to opt out and restore the historical unbounded behavior.- See Also:
Verifier
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidattach(VerifierFactoryObserver o)Adds the VerifierFactoryObserver o to the list of observers.static voidclear()Clears the factory.static voiddetach(VerifierFactoryObserver o)Removes the VerifierFactoryObserver o from the list of observers.static VerifiergetVerifier(java.lang.String fullyQualifiedClassName)Returns the verifier responsible for the class with the given name.static Verifier[]getVerifiers()Returns all Verifier instances created so far.
-
-
-
Method Detail
-
attach
public static void attach(VerifierFactoryObserver o)
Adds the VerifierFactoryObserver o to the list of observers.- Parameters:
o- The observer to add.
-
clear
public static void clear()
Clears the factory.- Since:
- 6.6.2
-
detach
public static void detach(VerifierFactoryObserver o)
Removes the VerifierFactoryObserver o from the list of observers.- Parameters:
o- The observer to remove.
-
getVerifier
public static Verifier getVerifier(java.lang.String fullyQualifiedClassName)
Returns the verifier responsible for the class with the given name. Possibly a new Verifier object is transparently created; if the cache bound (MAX_CACHE_SIZE_PROPERTY) has been reached, the least-recently-used cached Verifier is evicted first.- Parameters:
fullyQualifiedClassName- The fully qualified class name.- Returns:
- The verifier responsible for the class with the given name.
-
getVerifiers
public static Verifier[] getVerifiers()
Returns all Verifier instances created so far. This is useful when a Verifier recursively lets the VerifierFactory create other Verifier instances and if you want to verify the transitive hull of referenced class files.- Returns:
- array of all Verifier instances.
-
-