Author: lewismc
Date: Wed Jan 22 11:49:02 2014
New Revision: 1560321

URL: http://svn.apache.org/r1560321
Log:
port GORA-231 Provide better error handling in AccumuloStore.readMapping when 
file does not exist.

Modified:
    gora/branches/GORA_94/CHANGES.txt
    
gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
    
gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
    
gora/branches/GORA_94/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java

Modified: gora/branches/GORA_94/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/gora/branches/GORA_94/CHANGES.txt?rev=1560321&r1=1560320&r2=1560321&view=diff
==============================================================================
--- gora/branches/GORA_94/CHANGES.txt (original)
+++ gora/branches/GORA_94/CHANGES.txt Wed Jan 22 11:49:02 2014
@@ -4,6 +4,8 @@
 
 Gora Change Log
 
+* GORA-231 Provide better error handling in AccumuloStore.readMapping when 
file does not exist. (apgiannakidis via lewismc)
+
 * GORA-283 Specify field name for types not being considered in gora-cassandra 
(lewismc)
 
 * GORA-285 Change logging at o.a.g.mapreduce.GoraRecordWriter from INFO to 
WARN (lewismc)

Modified: 
gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
URL: 
http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java?rev=1560321&r1=1560320&r2=1560321&view=diff
==============================================================================
--- 
gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
 (original)
+++ 
gora/branches/GORA_94/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
 Wed Jan 22 11:49:02 2014
