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 {
