private void validatePlugins(Element parent) {
NodeList list = getChildrenByName(parent, "plugin");
for (int i = 0; i < list.getLength(); i++) {
if (fMonitor.isCanceled())
return;
Element plugin = (Element) list.item(i);
assertAttributeDefined(plugin, "id", CompilerFlags.ERROR);
assertAttributeDefined(plugin, "version", CompilerFlags.ERROR);
NamedNodeMap attributes = plugin.getAttributes();
boolean isFragment = plugin.getAttribute("fragment").equals("true");
for (int j = 0; j < attributes.getLength(); j++) {
Attr attr = (Attr) attributes.item(j);
String name = attr.getName();
if (name.equals("id")) {
validatePluginExists(plugin, attr, isFragment);
} else if (name.equals("version")) {
validateVersionAttribute(plugin, attr);
validateVersion(plugin, attr);
} else if (name.equals("fragment") || name.equals("unpack")) {
validateBoolean(plugin, attr);
} else if (!name.equals("os") && !name.equals("ws") && !name.equals("nl")
&& !name.equals("arch") && !name.equals("download-size")
&& !name.equals("install-size") && !name.equals("filter")) {
reportUnknownAttribute(plugin, name, CompilerFlags.ERROR);
}
}
validateUnpack(plugin);
}
}