You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by en...@apache.org on 2010/11/08 06:51:33 UTC

svn commit: r1032464 - in /incubator/gora/trunk: ./ gora-core/src/main/java/org/apache/gora/store/ gora-core/src/main/java/org/apache/gora/util/ gora-core/src/test/java/org/apache/gora/ gora-core/src/test/java/org/apache/gora/avro/store/ gora-core/src/...

Author: enis
Date: Mon Nov  8 05:51:32 2010
New Revision: 1032464

URL: http://svn.apache.org/viewvc?rev=1032464&view=rev
Log:
GORA-7. DataStoreFactory.createDataStore() should throw exceptions on failure.

Added:
    incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/util/GoraException.java
Modified:
    incubator/gora/trunk/CHANGES.txt
    incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
    incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
    incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java
    incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/memory/store/TestMemStore.java
    incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/mock/store/MockDataStore.java
    incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java

Modified: incubator/gora/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/CHANGES.txt?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/CHANGES.txt (original)
+++ incubator/gora/trunk/CHANGES.txt Mon Nov  8 05:51:32 2010
@@ -8,3 +8,6 @@ Trunk (unreleased changes)
 
 *  GORA-6. Add methods that take dataStoreClass instead of data store instance 
    to Gora{Input|Output}Format and Gora{Mapper|Reducer}. (enis)
+
+*  GORA-7. DataStoreFactory.createDataStore() should throw exceptions on 
+   failure. (enis)

Modified: incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java (original)
+++ incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java Mon Nov  8 05:51:32 2010
@@ -26,8 +26,8 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.gora.persistency.Persistent;
 import org.apache.gora.store.impl.DataStoreBase;
+import org.apache.gora.util.GoraException;
 import org.apache.gora.util.ReflectionUtils;
-import org.apache.hadoop.util.StringUtils;
 
 /**
  * A Factory for {@link DataStore}s. DataStoreFactory instances are thread-safe.
@@ -83,19 +83,20 @@ 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) {
+      , Class<K> keyClass, Class<T> persistent) throws GoraException {
     return createDataStore(dataStoreClass, keyClass, persistent, properties);
   }
 
   public static <D extends DataStore<K,T>, K, T extends Persistent>
-  D createDataStore(Class<D> dataStoreClass
-      , Class<K> keyClass, Class<T> persistent, String schemaName) {
+  D createDataStore(Class<D> dataStoreClass , Class<K> keyClass, 
+      Class<T> persistent, String schemaName) throws GoraException {
     return createDataStore(dataStoreClass, keyClass, persistent, properties, schemaName);
   }
 
   public static <D extends DataStore<K,T>, K, T extends Persistent>
   D createDataStore(Class<D> dataStoreClass, Class<K> keyClass
-      , Class<T> persistent, Properties properties, String schemaName) {
+      , Class<T> persistent, Properties properties, String schemaName) 
+  throws GoraException {
     try {
       setDefaultSchemaName(properties, schemaName);
       D dataStore =
@@ -103,22 +104,24 @@ public class DataStoreFactory {
       initializeDataStore(dataStore, keyClass, persistent, properties);
       return dataStore;
 
-    } catch (Exception ex) {
-      log.error(StringUtils.stringifyException(ex));
-      return null;
+    } catch (GoraException ex) {
+      throw ex;
+    } catch(Exception ex) {
+      throw new GoraException(ex);
     }
   }
 
   public static <D extends DataStore<K,T>, K, T extends Persistent>
   D createDataStore(Class<D> dataStoreClass
-      , Class<K> keyClass, Class<T> persistent, Properties properties) {
+      , Class<K> keyClass, Class<T> persistent, Properties properties) 
+  throws GoraException {
     return createDataStore(dataStoreClass, keyClass, persistent, properties, null);
   }
 
   @SuppressWarnings("unchecked")
   public static <D extends DataStore<K,T>, K, T extends Persistent>
   D getDataStore( Class<D> dataStoreClass, Class<K> keyClass,
-      Class<T> persistentClass) {
+      Class<T> persistentClass) throws GoraException {
     int hash = getDataStoreKey(dataStoreClass, keyClass, persistentClass);
 
     D dataStore = (D) dataStores.get(hash);
@@ -133,30 +136,37 @@ public class DataStoreFactory {
   @SuppressWarnings("unchecked")
   public static synchronized <K, T extends Persistent> DataStore<K, T> getDataStore(
       String dataStoreClass, Class<K> keyClass, Class<T> persistentClass)
-      throws ClassNotFoundException {
-
-    Class<? extends DataStore<K,T>> c
+      throws GoraException {
+    try {
+      Class<? extends DataStore<K,T>> c
         = (Class<? extends DataStore<K, T>>) Class.forName(dataStoreClass);
-    return getDataStore(c, keyClass, persistentClass);
+      return getDataStore(c, keyClass, persistentClass);
+    } catch(GoraException ex) {
+      throw ex;
+    } catch (Exception ex) {
+      throw new GoraException(ex);
+    }
   }
 
   @SuppressWarnings({ "unchecked", "rawtypes" })
   public static synchronized DataStore getDataStore(
       String dataStoreClass, String keyClass, String persistentClass)
-    throws ClassNotFoundException {
+    throws GoraException {
 
-    Class k = Class.forName(keyClass);
-    Class p = Class.forName(persistentClass);
-    return getDataStore(dataStoreClass, k, p);
+    try {
+      Class k = Class.forName(keyClass);
+      Class p = Class.forName(persistentClass);
+      return getDataStore(dataStoreClass, k, p);
+    } catch(GoraException ex) {
+      throw ex;
+    } catch (Exception ex) {
+      throw new GoraException(ex);
+    }
   }
 
   public static <K, T extends Persistent> DataStore<K, T> getDataStore(
-      Class<K> keyClass, Class<T> persistent) {
-    try {
-      return getDataStore(defaultDataStoreClass, keyClass, persistent);
-    } catch (ClassNotFoundException ex) {
-      return null;
-    }
+      Class<K> keyClass, Class<T> persistent) throws GoraException {
+    return getDataStore(defaultDataStoreClass, keyClass, persistent);
   }
 
   private static int getDataStoreKey(

Added: incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/util/GoraException.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/util/GoraException.java?rev=1032464&view=auto
==============================================================================
--- incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/util/GoraException.java (added)
+++ incubator/gora/trunk/gora-core/src/main/java/org/apache/gora/util/GoraException.java Mon Nov  8 05:51:32 2010
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.gora.util;
+
+import java.io.IOException;
+
+/**
+ * Gora specific exception. This extends IOException, since 
+ * most of what Gora does is I/O related.
+ */
+public class GoraException extends IOException {
+
+  private static final long serialVersionUID = -3889679982234557828L;
+
+  public GoraException() {
+    super();
+  }
+
+  public GoraException(String message, Throwable cause) {
+    super(message, cause);
+  }
+
+  public GoraException(String message) {
+    super(message);
+  }
+
+  public GoraException(Throwable cause) {
+    super(cause);
+  }
+}

