
net.jangaroo.jooc.mxml.MxmlComponentRegistry Maven / Gradle / Ivy
The newest version!
package net.jangaroo.jooc.mxml;
import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A global registry for MXML namespaces that map elements to ActionScript class names.
*/
public class MxmlComponentRegistry {
/**
* namespace -> local element name -> fully qualified AS3 class name
*/
private Map registry = new HashMap();
private Map> qNamesByClassName = new HashMap>();
public void registerElement(String namespace, String localName, String classQName) {
ComponentPackageModel componentPackageModel = registry.get(namespace);
if (componentPackageModel == null) {
componentPackageModel = new ComponentPackageModel(namespace);
registry.put(namespace, componentPackageModel);
}
componentPackageModel.addElementToClassNameMapping(localName, classQName);
List qNames = qNamesByClassName.get(classQName);
if (qNames == null) {
qNames = new ArrayList();
qNamesByClassName.put(classQName, qNames);
}
qNames.add(new QName(namespace, localName));
}
public String getClassName(String namespace, String localName) {
ComponentPackageModel componentPackageModel = registry.get(namespace);
return componentPackageModel != null ? componentPackageModel.getClassName(localName) : null;
}
public void add(ComponentPackageModel componentPackageModel) {
String namespace = componentPackageModel.getNamespace();
for (Map.Entry entry : componentPackageModel.entrySet()) {
registerElement(namespace, entry.getKey(), entry.getValue());
}
}
public Collection getComponentPackageModels() {
return registry.values();
}
public ComponentPackageModel getComponentPackageModel(String namespace) {
return registry.get(namespace);
}
public List getQNamesByClassName(String className) {
return qNamesByClassName.get(className);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy