fix roster + contact storage in HBase

Project: http://git-wip-us.apache.org/repos/asf/mina-vysper/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-vysper/commit/472093ca
Tree: http://git-wip-us.apache.org/repos/asf/mina-vysper/tree/472093ca
Diff: http://git-wip-us.apache.org/repos/asf/mina-vysper/diff/472093ca

Branch: refs/heads/master
Commit: 472093ca36fa5df88a64c100e69cc7c44a31e7f1
Parents: 0636dc9
Author: Bernd Fondermann <[email protected]>
Authored: Mon Jul 8 10:28:10 2013 +0200
Committer: Bernd Fondermann <[email protected]>
Committed: Mon Jul 8 10:28:10 2013 +0200

----------------------------------------------------------------------
 .../storage/hbase/HBaseStorageProviderRegistry.java |  2 ++
 .../storage/hbase/roster/HBaseRosterManager.java    | 16 ++++++++++------
 .../storage/hbase/user/HBaseUserManagement.java     |  9 ++++++++-
 3 files changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-vysper/blob/472093ca/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/HBaseStorageProviderRegistry.java
----------------------------------------------------------------------
diff --git 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/HBaseStorageProviderRegistry.java
 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/HBaseStorageProviderRegistry.java
index 32ad50a..5b86ad4 100644
--- 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/HBaseStorageProviderRegistry.java
+++ 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/HBaseStorageProviderRegistry.java
@@ -20,6 +20,7 @@
 package org.apache.vysper.storage.hbase;
 
 import org.apache.vysper.storage.OpenStorageProviderRegistry;
+import 
org.apache.vysper.storage.hbase.privatedata.HBasePrivateDataPersistenceManager;
 import org.apache.vysper.storage.hbase.roster.HBaseRosterManager;
 import org.apache.vysper.storage.hbase.user.HBaseUserManagement;
 
@@ -32,6 +33,7 @@ public class HBaseStorageProviderRegistry extends 
OpenStorageProviderRegistry {
     public HBaseStorageProviderRegistry() throws HBaseStorageException {
         add(new HBaseUserManagement(HBaseStorage.getInstance()));
         add(new HBaseRosterManager(HBaseStorage.getInstance()));
+        add(new 
HBasePrivateDataPersistenceManager(HBaseStorage.getInstance()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/mina-vysper/blob/472093ca/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/roster/HBaseRosterManager.java
----------------------------------------------------------------------
diff --git 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/roster/HBaseRosterManager.java
 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/roster/HBaseRosterManager.java
index 0ec3e21..d61ab87 100644
--- 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/roster/HBaseRosterManager.java
+++ 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/roster/HBaseRosterManager.java
@@ -19,6 +19,7 @@
  */
 package org.apache.vysper.storage.hbase.roster;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
@@ -99,11 +100,12 @@ public class HBaseRosterManager extends 
AbstractRosterManager {
 
             AskSubscriptionType askSubscriptionType = 
AskSubscriptionType.NOT_SET;
             try {
-                if (askTypeString != null)
+                if (StringUtils.isNotBlank(askTypeString)) {
                     askSubscriptionType = 
AskSubscriptionType.valueOf(askTypeString);
+                }
             } catch (IllegalArgumentException e) {
                 LOG.warn("when loading roster for user " + 
bareJid.getFullQualifiedName() + ", contact "
-                        + contactJID.getFullQualifiedName() + ", the ask 
subscription type is unparsable. skipping!");
+                        + contactJID.getFullQualifiedName() + ", the ask 
subscription type '" + askTypeString + "' is unparsable. skipping!");
                 continue; // don't return it, don't set a default!
             }
 
@@ -144,8 +146,8 @@ public class HBaseRosterManager extends 
AbstractRosterManager {
         final Put put = new Put(entityAsBytes(jid.getBareJID()));
         put.add(COLUMN_FAMILY_NAME_CONTACT_BYTES, asBytes(contactIdentifier), 
asBytes(rosterItem.getSubscriptionType().value()));
         put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(COLUMN_PREFIX_NAME + 
contactIdentifier), asBytes(rosterItem.getName()));
-        put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(COLUMN_PREFIX_TYPE + 
contactIdentifier), asBytes(rosterItem.getSubscriptionType().value()));
-        put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(COLUMN_PREFIX_ASKTYPE 
+ contactIdentifier), asBytes(rosterItem.getAskSubscriptionType().value()));
+        put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(COLUMN_PREFIX_TYPE + 
contactIdentifier), asBytes(rosterItem.getSubscriptionType().name()));
+        put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(COLUMN_PREFIX_ASKTYPE 
+ contactIdentifier), asBytes(rosterItem.getAskSubscriptionType().name()));
         int i = 1;
         for (RosterGroup rosterGroup : rosterItem.getGroups()) {
             String columnName = COLUMN_PREFIX_GROUP + i + ":" + 
contactIdentifier; 
@@ -153,8 +155,9 @@ public class HBaseRosterManager extends 
AbstractRosterManager {
             i++;
         }
 
-        final HTableInterface userTable = 
hBaseStorage.getTable(TABLE_NAME_USER);
+        HTableInterface userTable = null;
         try {
+            userTable = hBaseStorage.getTable(TABLE_NAME_USER);
             userTable.put(put);
             LOG.info("contact {} saved to HBase for user {}", 
rosterItem.getJid(), jid);
         } catch (IOException e) {
@@ -179,8 +182,9 @@ public class HBaseRosterManager extends 
AbstractRosterManager {
         delete.deleteColumns(COLUMN_FAMILY_NAME_ROSTER_BYTES, 
asBytes(COLUMN_PREFIX_TYPE + contactIdentifier));
         delete.deleteColumns(COLUMN_FAMILY_NAME_ROSTER_BYTES, 
asBytes(COLUMN_PREFIX_ASKTYPE + contactIdentifier));
         
-        final HTableInterface userTable = 
hBaseStorage.getTable(TABLE_NAME_USER);
+        HTableInterface userTable = null;
         try {
+            userTable = hBaseStorage.getTable(TABLE_NAME_USER);
             userTable.delete(delete);
             LOG.info("contact {} removed from HBase for user {}", jidContact, 
jidUser);
         } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/mina-vysper/blob/472093ca/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/user/HBaseUserManagement.java
----------------------------------------------------------------------
diff --git 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/user/HBaseUserManagement.java
 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/user/HBaseUserManagement.java
index 99d6995..e98c019 100644
--- 
a/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/user/HBaseUserManagement.java
+++ 
b/server/storage/hbase/src/main/java/org/apache/vysper/storage/hbase/user/HBaseUserManagement.java
@@ -19,6 +19,7 @@
  */
 package org.apache.vysper.storage.hbase.user;
 
+import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.vysper.storage.hbase.HBaseStorage;
@@ -131,7 +132,13 @@ public class HBaseUserManagement implements 
UserAuthentication, AccountManagemen
     private void setPasswordInHBase(Entity username, String password) throws 
IOException {
         final Put put = new Put(entityAsBytes(username));
         put.add(COLUMN_FAMILY_NAME_BASIC.getBytes(), PASSWORD_COLUMN, 
encryptPassword(password));
-        hBaseStorage.getTable(HBaseStorage.TABLE_NAME_USER).put(put);
+        HTableInterface table = null;
+        try {
+            table = hBaseStorage.getTable(HBaseStorage.TABLE_NAME_USER);
+            table.put(put);
+        } finally {
+            hBaseStorage.putTable(table);
+        }
     }
 
     public void changePassword(Entity username, String password) throws 
AccountCreationException {

Reply via email to