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 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 name; 22 23 public XMLSettingsRepository(String fileName) 24 throws java.io.FileNotFoundException , java.io.IOException 25 { 26 entries = new HashMap(); 27 name = fileName; 28 restore(); 29 } 30 31 public XMLSettingsRepository() 32 throws java.io.FileNotFoundException , java.io.IOException 33 { 34 this(Configurator.getProperty(ServerConfig.LOG_FILE)); 35 } 36 37 public void put(Object key, Object value) 38 { 39 entries.put(key, value); 40 flush(); 41 } 42 43 public Object get(Object 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 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 e) { 74 log.error("", e); 75 } 76 } 77 } 78 | Popular Tags |