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) {