Author: xor
Date: 2008-11-09 21:23:28 +0000 (Sun, 09 Nov 2008)
New Revision: 23452

Modified:
   trunk/plugins/Freetalk/Freetalk.java
   trunk/plugins/Freetalk/WoT/FTIdentityManagerWoT.java
Log:
Make it retrieve the OwnIdentities and create the "freetalk"-context on them.

Modified: trunk/plugins/Freetalk/Freetalk.java
===================================================================
--- trunk/plugins/Freetalk/Freetalk.java        2008-11-09 21:22:36 UTC (rev 
23451)
+++ trunk/plugins/Freetalk/Freetalk.java        2008-11-09 21:23:28 UTC (rev 
23452)
@@ -60,6 +60,7 @@
        public static final String PLUGIN_URI = 
"/plugins/plugins.Freetalk.Freetalk";
        public static final String PLUGIN_TITLE = "Freetalk";
        public static final String WOT_NAME = "plugins.WoT.WoT";
+       public static final String WOT_CONTEXT = "freetalk";
        public static final String DATABASE_FILE = "freetalk_data.db4o";

        /* References from the node */

Modified: trunk/plugins/Freetalk/WoT/FTIdentityManagerWoT.java
===================================================================
--- trunk/plugins/Freetalk/WoT/FTIdentityManagerWoT.java        2008-11-09 
21:22:36 UTC (rev 23451)
+++ trunk/plugins/Freetalk/WoT/FTIdentityManagerWoT.java        2008-11-09 
21:23:28 UTC (rev 23452)
@@ -48,15 +48,25 @@
                Logger.debug(this, "Identity manager created.");
        }

+       private void addFreetalkContext(FTIdentityWoT oid) {
+               SimpleFieldSet params = new SimpleFieldSet(true);
+               params.putOverwrite("Message", "AddContext");
+               params.putOverwrite("Identity", oid.getUID());
+               params.putOverwrite("Context", Freetalk.WOT_CONTEXT);
+               mTalker.send(params, null);
+       }
+       
        public void onReply(String pluginname, String indentifier, 
SimpleFieldSet params, Bucket data) {
                long time = System.currentTimeMillis();

-               if(params.get("Message").equals("Identities")) {
+               boolean bOwnIdentities = 
params.get("Message").equals("OwnIdentities");
+               if(params.get("Message").equals("Identities") || 
bOwnIdentities) {
                        for(int idx = 1; ; idx++) {
                                String uid = params.get("Identity"+idx);
                                if(uid == null || uid.equals("")) /* FIXME: 
Figure out whether the second condition is necessary */
                                        break;
                                String requestURI = 
params.get("RequestURI"+idx);
+                               String insertURI = bOwnIdentities ? 
params.get("InsertURI") : null;
                                String nickname = params.get("Nickname"+idx);

                                synchronized(this) { /* We lock here and not 
during the whole function to allow other threads to execute */
@@ -64,10 +74,13 @@
                                        q.constrain(FTIdentityWoT.class);
                                        q.descend("mUID").equals(uid);
                                        ObjectSet<FTIdentityWoT> result = 
q.execute();
+                                       FTIdentityWoT id = null; 

                                        if(result.size() == 0) {
                                                try {
-                                                       db.store(new 
FTIdentityWoT(db, uid, new FreenetURI(requestURI), nickname));
+                                                       id = bOwnIdentities ?   
new FTOwnIdentityWoT(db, uid, new FreenetURI(requestURI), new 
FreenetURI(insertURI), nickname) :
+                                                                               
                        new FTIdentityWoT(db, uid, new FreenetURI(requestURI), 
nickname);
+                                                       db.store(id);
                                                        db.commit();
                                                }
                                                catch(MalformedURLException e) {
@@ -75,22 +88,31 @@
                                                }
                                        } else {
                                                assert(result.size() == 1);
-                                               
result.next().setLastReceivedFromWoT(time);
+                                               id = result.next();
                                        }
+                                       
+                                       if(bOwnIdentities)
+                                               addFreetalkContext(id);
+                                       id.setLastReceivedFromWoT(time);
                                }
                        }
                }
+

                garbageCollectIdentities();
        }

        private void receiveIdentities() {
-               SimpleFieldSet params = new SimpleFieldSet(true);
-               params.putOverwrite("Message", "GetIdentitiesByScore");
-               params.putOverwrite("Select", "+");
-               params.putOverwrite("Context", "freetalk");
-               mTalker.send(params, null);
+               SimpleFieldSet p1 = new SimpleFieldSet(true);
+               p1.putOverwrite("Message", "GetIdentitiesByScore");
+               p1.putOverwrite("Select", "+");
+               p1.putOverwrite("Context", Freetalk.WOT_CONTEXT);
+               mTalker.send(p1, null);

+               SimpleFieldSet p2 = new SimpleFieldSet(true);
+               p2.putOverwrite("Message","GetOwnIdentities");
+               mTalker.send(p2, null);
+               
                /*
                ObjectSet<OwnIdentity> oids = mWoT.getAllOwnIdentities();
                for(OwnIdentity o : oids) {


Reply via email to