summaryrefslogtreecommitdiffstats
path: root/src/jake2/game/SuperAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jake2/game/SuperAdapter.java')
-rw-r--r--src/jake2/game/SuperAdapter.java87
1 files changed, 58 insertions, 29 deletions
diff --git a/src/jake2/game/SuperAdapter.java b/src/jake2/game/SuperAdapter.java
index 67285aa..29dcfb5 100644
--- a/src/jake2/game/SuperAdapter.java
+++ b/src/jake2/game/SuperAdapter.java
@@ -19,51 +19,80 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// Created on 09.01.2004 by RST.
-// $Id: SuperAdapter.java,v 1.1 2004-07-07 19:59:24 hzi Exp $
+// $Id: SuperAdapter.java,v 1.2 2004-08-20 21:29:58 salomo Exp $
package jake2.game;
import jake2.qcommon.Com;
+import java.util.Hashtable;
import java.util.Vector;
+public class SuperAdapter
+{
-// import jake2.*;
-// import jake2.client.*;
-// import jake2.game.*;
-// import jake2.qcommon.*;
-// import jake2.render.*;
-// import jake2.server.*;
-
-public class SuperAdapter {
-
- // registration
- private static void register(SuperAdapter sa)
+ /** Adapter registration. */
+ private static void register(SuperAdapter sa, String id)
{
- adapters.add(sa);
- //Com.Println("registering adapter " + sa.getID() + " (" + sa.getClass().getSuperclass() + ")");
+ adapters.put(id, sa);
}
-
- private static int id=0;
- private static Vector adapters = new Vector();
-
-
- private static SuperAdapter find(int num)
+
+ /** Adapter repository. */
+ private static Hashtable adapters= new Hashtable();
+
+ /** Returns the adapter from the repository given by its ID. */
+ public static SuperAdapter getFromID(String key)
{
- return (SuperAdapter) adapters.elementAt(num);
+ System.out.println("SuperAdapter.getFromID(\"" + key + "\")");
+ SuperAdapter sa = (SuperAdapter) adapters.get(key);
+
+ // try to create the adapter
+ if (sa == null)
+ {
+ System.out.println("adapter not found:" + key);
+ int pos = key.indexOf('$');
+ String classname = key;
+ if (pos != -1)
+ classname = key.substring(0, pos);
+
+ // load class and instantiate
+ try
+ {
+ System.err.println("loading class " + classname);
+ Class.forName(classname).newInstance();
+ }
+ catch(Exception e)
+ {
+ System.err.println("jake2: class not found:" + classname);
+ }
+
+ // try it again...
+ sa = (SuperAdapter) adapters.get(key);
+
+ if (sa == null)
+ System.err.println("jake2: could not load adapter:" + key);
+ }
+
+ return sa;
}
-
- // constructor
+
+ /** Constructor, does the adapter registration. */
public SuperAdapter()
- {
- adapterid = id++;
- register(this);
+ {
+ StackTraceElement tr[] = new Throwable().getStackTrace();
+ adapterid= tr[2].getClassName();
+ if (adapterid == "")
+ new Throwable("error in creating an adapter id!").printStackTrace();
+ else
+ register(this, adapterid);
}
-
- public int getID()
+
+ /** Returns the Adapter-ID. */
+ public String getID()
{
return adapterid;
}
- private int adapterid;
+ /** Adapter id. */
+ private String adapterid;
}