From 9eeea3f2222d30f0cf4b3ecd0461341b89ec85aa Mon Sep 17 00:00:00 2001 From: jeffpk Date: Tue, 30 Sep 2003 19:21:07 +0000 Subject: This version adds a property "net.java.games.util.plugins.nolocalnative". If this property is set, then ratehr then lookign in the same dir as the plugin for a plugin's native components it will fall back to the VM or platform default way of finding native libraries. This is necessary for Java Web Start apps. git-svn-id: file:///home/sven/projects/JOGL/git-svn/svn-server-sync/jutils/trunk@13 052365b4-98e0-4bc5-a281-465471b020e0 --- apidocs/allclasses-frame.html | 47 +++ apidocs/allclasses-noframe.html | 47 +++ apidocs/constant-values.html | 125 +++++++ apidocs/deprecated-list.html | 121 +++++++ apidocs/help-doc.html | 176 ++++++++++ apidocs/index-all.html | 208 ++++++++++++ apidocs/index.html | 25 ++ apidocs/net/java/games/util/plugins/Plugin.html | 191 +++++++++++ .../net/java/games/util/plugins/PluginLoader.html | 365 +++++++++++++++++++++ apidocs/net/java/games/util/plugins/Plugins.html | 353 ++++++++++++++++++++ .../net/java/games/util/plugins/package-frame.html | 46 +++ .../java/games/util/plugins/package-summary.html | 154 +++++++++ .../net/java/games/util/plugins/package-tree.html | 143 ++++++++ .../games/util/plugins/test/FooChildPlugin.html | 219 +++++++++++++ .../java/games/util/plugins/test/FooPlugin.html | 220 +++++++++++++ .../plugins/test/InheritedInterfacePlugin.html | 217 ++++++++++++ .../util/plugins/test/InterfaceNotAPlugin.html | 177 ++++++++++ .../java/games/util/plugins/test/NotAPlugin.html | 214 ++++++++++++ .../java/games/util/plugins/test/PluginTest.html | 242 ++++++++++++++ .../games/util/plugins/test/package-frame.html | 52 +++ .../games/util/plugins/test/package-summary.html | 165 ++++++++++ .../java/games/util/plugins/test/package-tree.html | 143 ++++++++ apidocs/overview-frame.html | 45 +++ apidocs/overview-summary.html | 135 ++++++++ apidocs/overview-tree.html | 148 +++++++++ apidocs/package-list | 2 + apidocs/packages.html | 26 ++ apidocs/serialized-form.html | 121 +++++++ apidocs/stylesheet.css | 29 ++ .../java/games/util/plugins/PluginLoader.java~1~ | 156 +++++++++ bak/net/java/games/util/plugins/Plugins.java~1~ | 247 ++++++++++++++ .../net/java/games/util/plugins/PluginLoader.java | 6 + src/java/net/java/games/util/plugins/Plugins.java | 41 +-- 33 files changed, 4587 insertions(+), 19 deletions(-) create mode 100644 apidocs/allclasses-frame.html create mode 100644 apidocs/allclasses-noframe.html create mode 100644 apidocs/constant-values.html create mode 100644 apidocs/deprecated-list.html create mode 100644 apidocs/help-doc.html create mode 100644 apidocs/index-all.html create mode 100644 apidocs/index.html create mode 100644 apidocs/net/java/games/util/plugins/Plugin.html create mode 100644 apidocs/net/java/games/util/plugins/PluginLoader.html create mode 100644 apidocs/net/java/games/util/plugins/Plugins.html create mode 100644 apidocs/net/java/games/util/plugins/package-frame.html create mode 100644 apidocs/net/java/games/util/plugins/package-summary.html create mode 100644 apidocs/net/java/games/util/plugins/package-tree.html create mode 100644 apidocs/net/java/games/util/plugins/test/FooChildPlugin.html create mode 100644 apidocs/net/java/games/util/plugins/test/FooPlugin.html create mode 100644 apidocs/net/java/games/util/plugins/test/InheritedInterfacePlugin.html create mode 100644 apidocs/net/java/games/util/plugins/test/InterfaceNotAPlugin.html create mode 100644 apidocs/net/java/games/util/plugins/test/NotAPlugin.html create mode 100644 apidocs/net/java/games/util/plugins/test/PluginTest.html create mode 100644 apidocs/net/java/games/util/plugins/test/package-frame.html create mode 100644 apidocs/net/java/games/util/plugins/test/package-summary.html create mode 100644 apidocs/net/java/games/util/plugins/test/package-tree.html create mode 100644 apidocs/overview-frame.html create mode 100644 apidocs/overview-summary.html create mode 100644 apidocs/overview-tree.html create mode 100644 apidocs/package-list create mode 100644 apidocs/packages.html create mode 100644 apidocs/serialized-form.html create mode 100644 apidocs/stylesheet.css create mode 100644 bak/net/java/games/util/plugins/PluginLoader.java~1~ create mode 100644 bak/net/java/games/util/plugins/Plugins.java~1~ diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html new file mode 100644 index 0000000..f0b6ea3 --- /dev/null +++ b/apidocs/allclasses-frame.html @@ -0,0 +1,47 @@ + + + + + + +All Classes + + + + + + +All Classes +
+ + + + + +
FooChildPlugin +
+FooPlugin +
+InheritedInterfacePlugin +
+InterfaceNotAPlugin +
+NotAPlugin +
+Plugin +
+PluginLoader +
+Plugins +
+PluginTest +
+
+ + + diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html new file mode 100644 index 0000000..e25228e --- /dev/null +++ b/apidocs/allclasses-noframe.html @@ -0,0 +1,47 @@ + + + + + + +All Classes + + + + + + +All Classes +
+ + + + + +
FooChildPlugin +
+FooPlugin +
+InheritedInterfacePlugin +
+InterfaceNotAPlugin +
+NotAPlugin +
+Plugin +
+PluginLoader +
+Plugins +
+PluginTest +
+
+ + + diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html new file mode 100644 index 0000000..aced75b --- /dev/null +++ b/apidocs/constant-values.html @@ -0,0 +1,125 @@ + + + + + + +Constant Field Values + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Constant Field Values

