/** * SlingBeans - NetBeans Sling plugin * https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license * http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.configuration; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; /** * * @author jkan997 */ public class ConfigurationImpl implements Configuration { public static ConfigurationImpl instance = null; public String settingsDir = null; public static synchronized Configuration getInstance() { if (instance == null) { instance = new ConfigurationImpl(); } return instance; } public ConfigurationImpl() { getSettingsDir(); } public String getSettingsDir() { if (this.settingsDir == null) { String userHome = System.getProperty("user.home").replace('\\', '/'); String settingsDirPath = userHome + "/.slingbeans"; File settingsFile = new File(settingsDirPath); if (!settingsFile.exists()) { settingsFile.mkdir(); } this.settingsDir = settingsFile.getAbsolutePath(); } return this.settingsDir; } @Override public Object getObject(String name) { try { File file = new File(settingsDir + "/" + name + ".xml"); if (!file.exists()){ return null; } FileInputStream os = new FileInputStream(file); XMLDecoder decoder = new XMLDecoder(os); Object deserializedObject = decoder.readObject(); decoder.close(); return deserializedObject; } catch (Exception ex) { throw new RuntimeException(ex); } } @Override public void setObject(String name, Object value) { try { FileOutputStream os = new FileOutputStream(settingsDir + "/" + name + ".xml"); XMLEncoder encoder = new XMLEncoder(os); encoder.writeObject(value); encoder.close(); } catch (Exception ex) { throw new RuntimeException(ex); } } public static void main(String[] args) { ConfigurationImpl ci = new ConfigurationImpl(); Map<String,String> m = new HashMap<String,String>(); //m.put("ss", "ddd"); //ci.setObject("mapa", m); m = (Map<String, String>) ci.getObject("mapa"); System.out.println(m); } }