Return true iff the Java class with the given name should be exposed
to scripts.
An embedding may filter which Java classes are exposed through
LiveConnect to JavaScript scripts.
Due to the fact that there is no package reflection in Java,
this method will also be called with package names. There
is no way for Rhino to tell if "Packages.a.b" is a package name
or a class that doesn't exist. What Rhino does is attempt
to load each segment of "Packages.a.b.c": It first attempts to
load class "a", then attempts to load class "a.b", then
finally attempts to load class "a.b.c". On a Rhino installation
without any ClassShutter set, and without any of the
above classes, the expression "Packages.a.b.c" will result in
a [JavaPackage a.b.c] and not an error.
With ClassShutter supplied, Rhino will first call
visibleToScripts before attempting to look up the class name. If
visibleToScripts returns false, the class name lookup is not
performed and subsequent Rhino execution assumes the class is
not present. So for "java.lang.System.out.println" the lookup
of "java.lang.System" is skipped and thus Rhino assumes that
"java.lang.System" doesn't exist. So then for "java.lang.System.out",
Rhino attempts to load the class "java.lang.System.out" because
it assumes that "java.lang.System" is a package name.
Parameters: fullClassName - the full name of the class (including the packagename, with '.' as a delimiter). For example thestandard string class is "java.lang.String" whether or not to reveal this class to scripts |