+
+
+Contents + +
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html new file mode 100644 index 0000000..95246b7 --- /dev/null +++ b/apidocs/deprecated-list.html @@ -0,0 +1,121 @@ + + + + + + +Deprecated List + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Deprecated API

+
+
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/help-doc.html b/apidocs/help-doc.html new file mode 100644 index 0000000..1b00aad --- /dev/null +++ b/apidocs/help-doc.html @@ -0,0 +1,176 @@ + + + + + + +API Help + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object. +
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/index-all.html b/apidocs/index-all.html new file mode 100644 index 0000000..4469a48 --- /dev/null +++ b/apidocs/index-all.html @@ -0,0 +1,208 @@ + + + + + + +Index + + + + + + + + + + + + + + + + + + +
+ +
+ + +A F G I M N P
+

+A

+
+
attemptPluginDefine(Class) - +Method in class net.java.games.util.plugins.PluginLoader +
This function is called as part of scanning the Jar for + plugins. +
+
+

+F

+
+
findLibrary(String) - +Method in class net.java.games.util.plugins.PluginLoader +
This method is queried by the System.loadLibrary() + code to find the actual native name and path to the + native library to load. +
FooChildPlugin - class net.java.games.util.plugins.test.FooChildPlugin.
 
FooChildPlugin() - +Constructor for class net.java.games.util.plugins.test.FooChildPlugin +
Creates a new instance of FooChildPlugin +
FooPlugin - class net.java.games.util.plugins.test.FooPlugin.
 
FooPlugin() - +Constructor for class net.java.games.util.plugins.test.FooPlugin +
Creates a new instance of FooPlugin +
+
+

+G

+
+
get() - +Method in class net.java.games.util.plugins.Plugins +
This method returns all the Plugins found in the + directory passed in at object creation time or any of its + sub-directories. +
getExtends(Class) - +Method in class net.java.games.util.plugins.Plugins +
This method returns a sub-list of all the found Plugin + classes that extend the passed in Class + (either directly or through inheritance.) +
getImplementsAll(Class[]) - +Method in class net.java.games.util.plugins.Plugins +
This method returns a sub-list of all the found Plugin + classes that implement all of the passed in set of + Interfaces (either directly or through inheritance.) +
getImplementsAny(Class[]) - +Method in class net.java.games.util.plugins.Plugins +
This method returns a sub-list of all the found Plugin + classes that implement any of the passed in set of + Interfaces (either directly or through inheritance.) +
+
+

+I

+
+
InheritedInterfacePlugin - class net.java.games.util.plugins.test.InheritedInterfacePlugin.
 
InheritedInterfacePlugin() - +Constructor for class net.java.games.util.plugins.test.InheritedInterfacePlugin +
Creates a new instance of InheritedInterfacePlugin +
InterfaceNotAPlugin - interface net.java.games.util.plugins.test.InterfaceNotAPlugin.
 
+
+

+M

+
+
main(String[]) - +Static method in class net.java.games.util.plugins.test.PluginTest +
  +
+
+

+N

+
+
net.java.games.util.plugins - package net.java.games.util.plugins
 
net.java.games.util.plugins.test - package net.java.games.util.plugins.test
 