@@ -56,7 +56,7 @@ public class DataStoreFactory{
 
   public static final String MAPPING_FILE = "mapping.file";
 
-       public static final String SCHEMA_NAME = "schema.name";
+  public static final String SCHEMA_NAME = "schema.name";
 
   /**
    * Do not use! Deprecated because it shares system wide state. 
@@ -64,7 +64,7 @@ public class DataStoreFactory{
    */
   @Deprecated()
   public static final Properties properties = createProps();
-  
+
   /**
    * Creates a new {@link Properties}. It adds the default gora configuration
    * resources. This properties object can be modified and used to instantiate
@@ -75,9 +75,9 @@ public class DataStoreFactory{
    */
   public static Properties createProps() {
     try {
-    Properties properties = new Properties();
+      Properties properties = new Properties();
       InputStream stream = DataStoreFactory.class.getClassLoader()
-        .getResourceAsStream(GORA_DEFAULT_PROPERTIES_FILE);
+          .getResourceAsStream(GORA_DEFAULT_PROPERTIES_FILE);
       if(stream != null) {
         try {
           properties.load(stream);
@@ -150,11 +150,11 @@ public class DataStoreFactory{
   public static <D extends DataStore<K,T>, K, T extends Persistent>
   D createDataStore(Class<D> dataStoreClass, Class<K> keyClass
       , Class<T> persistent, Configuration conf, Properties properties, String 
schemaName) 
-  throws GoraException {
+          throws GoraException {
     try {
       setDefaultSchemaName(properties, schemaName);
       D dataStore =
-        ReflectionUtils.newInstance(dataStoreClass);
+          ReflectionUtils.newInstance(dataStoreClass);
       if ((dataStore instanceof Configurable) && conf != null) {
         ((Configurable)dataStore).setConf(conf);
       }
@@ -182,7 +182,7 @@ public class DataStoreFactory{
   public static <D extends DataStore<K,T>, K, T extends Persistent>
   D createDataStore(Class<D> dataStoreClass
       , Class<K> keyClass, Class<T> persistent, Configuration conf, Properties 
properties) 
-  throws GoraException {
+          throws GoraException {
     return createDataStore(dataStoreClass, keyClass, persistent, conf, 
properties, null);
   }
 
@@ -216,10 +216,10 @@ public class DataStoreFactory{
   @SuppressWarnings("unchecked")
   public static <K, T extends Persistent> DataStore<K, T> getDataStore(
       String dataStoreClass, Class<K> keyClass, Class<T> persistentClass, 
Configuration conf)
-      throws GoraException {
+          throws GoraException {
     try {
       Class<? extends DataStore<K,T>> c
-        = (Class<? extends DataStore<K, T>>) Class.forName(dataStoreClass);
+          = (Class<? extends DataStore<K, T>>) Class.forName(dataStoreClass);
       return createDataStore(c, keyClass, persistentClass, conf, 
createProps(), null);
     } catch(GoraException ex) {
       throw ex;
@@ -241,7 +241,7 @@ public class DataStoreFactory{
   @SuppressWarnings({ "unchecked" })
   public static <K, T extends Persistent> DataStore<K, T> getDataStore(
       String dataStoreClass, String keyClass, String persistentClass, 
Configuration conf)
-    throws GoraException {
+          throws GoraException {
 
     try {
       Class<? extends DataStore<K,T>> c
@@ -333,7 +333,7 @@ public class DataStoreFactory{
     String val = findProperty(properties, store, baseKey, null);
     if(val == null) {
       throw new IOException("Property with base name \""+baseKey+"\" could not 
be found, make " +
-               "sure to include this property in gora.properties file");
+          "sure to include this property in gora.properties file");
     }
     return val;
   }
@@ -362,9 +362,28 @@ public class DataStoreFactory{
     return findProperty(properties, store, OUTPUT_PATH, null);
   }
 
+  /**
+   * Looks for the <code>gora-&lt;classname&gt;-mapping.xml</code> as a 
resource 
+   * on the classpath. This can however also be specified within the 
+   * <code>gora.properties</code> file with the key 
+   * <code>gora.&lt;classname&gt;.mapping.file=</code>.
+   * @param properties which hold keys from which we can obtain values for 
datastore mappings.
+   * @param store {@link org.apache.gora.store.DataStore} object to get the 
mapping for.
+   * @param defaultValue default value for the 
<code>gora-&lt;classname&gt;-mapping.xml</code>
+   * @return mappingFilename if one is located.
+   * @throws IOException if there is a problem reading or obtaining the 
mapping file.
+   */
   public static String getMappingFile(Properties properties, DataStore<?,?> 
store
-      , String defaultValue) {
-    return findProperty(properties, store, MAPPING_FILE, defaultValue);
+      , String defaultValue) throws IOException {
+
+    String mappingFilename = findProperty(properties, store, MAPPING_FILE, 
defaultValue);
+
+    InputStream mappingFile = 
store.getClass().getClassLoader().getResourceAsStream(mappingFilename);
+
+    if (mappingFile == null)
+      throw new IOException("Unable to open mapping file: "+mappingFilename);
+
+    return mappingFilename;
   }
 
   private static String getDefaultDataStore(Properties properties) {

Modified: 
gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
URL: 
http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java?rev=1560321&r1=1560320&r2=1560321&view=diff
==============================================================================
--- 
gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
 (original)
+++ 
gora/branches/GORA_94/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java
 Wed Jan 22 11:49:02 2014
@@ -518,6 +518,10 @@ public class DataStoreTestUtil {
       for (int j = 1; j < urls.length; j += 2) {
         webPage.getOutlinks().put(new Utf8(anchor + j), new Utf8(urls[j]));
       }
+      //test for double put of same entries
+      for (int j = 1; j < urls.length; j += 2) {
+        webPage.getOutlinks().put(new Utf8(anchor + j), new Utf8(urls[j]));
+      }
       dataStore.put(webPage.getUrl().toString(), webPage);
     }
 

Modified: 
gora/branches/GORA_94/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
URL: 
http://svn.apache.org/viewvc/gora/branches/GORA_94/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java?rev=1560321&r1=1560320&r2=1560321&view=diff
==============================================================================
--- 
gora/branches/GORA_94/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
 (original)
+++ 
gora/branches/GORA_94/gora-solr/src/main/java/org/apache/gora/solr/store/SolrStore.java
 Wed Jan 22 11:49:02 2014
@@ -95,8 +95,8 @@ public class SolrStore<K, T extends Pers
   @Override
   public void initialize( Class<K> keyClass, Class<T> persistentClass, 
Properties properties ) {
     super.initialize( keyClass, persistentClass, properties );
-    String mappingFile = DataStoreFactory.getMappingFile( properties, this, 
DEFAULT_MAPPING_FILE );
     try {
+      String mappingFile = DataStoreFactory.getMappingFile( properties, this, 
DEFAULT_MAPPING_FILE );
       mapping = readMapping( mappingFile );
     }
     catch ( IOException e ) {


Reply via email to