diff --git a/src/main/java/com/scaler/lld/design/assignments/singleton/FileBasedConfigurationManagerImpl.java b/src/main/java/com/scaler/lld/design/assignments/singleton/FileBasedConfigurationManagerImpl.java index 15470fc..2f8f2f8 100644 --- a/src/main/java/com/scaler/lld/design/assignments/singleton/FileBasedConfigurationManagerImpl.java +++ b/src/main/java/com/scaler/lld/design/assignments/singleton/FileBasedConfigurationManagerImpl.java @@ -2,49 +2,67 @@ public class FileBasedConfigurationManagerImpl extends FileBasedConfigurationManager { + private static FileBasedConfigurationManager fileBasedConfigurationManager; + + private FileBasedConfigurationManagerImpl(){ + } + @Override public String getConfiguration(String key) { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getConfiguration'"); + if(properties.containsKey(key)) return properties.getProperty(key); + return null; } @Override public T getConfiguration(String key, Class type) { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getConfiguration'"); + String value=properties.getProperty(key); + T ans=null; + if(value!=null){ + ans=convert(value,type); + } + return ans; } @Override public void setConfiguration(String key, String value) { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'setConfiguration'"); + properties.setProperty(key,value); } @Override public void setConfiguration(String key, T value) { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'setConfiguration'"); + properties.setProperty(key,(String)value); } @Override public void removeConfiguration(String key) { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'removeConfiguration'"); + properties.remove(key); } @Override public void clear() { // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'clear'"); + properties.clear(); } public static FileBasedConfigurationManager getInstance() { // TODO Auto-generated method stub - return null; + if(fileBasedConfigurationManager==null){ + synchronized (FileBasedConfigurationManagerImpl.class){ + if(fileBasedConfigurationManager==null){ + fileBasedConfigurationManager=new FileBasedConfigurationManagerImpl(); + } + } + } + return fileBasedConfigurationManager; } public static void resetInstance() { - // TODO Auto-generated method stub + fileBasedConfigurationManager=null; } } \ No newline at end of file