diff options
| author | Christian Wagner <c.wagner@datentechnik-innovation.com> | 2015-01-21 14:57:37 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2015-06-19 11:08:04 +0200 | 
| commit | 24783cd40ebb9a91a6045afd9d3bf88ff52b5f5e (patch) | |
| tree | 22a59d28b7d1f16351fb1a2da8c1cb30da46039a | |
| parent | b59207a8718709b7b27570bb02e7d8b942882cb4 (diff) | |
| download | moa-id-spss-24783cd40ebb9a91a6045afd9d3bf88ff52b5f5e.tar.gz moa-id-spss-24783cd40ebb9a91a6045afd9d3bf88ff52b5f5e.tar.bz2 moa-id-spss-24783cd40ebb9a91a6045afd9d3bf88ff52b5f5e.zip | |
add java doc
add little logging
minor fixes
2 files changed, 65 insertions, 66 deletions
| diff --git a/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/Configuration.java b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/Configuration.java index 43f7d9454..873208aaf 100644 --- a/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/Configuration.java +++ b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/Configuration.java @@ -3,53 +3,52 @@ package com.datentechnik.moa.id.conf.persistence;  import java.util.List;  /** - * + * An interface for a key-value configuration.   */  public interface Configuration {  	/** -	 *  -	 * @param key -	 * @return +	 * Get the value associated with the given key as {@link Object}. +	 * @param key the key +	 * @return the object associated with the given key or {@code null} if the key does not exist or does not have a value.  	 */  	Object get(String key);  	/** +	 * Get the object of type {@code T} associated with the given key.  	 *  -	 * @param key -	 * @param clazz -	 * @return +	 * @param key the key +	 * @param clazz the type of the requested object +	 * @return the object associated with the given key or {@code null} if the key does not exist or does not have a value.  	 */  	<T> T get(String key, Class<T> clazz);  	/** +	 * Store an object associated with a key. If the given object is set to {@code null} then the entry associated with the key is deleted.  	 *  -	 * @param key -	 * @param value +	 * @param key the key under which the value is stored, respectively key determining the entry to be deleted. +	 * @param value the object to store. if value is set to {@code null} then the entry associated with key {@code key} is deleted. +	 * @return {@code true} if the operation was carried out successfully, {@code false} otherwise.  	 */  	boolean set(String key, Object value);  	/** +	 * Get the object of type {@code T} associated with the given key from the database. If the key does not exist or does not have a value, the given default +	 * value is returned.  	 *  -	 * @param key -	 * @param clazz -	 * @param defaultValue -	 * @return +	 * @param key the key +	 * @param clazz the type of the requested object +	 * @param defaultValue the default value to return +	 * @return the object associated with the given key or {@code defaultValue} if the key does not exist or does not have a value.  	 */  	<T> T get(String key, Class<T> clazz, Object defaultValue);  	/** -	 *  -	 * @param key -	 * @param clazz -	 * @return +	 * Get a list of objects associated with the given key. The list may be empty or contain only a single object. +	 * @param key the key +	 * @param clazz the type of the requested object +	 * @return a list containing objects of type {@code T} or an empty list if no objects are associated with the key.  	 */  	<T> List<T> getList(String key, Class<T> clazz); -	/** -	 * -	 * @param key -	 * @return -	 */ -	void delete(String key);  }
\ No newline at end of file diff --git a/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/ConfigurationImpl.java b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/ConfigurationImpl.java index eebecf509..6d05af791 100644 --- a/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/ConfigurationImpl.java +++ b/id/server/moa-id-commons/src/main/java/com/datentechnik/moa/id/conf/persistence/ConfigurationImpl.java @@ -4,6 +4,8 @@ import java.io.IOException;  import java.util.ArrayList;  import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory;  import org.springframework.beans.factory.annotation.Required;  import org.springframework.stereotype.Component; @@ -21,12 +23,14 @@ import com.fasterxml.jackson.databind.type.CollectionType;  import com.fasterxml.jackson.databind.type.TypeFactory;  /** - *  - * + * The implementation of a key-value configuration implementing the {@link Configuration} interface. + * It employs the {@link ConfigPropertyDao} to persist configuration data.   */  @Component  public class ConfigurationImpl implements Configuration { +	private final Logger log = LoggerFactory.getLogger(getClass()); +	  	ConfigPropertyDao configPropertyDao;  	private JsonMapper mapper = new JsonMapper(); @@ -42,10 +46,10 @@ public class ConfigurationImpl implements Configuration {  	@Override  	public Object get(String key) {  		// return null if key does not exist -  		try { -			return mapper.deserialize(getPropertyValue(key), null); +			return mapper.deserialize(configPropertyDao.getProperty(key).getValue(), null);  		} catch (Exception e) { +			log.trace("Error while deserializing value of key '{}' to object.", key);  			return null;  		}  	} @@ -58,6 +62,7 @@ public class ConfigurationImpl implements Configuration {  			try {  				return clazz.cast(mapper.deserialize(property.getValue(), clazz));  			} catch (IOException e) { +				log.trace("Error while deserializing value of key '{}' to object of type {}.",key,clazz.getClass());  				return null;  			}  		} else { @@ -68,24 +73,27 @@ public class ConfigurationImpl implements Configuration {  	@Override  	public boolean set(String key, Object value) { -		ConfigProperty keyValue = new ConfigProperty(); -		keyValue.setKey(key); -		try { -			keyValue.setValue(mapper.serialize(value)); -			// System.out.println(">> key - value: " + keyValue.getKey() + " - " + keyValue.getValue() + "\n"); -			configPropertyDao.saveProperty(keyValue); +		if (value == null) { +			configPropertyDao.delete(key);  			return true; -		} catch (JsonProcessingException e) { -			// TODO do proper error handling -			e.printStackTrace(); -			return false; -		} +		} else { +			ConfigProperty keyValue = new ConfigProperty(); +			keyValue.setKey(key); +			try { +				keyValue.setValue(mapper.serialize(value)); +				configPropertyDao.saveProperty(keyValue); +				return true; +			} catch (JsonProcessingException e) { +				log.trace("Error while serializing object for key '{}'.", key); +				return false; +			} +		}  	}  	@Override  	public <T> T get(String key, Class<T> clazz, Object defaultValue) { -		// TODO complete the method +  		T value = get(key, clazz);  		if (value != null) {  			return value; @@ -116,36 +124,30 @@ public class ConfigurationImpl implements Configuration {  			}  			return tmp;  		} catch (IOException e) { +			log.trace("Error while deserializing value for key '{}' to List<{}>.", key,clazz.getClass());  			return new ArrayList<T>();  		}  	} -	private String getPropertyValue(String key) { -		ConfigProperty property = configPropertyDao.getProperty(key); -		return property.getValue(); -	} - -	@Override -	public void delete(String key) { -		configPropertyDao.delete(key); -	} -  	/** -	 *  +	 * Helper class to handle the JSON (de-)serialization.  	 *  	 */  	private class JsonMapper {  		private ObjectMapper mapper = new ObjectMapper(); +		/** +		 * The default constructor where the default pretty printer is disabled. +		 */  		public JsonMapper() {  			this(false);  		}  		/** -		 *  -		 * @param prettyPrint +		 * The constructor. +		 * @param prettyPrint enables or disables the default pretty printer  		 */  		public JsonMapper(boolean prettyPrint) {  			mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE); @@ -157,25 +159,26 @@ public class ConfigurationImpl implements Configuration {  		}  		/** -		 *  -		 * @param value -		 * @return -		 * @throws JsonProcessingException +		 * Serialize an object to a JSON string. +		 * @param value the object to serialize +		 * @return a JSON string +		 * @throws JsonProcessingException thrown when an error occurs during serialization  		 */  		public String serialize(Object value) throws JsonProcessingException {  			return mapper.writeValueAsString(value);  		}  		/** +		 * Deserialize a JSON string.  		 *  -		 * @param value -		 * @param clazz -		 * @return -		 * @throws JsonParseException -		 * @throws JsonMappingException -		 * @throws IOException +		 * @param value the JSON string to deserialize +		 * @param clazz optional parameter that determines the type of the returned object. If not set, an {@link Object} is returned. +		 * @return the deserialized JSON string as an object of type {@code clazz} or {@link Object} +		 * @throws JsonParseException if the JSON string contains invalid content. +		 * @throws JsonMappingException if the input JSON structure does not match structure expected for result type +		 * @throws IOException if an I/O problem occurs (e.g. unexpected end-of-input)  		 */ -		public <T> Object deserialize(String value, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException { +		public <T> Object deserialize(String value, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException{  			ObjectMapper mapper = new ObjectMapper();  			if (clazz != null) { @@ -184,10 +187,7 @@ public class ConfigurationImpl implements Configuration {  			} else {  				return mapper.readValue(value, Object.class);  			} -  		} -  	}; -  } | 
