You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by do...@apache.org on 2006/02/21 23:44:50 UTC
svn commit: r379610 - in /beehive/trunk/netui/src:
pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java
tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java
Author: dolander
Date: Tue Feb 21 14:44:46 2006
New Revision: 379610
URL: http://svn.apache.org/viewcvs?rev=379610&view=rev
Log:
A bit agreesive in my use of a WeakReference so I was losing the named
object in the NameService. This was causing the BVTs to fail. I
changed the place where the WeakReference was being used.
Modified:
beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java
beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java
Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java?rev=379610&r1=379609&r2=379610&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/requeststate/NameService.java Tue Feb 21 14:44:46 2006
@@ -30,6 +30,8 @@
*/
final public class NameService
{
+ // @todo: at some point we should walk the HashMap and reclaim all of the WeakReferences
+
private static final String NAME_SERVICE = "netui.nameService";
// static value for situation where this is not stored in the session.
@@ -149,13 +151,15 @@
public void put(INameable object) {
if (object == null)
throw new IllegalStateException("object must not be null");
+
String name = object.getObjectName();
if (name == null)
throw new IllegalStateException("object has not been named");
+
TrackingObject to = new TrackingObject();
- to.setINameable(object);
+ to.setINameable(new WeakReference(object));
- _nameMap.put(name,new WeakReference(to));
+ _nameMap.put(name,to);
// fire the fact that we just added a nameable to be tracked
if (_listeners != null)
@@ -174,19 +178,20 @@
if (name == null)
throw new IllegalStateException("name must not be null");
- WeakReference wr = (WeakReference) _nameMap.get(name);
+ TrackingObject to = (TrackingObject) _nameMap.get(name);
// The object wasn't found
- if (wr == null)
+ if (to == null)
return null;
// If the object has been reclaimed, then we remove the named object from the map.
- TrackingObject to = (TrackingObject) wr.get();
- if (to == null) {
+ WeakReference wr = to.getWeakINameable();
+ INameable o = (INameable) wr.get();
+ if (o == null) {
_nameMap.remove(name);
return null;
}
- return to.getINameable();
+ return o;
}
/**
@@ -236,9 +241,10 @@
// create a copy of the listeners so that there isn't any modifications while we
// fire the events.
synchronized (_listeners) { copy = _listeners.toArray(); }
+ INameable o = (INameable) to.getWeakINameable().get();
for (int i = 0; i < copy.length; i++) {
- ((NamingObjectListener)copy[i]).namingObject(to.getINameable(), to);
+ ((NamingObjectListener)copy[i]).namingObject(o, to);
}
}
@@ -261,18 +267,18 @@
final private class TrackingObject extends LazyMap
{
- private INameable _nameable;
+ private WeakReference _nameable;
public Map getMap() {
return (isMapCreated() ? this : null);
}
- public void setINameable(INameable nameable)
+ public void setINameable(WeakReference nameable)
{
_nameable = nameable;
}
- public INameable getINameable() {
+ public WeakReference getWeakINameable() {
return _nameable;
}
}
Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java?rev=379610&r1=379609&r2=379610&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/divpanel/DivPanelCRI.java Tue Feb 21 14:44:46 2006
@@ -57,7 +57,7 @@
NameService ns = NameService.instance(req.getSession());
assert(ns != null);
- // get the tree from the name service
+ // get the DivPanel from the name service
INameable n = ns.get(dp);
if (n == null) {
System.err.println("DivPanel '" + dp + "' was not found in the NameService");