Community
Participate
Working Groups
Found another problem where two plugins cannot implement the same extension point with the same library name (eg, "bin"). The reason is the following code in AntCorePlugin. Notice the way the hash map is used, the last one in wins. /** * Given an extension point name, extract its extensions and return them * as a Map. It uses as keys the attribute specified by the key parameter. */ private Map extractExtensions(String point, String key) { IExtensionPoint extensionPoint = getDescriptor().getExtensionPoint(point); if (extensionPoint == null) return null; IConfigurationElement[] extensions = extensionPoint.getConfigurationElements(); Map result = new HashMap(extensions.length); for (int i = 0; i < extensions.length; i++) { String name = extensions[i].getAttribute(key); result.put(name, extensions[i]); } return result; }
The use of Maps as the data structures was just wrong. Moved to use Lists. Fixed in AntCorePlugin and AntCorePreferences. Please verify
Verified code. Looks good.