Revision 24261
branches/v2_0_0_prep/libraries/libTools/src/org/gvsig/tools/locator/AbstractLocator.java | ||
---|---|---|
27 | 27 |
package org.gvsig.tools.locator; |
28 | 28 |
|
29 | 29 |
import java.util.HashMap; |
30 |
import java.util.List; |
|
30 | 31 |
import java.util.Map; |
31 |
import java.util.Set; |
|
32 | 32 |
|
33 | 33 |
import org.gvsig.tools.extensionpoint.ExtensionPoint; |
34 |
import org.gvsig.tools.extensionpoint.ExtensionPoints;
|
|
35 |
import org.gvsig.tools.extensionpoint.ExtensionPointsSingleton;
|
|
34 |
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
|
|
35 |
import org.gvsig.tools.extensionpoint.impl.DefaultExtensionPointManager;
|
|
36 | 36 |
|
37 | 37 |
/** |
38 | 38 |
* Locator implementation based on the use of the ExtensionPoints. |
... | ... | |
66 | 66 |
|
67 | 67 |
public String[] getNames() { |
68 | 68 |
ExtensionPoint extensionPoint = getExtensionPoint(); |
69 |
Set names = extensionPoint.keySet();
|
|
69 |
List names = extensionPoint.getNames();
|
|
70 | 70 |
return names == null || names.size() == 0 ? null |
71 | 71 |
: (String[]) names |
72 | 72 |
.toArray(new String[names.size()]); |
73 | 73 |
} |
74 | 74 |
|
75 | 75 |
public void register(String name, Class clazz) { |
76 |
ExtensionPointsSingleton.getInstance()
|
|
77 |
.add(getLocatorName(), name, clazz);
|
|
76 |
DefaultExtensionPointManager.getManager().add(getLocatorName())
|
|
77 |
.append(name, null, clazz);
|
|
78 | 78 |
} |
79 | 79 |
|
80 | 80 |
public void registerDefault(String name, Class clazz) { |
... | ... | |
85 | 85 |
} |
86 | 86 |
|
87 | 87 |
public void register(String name, String description, Class clazz) { |
88 |
ExtensionPointsSingleton.getInstance().add(getLocatorName(), name, |
|
88 |
DefaultExtensionPointManager.getManager().add(getLocatorName()) |
|
89 |
.append(name, |
|
89 | 90 |
description, clazz); |
90 | 91 |
} |
91 | 92 |
|
... | ... | |
97 | 98 |
} |
98 | 99 |
|
99 | 100 |
public void register(String name, LocatorObjectFactory factory) { |
100 |
ExtensionPointsSingleton.getInstance().add(getLocatorName(), name, |
|
101 |
DefaultExtensionPointManager.getManager().add(getLocatorName()).append( |
|
102 |
name, null, |
|
101 | 103 |
factory); |
102 | 104 |
} |
103 | 105 |
|
104 | 106 |
public void register(String name, String description, |
105 | 107 |
LocatorObjectFactory factory) { |
106 |
ExtensionPointsSingleton.getInstance().add(getLocatorName(), name, |
|
108 |
DefaultExtensionPointManager.getManager().add(getLocatorName()).append( |
|
109 |
name, |
|
107 | 110 |
description, factory); |
108 | 111 |
} |
109 | 112 |
|
... | ... | |
115 | 118 |
* Returns the ExtensionPoint to use for the Locator values. |
116 | 119 |
*/ |
117 | 120 |
private ExtensionPoint getExtensionPoint() { |
118 |
ExtensionPoints extensionPoints = ExtensionPointsSingleton
|
|
119 |
.getInstance();
|
|
121 |
ExtensionPointManager manager = DefaultExtensionPointManager
|
|
122 |
.getManager();
|
|
120 | 123 |
String moduleName = getLocatorName(); |
121 | 124 |
// synchronize the retrieval of the ExtensionPoint |
122 | 125 |
synchronized (lock) { |
123 |
|
|
124 |
ExtensionPoint extensionPoint = (ExtensionPoint) extensionPoints |
|
125 |
.get(moduleName); |
|
126 |
|
|
126 |
ExtensionPoint extensionPoint = manager.get(moduleName); |
|
127 | 127 |
if (extensionPoint == null) { |
128 |
extensionPoint = new ExtensionPoint(moduleName); |
|
129 |
extensionPoints.put(moduleName, extensionPoint); |
|
128 |
extensionPoint = manager.add(moduleName); |
|
130 | 129 |
} |
131 |
|
|
132 | 130 |
return extensionPoint; |
133 | 131 |
} |
134 | 132 |
} |
branches/v2_0_0_prep/libraries/libTools/src/org/gvsig/tools/ToolsLocator.java | ||
---|---|---|
25 | 25 |
*/ |
26 | 26 |
private static final ToolsLocator instance = new ToolsLocator(); |
27 | 27 |
|
28 |
private static final ExtensionPointManager extensionPointManager = new DefaultExtensionPointManager(); |
|
29 |
|
|
30 | 28 |
/** |
31 | 29 |
* Return the singleton instance. |
32 | 30 |
* |
... | ... | |
102 | 100 |
} |
103 | 101 |
|
104 | 102 |
public static ExtensionPointManager getExtensionPointManager() { |
105 |
return extensionPointManager;
|
|
103 |
return DefaultExtensionPointManager.getManager();
|
|
106 | 104 |
} |
107 | 105 |
} |
branches/v2_0_0_prep/libraries/libTools/src/org/gvsig/tools/extensionpoint/ExtensionPointManager.java | ||
---|---|---|
78 | 78 |
*/ |
79 | 79 |
public ExtensionPoint add(String name, String description); |
80 | 80 |
|
81 |
public ExtensionPoint add(String name); |
|
81 | 82 |
|
83 |
|
|
82 | 84 |
} |
branches/v2_0_0_prep/libraries/libTools/src/org/gvsig/tools/extensionpoint/impl/DefaultExtensionPointManager.java | ||
---|---|---|
15 | 15 |
|
16 | 16 |
public class DefaultExtensionPointManager implements ExtensionPointManager { |
17 | 17 |
|
18 |
private static DefaultExtensionPointManager manager = null; |
|
19 |
|
|
18 | 20 |
private Map extensionsPoints; |
19 | 21 |
|
20 | 22 |
public DefaultExtensionPointManager() { |
21 | 23 |
this.extensionsPoints = new HashMap(); |
22 | 24 |
} |
23 | 25 |
|
26 |
public static DefaultExtensionPointManager getManager() { |
|
27 |
if (manager == null) { |
|
28 |
manager = new DefaultExtensionPointManager(); |
|
29 |
} |
|
30 |
return manager; |
|
31 |
} |
|
32 |
|
|
24 | 33 |
public Object create(Class cls) throws InstantiationException, |
25 | 34 |
IllegalAccessException { |
26 | 35 |
Object obj = null; |
... | ... | |
80 | 89 |
return true; |
81 | 90 |
} |
82 | 91 |
|
83 |
public ExtensionPoint add(String name, String description) { |
|
92 |
public synchronized ExtensionPoint add(String name, String description) {
|
|
84 | 93 |
ExtensionPoint ep = (ExtensionPoint) this.extensionsPoints.get(name); |
85 | 94 |
if (ep == null) { |
86 | 95 |
ep = new DefaultExtensionPoint(this, name, description); |
... | ... | |
89 | 98 |
return ep; |
90 | 99 |
} |
91 | 100 |
|
101 |
public ExtensionPoint add(String name) { |
|
102 |
return add(name, null); |
|
103 |
} |
|
104 |
|
|
92 | 105 |
public ExtensionPoint.Extension add(String name, String description, |
93 | 106 |
String extName, |
94 | 107 |
String extDescription, Class extension) { |
Also available in: Unified diff