Este paquete expone un mecanismo para registro de clases.
Permite registrar clases o factorias de clases que luego pueden ser
recuperadas para construir instancias.
La finalidad de este registro es el manejo de puntos de extension a una
aplicacion. Una aplicacion declara o registra con un nombre los puntos de
extension que va a tener. Cada punto de extension puede tener registradas una
o mas extensiones. Cuando se quiere aņadir una extension a la aplicacion, se
registra la clase o factoria que gestiona esa extension para el punto de extension
que se desee.
Veamos esto con un ejemplo.
Supongamos que queremos aņadir un punto de extension a la aplicacion gvSIG, que
permita asignar un mecanismo de presentacion de la informacion asociada a la
herramienta de "informacion" especializada segun el tipo de tema sobre el que se
esta trabajando.
Lo primero que tendriamos que hacer es darle un nombre al punto de extension.
Lo llamaremos "InfoByPoint". Para esto, parte de la aplicacion que valla a utilizar
las extensiones que se registren en este punto deberia hacer lo siguiente:
ExtensionPoint infoByPoint = new ExtensionPoint("InfoByPoint","Registra las distintas extensiones que se pueden aņadir al 'InfoByPoint'");
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
extensionPoints.put(infoByPoint);
Con esto creamos un punto de extension de nombre "InfoByPoint", recogemos la
instancia del registro de extensiones e insertamos el nuevo punto de extenstion
en el.
Si desde la parte de la aplicacion que se quieran acceder a la extension de nombre "MiLayer"
se haria:
ExtensionPoint infoByPoint = (ExtensionPoint)extensionPoints.get("InfoByPoint");
Object ext = infoByPoint.create("MiLayer");
Y para poder recorrer las distintas extensiones de ese punto:
ExtensionPoint infoByPoint = (ExtensionPoint)extensionPoints.get("InfoByPoint");
Iterator infoByPoint =infoByPoint.keySet().iterator();
while( i.hasNext() ) {
String nombre = (String)i.next();
...
}