KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > extensions > ExtensionDescriptorMessageResources


1 /*
2  */

3 package com.sslexplorer.extensions;
4
5 import java.util.HashMap JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.Locale JavaDoc;
8 import java.util.Properties JavaDoc;
9
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.apache.struts.util.MessageResources;
13 import org.jdom.Element;
14 import org.jdom.JDOMException;
15
16
17 class ExtensionDescriptorMessageResources extends MessageResources {
18   
19   final Log log = LogFactory.getLog(ExtensionDescriptorMessageResources.class);
20   
21   HashMap JavaDoc locales;
22
23   ExtensionDescriptorMessageResources(Element element, ExtensionDescriptorMessageResourcesFactory factory, String JavaDoc config) throws JDOMException {
24     super(factory, config, true);
25     locales = new HashMap JavaDoc();
26     for(Iterator JavaDoc i = element.getChildren().iterator(); i.hasNext(); ) {
27       Element el = (Element)i.next();
28       if(!el.getName().equals("message")) {
29         throw new JDOMException("<messages> element may only contain <message> elements.");
30       }
31       String JavaDoc key = el.getAttributeValue("key");
32       if(key == null) {
33         throw new JDOMException("<message> element must have a key attribute.");
34       }
35       String JavaDoc localeName = el.getAttributeValue("locale");
36       if(localeName == null) {
37         localeName = "";
38       }
39       Properties JavaDoc localeResources = (Properties JavaDoc)locales.get(localeName);
40       if(localeResources == null) {
41         localeResources = new Properties JavaDoc();
42         locales.put(localeName, localeResources);
43       }
44       localeResources.put(key, el.getText());
45     }
46   }
47
48   /* (non-Javadoc)
49    * @see org.apache.struts.util.MessageResources#getMessage(java.util.Locale, java.lang.String)
50    */

51   public String JavaDoc getMessage(Locale JavaDoc locale, String JavaDoc key) {
52     String JavaDoc localeKey = locale.getCountry() + "_" + locale.getVariant();
53     Properties JavaDoc resources = (Properties JavaDoc)locales.get(localeKey);
54     if(resources == null) {
55       resources = (Properties JavaDoc)locales.get("");
56       if(resources == null) {
57         return null;
58       }
59       else {
60         return resources.getProperty(key);
61       }
62     }
63     else {
64       return resources.getProperty(key);
65     }
66   }
67 }
Popular Tags