KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ubermq > jms > server > journal > impl > XMLSettingsRepository


1 package com.ubermq.jms.server.journal.impl;
2
3 import java.beans.*;
4 import java.io.*;
5 import java.util.*;
6
7 import com.ubermq.jms.server.ServerConfig;
8 import com.ubermq.jms.server.journal.ISettingsRepository;
9 import com.ubermq.kernel.Configurator;
10 import sun.security.krb5.internal.crypto.d;
11
12 /**
13  * A journal implementation that stores the arbitrary objects to disk in
14  * XML format.
15  */

16 public class XMLSettingsRepository implements ISettingsRepository
17 {
18     private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(XMLSettingsRepository.class);
19     
20     private Map entries;
21     private String JavaDoc name;
22
23     public XMLSettingsRepository(String JavaDoc fileName)
24         throws java.io.FileNotFoundException JavaDoc, java.io.IOException JavaDoc
25     {
26         entries = new HashMap();
27         name = fileName;
28         restore();
29     }
30
31     public XMLSettingsRepository()
32         throws java.io.FileNotFoundException JavaDoc, java.io.IOException JavaDoc
33     {
34         this(Configurator.getProperty(ServerConfig.LOG_FILE));
35     }
36
37     public void put(Object JavaDoc key, Object JavaDoc value)
38     {
39         entries.put(key, value);
40         flush();
41     }
42
43     public Object JavaDoc get(Object JavaDoc key)
44     {
45         restore();
46         return entries.get(key);
47     }
48
49     private synchronized void flush()
50     {
51         try
52         {
53             XMLEncoder e = new XMLEncoder(new FileOutputStream(name));
54             e.writeObject(entries);
55             e.flush();
56         }
57         catch (java.io.IOException JavaDoc e)
58         {
59             log.error("", e);
60         }
61     }
62
63     private synchronized void restore()
64     {
65         try
66         {
67             XMLDecoder d = new XMLDecoder(new FileInputStream(name));
68             entries = (Map)d.readObject();
69         }
70         catch (FileNotFoundException f) {
71             entries = new HashMap();
72         }
73         catch (Exception JavaDoc e) {
74             log.error("", e);
75         }
76     }
77 }
78
Popular Tags