Allow custom classloaders to be used when loading PlaceManager
implementations and their ilk. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3267 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: PlaceRegistry.java,v 1.28 2004/08/27 02:12:34 mdb Exp $
|
// $Id$
|
||||||
//
|
//
|
||||||
// Narya library - tools for developing networked games
|
// Narya library - tools for developing networked games
|
||||||
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
||||||
@@ -110,10 +110,11 @@ public class PlaceRegistry
|
|||||||
throws InstantiationException, InvocationException
|
throws InstantiationException, InvocationException
|
||||||
{
|
{
|
||||||
PlaceManager pmgr = null;
|
PlaceManager pmgr = null;
|
||||||
|
ClassLoader loader = getClassLoader(config);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// load up the manager class
|
// load up the manager class
|
||||||
Class pmgrClass = Class.forName(config.getManagerClassName());
|
Class pmgrClass = loader.loadClass(config.getManagerClassName());
|
||||||
// create a place manager for this place
|
// create a place manager for this place
|
||||||
pmgr = (PlaceManager)pmgrClass.newInstance();
|
pmgr = (PlaceManager)pmgrClass.newInstance();
|
||||||
// let the pmgr know about us and its configuration
|
// let the pmgr know about us and its configuration
|
||||||
@@ -262,6 +263,22 @@ public class PlaceRegistry
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* By overriding this method, it is possible to customize the place
|
||||||
|
* registry to cause it to load the classes associated with a
|
||||||
|
* particular place via a custom class loader. That loader may enforce
|
||||||
|
* restricted privileges or obtain the classes from some special
|
||||||
|
* source.
|
||||||
|
*
|
||||||
|
* @return the class loader to use when instantiating the {@link
|
||||||
|
* PlaceManager} associated with the supplied {@link
|
||||||
|
* PlaceConfig}. This method <em>must not</em> return null.
|
||||||
|
*/
|
||||||
|
protected ClassLoader getClassLoader (PlaceConfig config)
|
||||||
|
{
|
||||||
|
return getClass().getClassLoader();
|
||||||
|
}
|
||||||
|
|
||||||
/** The invocation manager with which we operate. */
|
/** The invocation manager with which we operate. */
|
||||||
protected InvocationManager _invmgr;
|
protected InvocationManager _invmgr;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user