NotAPlugin - class net.java.games.util.plugins.test.NotAPlugin.
 
NotAPlugin() - +Constructor for class net.java.games.util.plugins.test.NotAPlugin +
Creates a new instance of NotAPlugin +
+
+

+P

+
+
Plugin - interface net.java.games.util.plugins.Plugin.
This is a marker interface used to mark plugins in a Jar file + for retrieval by the Plugins class.
PluginLoader - class net.java.games.util.plugins.PluginLoader.
This class is used internally by the Plugin system.
PluginLoader(File) - +Constructor for class net.java.games.util.plugins.PluginLoader +
Creates a new instance of PluginLodaer + If the system property "net.java.games.util.plugins.nolocalnative" is + not set then the laoder will look for requried native libs in the + same directory as the plugin jar. +
Plugins - class net.java.games.util.plugins.Plugins.
This is the application interface to the Plugin system.
Plugins(File) - +Constructor for class net.java.games.util.plugins.Plugins +
Creates a new instance of Plugins +
PluginTest - class net.java.games.util.plugins.test.PluginTest.
 
PluginTest() - +Constructor for class net.java.games.util.plugins.test.PluginTest +
Creates a new instance of PluginTest +
+
+A F G I M N P + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/index.html b/apidocs/index.html new file mode 100644 index 0000000..f3c2789 --- /dev/null +++ b/apidocs/index.html @@ -0,0 +1,25 @@ + + + + + + +Generated Documentation (Untitled) + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + diff --git a/apidocs/net/java/games/util/plugins/Plugin.html b/apidocs/net/java/games/util/plugins/Plugin.html new file mode 100644 index 0000000..9e65b6d --- /dev/null +++ b/apidocs/net/java/games/util/plugins/Plugin.html @@ -0,0 +1,191 @@ + + + + + + +Plugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins +
+Interface Plugin

+
+
All Known Subinterfaces:
InterfaceNotAPlugin
+
+
+
All Known Implementing Classes:
FooPlugin, InheritedInterfacePlugin
+
+
+
+
public interface Plugin
+ +

+This is a marker interface used to mark plugins in a Jar file + for retrieval by the Plugins class. In order for a class to be + treated as a Plugin the following must be true: + + (1) The name of the class must end with "Plugin". + (ie MedianCutFilterPlugin, DirectInput EnvrionmentPlugin) + + (2) The class must implement the Plugin interface. It can do + so directly, through inheritence of either a superclass + that implements this interface, or through the implementation + of an interface that extends this interface. +

+ +

+

+
Author:
+
Jeffrey P. Kesselman
+
+
+ +

+ + + + + + + + + + + + +

+ + + + + + + + + + +


+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/PluginLoader.html b/apidocs/net/java/games/util/plugins/PluginLoader.html new file mode 100644 index 0000000..6028c45 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/PluginLoader.html @@ -0,0 +1,365 @@ + + + + + + +PluginLoader + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins +
+Class PluginLoader

+
+java.lang.Object
+  |
+  +--java.lang.ClassLoader
+        |
+        +--java.security.SecureClassLoader
+              |
+              +--java.net.URLClassLoader
+                    |
+                    +--net.java.games.util.plugins.PluginLoader
+
+
+
+
public class PluginLoader
extends java.net.URLClassLoader
+ +

+This class is used internally by the Plugin system. + End users of the system are unlikely to need to be aware + of it. + + + This is the class loader used to keep the namespaces of + different plugins isolated from each other and from the + main app code. One plugin loader is created per Jar + file in the sub-directory tree of the plugin directory. + + In addition to isolating java classes this loader also isolates + DLLs such that plugins with conflicting DLL names may be + used by simply placing the plugin and its associated DLL + in a sub-folder of its own. + + This class also currently implements methods for testing + classes for inheritance of superclasses or interfaces. + This code is genericly useful and should really be moved + to a seperate ClassUtils class. +

+ +

+

+
Author:
+
Jeffrey Kesselman
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
PluginLoader(java.io.File jf) + +
+          Creates a new instance of PluginLodaer + If the system property "net.java.games.util.plugins.nolocalnative" is + not set then the laoder will look for requried native libs in the + same directory as the plugin jar.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleanattemptPluginDefine(java.lang.Class pc) + +
+          This function is called as part of scanning the Jar for + plugins.
+protected  java.lang.StringfindLibrary(java.lang.String libname) + +
+          This method is queried by the System.loadLibrary() + code to find the actual native name and path to the + native library to load.
+ + + + + + + +
Methods inherited from class java.net.URLClassLoader
addURL, definePackage, findClass, findResource, findResources, getPermissions, getURLs, newInstance, newInstance
+ + + + + + + +
Methods inherited from class java.security.SecureClassLoader
defineClass
+ + + + + + + +
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+PluginLoader

+
+public PluginLoader(java.io.File jf)
+             throws java.net.MalformedURLException
+
+
Creates a new instance of PluginLodaer + If the system property "net.java.games.util.plugins.nolocalnative" is + not set then the laoder will look for requried native libs in the + same directory as the plugin jar. (Useful for handling name + collision between plugins). If it IS set however, then it will + fall back to the default way of loading natives. (Necessary for + Java Web Start.) +

+

Parameters:
jf - The JarFile to load the Plugins from. +
Throws: +
java.net.MalformedURLException - Will throw this exception if jf does not refer to a + legitimate Jar file.
+ + + + + + + + +
+Method Detail
+ +

+findLibrary

+
+protected java.lang.String findLibrary(java.lang.String libname)
+
+
This method is queried by the System.loadLibrary() + code to find the actual native name and path to the + native library to load. + + This subclass implementation of this method ensures that + the native library will be loaded from, and only from, + the parent directory of the Jar file this loader was + created to support. This allows different Plugins + with supporting DLLs of the same name to co-exist, each + in their own subdirectory. +

+

+
Overrides:
findLibrary in class java.lang.ClassLoader
+
+
+
Parameters:
libname - The JNI name of the native library to locate. +
Returns:
Returns a string describing the actual loation of the + native library in the native file system.
+
+
+
+ +

+attemptPluginDefine

+
+public boolean attemptPluginDefine(java.lang.Class pc)
+
+
This function is called as part of scanning the Jar for + plugins. It checks to make sure the class passed in is + a legitimate plugin, which is to say that it meets + the following criteria: + + (1) Is not itself an interface + (2) Implements the Plugin marker interface either directly + or through inheritance. + + interface, either +

+

+
Parameters:
pc - The potential plug-in class to vette. +
Returns:
Returns true if the class meets the criteria for a + plugin. Otherwise returns false.
+
+
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/Plugins.html b/apidocs/net/java/games/util/plugins/Plugins.html new file mode 100644 index 0000000..21aa11a --- /dev/null +++ b/apidocs/net/java/games/util/plugins/Plugins.html @@ -0,0 +1,353 @@ + + + + + + +Plugins + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins +
+Class Plugins

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.Plugins
+
+
+
+
public class Plugins
extends java.lang.Object
+ +

+This is the application interface to the Plugin system. + One Plugins object should be created for each plug-in + directory tree root. + + On creation the Plugins object will scan its assigned + directory tree and examine all Jar files in that tree to + see if they qualify as Plug-ins. + + The Plugin classes may then be retrived from the Plugins object by calling + the appropriate get function (see below). + + If a plugin requires a native code library, that library must be present + in the same directory as the plugin Jar file UNLESS the property + "net.java.games.util.plugins.nolocalnative" is set. In that case + it will fall abck to the VM or environment's default way of finding + native libraries. (This is n ecessary for Java Web Start apps.) +

+ +

+


+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
Plugins(java.io.File pluginRoot) + +
+          Creates a new instance of Plugins
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.Class[]get() + +
+          This method returns all the Plugins found in the + directory passed in at object creation time or any of its + sub-directories.
+ java.lang.Class[]getExtends(java.lang.Class superclass) + +
+          This method returns a sub-list of all the found Plugin + classes that extend the passed in Class + (either directly or through inheritance.)
+ java.lang.Class[]getImplementsAll(java.lang.Class[] interfaces) + +
+          This method returns a sub-list of all the found Plugin + classes that implement all of the passed in set of + Interfaces (either directly or through inheritance.)
+ java.lang.Class[]getImplementsAny(java.lang.Class[] interfaces) + +
+          This method returns a sub-list of all the found Plugin + classes that implement any of the passed in set of + Interfaces (either directly or through inheritance.)
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+Plugins

+
+public Plugins(java.io.File pluginRoot)
+        throws java.io.IOException
+
+
Creates a new instance of Plugins +

+

Parameters:
pluginRoot - The root od the directory tree to scan for Jars + containing plugins.
+ + + + + + + + +
+Method Detail
+ +

+get

+
+public java.lang.Class[] get()
+
+
This method returns all the Plugins found in the + directory passed in at object creation time or any of its + sub-directories. +

+

+ +
Returns:
+
+
+
+ +

+getImplementsAny

+
+public java.lang.Class[] getImplementsAny(java.lang.Class[] interfaces)
+
+
This method returns a sub-list of all the found Plugin + classes that implement any of the passed in set of + Interfaces (either directly or through inheritance.) +

+

+
Parameters:
interfaces - A set of interfaces to match against the interfaces + implemented by the plugin classes. +
Returns:
The list of plugin classes that implement at least + one member of the passed in set of interfaces.
+
+
+
+ +

+getImplementsAll

+
+public java.lang.Class[] getImplementsAll(java.lang.Class[] interfaces)
+
+
This method returns a sub-list of all the found Plugin + classes that implement all of the passed in set of + Interfaces (either directly or through inheritance.) +

+

+
Parameters:
interfaces - A set of interfaces to match against the interfaces + implemented by the plugin classes. +
Returns:
The list of plugin classes that implement at least + one member of the passed in set of interfaces.
+
+
+
+ +

+getExtends

+
+public java.lang.Class[] getExtends(java.lang.Class superclass)
+
+
This method returns a sub-list of all the found Plugin + classes that extend the passed in Class + (either directly or through inheritance.) +

+

+
Parameters:
superclass - The class to match. +
Returns:
The list of plugin classes that extend the passed + in class.
+
+
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/package-frame.html b/apidocs/net/java/games/util/plugins/package-frame.html new file mode 100644 index 0000000..abfaa31 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/package-frame.html @@ -0,0 +1,46 @@ + + + + + + +net.java.games.util.plugins + + + + + + + +net.java.games.util.plugins + + + + +
+Interfaces  + +
+Plugin
+ + + + + + +
+Classes  + +
+PluginLoader +
+Plugins
+ + + + diff --git a/apidocs/net/java/games/util/plugins/package-summary.html b/apidocs/net/java/games/util/plugins/package-summary.html new file mode 100644 index 0000000..de7eea2 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/package-summary.html @@ -0,0 +1,154 @@ + + + + + + +net.java.games.util.plugins + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+

+Package net.java.games.util.plugins +

+ + + + + + + + + +
+Interface Summary
PluginThis is a marker interface used to mark plugins in a Jar file + for retrieval by the Plugins class.
+  + +

+ + + + + + + + + + + + + +
+Class Summary
PluginLoaderThis class is used internally by the Plugin system.
PluginsThis is the application interface to the Plugin system.
+  + +

+


+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/package-tree.html b/apidocs/net/java/games/util/plugins/package-tree.html new file mode 100644 index 0000000..c6ab39a --- /dev/null +++ b/apidocs/net/java/games/util/plugins/package-tree.html @@ -0,0 +1,143 @@ + + + + + + +net.java.games.util.plugins Class Hierarchy + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Hierarchy For Package net.java.games.util.plugins +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/FooChildPlugin.html b/apidocs/net/java/games/util/plugins/test/FooChildPlugin.html new file mode 100644 index 0000000..cfdd5be --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/FooChildPlugin.html @@ -0,0 +1,219 @@ + + + + + + +FooChildPlugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Class FooChildPlugin

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.test.FooPlugin
+        |
+        +--net.java.games.util.plugins.test.FooChildPlugin
+
+
+
All Implemented Interfaces:
Plugin
+
+
+
+
public class FooChildPlugin
extends FooPlugin
+ +

+

+
Author:
+
jeff
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
FooChildPlugin() + +
+          Creates a new instance of FooChildPlugin
+  + + + + + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+FooChildPlugin

+
+public FooChildPlugin()
+
+
Creates a new instance of FooChildPlugin +

+

+ + + + +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/FooPlugin.html b/apidocs/net/java/games/util/plugins/test/FooPlugin.html new file mode 100644 index 0000000..a2f5bef --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/FooPlugin.html @@ -0,0 +1,220 @@ + + + + + + +FooPlugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Class FooPlugin

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.test.FooPlugin
+
+
+
All Implemented Interfaces:
Plugin
+
+
+
Direct Known Subclasses:
FooChildPlugin
+
+
+
+
public class FooPlugin
extends java.lang.Object
implements Plugin
+ +

+

+
Author:
+
jeff
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
FooPlugin() + +
+          Creates a new instance of FooPlugin
+  + + + + + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+FooPlugin

+
+public FooPlugin()
+
+
Creates a new instance of FooPlugin +

+

+ + + + +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/InheritedInterfacePlugin.html b/apidocs/net/java/games/util/plugins/test/InheritedInterfacePlugin.html new file mode 100644 index 0000000..4580dbd --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/InheritedInterfacePlugin.html @@ -0,0 +1,217 @@ + + + + + + +InheritedInterfacePlugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Class InheritedInterfacePlugin

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.test.InheritedInterfacePlugin
+
+
+
All Implemented Interfaces:
InterfaceNotAPlugin, Plugin
+
+
+
+
public class InheritedInterfacePlugin
extends java.lang.Object
implements InterfaceNotAPlugin
+ +

+

+
Author:
+
jeff
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
InheritedInterfacePlugin() + +
+          Creates a new instance of InheritedInterfacePlugin
+  + + + + + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+InheritedInterfacePlugin

+
+public InheritedInterfacePlugin()
+
+
Creates a new instance of InheritedInterfacePlugin +

+

+ + + + +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/InterfaceNotAPlugin.html b/apidocs/net/java/games/util/plugins/test/InterfaceNotAPlugin.html new file mode 100644 index 0000000..932915e --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/InterfaceNotAPlugin.html @@ -0,0 +1,177 @@ + + + + + + +InterfaceNotAPlugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Interface InterfaceNotAPlugin

+
+
All Superinterfaces:
Plugin
+
+
+
All Known Implementing Classes:
InheritedInterfacePlugin
+
+
+
+
public interface InterfaceNotAPlugin
extends Plugin
+ +

+

+
Author:
+
jeff
+
+
+ +

+ + + + + + + + + + + + +

+ + + + + + + + + + +


+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/NotAPlugin.html b/apidocs/net/java/games/util/plugins/test/NotAPlugin.html new file mode 100644 index 0000000..9395274 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/NotAPlugin.html @@ -0,0 +1,214 @@ + + + + + + +NotAPlugin + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Class NotAPlugin

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.test.NotAPlugin
+
+
+
+
public class NotAPlugin
extends java.lang.Object
+ +

+

+
Author:
+
jeff
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
NotAPlugin() + +
+          Creates a new instance of NotAPlugin
+  + + + + + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+NotAPlugin

+
+public NotAPlugin()
+
+
Creates a new instance of NotAPlugin +

+

+ + + + +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/PluginTest.html b/apidocs/net/java/games/util/plugins/test/PluginTest.html new file mode 100644 index 0000000..c2c2676 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/PluginTest.html @@ -0,0 +1,242 @@ + + + + + + +PluginTest + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +

+ +net.java.games.util.plugins.test +
+Class PluginTest

+
+java.lang.Object
+  |
+  +--net.java.games.util.plugins.test.PluginTest
+
+
+
+
public class PluginTest
extends java.lang.Object
+ +

+


+ +

+ + + + + + + + + + + + + + + + +
+Constructor Summary
PluginTest() + +
+          Creates a new instance of PluginTest
+  + + + + + + + + + + + +
+Method Summary
+static voidmain(java.lang.String[] args) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + + + + +
+Constructor Detail
+ +

+PluginTest

+
+public PluginTest()
+
+
Creates a new instance of PluginTest +

+

+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(java.lang.String[] args)
+
+
+
Parameters:
args - the command line arguments
+
+
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/package-frame.html b/apidocs/net/java/games/util/plugins/test/package-frame.html new file mode 100644 index 0000000..5d0e519 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/package-frame.html @@ -0,0 +1,52 @@ + + + + + + +net.java.games.util.plugins.test + + + + + + + +net.java.games.util.plugins.test + + + + +
+Interfaces  + +
+InterfaceNotAPlugin
+ + + + + + +
+Classes  + +
+FooChildPlugin +
+FooPlugin +
+InheritedInterfacePlugin +
+NotAPlugin +
+PluginTest
+ + + + diff --git a/apidocs/net/java/games/util/plugins/test/package-summary.html b/apidocs/net/java/games/util/plugins/test/package-summary.html new file mode 100644 index 0000000..63eb74c --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/package-summary.html @@ -0,0 +1,165 @@ + + + + + + +net.java.games.util.plugins.test + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+

+Package net.java.games.util.plugins.test +

+ + + + + + + + + +
+Interface Summary
InterfaceNotAPlugin 
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
FooChildPlugin 
FooPlugin 
InheritedInterfacePlugin 
NotAPlugin 
PluginTest 
+  + +

+


+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/net/java/games/util/plugins/test/package-tree.html b/apidocs/net/java/games/util/plugins/test/package-tree.html new file mode 100644 index 0000000..2d9caf4 --- /dev/null +++ b/apidocs/net/java/games/util/plugins/test/package-tree.html @@ -0,0 +1,143 @@ + + + + + + +net.java.games.util.plugins.test Class Hierarchy + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Hierarchy For Package net.java.games.util.plugins.test +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/overview-frame.html b/apidocs/overview-frame.html new file mode 100644 index 0000000..f3924b8 --- /dev/null +++ b/apidocs/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + +Overview + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+net.java.games.util.plugins +
+net.java.games.util.plugins.test +
+

+ +

+  + + diff --git a/apidocs/overview-summary.html b/apidocs/overview-summary.html new file mode 100644 index 0000000..781d091 --- /dev/null +++ b/apidocs/overview-summary.html @@ -0,0 +1,135 @@ + + + + + + +Overview + + + + + + + + + + + + + + + + + + + +
+ +
+ + +


+ + + + + + + + + + + + + +
+Packages
net.java.games.util.plugins 
net.java.games.util.plugins.test 
+ +


+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html new file mode 100644 index 0000000..23443ff --- /dev/null +++ b/apidocs/overview-tree.html @@ -0,0 +1,148 @@ + + + + + + +Class Hierarchy + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
net.java.games.util.plugins, net.java.games.util.plugins.test
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/package-list b/apidocs/package-list new file mode 100644 index 0000000..31c17ac --- /dev/null +++ b/apidocs/package-list @@ -0,0 +1,2 @@ +net.java.games.util.plugins +net.java.games.util.plugins.test diff --git a/apidocs/packages.html b/apidocs/packages.html new file mode 100644 index 0000000..989c5be --- /dev/null +++ b/apidocs/packages.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+ +
+ +
+
+The front page has been relocated.Please see: +
+          Frame version +
+          Non-frame version.
+ + + diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html new file mode 100644 index 0000000..fee65e6 --- /dev/null +++ b/apidocs/serialized-form.html @@ -0,0 +1,121 @@ + + + + + + +Serialized Form + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+

+Serialized Form

+
+
+ + + + + + + + + + + + + +
+ +
+ + +
+ + + diff --git a/apidocs/stylesheet.css b/apidocs/stylesheet.css new file mode 100644 index 0000000..b62ecb5 --- /dev/null +++ b/apidocs/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF } /* Light mauve */ +.TableRowColor { background: #FFFFFF } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 10pts; font-family: Helvetica, Arial, san-serif } +.FrameHeadingFont { font-size: 10pts; font-family: Helvetica, Arial, san-serif } +.FrameItemFont { font-size: 10pts; font-family: Helvetica, Arial, san-serif } + +/* Example of smaller, sans-serif font in frames */ +/* .FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */ + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF;}/* Light mauve */ +.NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} + diff --git a/bak/net/java/games/util/plugins/PluginLoader.java~1~ b/bak/net/java/games/util/plugins/PluginLoader.java~1~ new file mode 100644 index 0000000..9d41467 --- /dev/null +++ b/bak/net/java/games/util/plugins/PluginLoader.java~1~ @@ -0,0 +1,156 @@ +/* + * PluginLodaer.java + * + * Created on April 18, 2003, 11:32 AM + */ +/***************************************************************************** + * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistribution of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistribution in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materails provided with the distribution. + * + * Neither the name Sun Microsystems, Inc. or the names of the contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. + * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING + * ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR + * NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND + * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS + * A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS + * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST + * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, + * INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY + * OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE, + * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that this software is not designed or intended for us in + * the design, construction, operation or maintenance of any nuclear facility + * + *****************************************************************************/ +package net.java.games.util.plugins; + +/** + * + * @author jeff + */ +import java.io.*; +import java.net.*; + +/** This class is used internally by the Plugin system. + * End users of the system are unlikely to need to be aware + * of it. + * + * + * This is the class loader used to keep the namespaces of + * different plugins isolated from each other and from the + * main app code. One plugin loader is created per Jar + * file in the sub-directory tree of the plugin directory. + * + * In addition to isolating java classes this loader also isolates + * DLLs such that plugins with conflicting DLL names may be + * used by simply placing the plugin and its associated DLL + * in a sub-folder of its own. + * + * This class also currently implements methods for testing + * classes for inheritance of superclasses or interfaces. + * This code is genericly useful and should really be moved + * to a seperate ClassUtils class. + * @author Jeffrey Kesselman + */ +public class PluginLoader extends URLClassLoader { + static final boolean DEBUG = false; + File parentDir; + boolean localDLLs = true; + /** Creates a new instance of PluginLodaer + * @param jf The JarFile to load the Plugins from. + * @throws MalformedURLException Will throw this exception if jf does not refer to a + * legitimate Jar file. + */ + public PluginLoader(File jf) throws MalformedURLException { + super(new URL[] {jf.toURL()}); + parentDir = jf.getParentFile(); + if (System.getProperty("net.java.games.util.plugins.nolocalnative") + !=null){ + localDLLs = false; + } + } + + /** This method is queried by the System.loadLibrary() + * code to find the actual native name and path to the + * native library to load. + * + * This subclass implementation of this method ensures that + * the native library will be loaded from, and only from, + * the parent directory of the Jar file this loader was + * created to support. This allows different Plugins + * with supporting DLLs of the same name to co-exist, each + * in their own subdirectory. + * @param libname The JNI name of the native library to locate. + * @return Returns a string describing the actual loation of the + * native library in the native file system. + */ + protected String findLibrary(String libname){ + if (localDLLs) { + String libpath = parentDir.getPath() + File.separator + + System.mapLibraryName(libname); + if (DEBUG) { + System.out.println("Returning libname of: " + libpath); + } + return libpath; + } else { + return super.findLibrary(libname); + } + } + + /** This function is called as part of scanning the Jar for + * plugins. It checks to make sure the class passed in is + * a legitimate plugin, which is to say that it meets + * the following criteria: + * + * (1) Is not itself an interface + * (2) Implements the Plugin marker interface either directly + * or through inheritance. + * + * interface, either + * @param pc The potential plug-in class to vette. + * @return Returns true if the class meets the criteria for a + * plugin. Otherwise returns false. + */ + public boolean attemptPluginDefine(Class pc){ + return ((!pc.isInterface()) && classImplementsPlugin(pc)); + } + + private boolean classImplementsPlugin(Class testClass){ + if (testClass == null) return false; // end of tree + if (DEBUG) { + System.out.println("testing class "+testClass.getName()); + } + Class[] implementedInterfaces = testClass.getInterfaces(); + for(int i=0;iany of the passed in set of + * Interfaces (either directly or through inheritance.) + * @param interfaces A set of interfaces to match against the interfaces + * implemented by the plugin classes. + * @return The list of plugin classes that implement at least + * one member of the passed in set of interfaces. + */ + public Class[] getImplementsAny(Class[] interfaces){ + List matchList = new ArrayList(pluginList.size()); + Set interfaceSet = new HashSet(); + for(int i=0;iall of the passed in set of + * Interfaces (either directly or through inheritance.) + * @param interfaces A set of interfaces to match against the interfaces + * implemented by the plugin classes. + * @return The list of plugin classes that implement at least + * one member of the passed in set of interfaces. + */ + public Class[] getImplementsAll(Class[] interfaces){ + List matchList = new ArrayList(pluginList.size()); + Set interfaceSet = new HashSet(); + for(int i=0;iany of the passed in set of * Interfaces (either directly or through inheritance.) @@ -140,7 +143,7 @@ public class Plugins { * implemented by the plugin classes. * @return The list of plugin classes that implement at least * one member of the passed in set of interfaces. - */ + */ public Class[] getImplementsAny(Class[] interfaces){ List matchList = new ArrayList(pluginList.size()); Set interfaceSet = new HashSet(); @@ -156,7 +159,7 @@ public class Plugins { Class[] pluginArray = new Class[matchList.size()]; return (Class[])matchList.toArray(pluginArray); } - + private boolean classImplementsAny(Class testClass,Set interfaces){ if (testClass == null) return false; // end of tree Class[] implementedInterfaces = testClass.getInterfaces(); @@ -172,7 +175,7 @@ public class Plugins { } return classImplementsAny(testClass.getSuperclass(),interfaces); } - + /** This method returns a sub-list of all the found Plugin * classes that implement all of the passed in set of * Interfaces (either directly or through inheritance.) @@ -180,7 +183,7 @@ public class Plugins { * implemented by the plugin classes. * @return The list of plugin classes that implement at least * one member of the passed in set of interfaces. - */ + */ public Class[] getImplementsAll(Class[] interfaces){ List matchList = new ArrayList(pluginList.size()); Set interfaceSet = new HashSet(); @@ -196,7 +199,7 @@ public class Plugins { Class[] pluginArray = new Class[matchList.size()]; return (Class[])matchList.toArray(pluginArray); } - + private boolean classImplementsAll(Class testClass,Set interfaces){ if (testClass == null) return false; // end of tree Class[] implementedInterfaces = testClass.getInterfaces(); @@ -215,14 +218,14 @@ public class Plugins { } return classImplementsAll(testClass.getSuperclass(),interfaces); } - + /** This method returns a sub-list of all the found Plugin * classes that extend the passed in Class * (either directly or through inheritance.) * @param superclass The class to match. * @return The list of plugin classes that extend the passed * in class. - */ + */ public Class[] getExtends(Class superclass){ List matchList = new ArrayList(pluginList.size()); for(Iterator i = pluginList.iterator();i.hasNext();){ @@ -232,9 +235,9 @@ public class Plugins { } } Class[] pluginArray = new Class[matchList.size()]; - return (Class[])matchList.toArray(pluginArray); + return (Class[])matchList.toArray(pluginArray); } - + private boolean classExtends(Class testClass,Class superclass){ if (testClass == null) { // end of hirearchy return false; -- cgit v1.2.3