You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2013/07/08 11:51:44 UTC
[5/9] git commit: HBase roster manager: support groups
HBase roster manager: support groups
Project: http://git-wip-us.apache.org/repos/asf/mina-vysper/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-vysper/commit/0636dc93
Tree: http://git-wip-us.apache.org/repos/asf/mina-vysper/tree/0636dc93
Diff: http://git-wip-us.apache.org/repos/asf/mina-vysper/diff/0636dc93
Branch: refs/heads/master
Commit: 0636dc936315a6095d1d974799a436ec32217b3b
Parents: 9bbab82
Author: Bernd Fondermann <be...@brainlounge.de>
Authored: Sat Jul 6 17:40:26 2013 +0200
Committer: Bernd Fondermann <be...@brainlounge.de>
Committed: Sat Jul 6 17:40:26 2013 +0200
----------------------------------------------------------------------
.../hbase/roster/HBaseRosterManager.java | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-vysper/blob/0636dc93/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 0396e2d..0ec3e21 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
@@ -25,7 +25,6 @@ import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.vysper.storage.hbase.HBaseStorage;
import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.modules.roster.AskSubscriptionType;
import org.apache.vysper.xmpp.modules.roster.MutableRoster;
@@ -58,6 +57,7 @@ public class HBaseRosterManager extends AbstractRosterManager {
public static final String COLUMN_PREFIX_NAME = "n:";
public static final String COLUMN_PREFIX_TYPE = "t:";
public static final String COLUMN_PREFIX_ASKTYPE = "a:";
+ public static final String COLUMN_PREFIX_GROUP = "g:";
protected HBaseStorage hBaseStorage;
@@ -67,7 +67,7 @@ public class HBaseRosterManager extends AbstractRosterManager {
@Override
protected Roster retrieveRosterInternal(Entity bareJid) {
- final Result entityRow = hBaseStorage.getEntityRow(bareJid);
+ final Result entityRow = hBaseStorage.getEntityRow(bareJid, COLUMN_FAMILY_NAME_CONTACT, COLUMN_FAMILY_NAME_ROSTER);
MutableRoster roster = new MutableRoster();
@@ -108,7 +108,15 @@ public class HBaseRosterManager extends AbstractRosterManager {
}
List<RosterGroup> groups = new ArrayList<RosterGroup>();
- // TODO read groups
+ int i = 1;
+ while (true) {
+ String columnName = COLUMN_PREFIX_GROUP + i + ":" + contactAsString;
+ String groupName = toStr(contactDetails.get(asBytes(columnName)));
+ if (groupName == null) break;
+
+ groups.add(new RosterGroup(groupName));
+ i++;
+ }
RosterItem item = new RosterItem(contactJID, name, subscriptionType, askSubscriptionType, groups);
LOG.info("item loaded for " + bareJid.getFullQualifiedName() + ": " + item.toString());
@@ -138,6 +146,12 @@ public class HBaseRosterManager extends AbstractRosterManager {
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()));
+ int i = 1;
+ for (RosterGroup rosterGroup : rosterItem.getGroups()) {
+ String columnName = COLUMN_PREFIX_GROUP + i + ":" + contactIdentifier;
+ put.add(COLUMN_FAMILY_NAME_ROSTER_BYTES, asBytes(columnName), asBytes(rosterGroup.getName()));
+ i++;
+ }
final HTableInterface userTable = hBaseStorage.getTable(TABLE_NAME_USER);
try {