1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.wizard; 21 22 import java.io.IOException ; 23 import java.io.InputStream ; 24 import java.util.Collection ; 25 import java.util.HashMap ; 26 import java.util.Map ; 27 28 import javax.xml.parsers.ParserConfigurationException ; 29 30 import org.netbeans.modules.xml.wsdl.ui.spi.ExtensibilityElementTemplateProvider; 31 import org.netbeans.modules.xml.wsdl.ui.view.wizard.localized.LocalizedTemplateGroup; 32 import org.openide.ErrorManager; 33 import org.openide.util.Lookup; 34 import org.xml.sax.SAXException ; 35 36 public class ExtensibilityElementTemplateFactory { 37 38 private static Map <String , TemplateGroup> templateGroupMap; 39 private static Map <String , ExtensibilityElementTemplateProvider> providerMap; 40 41 private static Map <TemplateGroup, LocalizedTemplateGroup> localizedTemplateGroupMap; 42 43 public ExtensibilityElementTemplateFactory() { 44 initialise(); 45 localizedTemplateGroupMap = new HashMap (); 46 47 } 48 49 private void initialise() { 50 lookupProviders(); 51 } 52 53 public TemplateGroup getExtensibilityElementTemplateGroup(String namespace) { 54 if (templateGroupMap == null || namespace == null) return null; 55 return templateGroupMap.get(namespace); 56 } 57 58 public Collection <TemplateGroup> getExtensibilityElementTemplateGroups() { 59 if (templateGroupMap == null) return null; 60 return templateGroupMap.values(); 61 } 62 63 public String getLocalizedMessage(String namespace, String str, Object [] objs) { 64 assert namespace != null : "namespace cannot be null"; 65 assert str != null : "message key cannot be null"; 66 67 ExtensibilityElementTemplateProvider provider = providerMap.get(namespace); 68 if (provider != null) { 69 return provider.getLocalizedMessage(str, objs); 70 } 71 72 return null; 73 } 74 75 public LocalizedTemplateGroup getLocalizedTemplateGroup(TemplateGroup group) { 76 String namespace = group.getNamespace(); 77 ExtensibilityElementTemplateProvider provider = providerMap.get(namespace); 78 79 assert provider != null : "ExtensibilityElementTemplateProvider cannot be null"; 80 LocalizedTemplateGroup localTemplateGroup = localizedTemplateGroupMap.get(group); 81 if(localTemplateGroup == null) { 82 localTemplateGroup = new LocalizedTemplateGroup(group, provider); 83 localizedTemplateGroupMap.put(group, localTemplateGroup); 84 } 85 86 return localTemplateGroup; 87 88 } 89 90 private synchronized void lookupProviders() { 91 if(templateGroupMap != null) 92 return; 93 94 templateGroupMap = new HashMap <String , TemplateGroup>(); 95 providerMap = new HashMap <String , ExtensibilityElementTemplateProvider>(); 96 97 Lookup.Result result = Lookup.getDefault().lookup( 98 new Lookup.Template(ExtensibilityElementTemplateProvider.class)); 99 100 for(Object obj: result.allInstances()) { 101 ExtensibilityElementTemplateProvider provider = (ExtensibilityElementTemplateProvider) obj; 102 InputStream stream = provider.getTemplateInputStream(); 103 if (stream != null) { 104 TemplateGroup group; 105 try { 106 group = TemplateGroup.read(stream); 107 templateGroupMap.put(group.getNamespace(), group); 108 providerMap.put(group.getNamespace(), provider); 109 } catch (ParserConfigurationException e) { 110 ErrorManager.getDefault().notify(e); 111 } catch (SAXException e) { 112 ErrorManager.getDefault().notify(e); 113 } catch (IOException e) { 114 ErrorManager.getDefault().notify(e); 115 } 116 } 117 } 118 119 } 120 121 } 122 | Popular Tags |