Repository: gora Updated Branches: refs/heads/master d46a96f41 -> 96e623b03
http://git-wip-us.apache.org/repos/asf/gora/blob/655cd3aa/gora-dynamodb/src/test/java/org/apache/gora/dynamodb/TestDynamoDBStore.java ---------------------------------------------------------------------- diff --git a/gora-dynamodb/src/test/java/org/apache/gora/dynamodb/TestDynamoDBStore.java b/gora-dynamodb/src/test/java/org/apache/gora/dynamodb/TestDynamoDBStore.java deleted file mode 100644 index 4c08428..0000000 --- a/gora-dynamodb/src/test/java/org/apache/gora/dynamodb/TestDynamoDBStore.java +++ /dev/null @@ -1,386 +0,0 @@ -/** - * 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.dynamodb; - -import java.io.IOException; -import java.util.HashSet; - -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.assertFalse; - -import org.apache.gora.dynamodb.query.DynamoDBKey; -import org.apache.gora.dynamodb.query.DynamoDBQuery; -import org.apache.gora.examples.generated.person; -import org.apache.gora.query.Query; -import org.apache.gora.query.Result; -import org.apache.gora.store.DataStore; -import org.apache.gora.store.WSDataStoreTestBase; -import org.junit.*; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.amazonaws.services.dynamodb.model.ComparisonOperator; - -/** - * Test case for DynamoDBStore. - */ -public class TestDynamoDBStore extends WSDataStoreTestBase<DynamoDBKey, person> { - - public static final Logger log = LoggerFactory.getLogger(TestDynamoDBStore.class); - - static { - setTestDriver(new GoraDynamoDBTestDriver()); - } - - @Before - public void setUp() throws Exception { - setPersistentKeyClass(DynamoDBKey.class); - setPersistentValClass(person.class); - super.setUp(); - } - - public GoraDynamoDBTestDriver getTestDriver() { - return (GoraDynamoDBTestDriver) testDriver; - } - -//============================================================================ - //We need to skip the following tests for a while until we fix some issues.. - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testQueryStartKey() throws IOException { - log.info("test method: TestQueryStartKey SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testQueryEndKey() throws IOException { - log.info("test method: TestQueryEndKey SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testDeleteByQueryFields() throws IOException { - log.info("test method: TestDeleteByQueryFields SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testNewInstance() throws IOException, Exception { - log.info("test method: TestNewInstance SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testAutoCreateSchema() throws Exception { - log.info("test method: TestAutoCreateSchema SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testTruncateSchema() throws Exception { - log.info("test method: TestTruncateSchema SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testPutNested() throws IOException, Exception { - log.info("test method: TestPutNested SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testPutArray() throws IOException, Exception { - log.info("test method: TestPutArray SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testPutBytes() throws IOException, Exception { - log.info("test method: TestPutBytes SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testPutMap() throws IOException, Exception { - log.info("test method: TestPutMap SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testEmptyUpdate() throws IOException, Exception { - log.info("test method: TestEmptyUpdate SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testDeleteSchema() throws IOException, Exception { - log.info("test method: TestDeleteSchema SKIPPED."); - } - @Ignore("Needs to be skipped for a while until some issues are fixed") - @Override - public void testGetWithFields() throws IOException, Exception { - log.info("test method: TestGetWithFields SKIPPED."); - } -//========================================================================== - - /** - * Tests deleting items using a query - */ - @Override - public void assertTestDeleteByQueryDataStore(){ - try { - log.info("test method: TestDeleteByQuery using DynamoDB store."); - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("NOWHERE"); - dKey.setRangeKey("10/10/1880"); - person p1 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "John", "Doe", "Peru", "Brazil", "Ecuador"); - dataStore.put(dKey, p1); - dKey.setRangeKey("11/10/1707"); - person p2 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "Juan", "Perez", "Germany", "USA", "Scotland"); - dataStore.put(dKey, p2); - DynamoDBQuery.setScanCompOp(ComparisonOperator.LE); - DynamoDBQuery.setType(DynamoDBQuery.SCAN_QUERY); - Query<DynamoDBKey, person> query = new DynamoDBQuery<DynamoDBKey, person>(); - query.setKey(dKey); - log.info("Number of records deleted: "+ dataStore.deleteByQuery(query)); - } catch (Exception e) { - log.error("Error while running test: TestDeleteByQuery"); - e.printStackTrace(); - } - } - - /** - * Tests updating a specific item - */ - @Override - public void assertTestUpdateDataStore(){ - try{ - log.info("test method: TestUpdate using DynamoDB store."); - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("Peru"); - dKey.setRangeKey("10/10/1880"); - person p1 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "Inca", "Atahualpa", "Peru", "Brazil", "Ecuador"); - dataStore.put(dKey, p1); - p1.setFirstName("Ataucuri"); - dataStore.put(dKey, p1); - } catch (Exception e){ - log.error("error in test method: testUpdate."); - e.printStackTrace(); - } - } - - /** - * Method to test deleting a schema - */ - @Override - public void assertDeleteSchema(){ - try { - log.info("test method: TestDeleteSchema using DynamoDB store."); - dataStore.deleteSchema(); - } catch (Exception e) { - log.error("error in test method: testDeleteSchema."); - e.printStackTrace(); - } - } - - /** - * Method to verify if a schema exists or not - */ - @Override - public void assertSchemaExists(String schemaName) throws Exception { - log.info("test method: TestSchemaExists using DynamoDB store."); - assertTrue(dataStore.schemaExists()); - } - - /** - * Method to put items into the data store - */ - @Override - public void assertPut(){ - try { - log.info("test method: TestPut using DynamoDB store."); - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("Peru"); - dKey.setRangeKey("10/10/1880"); - person p1 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "Inca", "Atahualpa", "Peru", "Brazil", "Ecuador"); - dataStore.put(dKey, p1); - dKey.setRangeKey("11/10/1707"); - person p2 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "William", "Wallace", "Germany", "USA", "Scotland"); - dataStore.put(dKey, p2); - } catch (Exception e) { - log.error("error in test method: testPut."); - e.printStackTrace(); - } - } - - /** - * Method to query the data store - */ - @Override - public void assertTestQueryDataStore(){ - log.info("test method: testQuery using DynamoDB store."); - try { - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("Peru"); - DynamoDBQuery.setScanCompOp(ComparisonOperator.LE); - DynamoDBQuery.setType(DynamoDBQuery.SCAN_QUERY); - Query<DynamoDBKey, person> query = new DynamoDBQuery<DynamoDBKey, person>(); - query.setKey(dKey); - Result<DynamoDBKey, person> queryResult = dataStore.execute(query); - processQueryResult(queryResult); - } catch (Exception e) { - log.error("error in test method: testQuery."); - e.printStackTrace(); - } - } - - /** - * Method to query items into the data store - */ - @Override - public void assertTestQueryKeyRange(){ - log.info("test method: testQueryKeyRange using specific data store."); - try { - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - DynamoDBKey<String, String> startKey = new DynamoDBKey<String, String>(); - DynamoDBKey<String, String> endKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("Peru"); - startKey.setRangeKey("01/01/1700"); - endKey.setRangeKey("31/12/1900"); - DynamoDBQuery.setRangeCompOp(ComparisonOperator.BETWEEN); - DynamoDBQuery.setType(DynamoDBQuery.RANGE_QUERY); - Query<DynamoDBKey, person> query = new DynamoDBQuery<DynamoDBKey, person>(); - query.setKey(dKey); - query.setStartKey(startKey); - query.setEndKey(endKey); - Result<DynamoDBKey, person> queryResult = dataStore.execute(query); - processQueryResult(queryResult); - } catch (Exception e) { - log.error("error in test method: testQueryKeyRange."); - e.printStackTrace(); - } - } - - /** - * Method to get an specific object using a key - */ - @Override - public void assertTestGetDataStore(){ - log.info("test method: testGet using specific data store."); - try { - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("USA"); - dKey.setRangeKey("10/10/1999"); - // insert item - person p1 = buildPerson(dKey.getHashKey().toString(), dKey.getRangeKey().toString(), "Inca", "Atahualpa", "Peru", "Brazil", "Ecuador"); - dataStore.put(dKey, p1); - // get item - person p2 = dataStore.get(dKey); - printPersonInfo(p2); - } catch (Exception e) { - log.error("error in test method: testGetDataStore."); - e.printStackTrace(); - } - } - - /** - * Method to delete items into the data store - */ - @Override - public void assertTestDeleteDataStore() { - log.info("test method: testDelete by key"); - try { - DynamoDBKey<String, String> dKey = new DynamoDBKey<String, String>(); - dKey.setHashKey("Brazil"); - dKey.setRangeKey("10/10/1985"); - person p1 = new person(); - p1.setHashKey(dKey.getHashKey()); - p1.setRangeKey(dKey.getRangeKey()); - p1.setFirstName("Joao"); - p1.setLastName("Velasco"); - dataStore.put(dKey, p1); - assertTrue(dataStore.delete(dKey)); - dKey.setRangeKey("10/10/1000"); - assertFalse(dataStore.delete(dKey)); - }catch (Exception e) { - log.error("error in test method: testDeleteDataStore."); - e.printStackTrace(); - } - } - - /** - * Method to create the data store - */ - @Override - protected DataStore<DynamoDBKey, person> createDataStore() { - log.info("Creating DynamoDB data store."); - try { - dataStore = getTestDriver().getDataStore(); - dataStore.createSchema(); - } catch (Exception e) { - log.error("error while creating DynamoDB data store"); - e.printStackTrace(); - } - return dataStore; - } - - /** - * Processes query results from an query execution - * @param pQueryResult - */ - private void processQueryResult(Result<DynamoDBKey, person> pQueryResult){ - try { - log.debug("Processing tests results."); - while(pQueryResult.next()) - printPersonInfo(pQueryResult.get()); - } catch (IOException e) { - log.error("error while processing tests results."); - e.printStackTrace(); - } catch (Exception e) { - log.error("error while processing tests results."); - e.printStackTrace(); - } - } - - /** - * Method to generate persisten objects - * @param key - * @param pRangeKey - * @param pFirstName - * @param pLastName - * @param places - * @return - */ - private person buildPerson(String key, String pRangeKey, String pFirstName, String pLastName, String ...places){ - person newPerson = new person(); - newPerson.setRangeKey(pRangeKey); - newPerson.setHashKey(key); - newPerson.setFirstName(pFirstName); - newPerson.setLastName(pLastName); - newPerson.setVisitedplaces(new HashSet<String>()); - for(String place : places) - newPerson.getVisitedplaces().add(place); - return newPerson; - } - - /** - * Method to print the object returned from Get method - * @param pPerson - */ - private void printPersonInfo(person pPerson){ - log.info("Origin:\t" + pPerson.getHashKey() + - "\n Birthday:\t" + pPerson.getRangeKey() + - "\n FirstName:" + pPerson.getFirstName() + - "\n LastName:" + pPerson.getLastName() + - "\n Visited Places:"); - for(String place : pPerson.getVisitedplaces()) - log.info("\t" + place); - } - -} http://git-wip-us.apache.org/repos/asf/gora/blob/655cd3aa/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java ---------------------------------------------------------------------- diff --git a/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java b/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java index 5e0b866..79c5e91 100644 --- a/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java +++ b/gora-mongodb/src/main/java/org/apache/gora/mongodb/store/MongoStore.java @@ -38,7 +38,6 @@ import org.apache.gora.mongodb.query.MongoDBQuery; import org.apache.gora.mongodb.query.MongoDBResult; import org.apache.gora.mongodb.utils.BSONDecorator; import org.apache.gora.mongodb.utils.GoraDBEncoder; -import org.apache.gora.persistency.Persistent; import org.apache.gora.persistency.impl.BeanFactoryImpl; import org.apache.gora.persistency.impl.DirtyListWrapper; import org.apache.gora.persistency.impl.DirtyMapWrapper; @@ -573,7 +572,7 @@ public class MongoStore<K, T extends PersistentBase> extends clazz = ClassLoadingUtils.loadClass(fieldSchema.getFullName()); } catch (ClassNotFoundException e) { } - Persistent record = new BeanFactoryImpl(keyClass, clazz).newPersistent(); + PersistentBase record = (PersistentBase) new BeanFactoryImpl(keyClass, clazz).newPersistent(); for (Field recField : fieldSchema.getFields()) { Schema innerSchema = recField.schema(); DocumentFieldType innerStoreType = mapping http://git-wip-us.apache.org/repos/asf/gora/blob/655cd3aa/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index cbf3be2..946a569 100644 --- a/pom.xml +++ b/pom.xml @@ -702,7 +702,7 @@ <module>gora-goraci</module> <module>gora-hbase</module> <!-- module>gora-lucene</module --> - <!--module>gora-dynamodb</module --> + <module>gora-dynamodb</module> <!--module>gora-sql</module --> <module>gora-maven-plugin</module> <module>gora-mongodb</module> @@ -730,7 +730,7 @@ <hbase.test.version>0.98.8-hadoop2</hbase.test.version> <cxf-rt-frontend-jaxrs.version>2.5.2</cxf-rt-frontend-jaxrs.version> <!-- Amazon Dependencies --> - <amazon.version>1.3.12</amazon.version> + <amazon.version>1.10.55</amazon.version> <!-- Cassandra Dependencies --> <cassandra.version>2.0.2</cassandra.version> <hector.version>1.1-4</hector.version>