KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > wizard > ExtensibilityElementTemplateFactory


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.ui.view.wizard;
21
22 import java.io.IOException JavaDoc;
23 import java.io.InputStream JavaDoc;
24 import java.util.Collection JavaDoc;
25 import java.util.HashMap JavaDoc;
26 import java.util.Map JavaDoc;
27
28 import javax.xml.parsers.ParserConfigurationException JavaDoc;
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 JavaDoc;
35
36 public class ExtensibilityElementTemplateFactory {
37
38     private static Map JavaDoc<String JavaDoc, TemplateGroup> templateGroupMap;
39     private static Map JavaDoc<String JavaDoc, ExtensibilityElementTemplateProvider> providerMap;
40     
41     private static Map JavaDoc<TemplateGroup, LocalizedTemplateGroup> localizedTemplateGroupMap;
42     
43     public ExtensibilityElementTemplateFactory() {
44         initialise();
45         localizedTemplateGroupMap = new HashMap JavaDoc();
46         
47     }
48
49     private void initialise() {
50         lookupProviders();
51     }
52     
53     public TemplateGroup getExtensibilityElementTemplateGroup(String JavaDoc namespace) {
54         if (templateGroupMap == null || namespace == null) return null;
55         return templateGroupMap.get(namespace);
56     }
57     
58     public Collection JavaDoc<TemplateGroup> getExtensibilityElementTemplateGroups() {
59         if (templateGroupMap == null) return null;
60         return templateGroupMap.values();
61     }
62     
63     public String JavaDoc getLocalizedMessage(String JavaDoc namespace, String JavaDoc str, Object JavaDoc[] 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 JavaDoc 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 JavaDoc<String JavaDoc, TemplateGroup>();
95         providerMap = new HashMap JavaDoc<String JavaDoc, ExtensibilityElementTemplateProvider>();
96         
97         Lookup.Result result = Lookup.getDefault().lookup(
98                 new Lookup.Template(ExtensibilityElementTemplateProvider.class));
99         
100         for(Object JavaDoc obj: result.allInstances()) {
101             ExtensibilityElementTemplateProvider provider = (ExtensibilityElementTemplateProvider) obj;
102             InputStream JavaDoc 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 JavaDoc e) {
110                     ErrorManager.getDefault().notify(e);
111                 } catch (SAXException JavaDoc e) {
112                     ErrorManager.getDefault().notify(e);
113                 } catch (IOException JavaDoc e) {
114                     ErrorManager.getDefault().notify(e);
115                 }
116             }
117         }
118         
119     }
120     
121 }
122
Popular Tags