public class NamingConventionClassEnquirer extends java.lang.Object implements ClassEnquirer
A simple ClassEnquirer
to see if the package/class to be imported in
a Python sub-interpreter should be considered as a Java package/class. This
enquirer can check for import statements beginning with java, com, gov, etc
and country codes such as us, uk, fr, ch, etc.
This class is useful for the following scenarios:
ClassList.getInstance()
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<java.lang.String> |
javaNames |
protected static java.util.List<java.lang.String> |
TOP_LEVEL
the default top level package names: java, javax, com, gov, org, edu,
mil, net
|
Constructor and Description |
---|
NamingConventionClassEnquirer()
Convenience constructor.
|
NamingConventionClassEnquirer(boolean includeDefaults)
Constructor
|
NamingConventionClassEnquirer(boolean includeDefaults,
boolean includeCountryCodes)
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addTopLevelPackageName(java.lang.String pkgStart)
Adds a top level package name to the list of names that should be
considered as Java packages
|
boolean |
contains(java.lang.String name)
Checks if the name is likely available in Java.
|
java.lang.String[] |
getClassNames(java.lang.String pkgName)
Given a Java package name, gets the fully-qualified classnames available
for import in the package.
|
boolean |
supportsPackageImport()
Whether or not this ClassEnquirer supports importing Java classes at the
package level in addition to the class level.
|
protected static final java.util.List<java.lang.String> TOP_LEVEL
protected java.util.Set<java.lang.String> javaNames
public NamingConventionClassEnquirer()
public NamingConventionClassEnquirer(boolean includeDefaults)
includeDefaults
- whether or not typical package names such as java, javax, com,
gov should be considered as a java package.public NamingConventionClassEnquirer(boolean includeDefaults, boolean includeCountryCodes)
includeDefaults
- whether or not typical package names such as java, javax, com,
gov should be considered as a java package.includeCountryCodes
- whether or not a name starting with a 2-letter country code
such a uk, de, fr, us, ch should be considered as a Java
package.public void addTopLevelPackageName(java.lang.String pkgStart)
pkgStart
- the start of a java package name to check, e.g. com, gov, us,
it, frpublic boolean contains(java.lang.String name)
ClassEnquirer
contains
in interface ClassEnquirer
name
- the name to check, such as java, java.util,
java.util.ArrayListpublic boolean supportsPackageImport()
ClassEnquirer
from java.util import ArrayList
o = ArrayList()
However, only in some scenarios can the package be imported separately
without the fully qualified name, such as:
import java.util as ju
dir(ju)
o = ju.ArrayList()
This also roughly corresponds to whether or not
dir(javaPackage)
will return a list of available classes or
only the classes that have been explicitly imported.supportsPackageImport
in interface ClassEnquirer
public java.lang.String[] getClassNames(java.lang.String pkgName)
ClassEnquirer
ClassEnquirer.supportsPackageImport()
returns false.getClassNames
in interface ClassEnquirer
pkgName
- the name of a package the ClassEnquirer supports, such as
java.util