Modified: incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java (original)
+++ incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/GoraTestDriver.java Mon Nov  8 05:51:32 2010
@@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFac
 import org.apache.gora.persistency.Persistent;
 import org.apache.gora.store.DataStore;
 import org.apache.gora.store.DataStoreFactory;
+import org.apache.gora.util.GoraException;
 
 /**
  * GoraTestDriver is a helper class for third party tests.
@@ -99,7 +100,7 @@ public class GoraTestDriver {
 
   @SuppressWarnings("unchecked")
   public<K, T extends Persistent> DataStore<K,T>
-    createDataStore(Class<K> keyClass, Class<T> persistentClass) {
+    createDataStore(Class<K> keyClass, Class<T> persistentClass) throws GoraException {
     setProperties(DataStoreFactory.properties);
     DataStore<K,T> dataStore = DataStoreFactory.createDataStore(
         (Class<? extends DataStore<K,T>>)dataStoreClass, keyClass, persistentClass);

Modified: incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java (original)
+++ incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java Mon Nov  8 05:51:32 2010
@@ -26,7 +26,6 @@ import java.io.IOException;
 
 import junit.framework.Assert;
 
-import org.apache.gora.avro.store.AvroStore;
 import org.apache.gora.avro.store.AvroStore.CodecType;
 import org.apache.gora.examples.generated.Employee;
 import org.apache.gora.examples.generated.WebPage;
@@ -35,6 +34,7 @@ import org.apache.gora.query.Result;
 import org.apache.gora.store.DataStore;
 import org.apache.gora.store.DataStoreFactory;
 import org.apache.gora.store.DataStoreTestUtil;
+import org.apache.gora.util.GoraException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.junit.After;
@@ -69,8 +69,8 @@ public class TestAvroStore {
   }
 
   @SuppressWarnings("unchecked")
-  protected AvroStore<String, Employee> createEmployeeDataStore() {
-    return (AvroStore<String, Employee>) DataStoreFactory.getDataStore(
+  protected AvroStore<String, Employee> createEmployeeDataStore() throws GoraException {
+    return DataStoreFactory.getDataStore(
         AvroStore.class, String.class, Employee.class);
   }
 

Modified: incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/memory/store/TestMemStore.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/memory/store/TestMemStore.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/memory/store/TestMemStore.java (original)
+++ incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/memory/store/TestMemStore.java Mon Nov  8 05:51:32 2010
@@ -24,6 +24,7 @@ import org.apache.gora.memory.store.MemS
 import org.apache.gora.store.DataStore;
 import org.apache.gora.store.DataStoreFactory;
 import org.apache.gora.store.DataStoreTestBase;
+import org.apache.gora.util.GoraException;
 
 /**
  * Test case for {@link MemStore}.
@@ -32,13 +33,13 @@ public class TestMemStore extends DataSt
 
   @SuppressWarnings("unchecked")
   @Override
-  protected DataStore<String, Employee> createEmployeeDataStore() {
+  protected DataStore<String, Employee> createEmployeeDataStore() throws GoraException {
     return DataStoreFactory.getDataStore(MemStore.class, String.class, Employee.class);
   }
 
   @SuppressWarnings("unchecked")
   @Override
-  protected DataStore<String, WebPage> createWebPageDataStore() {
+  protected DataStore<String, WebPage> createWebPageDataStore() throws GoraException {
     return DataStoreFactory.getDataStore(MemStore.class, String.class, WebPage.class);
   }
 }

Modified: incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/mock/store/MockDataStore.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/mock/store/MockDataStore.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/mock/store/MockDataStore.java (original)
+++ incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/mock/store/MockDataStore.java Mon Nov  8 05:51:32 2010
@@ -30,6 +30,7 @@ import org.apache.gora.query.Result;
 import org.apache.gora.query.impl.PartitionQueryImpl;
 import org.apache.gora.store.DataStoreFactory;
 import org.apache.gora.store.impl.DataStoreBase;
+import org.apache.gora.util.GoraException;
 
 public class MockDataStore extends DataStoreBase<String, MockPersistent> {
 
@@ -37,9 +38,14 @@ public class MockDataStore extends DataS
   public static final String[] LOCATIONS = {"foo1", "foo2", "foo3", "foo4", "foo1"};
 
   public static MockDataStore get() {
-    MockDataStore dataStore = DataStoreFactory.getDataStore(MockDataStore.class
-        , String.class, MockPersistent.class);
-    return dataStore;
+    MockDataStore dataStore;
+    try {
+      dataStore = DataStoreFactory.getDataStore(MockDataStore.class
+          , String.class, MockPersistent.class);
+      return dataStore;
+    } catch (GoraException ex) {
+      throw new RuntimeException(ex);
+    }
   }
 
   public MockDataStore() { }

Modified: incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java
URL: http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java?rev=1032464&r1=1032463&r2=1032464&view=diff
==============================================================================
--- incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java (original)
+++ incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java Mon Nov  8 05:51:32 2010
@@ -25,8 +25,7 @@ import junit.framework.Assert;
 import org.apache.gora.avro.store.DataFileAvroStore;
 import org.apache.gora.mock.persistency.MockPersistent;
 import org.apache.gora.mock.store.MockDataStore;
-import org.apache.gora.store.DataStore;
-import org.apache.gora.store.DataStoreFactory;
+import org.apache.gora.util.GoraException;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -37,14 +36,14 @@ public class TestDataStoreFactory {
   }
 
   @Test
-  public void testGetDataStore() throws ClassNotFoundException {
+  public void testGetDataStore() throws GoraException {
     DataStore<?,?> dataStore = DataStoreFactory.getDataStore("org.apache.gora.mock.store.MockDataStore"
         , String.class, MockPersistent.class);
     Assert.assertNotNull(dataStore);
   }
   
   @Test
-  public void testGetClasses() throws ClassNotFoundException {
+  public void testGetClasses() throws GoraException {
     DataStore<?,?> dataStore = DataStoreFactory.getDataStore("org.apache.gora.mock.store.MockDataStore"
         , String.class, MockPersistent.class);
     Assert.assertNotNull(dataStore);
@@ -53,14 +52,14 @@ public class TestDataStoreFactory {
   }
   
   @Test
-  public void testGetDataStore2() throws ClassNotFoundException {
+  public void testGetDataStore2() throws GoraException {
     DataStore<?,?> dataStore = DataStoreFactory.getDataStore(MockDataStore.class
         , String.class, MockPersistent.class);
     Assert.assertNotNull(dataStore);
   }
   
   @Test
-  public void testGetDataStore3() throws ClassNotFoundException {
+  public void testGetDataStore3() throws GoraException {
     DataStore<?,?> dataStore1 = DataStoreFactory.getDataStore("org.apache.gora.mock.store.MockDataStore"
         , Object.class, MockPersistent.class);
     DataStore<?,?> dataStore2 = DataStoreFactory.getDataStore("org.apache.gora.mock.store.MockDataStore"
@@ -73,7 +72,7 @@ public class TestDataStoreFactory {
   }
   
   @Test
-  public void testReadProperties() {
+  public void testReadProperties() throws GoraException{
     //indirect testing
     DataStore<?,?> dataStore = DataStoreFactory.getDataStore(String.class, MockPersistent.class);
     Assert.assertNotNull(dataStore);