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 {