All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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