Author: toad
Date: 2009-01-30 18:38:35 +0000 (Fri, 30 Jan 2009)
New Revision: 25407
Modified:
branches/db4o/freenet/src/freenet/client/FailureCodeTracker.java
Log:
Lazily init the hashmap in FailureCodeTracker
Modified: branches/db4o/freenet/src/freenet/client/FailureCodeTracker.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FailureCodeTracker.java
2009-01-30 18:35:33 UTC (rev 25406)
+++ branches/db4o/freenet/src/freenet/client/FailureCodeTracker.java
2009-01-30 18:38:35 UTC (rev 25407)
@@ -57,9 +57,10 @@
int x;
}
- final HashMap map = new HashMap();
+ private HashMap map;
public synchronized void inc(int k) {
+ if(map == null) map = new HashMap();
Integer key = k;
Item i = (Item) map.get(key);
if(i == null)
@@ -69,6 +70,7 @@
}
public synchronized void inc(Integer k, int val) {
+ if(map == null) map = new HashMap();
Integer key = k;
Item i = (Item) map.get(key);
if(i == null)
@@ -78,6 +80,7 @@
}
public synchronized String toVerboseString() {
+ if(map == null) return super.toString()+":empty";
StringBuilder sb = new StringBuilder();
Collection values = map.keySet();
Iterator i = values.iterator();
@@ -95,6 +98,7 @@
@Override
public synchronized String toString() {
+ if(map == null) return super.toString()+":empty";
StringBuilder sb = new StringBuilder(super.toString());
sb.append(':');
if(map.size() == 0) sb.append("empty");
@@ -114,6 +118,8 @@
* Merge codes from another tracker into this one.
*/
public synchronized FailureCodeTracker merge(FailureCodeTracker source)
{
+ if(source.map == null) return this;
+ if(map == null) map = new HashMap();
Iterator keys = source.map.keySet().iterator();
while(keys.hasNext()) {
Integer k = (Integer) keys.next();
@@ -139,6 +145,7 @@
/** Copy verbosely to a SimpleFieldSet */
public synchronized SimpleFieldSet toFieldSet(boolean verbose) {
SimpleFieldSet sfs = new SimpleFieldSet(false);
+ if(map != null) {
Iterator keys = map.keySet().iterator();
while(keys.hasNext()) {
Integer k = (Integer) keys.next();
@@ -151,6 +158,7 @@
insert ?
InsertException.getMessage(code) : FetchException.getMessage(code));
sfs.put(Integer.toString(code)+".Count", item.x);
}
+ }
return sfs;
}
@@ -163,6 +171,7 @@
}
public synchronized boolean isFatal(boolean insert) {
+ if(map == null) return false;
Iterator i = map.keySet().iterator();
while(i.hasNext()) {
Integer code = (Integer) i.next();
@@ -183,27 +192,27 @@
inc(e.getMode());
}
- public boolean isEmpty() {
- return map.isEmpty();
+ public synchronized boolean isEmpty() {
+ return map == null || map.isEmpty();
}
public void removeFrom(ObjectContainer container) {
Item[] items;
Integer[] ints;
synchronized(this) {
- items = (Item[]) map.values().toArray(new
Item[map.size()]);
- ints = (Integer[]) map.keySet().toArray(new
Integer[map.size()]);
- map.clear();
+ items = map == null ? null : (Item[])
map.values().toArray(new Item[map.size()]);
+ ints = map == null ? null : (Integer[])
map.keySet().toArray(new Integer[map.size()]);
+ if(map == null) map.clear();
}
for(int i=0;i<items.length;i++) {
container.delete(items[i]);
container.delete(ints[i]);
}
- container.delete(map);
+ if(map != null) container.delete(map);
container.delete(this);
}
public void objectOnActivate(ObjectContainer container) {
- container.activate(map, 5);
+ if(map != null) container.activate(map, 5);
}
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs