Revision 26870

View differences:

branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/ExtensionPointsSingleton.java
1
package com.iver.utiles.extensionPointsOld;
2

  
3
/**
4
 * @deprecated @see org.gvsig.tools.extensionPoint.ExtensionPointsSingleton
5
 */
6
public class ExtensionPointsSingleton extends ExtensionPoints {
7

  
8
	private static final long serialVersionUID = -630976693542039111L;
9
	
10
	private static ExtensionPoints extensionPoints = new ExtensionPointsSingleton();
11

  
12
	private ExtensionPointsSingleton() {
13
		super();
14
	}
15

  
16
	public static ExtensionPoints getInstance() {
17
		return ExtensionPointsSingleton.extensionPoints;
18
	}
19
}
0 20

  
branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/IExtensionBuilder.java
1
package com.iver.utiles.extensionPointsOld;
2

  
3
import java.util.Map;
4

  
5
/**
6
 * Interface utilizado para indicar al registro de extensiones que no se trata
7
 * de una clase lo que hey registrado, si no una instancia de un objeto a usar
8
 * para crear la extension.
9
 * 
10
 * 
11
 * @author jjdelcerro
12
 * @deprecated @see org.gvsig.tools.extensionPoint.IExtensionBuilder
13
 */
14
public interface IExtensionBuilder {
15
	/**
16
	 * Crea una instancia de la extension y la retorna.
17
	 * <br>
18
	 * @return
19
	 */
20
	public Object create();
21
	
22
	/**
23
	 * Crea una instancia de la extension y la retorna.
24
	 * <br>
25
	 * En <i>args</i> recibira la lista de argumeentos a utilizar
26
	 * para crear la extension.
27
	 * <br>
28
	 * @param args
29
	 * @return
30
	 */
31
	public Object create(Object [] args);
32
	
33
	public Object create(Map args);
34
}
0 35

  
branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/package.html
1
<html>
2
<body>
3
<p>
4
Este paquete expone un mecanismo para registro de clases.
5
</p>
6
<p>
7
Permite registrar clases o factorias de clases que luego pueden ser
8
recuperadas para construir instancias.
9
</p>
10
<p>
11
La finalidad de este registro es el manejo de puntos de extension a una
12
aplicacion. Una aplicacion declara o registra con un nombre los puntos de 
13
extension que va a tener. Cada punto de extension puede tener registradas una
14
o mas extensiones. Cuando se quiere a?adir una extension a la aplicacion, se
15
registra la clase o factoria que gestiona esa extension para el punto de extension
16
que se desee. 
17
</p>
18
<p>
19
Veamos esto con un ejemplo.
20
</p>
21
<p>
22
Supongamos que queremos a?adir un punto de extension a la aplicacion gvSIG, que
23
permita asignar un mecanismo de presentacion de la informacion asociada a la
24
herramienta de "informacion" especializada segun el tipo de tema sobre el que se
25
esta trabajando.
26
</p>
27
<p>
28
Lo primero que tendriamos que hacer es darle un nombre al punto de extension.
29
Lo llamaremos "InfoByPoint". Para esto, la aplicacion que valla a utilizar
30
las extensiones que se registren en este punto deberia hacer lo siguiente:
31
</p>
32
<pre>
33
  ExtensionPoint infoByPoint = new ExtensionPoint("InfoByPoint","Registra las distintas extensiones que se pueden a?adir al 'InfoByPoint'");
34
  ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
35
  
36
  extensionPoints.put(infoByPoint);
37
</pre>
38
<p>
39
Con esto creamos un punto de extension de nombre "InfoByPoint", recogemos la 
40
instancia del registro de extensiones e insertamos el nuevo punto de extenstion
41
en el.<br>
42
Normalmente esta operacion, en el contexto de gvSIG, se realizaria en la
43
inicializacion de la extension de andami en la que vallamos a a?adir
44
la herramienta de informacion.
45
</p>
46
<p>
47
Las extensiones a registrar en el "InfoByPoint" podrian consistir un un 
48
JPanel que gestione la presentacion a usar para el tema.
49
</p>
50
<p>
51
Luego, desde la parte de la aplicacion que necesite a?adir nueva funcionalidad
52
en este punto de extension, se deberia a?adir la extension. Por ejemplo
53
en la extension de andami de WMS, se podria a?adir a "InfoByPoint" la posibilidad
54
de usar una forma especial de presentacion. Podria hacerse:
55
</p>
56
<pre>
57
    ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
58
    extensionPoints.add("InfoByPoint","WMS",PanelQueGestionaLaExtension);
59
</pre>
60
<p>
61
Donde "PanelQueGestionaLaExtension" sera el JPanel que gestiona la extension para 
62
"InfoByPoint" de WMS.
63
</p>
64
<p>
65
Si quieran acceder a la extension de nombre "WMS"
66
se haria:
67
</p>
68
<pre>
69
    ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
70
    ExtensionPoint infoByPoint = (ExtensionPoint)extensionPoints.get("InfoByPoint");
71
    Object ext = infoByPoint.create("WMS");
72
</pre>
73
<p>
74
Y esto nos devolberia un objeto JPanel que gestiona la extension "WMS"
75
para el "InfoByPoint".
76
</p>
77
<p>
78
Si quisiesemos recorrer las distintas extensiones de ese punto podriamos
79
hacerlo asi:
80
</p>
81
<pre>
82
    ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
83
    ExtensionPoint infoByPoint = (ExtensionPoint)extensionPoints.get("InfoByPoint");
84
    Iterator infoByPoint =infoByPoint.keySet().iterator();
85
    while( i.hasNext() ) {
86
      String nombre = (String)i.next();
87
      ...
88
      // Y para crear los JPanel asociados a la extension...
89
      Object panel = infoByPoint.create(nombre);
90
      ...
91
    }
92
</pre>  
93
<p>
94
Ademas de registrar clases en un punto de extension, se pueden registrar
95
instancias que implementen el interface de IExtensionBuilder. En este caso, 
96
cuando se invoque al metodo "create" del punto de extension, en lugar
97
de crear una instancia, como no tiene la clase, este invocara al metodo
98
create del objeto que ha sido registrado.
99
</p>
100

  
101
<p>
102
Podemos encontrar un ejemplo de esto en la extension de JDBC para el 
103
catalogo. Como no existe una capa especifica para las capas JDBC, en lugar
104
de registrar en el punto de extension una clase "capa JDBC", se registra
105
una clase que implementa el interface IExtensionBuilder, que en su
106
metodo create construye una capa vectorial y la inicializa de la forma
107
apropiada para funcionar con la fuente de datos de JDBC.
108
</p>
109
<p>
110
Hay que tener en cuenta que para un punto de extension dado, deberia ser
111
trasparente que se registren en el clases o instancias que contruyen las clases.
112
E incluso que es posible mezclar en un punto de extension los dos
113
mecanismos, como es el caso del catalogo.
114
</p>
115
</body>
116
</html>
0 117

  
branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/ExtensionBuilder.java
1
package com.iver.utiles.extensionPointsOld;
2

  
3
import java.lang.reflect.Constructor;
4
import java.lang.reflect.InvocationTargetException;
5
import java.util.Map;
6

  
7
/**
8
 * Clase de utilidad usada para crear las extensiones.
9
 * 
10
 * Esta clase presenta un par de metodos estaticos para permitir crear un objeto
11
 * a partir de una clase.
12
 * 
13
 * @author jjdelcerro
14
 * @deprecated @see org.gvsig.tools.extensionPoint.ExtensionBuilder
15
 */
16
public abstract class ExtensionBuilder implements IExtensionBuilder {
17

  
18
	/**
19
	 * Crea un objeto de la clase indicada.
20
	 * 
21
	 * @param cls Clase de la que crear la instancia
22
	 * @return
23
	 * 
24
	 * @throws InstantiationException
25
	 * @throws IllegalAccessException
26
	 */
27
	public static Object create(Class cls) throws InstantiationException, IllegalAccessException {
28
		Object obj = null;
29

  
30
		if( cls == null ) {
31
			return null;
32
		}
33
		obj = cls.newInstance();
34
		return obj;
35
	}
36
	
37
	/**
38
	 * Crea un objeto de la clase indicada.
39
	 * 
40
	 * Crea un objeto de la clase indicada pasandole al constructor
41
	 * los argumentos indicados en <i>args</i>.
42
	 * <br>
43
	 * @param cls Clase de la que crear la instancia
44
	 * @param args Argumentos que pasar al constructor.
45
	 * @return
46
	 * 
47
	 * @throws SecurityException
48
	 * @throws NoSuchMethodException
49
	 * @throws IllegalArgumentException
50
	 * @throws InstantiationException
51
	 * @throws IllegalAccessException
52
	 * @throws InvocationTargetException
53
	 */
54
	public static Object create(Class cls, Object [] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
55
		Object obj = null;
56
		Constructor create = null;
57
		Class [] types = new Class[args.length];
58
		
59
		if( cls == null ) {
60
			return null;
61
		}
62
		for( int n=0 ; n<args.length ; n++ ) {
63
			Object arg = args[n]; 
64
			types[n] = arg.getClass();
65
		}
66
		create = cls.getConstructor(types);
67
		obj = create.newInstance(args);
68
		return obj;
69
	}
70
	/**
71
	 * Crea un objeto de la clase indicada.
72
	 * 
73
	 * Crea un objeto de la clase indicada pasandole al constructor
74
	 * un como argumento un Map..
75
	 * <br>
76
	 * @param cls Clase de la que crear la instancia
77
	 * @param args Map a pasar como argumento al constructor.
78
	 * @return
79
	 * 
80
	 * @throws SecurityException
81
	 * @throws NoSuchMethodException
82
	 * @throws IllegalArgumentException
83
	 * @throws InstantiationException
84
	 * @throws IllegalAccessException
85
	 * @throws InvocationTargetException
86
	 */
87
	public static Object create(Class cls, Map args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
88
		Object obj = null;
89
		Constructor create = null;
90
		Class [] types = new Class[1];
91
		Object [] argsx = new Object[1];
92
		
93
		if( cls == null ) {
94
			return null;
95
		}
96
		types[0] = Map.class;
97
		argsx[0] = args;
98
		create = cls.getConstructor(types);
99
		obj = create.newInstance(argsx);
100
		return obj;
101
	}
102
}
0 103

  
branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/ExtensionPoint.java
1
package com.iver.utiles.extensionPointsOld;
2

  
3
import java.lang.reflect.InvocationTargetException;
4
import java.security.KeyException;
5
import java.util.*;
6

  
7
/**
8
 * Esta clase permite registrar extensiones para un punto de extension. <br>
9
 * <br>
10
 * La clase se comporta como un Map que mantiene el orden de insercion de los
11
 * elementos, para que puedan ser recorridos en ese orden. <br>
12
 * Ademas de registrar las extensiones para un punto de extension, presenta
13
 * metodos para facilitar la creacion de la extension. <br>
14
 * A la hora de registrar una extension, mediante el metodo <i>put</i>, podremos
15
 * suministrarle una clase o una instancia que implemente el interface
16
 * IExtensionBuilder. Si le suministramos una clase, cuando queramos crear la
17
 * extension mediante el metodo <i>create</i>, se creara una instancia de la
18
 * clase y se retornara. Si lo que se suministro fue una instancia que
19
 * implementa el interface IExtensionBuilder, se invocara al metodo
20
 * <i>create</i> de esta para crear la extension. <br>
21
 * 
22
 * @author jjdelcerro
23
 * 
24
 * @deprecated @see org.gvsig.tools.extensionPoint.ExtensionPoint
25
 */
26
public class ExtensionPoint extends LinkedHashMap {
27

  
28
    private static final long serialVersionUID = -5908427725588553371L;
29

  
30
	private String name;
31
	private String description;
32
	private Hashtable extensionDescriptions = new Hashtable();
33
	private Hashtable aliases = new Hashtable();
34

  
35
	/**
36
	 * Construye un punto de extension.
37
	 * <br>
38
	 * @param extensionPointName Nombre del punto de extension.
39
	 */
40
	public ExtensionPoint(String extensionPointName) {
41
		this.name = extensionPointName;
42
	}
43
	
44
	/**
45
	 * Construye un punto de extension.
46
	 * <br>
47
	 * @param extensionPointName Nombre del punto de extension
48
	 * @param description Descripcion del punto de extension
49
	 */
50
	public ExtensionPoint(String extensionPointName, String description) {
51
		this.name = extensionPointName;
52
		this.description = description;
53
	}
54
	
55
	/**
56
	 * Retorna el nombre de punto de extension.
57
	 * <br>
58
	 * @return Nombre del punto de extension
59
	 */
60
	public String getName() {
61
		return this.name;
62
	}
63
	
64
	/**
65
	 * Retorna la descripcion asociada al punto de extension.
66
	 * <br>
67
	 * @return descripcion del punto de extension
68
	 */
69
	public String getDescription() {
70
		return this.description;
71
	}
72
	
73
	/**
74
	 * Asocia una descripcion al punto de extension.
75
	 * <br>
76
	 * 
77
	 * @param description
78
	 */
79
	public void setDescripcion(String description) {
80
		this.description = description;
81
	}
82
	
83
	/**
84
	 * Retorna la descripcion asociada a una extension.
85
	 * <br>
86
	 * @param key 
87
	 * <br>
88
	 * @return descripcion del punto de extension
89
	 */
90
	public String getExtensionDescription(String key) {
91
		return (String)this.extensionDescriptions.get(key);
92
	}
93
	
94
	/**
95
	 * Asocia una descripcion a una extension registrada.
96
	 * <br>
97
	 * 
98
	 * @param key Nombre de la extension
99
	 * @param description
100
	 */	
101
	public void setExtensionDescription(String key,String description) {
102
		if (this.containsKey(key)) {
103
			this.extensionDescriptions.put(key,description);
104
		}
105
	}
106
	
107
	/**
108
	 * A?ade una extension con su descripcion asociada
109
	 * 
110
	 * @param key clave de la extension
111
	 * @param decription descripcion de la extension
112
	 * @param value extension
113
	 */
114
	
115
	public Object put(String key, String description,Object value) {		
116
		this.extensionDescriptions.put(key,description);
117
		return super.put(key,value);
118
	}
119

  
120
	/**
121
	 * A?ade una extension antes de la indicada con beforeKey,
122
	 * con su descripcion asociada
123
	 * 
124
	 * @param key clave de la extension
125
	 * @param decription descripcion de la extension
126
	 * @param value extension
127
	 */
128
	
129
	public Object insert(String beforeKey, String key, String description,Object value) {		
130
		boolean mover = false;
131
		Map tmp = new LinkedHashMap();
132

  
133
		for (Iterator i = this.entrySet().iterator(); i.hasNext(); ) {
134
            Map.Entry e = (Map.Entry)i.next();
135
            if ( e.getKey().equals(beforeKey) ) {
136
            	mover = true;
137
            }
138
            if( mover ) {
139
            	tmp.put(e.getKey(), e.getValue());
140
            }
141
        }
142
		for (Iterator i = tmp.keySet().iterator(); i.hasNext(); ) {
143
			String key1 = (String)i.next();
144
			this.remove(key1);
145
		}
146
		if ( description!= null ) {
147
			this.extensionDescriptions.put(key,description);
148
		}
149
		Object returnValue = super.put(key,value);
150
		this.putAll(tmp);
151
		return returnValue;
152
	}
153
	
154
	/**
155
	 * Crea una extension.
156
	 * <br>
157
	 * Dado un nombre de extension asociada a este punto de extension, crea
158
	 * el objeto registrado para manejar la extension.
159
	 * <br>
160
	 * Si el objeto registrado para esa extension implementa el interface
161
	 * <i>IExtensionBuilder</i>, se invoca al metodo create para crear la instancia
162
	 * de la extension. 
163
	 * <br>
164
	 * Si no implementa este interface, debera ser una clase, y se creara una
165
	 * instancia de esa clase.
166
	 * <br>
167
	 * @param name Nombre de la extension a crear.
168
	 * @return La instancia creada de la extension.
169
	 * 
170
	 * @throws InstantiationException
171
	 * @throws IllegalAccessException
172
	 */
173
	public Object create(String name) throws InstantiationException, IllegalAccessException {
174
		Object extension = this.get(name);
175
		if (extension == null) {
176
			extension = this.get(this.aliases.get(name));
177
		}
178
		
179
		if( extension instanceof IExtensionBuilder ) {
180
			return ((IExtensionBuilder)extension).create();
181
		}
182
		return ExtensionBuilder.create((Class) extension);
183
	}
184
	
185
	/**
186
	 * Crea una extension.
187
	 * <br>
188
	 * Dado un nombre de extension asociada a este punto de extension, crea
189
	 * el objeto registrado para manejar la extension.
190
	 * <br>
191
	 * A la hora de crear la instancia de la extension, le pasara los parametros
192
	 * indicados en <i>args</i>.
193
	 * <br>
194
	 * Debido a que los argumentos se pasan como un array de objetos, no es posible
195
	 * pasar al constructor de la extension parametros de tipos basicos como <i>int</i>
196
	 * o <i>long</i>. Se deberan pasar como objetos y existir un constructor de la clase
197
	 * que los pueda recibir de esta manera.
198
	 * <br>
199
	 * @param name Nombre de la extension a crear.
200
	 * @param args Array de objetos a pasar como parametros en la construccion de la instancia de la extension.
201
	 * @return La instancia creada de la extension.
202
	 * 
203
	 * @throws SecurityException
204
	 * @throws NoSuchMethodException
205
	 * @throws IllegalArgumentException
206
	 * @throws InstantiationException
207
	 * @throws IllegalAccessException
208
	 * @throws InvocationTargetException
209
	 */
210
	public Object create(String name, Object [] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
211
		Object extension = this.get(name);
212
		if (extension == null) {
213
			extension = this.get(this.aliases.get(name));
214
		}
215
		
216
		if( extension instanceof IExtensionBuilder ) {
217
			return ((IExtensionBuilder)extension).create(args);
218
		}
219
		return ExtensionBuilder.create((Class) extension, args);
220
	}	
221

  
222
	public Object create(String name, Map args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
223
		Object extension = this.get(name);
224
		if (extension == null) {
225
			extension = this.get(this.aliases.get(name));
226
		}
227
		
228
		if( extension instanceof IExtensionBuilder ) {
229
			return ((IExtensionBuilder)extension).create(args);
230
		}
231
		return ExtensionBuilder.create((Class) extension, args);
232
	}
233
	
234
	/**
235
	 * Crea un alias para una extension registrada.
236
	 * <br>
237
	 * @param item Nombre de la extension registrada.
238
	 * @param alias alias a a?adir.
239
	 * 
240
	 **/	
241
	public void addAlias(String item, String alias) throws KeyException{
242
		if (!this.containsKey(item)) {
243
			throw new KeyException(item);
244
		}
245
		this.aliases.put(alias,item);		
246
	}
247
}
0 248

  
branches/v2_0_0_prep/libraries/libIverUtiles/src/com/iver/utiles/extensionPointsOld/ExtensionPoints.java
1
package com.iver.utiles.extensionPointsOld;
2

  
3
import java.util.TreeMap;
4

  
5
/**
6
 * Clase para registro de puntos de extension. <br>
7
 * <br>
8
 * 
9
 * @author jjdelcerro
10
 * @deprecated @see org.gvsig.tools.extensionPoint.ExtensionPoints
11
 */
12
public class ExtensionPoints extends TreeMap {
13

  
14

  
15
	private static final long serialVersionUID = -798417910971607414L;
16

  
17
	/**
18
	 * Evita que se a?adan elementos que no son puntos de extension.
19
	 * <br>
20
	 * <br>
21
	 * Aunque la clase se comporta como un <i>Map</i>, no esta permitido
22
	 * a?adir a esta objetos que no sean de la clase <i>ExtensionPoint</i>.
23
	 * Si intentamos a?adir un elemento que no sea de esta clase, se disparara 
24
	 * una excepcion ClassCastException.
25
	 * <br>
26
	 * <br>
27
	 * @see java.util.Map#put(java.lang.Object, java.lang.Object)
28
	 */
29
	public Object put(Object key, Object value) throws ClassCastException  {
30
		throw  new ClassCastException();
31
	}
32
	
33
	/**
34
	 * A?ade un punto de extension al registro de puntos de extension.
35
	 * <br>
36
	 * <br>
37
	 * Mediante este metodo puede a?adir un punto de extension al registro
38
	 * de puntos de extension, llevandose detras todas las extensiones que
39
	 * esten registradas en el.
40
	 * <br>
41
	 * <br>
42
	 * En caso de que ya existiese un punto de extension con el nombre dado,
43
	 * a?adira a este las extensiones del punto de extension suministrado.
44
	 * <br>
45
	 * <br>  
46
	 * @param value Punto de extension a registrar 
47
	 * @return
48
	 *  
49
	 */	
50
	public Object put(ExtensionPoint value) {
51
		return put(value.getName(),value);
52
	}
53
	
54
	/**
55
	 * A?ade un punto de extension al registro de puntos de extension.
56
	 * <br>
57
	 * <br>
58
	 * Mediante este metodo puede a?adir un punto de extension al registro
59
	 * de puntos de extension, llevandose detras todas las extensiones que
60
	 * esten registradas en el.
61
	 * <br>
62
	 * <br>
63
	 * En caso de que ya existiese un punto de extension con el nombre dado,
64
	 * a?adira a este las extensiones del punto de extension suministrado.
65
	 * <br>
66
	 * <br>
67
	 * Cuando se a?ade un punto de extension, es imprescindible que <i>key</i> y 
68
	 * el nombre del punto de extension que se este a?adiendo coincidan.
69
	 * <br>
70
	 * <br>
71
	 * @param key Nombre del punto de extension 
72
	 * @param value Punto de extension a registrar 
73
	 * @return
74
	 *  
75
	 */
76
	public Object put(String key, ExtensionPoint value) {
77
		if ( !value.getName().equals(key) ) {
78
			throw new IllegalArgumentException ();
79
		}
80
		ExtensionPoint n = (ExtensionPoint)super.get(key);
81
		if( n == null ) {
82
			return super.put(key,value);
83
		}
84
		// Como estamos actualizando un punto de extension, a?adimos a este las
85
		// extensiones del que nos acaban de suministrar.
86
		n.putAll(value);
87
		return value;
88
	}
89
	
90
	/**
91
	 * Registra una extension en un punto de extension.
92
	 * <br>
93
	 * <br>
94
	 * Mediante este metodo puede registrar sobre un punto de extension
95
	 * una extension. La extension esta identificada mediante un nombre
96
	 * unico, y una clase que se usara para manejar la extension o una
97
	 * clase que contruira el objeto que maneje la extension. 
98
	 * <br>
99
	 * <br>
100
	 * Si ya existe en el punto de extension indicado por <i>extensionPointName</i>
101
	 * una extension con el nombre <i>name</i>, esta sera sustituida por la
102
	 * nueva extension.
103
	 * <br>
104
	 * @param extensionPointName Nombre del punto de extension
105
	 * @param name Nombre o identificador de la extension
106
	 * @param data Clase que implementa la extension o que la construye. 
107
	 * 
108
	 *  
109
	 */
110
	public void add(String extensionPointName, String name, Object data) {
111
		ExtensionPoint extensionPoint = (ExtensionPoint)super.get(extensionPointName);
112
		if( extensionPoint == null ) {
113
			extensionPoint = new ExtensionPoint(extensionPointName);
114
			super.put(extensionPoint.getName(), extensionPoint);
115
		}
116
		
117
		extensionPoint.put(name, data);
118
	}
119

  
120
	/**
121
	 * Registra una extension en un punto de extension.
122
	 * <br>
123
	 * <br>
124
	 * Mediante este metodo puede registrar sobre un punto de extension
125
	 * una extension. La extension esta identificada mediante un nombre
126
	 * unico, y una clase que se usara para manejar la extension o una
127
	 * clase que contruira el objeto que maneje la extension. 
128
	 * <br>
129
	 * <br>
130
	 * Si ya existe en el punto de extension indicado por <i>extensionPointName</i>
131
	 * una extension con el nombre <i>name</i>, esta sera sustituida por la
132
	 * nueva extension.
133
	 * <br>
134
	 * @param extensionPointName Nombre del punto de extension
135
	 * @param name Nombre o identificador de la extension
136
	 * @param description descripcion de la extension.
137
	 * @param data Clase que implementa la extension o que la construye. 
138
	 * 
139
	 *  
140
	 */
141
	public void add(String extensionPointName, String name, String description, Object data) {
142
		ExtensionPoint extensionPoint = (ExtensionPoint)super.get(extensionPointName);
143
		if( extensionPoint == null ) {
144
			extensionPoint = new ExtensionPoint(extensionPointName);			
145
			super.put(extensionPoint.getName(), extensionPoint);
146
		}
147
		
148
		extensionPoint.put(name,description, data);
149
	}
150

  
151
}
0 152

  

Also available in: Unified diff