1 19 20 package org.netbeans.modules.xml.wsdl.ui.spi; 21 22 import java.util.HashMap ; 23 import java.util.Map ; 24 25 import javax.xml.namespace.QName ; 26 27 import org.netbeans.modules.xml.wsdl.model.ExtensibilityElement; 28 import org.openide.ErrorManager; 29 import org.openide.nodes.Node; 30 import org.openide.util.Lookup; 31 32 public class ExtensibilityElementConfiguratorFactory { 33 private static Map <QName , ExtensibilityElementConfigurator> configurators; 34 35 public ExtensibilityElementConfiguratorFactory() { 36 initialise(); 37 } 38 39 private void initialise() { 40 lookupFactories(); 41 } 42 43 public ExtensibilityElementConfigurator getExtensibilityElementConfigurator(QName qname) { 44 if (configurators == null || qname == null) return null; 45 return configurators.get(qname); 46 } 47 48 public Node.Property getNodeProperty(ExtensibilityElement element, QName qname, String attributeName) { 49 if (configurators == null) return null; 50 51 ExtensibilityElementConfigurator configurator = configurators.get(qname); 52 if (configurator != null) { 53 return configurator.getProperty(element, qname, attributeName); 54 } 55 return null; 56 } 57 58 private synchronized void lookupFactories() { 59 if(configurators != null) 60 return; 61 62 configurators = new HashMap <QName , ExtensibilityElementConfigurator>(); 63 64 Lookup.Result result = Lookup.getDefault().lookup( 65 new Lookup.Template(ExtensibilityElementConfigurator.class)); 66 67 for(Object obj: result.allInstances()) { 68 ExtensibilityElementConfigurator factory = (ExtensibilityElementConfigurator) obj; 69 70 for (QName qname : factory.getSupportedQNames()) { 71 if (configurators.containsKey(qname)) { 72 ErrorManager.getDefault().notify(new Exception ("There is a ExtensibilityConfigurator already present for this " + qname.toString())); 73 } 74 configurators.put(qname, factory); 75 } 76 } 77 78 } 79 } 80 | Popular Tags |