public abstract class AbstractClassLibrary extends java.lang.Object implements ClassLibrary
Modifier and Type | Class and Description |
---|---|
(package private) static interface |
AbstractClassLibrary.ClassLibraryFilter
A filter to use when checking all ancestors.
|
Modifier and Type | Field and Description |
---|---|
private JavaClassContext |
context |
private ModelBuilderFactory |
modelBuilderFactory |
private ModelWriterFactory |
modelWriterFactory |
private AbstractClassLibrary |
parentClassLibrary |
Constructor and Description |
---|
AbstractClassLibrary()
constructor for root ClassLibrary
|
AbstractClassLibrary(AbstractClassLibrary parent)
constructor for chained ClassLibrary
|
Modifier and Type | Method and Description |
---|---|
protected abstract boolean |
containsClassReference(java.lang.String name)
This method is used to detect if there's a match with this classname.
|
private JavaClass |
createStub(java.lang.String name) |
JavaClass |
getJavaClass(java.lang.String name)
First checks if there's a JavaClass available in the private context by this name.
|
JavaClass |
getJavaClass(java.lang.String name,
boolean createStub)
Try to retrieve the JavaClass by the (binary) name.
|
java.util.Collection<JavaClass> |
getJavaClasses()
Get all the classes of the current
AbstractClassLibrary . |
protected java.util.Collection<JavaClass> |
getJavaClasses(AbstractClassLibrary.ClassLibraryFilter filter)
Subclasses can call this method to gather all JavaClass object, including those from the parent.
|
java.util.Collection<JavaModule> |
getJavaModules() |
JavaPackage |
getJavaPackage(java.lang.String name)
Get the JavaPackage or null if it's not possible
|
java.util.Collection<JavaPackage> |
getJavaPackages()
Get all packages of the current
AbstractClassLibrary . |
protected java.util.Collection<JavaPackage> |
getJavaPackages(AbstractClassLibrary.ClassLibraryFilter filter) |
java.util.Collection<JavaSource> |
getJavaSources()
Return all JavaSources of the current library.
|
protected java.util.Collection<JavaSource> |
getJavaSources(AbstractClassLibrary.ClassLibraryFilter filter) |
protected Builder |
getModelBuilder()
If there's a modelBuilderFactory available, ask it for a new instance.
|
protected Builder |
getModelBuilder(java.net.URL url) |
protected ModelBuilderFactory |
getModelBuilderFactory() |
protected ModelWriterFactory |
getModelWriterFactory() |
boolean |
hasClassReference(java.lang.String name)
First checks if the context already has a JavaClass with this name.
|
protected abstract JavaClass |
resolveJavaClass(java.lang.String name)
The implementation should check it's sources to see if it can build a JavaClass Model If not, just return null;
Once found it will be mapped, so there's no need to keep a reference to this object.
|
protected abstract JavaPackage |
resolveJavaPackage(java.lang.String name) |
void |
setModelBuilderFactory(ModelBuilderFactory factory)
Set the ModelBuilderFactory for this classLibrary.
|
void |
setModelWriterFactory(ModelWriterFactory factory)
Set the ModelWriterFactory for this class.
|
private AbstractClassLibrary parentClassLibrary
private ModelBuilderFactory modelBuilderFactory
private ModelWriterFactory modelWriterFactory
private JavaClassContext context
public AbstractClassLibrary()
public AbstractClassLibrary(AbstractClassLibrary parent)
parent
- the parent librarypublic java.util.Collection<JavaModule> getJavaModules()
getJavaModules
in interface ClassLibrary
public final JavaClass getJavaClass(java.lang.String name)
getJavaClass
in interface ClassLibrary
name
- the binary name of the classnull
public final JavaClass getJavaClass(java.lang.String name, boolean createStub)
ClassLibrary
true
make a stub, otherwise return null
getJavaClass
in interface ClassLibrary
name
- the name of the classcreateStub
- force creation of a stub if the class can't be foundnull
depending on the value of createStub.private JavaClass createStub(java.lang.String name)
protected abstract JavaClass resolveJavaClass(java.lang.String name)
name
- the fully qualified namenull
public java.util.Collection<JavaSource> getJavaSources()
ClassLibrary
getJavaSources
in interface ClassLibrary
null
protected final java.util.Collection<JavaSource> getJavaSources(AbstractClassLibrary.ClassLibraryFilter filter)
filter
- the classlibrary filterpublic java.util.Collection<JavaClass> getJavaClasses()
AbstractClassLibrary
.
Subclasses can overwrite this method by including the following code
public List<JavaClass> getClasses() { return getJavaClasses( new ClassLibraryFilter() { public boolean accept( AbstractClassLibrary classLibrary ) { return true; } }); }This example would return all created
JavaClass
objects, including those from the classloaders.getJavaClasses
in interface ClassLibrary
protected final java.util.Collection<JavaClass> getJavaClasses(AbstractClassLibrary.ClassLibraryFilter filter)
filter
- the classlibrary filterpublic java.util.Collection<JavaPackage> getJavaPackages()
AbstractClassLibrary
.
Subclasses can overwrite this method by including the following code
public List<JavaPackage> getJavaPackages() { return getJavaPackages( new ClassLibraryFilter() { public boolean accept( AbstractClassLibrary classLibrary ) { return true; } }); }This example would return all created
JavaPackage
objects, including those from the classloaders.getJavaPackages
in interface ClassLibrary
public final JavaPackage getJavaPackage(java.lang.String name)
ClassLibrary
getJavaPackage
in interface ClassLibrary
name
- the fully qualified namenull
protected abstract JavaPackage resolveJavaPackage(java.lang.String name)
protected final java.util.Collection<JavaPackage> getJavaPackages(AbstractClassLibrary.ClassLibraryFilter filter)
public boolean hasClassReference(java.lang.String name)
hasClassReference
in interface ClassLibrary
name
- the fully qualified nametrue
if there is a reference, otherwise false
protected abstract boolean containsClassReference(java.lang.String name)
name
- the fully qualified name of the classpublic final void setModelBuilderFactory(ModelBuilderFactory factory)
factory
- the model builder factorypublic final void setModelWriterFactory(ModelWriterFactory factory)
factory
- the model writer factoryprotected final ModelWriterFactory getModelWriterFactory()
protected final ModelBuilderFactory getModelBuilderFactory()
protected Builder getModelBuilder()
null
protected Builder getModelBuilder(java.net.URL url)