Author: toad
Date: 2009-03-06 22:20:19 +0000 (Fri, 06 Mar 2009)
New Revision: 25905
Modified:
branches/db4o/freenet/src/freenet/client/InsertBlock.java
Log:
nullData(), removeFrom(), don't remove in free()... callers must call nullData
if necessary and then removeFrom()
Modified: branches/db4o/freenet/src/freenet/client/InsertBlock.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/InsertBlock.java 2009-03-06
22:19:25 UTC (rev 25904)
+++ branches/db4o/freenet/src/freenet/client/InsertBlock.java 2009-03-06
22:20:19 UTC (rev 25905)
@@ -13,10 +13,10 @@
*/
public class InsertBlock {
- private final Bucket data;
+ private Bucket data;
private boolean isFreed;
- public final FreenetURI desiredURI;
- public final ClientMetadata clientMetadata;
+ public FreenetURI desiredURI;
+ public ClientMetadata clientMetadata;
public InsertBlock(Bucket data, ClientMetadata metadata, FreenetURI
desiredURI) {
if(data == null) throw new NullPointerException();
@@ -41,14 +41,36 @@
data.free();
if(container != null) {
data.removeFrom(container);
- container.delete(this);
}
}
+ public void removeFrom(ObjectContainer container) {
+ if(data != null) {
+ container.activate(data, 1);
+ data.removeFrom(container);
+ }
+ if(desiredURI != null) {
+ container.activate(desiredURI, 5);
+ desiredURI.removeFrom(container);
+ }
+ if(clientMetadata != null) {
+ container.activate(clientMetadata, 5);
+ clientMetadata.removeFrom(container);
+ }
+ container.delete(this);
+ }
+
public void objectOnActivate(ObjectContainer container) {
// Cascading activation of dependancies
container.activate(data, 1); // will cascade
container.activate(desiredURI, 5);
}
+ /** Null out the data so it doesn't get removed in removeFrom().
+ * Call this when the data becomes somebody else's problem. You should
clone()
+ * the desiredURI and clientMetadata, since these are always removed. */
+ public void nullData() {
+ data = null;
+ }
+
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs