aboutsummaryrefslogtreecommitdiffstats
path: root/bak/net/java/games/util
diff options
context:
space:
mode:
authorendolf <[email protected]>2011-03-22 15:03:52 +0000
committerendolf <[email protected]>2011-03-22 15:03:52 +0000
commit109d6e2ebff8eb8ea96115907b58e0cb65773963 (patch)
tree218e7bd126c3be39647be7e8de0be03675f35970 /bak/net/java/games/util
parent3517b059e99f56acdf572524aed1bc9ac2a3e1ff (diff)
tidy up
git-svn-id: file:///home/sven/projects/JOGL/git-svn/svn-server-sync/jutils/trunk@28 052365b4-98e0-4bc5-a281-465471b020e0
Diffstat (limited to 'bak/net/java/games/util')
-rw-r--r--bak/net/java/games/util/plugins/PluginLoader.java~1~156
-rw-r--r--bak/net/java/games/util/plugins/Plugins.java~1~247
2 files changed, 0 insertions, 403 deletions
diff --git a/bak/net/java/games/util/plugins/PluginLoader.java~1~ b/bak/net/java/games/util/plugins/PluginLoader.java~1~
deleted file mode 100644
index 9d41467..0000000
--- a/bak/net/java/games/util/plugins/PluginLoader.java~1~
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * 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;i<implementedInterfaces.length;i++){
- if (DEBUG) {
- System.out.println("examining interface: "+implementedInterfaces[i]);
- }
- if (implementedInterfaces[i]==Plugin.class) {
- if (DEBUG) {
- System.out.println("returning true from classImplementsPlugin");
- }
- return true;
- }
- }
- for(int i=0;i<implementedInterfaces.length;i++){
- if (classImplementsPlugin(implementedInterfaces[i])){
- return true;
- }
- }
- return classImplementsPlugin(testClass.getSuperclass());
- }
-
-}
diff --git a/bak/net/java/games/util/plugins/Plugins.java~1~ b/bak/net/java/games/util/plugins/Plugins.java~1~
deleted file mode 100644
index 87e6146..0000000
--- a/bak/net/java/games/util/plugins/Plugins.java~1~
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Plugins.java
- *
- * Created on April 18, 2003, 10:57 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.util.*;
-import java.util.jar.*;
-
-/** 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.
- *
- */
-public class Plugins {
- static final boolean DEBUG = true;
- List pluginList= new ArrayList();
-
- /** Creates a new instance of Plugins
- * @param pluginRoot The root od the directory tree to scan for Jars
- * containing plugins.
- */
- public Plugins(File pluginRoot) throws IOException {
- scanPlugins(pluginRoot);
- }
-
- private void scanPlugins(File dir) throws IOException {
- File[] files = dir.listFiles();
- if (files == null) {
- throw new FileNotFoundException("Plugin directory "+dir.getName()+
- " not found.");
- }
- for(int i=0;i<files.length;i++){
- File f = files[i];
- if (f.getName().endsWith(".jar")) { // process JAR file
- processJar(f);
- } else if (f.isDirectory()) {
- scanPlugins(f); // recurse
- }
- }
- }
-
-
- private void processJar(File f) {
- try {
- //JarFile jf = new JarFile(f);
- if (DEBUG) {
- System.out.println("Scanning jar: "+f.getName());
- }
- PluginLoader loader = new PluginLoader(f);
- JarFile jf = new JarFile(f);
- for (Enumeration enum = jf.entries();enum.hasMoreElements();){
- JarEntry je = (JarEntry)enum.nextElement();
- if (DEBUG) {
- System.out.println("Examining file : "+je.getName());
- }
- if (je.getName().endsWith("Plugin.class")) {
- if (DEBUG) {
- System.out.println("Found candidate class: "+je.getName());
- }
- String cname = je.getName();
- cname = cname.substring(0,cname.length()-6);
- Class pc = loader.loadClass(cname);
- if (loader.attemptPluginDefine(pc)) {
- if (DEBUG) {
- System.out.println("Adding class to plugins:"+pc.getName());
- }
- pluginList.add(pc);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /** This method returns all the Plugins found in the
- * directory passed in at object creation time or any of its
- * sub-directories.
- * @return
- */
- public Class[] get(){
- Class[] pluginArray = new Class[pluginList.size()];
- return (Class[])pluginList.toArray(pluginArray);
- }
-
- /** This method returns a sub-list of all the found Plugin
- * classes that implement <B>any</B> 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;i<interfaces.length;i++){
- interfaceSet.add(interfaces[i]);
- }
- for(Iterator i = pluginList.iterator();i.hasNext();){
- Class pluginClass = (Class)i.next();
- if (classImplementsAny(pluginClass,interfaceSet)){
- matchList.add(pluginClass);
- }
- }
- 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();
- for(int i=0;i<implementedInterfaces.length;i++){
- if (interfaces.contains(implementedInterfaces[i])) {
- return true;
- }
- }
- for(int i=0;i<implementedInterfaces.length;i++){
- if (classImplementsAny(implementedInterfaces[i],interfaces)){
- return true;
- }
- }
- return classImplementsAny(testClass.getSuperclass(),interfaces);
- }
-
- /** This method returns a sub-list of all the found Plugin
- * classes that implement <B>all</B> 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;i<interfaces.length;i++){
- interfaceSet.add(interfaces[i]);
- }
- for(Iterator i = pluginList.iterator();i.hasNext();){
- Class pluginClass = (Class)i.next();
- if (classImplementsAll(pluginClass,interfaceSet)){
- matchList.add(pluginClass);
- }
- }
- 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();
- for(int i=0;i<implementedInterfaces.length;i++){
- if (interfaces.contains(implementedInterfaces[i])) {
- interfaces.remove(implementedInterfaces[i]);
- if (interfaces.size() == 0) { // found them all
- return true;
- }
- }
- }
- for(int i=0;i<implementedInterfaces.length;i++){
- if (classImplementsAll(implementedInterfaces[i],interfaces)){
- return true;
- }
- }
- 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();){
- Class pluginClass = (Class)i.next();
- if (classExtends(pluginClass,superclass)){
- matchList.add(pluginClass);
- }
- }
- Class[] pluginArray = new Class[matchList.size()];
- return (Class[])matchList.toArray(pluginArray);
- }
-
- private boolean classExtends(Class testClass,Class superclass){
- if (testClass == null) { // end of hirearchy
- return false;
- }
- if (testClass == superclass) {
- return true;
- }
- return classExtends(testClass.getSuperclass(),superclass);
- }
-}