KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cintoo > messages > bundle > xml > XmlResourceBundle


1 package cintoo.messages.bundle.xml;
2
3 import api.cintoo.messages.bundle.BaseBundle;
4 import org.apache.commons.digester.Digester;
5 import org.xml.sax.SAXException JavaDoc;
6
7 import java.io.FileNotFoundException JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.InputStream JavaDoc;
10 import java.util.*;
11
12 public class XmlResourceBundle extends BaseBundle {
13
14   protected Locale locale;
15
16   protected Map<String JavaDoc, String JavaDoc> properties;
17
18   public XmlResourceBundle(InputStream JavaDoc input, Locale locale) throws IOException JavaDoc {
19     super();
20     this.locale = locale;
21
22     properties = new HashMap<String JavaDoc, String JavaDoc>();
23
24     Digester digester = new Digester();
25     configure(digester);
26     digester.push(this);
27
28     // Parse the XML document
29
try {
30       digester.parse(input);
31     } catch (FileNotFoundException JavaDoc e) {
32       throw new IOException JavaDoc(e.getMessage());
33     } catch (IOException JavaDoc e) {
34       throw new IOException JavaDoc(e.getMessage());
35     } catch (SAXException JavaDoc e) {
36       throw new IOException JavaDoc(e.getMessage());
37     }
38   }
39
40   public Object JavaDoc handleGetObject(String JavaDoc key) {
41     Object JavaDoc object = null;
42     if (properties != null) {
43       object = properties.get(key);
44     }
45     return object;
46   }
47
48   public void addProperty(Property property) {
49     properties.put(property.getKey(), property.getValue());
50   }
51
52   public Enumeration<String JavaDoc> getKeys() {
53     return Collections.enumeration(properties.keySet());
54   }
55
56   public Locale getLocale() {
57     return locale;
58   }
59
60   protected Digester configure(Digester digester) {
61     digester.addObjectCreate("properties/property", Property.class);
62     digester.addSetNext("properties/property", "addProperty", "cintoo.messages.bundle.xml.Property");
63     digester.addBeanPropertySetter("properties/property", "value");
64     digester.addSetProperties("properties/property", "key", "key");
65     return digester;
66   }
67 }
Popular Tags