package com.datascience.datastoring.adapters.kv; import com.google.common.base.Throwables; import org.apache.log4j.Logger; /** * @Author: konrad */ public class DefaultSafeKVStorage<V> implements ISafeKVStorage<V>{ protected Logger logger; protected IKVStorage<V> wrapped; protected String prefix; public DefaultSafeKVStorage(IKVStorage<V> wrapped, Logger logger, String prefix){ this.wrapped = wrapped; this.logger = logger; this.prefix = prefix + " "; } public DefaultSafeKVStorage(IKVStorage<V> wrapped, String prefix){ this(wrapped, Logger.getLogger(wrapped.getClass()), prefix); } protected void log(String cmd, Exception ex){ logger.error(prefix + cmd, ex); Throwables.propagate(ex); } @Override public void put(String key, V value){ try { wrapped.put(key, value); } catch (Exception ex) { log("put", ex); } } @Override public V get(String key){ try { return wrapped.get(key); } catch (Exception ex) { log("get", ex); return null; } } @Override public void remove(String key){ try { wrapped.remove(key); } catch (Exception ex) { log("remove", ex); } } @Override public boolean contains(String key){ try { return wrapped.contains(key); } catch (Exception ex) { log("contains", ex); return false; } } @Override public void shutdown(){ try { wrapped.shutdown(); } catch (Exception ex) { log("shutdown", ex); } } }