* @param handler The mixin handler.
* @throws MetadataException if a mixin's .metadata file fails to parse.
*/
public static void forEachReferencedMixin(Element rootElement, URL baseMetaFolderURL, MixinNamespaceHandler handler)
{
final HolderDeque mixinSet = new HashDeque(4);
XMLUtil.ElementHandler mixinElementHandler = new XMLUtil.ElementHandler()
{
public void handleElement(Element element)
{
mixinSet.add(new Pair(XMLUtil.getStringAttr(element, "namespace", ""), new Pair(XMLUtil.getStringAttr(element,
"version", ""), XMLUtil.getStringAttr(element, "checksum", ""))));
}
};
forEachMixin(baseMetaFolderURL, mixinElementHandler);
forEachMixin(rootElement, mixinElementHandler);
Holder registeredList = new HashHolder(mixinSet.size());
while (!mixinSet.isEmpty())
{
Pair p = (Pair)mixinSet.removeFirst();
if (registeredList.add(p))
{
String sNamespace = (String)p.getHead();