Package bluej.extensions2
Class BClass
- java.lang.Object
-
- bluej.extensions2.BClass
-
public class BClass extends java.lang.Object
A wrapper for a class. This is used to represent both classes which have a representation within the BlueJ project, and those that don't.From an instance of this class, an extension can create BlueJ objects and call their methods. Behaviour is similar to the Java reflection API.
- Author:
- Damiano Bolla, University of Kent at Canterbury, 2002,2003,2004
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
compile(boolean waitCompileEnd)
Compiles this class, and any dependents.void
compile(boolean waitCompileEnd, boolean forceQuiet)
Compiles this class, and any dependents, optionally without showing compilation errors to the user.void
convertJavaToStride()
Converts a Java class to Stride.void
convertStrideToJava()
Converts a Stride class to Java, by removing the Stride file and retaining the generated Java.java.io.File
getClassFile()
Returns this class's .class file.BConstructor
getConstructor(java.lang.Class<?>[] signature)
Returns the constructor for this class which has the given signature.BConstructor[]
getConstructors()
Returns all the constructors of this class.BMethod
getDeclaredMethod(java.lang.String methodName, java.lang.Class<?>[] params)
Returns the declared method of this class which has the given signature.BMethod[]
getDeclaredMethods()
Returns the declared methods of this class.BField
getField(java.lang.String fieldName)
Returns the field of this class which has the given name.BField[]
getFields()
Returns all the fields of this class.java.lang.Class<?>
getJavaClass()
Returns the Java Class object being wrapped by this BClass.JavaEditor
getJavaEditor()
Returns a proxy object that provide an interface to the Java editor for this BClass.JavaEditor
getJavaEditorIfOpen()
Returns a proxy object that provide an interface to the Java editor for this BClass.java.io.File
getJavaFile()
Returns this class's .java file.BMethod
getMethod(java.lang.String methodName, java.lang.Class<?>[] params)
Returns the method of this class with the given signature.BMethod[]
getMethods()
Returns all methods of this class, those declared and those inherited from all ancestors.java.lang.String
getName()
Returns the name of this BClass.BPackage
getPackage()
Returns the BPackage this class belongs to.SourceType
getSourceType()
Finds out whether this class has source code available, and whether it's Java or StrideStrideEditor
getStrideEditor()
Returns a proxy object that provide an interface to the Stride editor for this BClass.StrideEditor
getStrideEditorIfOpen()
Returns a proxy object that provide an interface to the Stride editor for this BClass.BClass
getSuperclass()
Returns the superclass of this class.boolean
isCompiled()
Checks to see if this class has been compiled.void
remove()
Removes this class from BlueJ, including the underlying files.java.lang.String
toString()
Returns a string representation of the Object
-
-
-
Method Detail
-
getName
public final java.lang.String getName()
Returns the name of this BClass.- Returns:
- The fully qualified name of the wrapped BlueJ class.
-
remove
public void remove() throws ProjectNotOpenException, PackageNotFoundException, ClassNotFoundException
Removes this class from BlueJ, including the underlying files.- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.ClassNotFoundException
- if the class has been deleted by the user, or if the class does not otherwise have a representation within the project.
-
convertStrideToJava
public void convertStrideToJava() throws ProjectNotOpenException, PackageNotFoundException, ClassNotFoundException
Converts a Stride class to Java, by removing the Stride file and retaining the generated Java.
-
convertJavaToStride
public void convertJavaToStride() throws ProjectNotOpenException, PackageNotFoundException, ClassNotFoundException
Converts a Java class to Stride.
-
getJavaClass
public java.lang.Class<?> getJavaClass() throws ProjectNotOpenException, ClassNotFoundException
Returns the Java Class object being wrapped by this BClass. An extension uses this method when more information about the class than is provided by the BClass interface is needed. E.g.:- What is the real class being hidden?
- Is it an array?
- What is the type of the array element?
Note that this is for information only. To interact with BlueJ, an extension must use the methods provided in BClass.
- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getPackage
public BPackage getPackage() throws ProjectNotOpenException, PackageNotFoundException
Returns the BPackage this class belongs to. Similar to reflection API.- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
getJavaEditor
public JavaEditor getJavaEditor() throws ProjectNotOpenException, PackageNotFoundException
Returns a proxy object that provide an interface to the Java editor for this BClass. If an editor already exists, a proxy for it is returned. Otherwise, an editor is created but not made visible. If the class is not a Java class (e.g. Stride) the method returnsnull
.- Returns:
- A proxy
JavaEditor
object or null if it cannot be created or if the class is not of type Java - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
getJavaEditorIfOpen
public JavaEditor getJavaEditorIfOpen() throws PackageNotFoundException, ProjectNotOpenException
Returns a proxy object that provide an interface to the Java editor for this BClass. If the editor is open, a proxy for it is returned. Otherwise, null is returned. If the class is not a Java class (e.g. Stride) the method returnsnull
.- Returns:
- A proxy
JavaEditor
object or null if it cannot be created or if the class is not of type Java or the editor is not opened. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.- Since:
- Extension API 3.2 (BlueJ 5.0.2)
-
getStrideEditor
public StrideEditor getStrideEditor() throws ProjectNotOpenException, PackageNotFoundException
Returns a proxy object that provide an interface to the Stride editor for this BClass. If an editor already exists, a proxy for it is returned. Otherwise, an editor is created but not made visible. If the class is not a Stride class the method returnsnull
.- Returns:
- A proxy
JavaEditor
object or null if it cannot be created or if the class is not of type Java - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
getStrideEditorIfOpen
public StrideEditor getStrideEditorIfOpen() throws PackageNotFoundException, ProjectNotOpenException
Returns a proxy object that provide an interface to the Stride editor for this BClass. If the editor is open, a proxy for it is returned. Otherwise, null is returned. If the class is not a Stride class the method returnsnull
.- Returns:
- A proxy
JavaEditor
object or null if it cannot be created or if the class is not of type Java or the editor is not opened. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.- Since:
- Extension API 3.2 (BlueJ 5.0.2)
-
getSourceType
public SourceType getSourceType() throws ProjectNotOpenException, PackageNotFoundException
Finds out whether this class has source code available, and whether it's Java or Stride- Returns:
- Either
SourceType.Java
orSourceType.Stride
if the type can be found out, otherwisenull
. - Throws:
ProjectNotOpenException
PackageNotFoundException
-
isCompiled
public boolean isCompiled() throws ProjectNotOpenException, PackageNotFoundException
Checks to see if this class has been compiled.- Returns:
- True if it is compiled, false otherwise.
- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
compile
public void compile(boolean waitCompileEnd) throws ProjectNotOpenException, PackageNotFoundException, CompilationNotStartedException
Compiles this class, and any dependents.After the compilation has finished the method isCompiled() can be used to determined the class status.
A single CompileEvent will be generated with all dependent files listed.
A call to this method is equivalent to:
compile(waitCompileEnd, false)
.- Parameters:
waitCompileEnd
-true
waits for the compilation to be finished.- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed.PackageNotFoundException
- if the package to which this class belongs has been deleted.CompilationNotStartedException
- if BlueJ is currently executing Java code.
-
compile
public void compile(boolean waitCompileEnd, boolean forceQuiet) throws ProjectNotOpenException, PackageNotFoundException, CompilationNotStartedException
Compiles this class, and any dependents, optionally without showing compilation errors to the user.After the compilation has finished the method isCompiled() can be used to determined the class status.
A single CompileEvent with all dependent files listed will be generated.
- Parameters:
waitCompileEnd
-true
waits for the compilation to be finished.forceQuiet
- if true, compilation errors will not be shown/highlighted to the user.- Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed.PackageNotFoundException
- if the package to which this class belongs has been deleted.CompilationNotStartedException
- if BlueJ is currently executing Java code.
-
getSuperclass
public BClass getSuperclass() throws ProjectNotOpenException, PackageNotFoundException, ClassNotFoundException
Returns the superclass of this class. Similar to reflection API.- Returns:
- The superclass wrapped in a BClass object. If this class represents either the Object class or an interface then
null
is returned. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getConstructors
public BConstructor[] getConstructors() throws ProjectNotOpenException, ClassNotFoundException
Returns all the constructors of this class. Similar to reflection API.- Returns:
- An array of
BConstructor
objects wrapping the constructors of this class. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getConstructor
public BConstructor getConstructor(java.lang.Class<?>[] signature) throws ProjectNotOpenException, ClassNotFoundException
Returns the constructor for this class which has the given signature. Similar to reflection API.- Parameters:
signature
- the signature of the required constructor.- Returns:
- The
BConstructor
object wrapping the matching constructor of this class, or null if the class has not been compiled or the constructor cannot be found. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getDeclaredMethods
public BMethod[] getDeclaredMethods() throws ProjectNotOpenException, ClassNotFoundException
Returns the declared methods of this class. Similar to reflection API.- Returns:
- An array of
BMethod
objects wrapping the methods of this class. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getDeclaredMethod
public BMethod getDeclaredMethod(java.lang.String methodName, java.lang.Class<?>[] params) throws ProjectNotOpenException, ClassNotFoundException
Returns the declared method of this class which has the given signature. Similar to reflection API.- Parameters:
methodName
- The name of the method.params
- The parameters of the method. Pass a zero length array if the method takes no arguments.- Returns:
- The
BMethod
object wrapping the matching method ornull
if the method is not found. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getMethods
public BMethod[] getMethods() throws ProjectNotOpenException, ClassNotFoundException
Returns all methods of this class, those declared and those inherited from all ancestors. Similar to reflection API, except that all methods, declared and inherited, are returned, and not only the public ones. That is, it returns all public, private, protected, and package-access methods, inherited or declared. The elements in the array returned are not sorted and are not in any particular order.- Returns:
- An array of
BMethod
objects wrapping the methods of this class. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getMethod
public BMethod getMethod(java.lang.String methodName, java.lang.Class<?>[] params) throws ProjectNotOpenException, ClassNotFoundException
Returns the method of this class with the given signature. Similar to reflection API, except that all methods, declared and inherited, are searched, and not only the public ones. That is, it searches all public, private, protected, and package-access methods, declared or inherited from all ancestors. If the searched method has been redefined, the returned method is chosen arbitrarily from the list of inherited and declared methods.- Parameters:
methodName
- The name of the methodparams
- The parameters of the method. Pass a zero length array if the method takes no arguments.- Returns:
- The
BMethod
object wrapping the matching method ornull
if the method is not found. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the userClassNotFoundException
- if the class has been deleted by the user
-
getFields
public BField[] getFields() throws ProjectNotOpenException, ClassNotFoundException
Returns all the fields of this class. Similar to reflection API.- Returns:
- An array of
BField
objects wrapping this class's fields. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getField
public BField getField(java.lang.String fieldName) throws ProjectNotOpenException, ClassNotFoundException
Returns the field of this class which has the given name. Similar to Reflection API.- Parameters:
fieldName
- name of the field- Returns:
- The
BField
object wrapping the matching field, ornull
if no field is found. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.ClassNotFoundException
- if the class has been deleted by the user.
-
getClassFile
public java.io.File getClassFile() throws ProjectNotOpenException, PackageNotFoundException
Returns this class's .class file.- Returns:
- A
File
object for the class's .class file,null
if the class no longer exists in the project. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
getJavaFile
public java.io.File getJavaFile() throws ProjectNotOpenException, PackageNotFoundException
Returns this class's .java file. If the file is currently being edited, calling this method will cause it to be saved.- Returns:
- A
File
object for the class's .java file. - Throws:
ProjectNotOpenException
- if the project to which this class belongs has been closed by the user.PackageNotFoundException
- if the package to which this class belongs has been deleted by the user.
-
toString
public java.lang.String toString()
Returns a string representation of the Object- Overrides:
toString
in classjava.lang.Object
-
-