You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by er...@apache.org on 2011/07/09 11:02:34 UTC

svn commit: r1144620 [2/2] - in /tuscany/collaboration/GSoC-2011-Eranda: cassandra/ cassandra/src/main/java/org/apache/tuscany/nosqldatastore/ cassandra/src/main/java/org/apache/tuscany/nosqldatastore/cassandra/ cassandra/src/main/java/org/apache/tusca...

Added: tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/exception/SessionException.java
URL: http://svn.apache.org/viewvc/tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/exception/SessionException.java?rev=1144620&view=auto
==============================================================================
--- tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/exception/SessionException.java (added)
+++ tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/exception/SessionException.java Sat Jul  9 09:02:32 2011
@@ -0,0 +1,25 @@
+/*
+ * 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.tuscany.nosqldatastore.exception;
+
+public class SessionException extends Exception{
+    public SessionException(String msg){
+        super(msg);
+    }
+}

Modified: tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseDatatabase.java
URL: http://svn.apache.org/viewvc/tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseDatatabase.java?rev=1144620&r1=1144619&r2=1144620&view=diff
==============================================================================
--- tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseDatatabase.java (original)
+++ tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseDatatabase.java Sat Jul  9 09:02:32 2011
@@ -29,30 +29,27 @@ import org.apache.tuscany.nosqldatastore
 import java.io.IOException;
 
 public class HBaseDatatabase implements Database{
-    
+
     private HTable table;
     private HBaseAdmin admin;
 
-    HBaseDatatabase(String dbname, HBaseAdmin admin){
+    HBaseDatatabase(String dbname, HBaseAdmin admin) throws IOException {
         Configuration conf = HBaseConfiguration.create();
-        try {
-            try{
-                HTableDescriptor descriptor = new HTableDescriptor(dbname);
-                admin.createTable(descriptor);
-            } catch (MasterNotRunningException e) {
-                e.printStackTrace();
-            } catch (ZooKeeperConnectionException e) {
-                e.printStackTrace();
-            } catch (TableExistsException e){
-                System.out.println("connected to existing database....");
-            } finally {
-                table = new HTable(conf,dbname);
-                System.out.println(new String(table.getTableName()));
-                this.admin = admin;
-                table.flushCommits();
-            }
-        }catch (IOException ex) {
-            ex.printStackTrace();
+
+        try{
+            HTableDescriptor descriptor = new HTableDescriptor(dbname);
+            admin.createTable(descriptor);
+        } catch (MasterNotRunningException e) {
+            e.printStackTrace();
+        } catch (ZooKeeperConnectionException e) {
+            e.printStackTrace();
+        } catch (TableExistsException e){
+            System.out.println("connected to existing database....");
+        } finally {
+            table = new HTable(conf,dbname);
+            System.out.println(new String(table.getTableName()));
+            this.admin = admin;
+            table.flushCommits();
         }
 
     }

Modified: tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseGroup.java
URL: http://svn.apache.org/viewvc/tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseGroup.java?rev=1144620&r1=1144619&r2=1144620&view=diff
==============================================================================
--- tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseGroup.java (original)
+++ tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseGroup.java Sat Jul  9 09:02:32 2011
@@ -23,6 +23,8 @@ import org.apache.hadoop.hbase.HColumnDe
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.client.*;
 import org.apache.tuscany.nosqldatastore.Group;
+import org.apache.tuscany.nosqldatastore.exception.DuplicateEntryException;
+import org.apache.tuscany.nosqldatastore.exception.EntryNotFoundException;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -38,44 +40,72 @@ public class HBaseGroup implements Group
         this.cf = cf;
     }
 
-    public void addEntry(String key, Object value) {
-        Put put = new Put(key.getBytes());
-        put.add(cf.getBytes(),key.getBytes(),((String)value).getBytes());    
-        try {
-            table.put(put);
-            table.flushCommits();
-        } catch (IOException e) {
-            System.out.println("Error: Adding the entry for the Key "+key);
-            e.printStackTrace();
+    public void addEntry(String key, String value) throws DuplicateEntryException {
+        if(get(key) == null){
+            Put put = new Put(key.getBytes());
+            put.add(cf.getBytes(),key.getBytes(),value.getBytes());
+            try {
+                table.put(put);
+                table.flushCommits();
+            } catch (IOException e) {
+                System.out.println("Error: Adding the entry for the Key "+key);
+                e.printStackTrace();
+            }
+        } else {
+            throw new DuplicateEntryException("Duplicate entry for key "+key);
         }
+    }
 
+    public void updateEntry(String key, String value) throws EntryNotFoundException {
+        if(get(key) != null){
+            Put put = new Put(key.getBytes());
+            put.add(cf.getBytes(),key.getBytes(),value.getBytes());
+            try {
+                table.put(put);
+                table.flushCommits();
+            } catch (IOException e) {
+                System.out.println("Error: Adding the entry for the Key "+key);
+                e.printStackTrace();
+            }
+        } else {
+            throw new EntryNotFoundException("Entry does not exist for key "+key);
+        }
     }
 
-    public void updateEntry(String key, Object value) {
-        addEntry(key,value);
+    public void deleteEntry(String key) throws EntryNotFoundException {
+        if(get(key) != null){
+            Delete delete = new Delete(key.getBytes());
+            delete.deleteColumn(cf.getBytes(), key.getBytes());
+            try {
+                table.delete(delete);
+                table.flushCommits();
+            } catch (IOException e) {
+                System.out.println("Error: Deleting the entry for the Key "+key);
+                e.printStackTrace();
+            }
+        } else {
+            throw new EntryNotFoundException("Entry does not exist for key "+key);
+        }
     }
 
-    public void deleteEntry(String key) {
-        Delete delete = new Delete(key.getBytes());
-        delete.deleteColumn(cf.getBytes(), key.getBytes());     
-        try {
-            table.delete(delete);
-            table.flushCommits();
-        } catch (IOException e) {
-            System.out.println("Error: Deleting the entry for the Key "+key);
-            e.printStackTrace();
+    public String getEntry(String key) throws EntryNotFoundException {
+        byte[] b;
+        if((b = get(key)) != null){
+            return new String(b);
+        } else {
+            throw new EntryNotFoundException("Entry does not exist for key "+key);
         }
     }
 
-    public Object getValue(String key) {
+    private byte[] get(String key){
         Result result = null;
         Get get = new Get(key.getBytes());
         try {
             result = table.get(get);
         } catch (IOException e) {
-            System.out.println("Error: Retrieving the value or the Key "+key);
+            System.out.println("Error: Getting the entry for the Key "+key);
             e.printStackTrace();
         }
-        return new String(result.getValue(cf.getBytes(),key.getBytes()));
+        return result.getValue(cf.getBytes(),key.getBytes());
     }
 }

Modified: tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseSession.java
URL: http://svn.apache.org/viewvc/tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseSession.java?rev=1144620&r1=1144619&r2=1144620&view=diff
==============================================================================
--- tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseSession.java (original)
+++ tuscany/collaboration/GSoC-2011-Eranda/hbase/src/main/java/org/apache/tuscany/nosqldatastore/hbase/HBaseSession.java Sat Jul  9 09:02:32 2011
@@ -26,6 +26,8 @@ import org.apache.hadoop.hbase.ZooKeeper
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.tuscany.nosqldatastore.Database;
 import org.apache.tuscany.nosqldatastore.Session;
+import org.apache.tuscany.nosqldatastore.exception.DatabaseNotFoundException;
+import org.apache.tuscany.nosqldatastore.exception.SessionException;
 
 import java.io.IOException;
 
@@ -46,23 +48,36 @@ public class HBaseSession implements Ses
         }
     }
 
-    public Database createDatabase(String databaseName) {
-        Database database = new HBaseDatatabase(databaseName, admin);
-	    return database;
+    public Database createDatabase(String databaseName) throws SessionException {
+        Database database = null;
+        try {
+            database = new HBaseDatatabase(databaseName, admin);
+        } catch (IOException e) {
+            throw new SessionException("Session Error");
+        }
+        return database;
     }
 
-    public Database getDatabase(String databaseName) {
-	    Database database = new HBaseDatatabase(databaseName, admin);
-	    return database;
+    public Database getDatabase(String databaseName) throws SessionException {
+        Database database = null;
+        try {
+            database = new HBaseDatatabase(databaseName, admin);
+        } catch (IOException e) {
+            throw new SessionException("Session Error");
+        }
+        return database;
     }
 
-    public void deleteDatabase(String databaseName) {
+    public void deleteDatabase(String databaseName) throws DatabaseNotFoundException, SessionException {
         try {
-            admin.disableTable(databaseName);
-            admin.deleteTable(databaseName);
+            if(admin.tableExists(databaseName)){
+                admin.disableTable(databaseName);
+                admin.deleteTable(databaseName);
+            } else {
+                throw new DatabaseNotFoundException("Database "+databaseName+" not found");
+            }
         } catch (IOException e) {
-            System.out.println("Error: Creating the database "+databaseName);
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            throw new SessionException("Session Error");
         }
     }
 }

Copied: tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTestCase.java (from r1137637, tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTest.java)
URL: http://svn.apache.org/viewvc/tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTestCase.java?p2=tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTestCase.java&p1=tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTest.java&r1=1137637&r2=1144620&rev=1144620&view=diff
==============================================================================
--- tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTest.java (original)
+++ tuscany/collaboration/GSoC-2011-Eranda/hbase/src/test/java/org/apache/tuscany/nosqldatastore/hbase/HBaseTestCase.java Sat Jul  9 09:02:32 2011
@@ -23,26 +23,74 @@ import org.apache.tuscany.nosqldatastore
 import org.apache.tuscany.nosqldatastore.Session;
 import org.apache.tuscany.nosqldatastore.SessionFactory;
 
-public class HBaseTest {
+import org.apache.tuscany.nosqldatastore.exception.EntryNotFoundException;
+import org.junit.Before;
+import org.junit.Test;
 
-    Session session;
+import org.junit.Assert;
 
-    private HBaseTest(){
-        session = SessionFactory.getHBaseSession();
+public class HBaseTestCase {
+
+    private Session session;
+
+    @Before
+    public void init(){
+        SessionFactory factory = new SessionFactory();
+        session = factory.getHBaseSession();
+    }
+
+    @Test
+    public void testAddEntry() throws Exception {
+        Database db = session.createDatabase("TwitApp");
+        Group group = db.createGroup("twits");
+
+        group.addEntry("twitName1", "Here I am");
+        group.addEntry("twitName2", "I am not here");
+        group.addEntry("twitName3", "Sometimes");
+
+        Assert.assertEquals(group.getEntry("twitName1"), "Here I am");
+        Assert.assertEquals(group.getEntry("twitName2"), "I am not here");
+        Assert.assertEquals(group.getEntry("twitName3"), "Sometimes");
+
+        db.deleteGroup("twits");
+        session.deleteDatabase("TwitApp");
     }
 
-    public static void main(String[] args){
-        HBaseTest test = new HBaseTest();
-        test.start();
+    @Test
+    public void testDeleteEntry() throws Exception {
+        Database db = session.createDatabase("TwitApp");
+        Group group = db.createGroup("twits");
+
+        group.addEntry("twitName1", "Here I am");
+        group.addEntry("twitName2", "I am not here");
+        group.addEntry("twitName3", "Sometimes");
+
+        group.deleteEntry("twitName1");
+
+        try {
+            Assert.assertNull(group.getEntry("twitName1"));
+            Assert.fail("Deleted entry exists");
+        } catch(EntryNotFoundException e) {
+            //Expected
+        }
+
+        db.deleteGroup("twits");
+        session.deleteDatabase("TwitApp");
     }
 
-    public void start(){
-        Database database = session.createDatabase("SampleDB");
-        Group group = database.createGroup("group1");
-        group.addEntry("eranda", "Eranda Sooriyabandara");
-        System.out.println(group.getValue("eranda"));
-        group.deleteEntry("eranda");
-        database.deleteGroup("group1");
-        session.deleteDatabase("SampleDB");
+    @Test
+    public void testUpdateEntry() throws Exception {
+        Database db = session.createDatabase("TwitApp");
+        Group group = db.createGroup("twits");
+
+        group.addEntry("twitName1", "Here I am");
+        group.addEntry("twitName2", "I am not here");
+        group.addEntry("twitName3", "Sometimes");
+
+        group.updateEntry("twitName3", "Never");
+        Assert.assertEquals(group.getEntry("twitName3"), "Never");
+
+        db.deleteGroup("twits");
+        session.deleteDatabase("TwitApp");
     }
 }