Hi,
I'm using
jboss-3.2.4 and whenever I call getObservedObjects() operation, it throws
ClassCastException. Looking at the Monitor.java source code, it looks like
there's a bug in getObservedObjects() operation.
It basically creates
a HashSet of keys(ObjectNames) and later try to cast to "ObservedObject"
type.
public
ObjectName[] getObservedObjects()
{
Set set = new HashSet(observedObjects.keySet());
elementCount = set.size();
ObjectName[] result = new ObjectName[set.size()];
alreadyNotifieds = new int[set.size()];
int count = 0;
for (Iterator i = set.iterator(); i.hasNext();)
{
ObservedObject object = (ObservedObject) i.next();
result[count] = object.getObjectName();
alreadyNotifieds[count++] = object.getAlreadyNotified();
}
return result;
}
{
Set set = new HashSet(observedObjects.keySet());
elementCount = set.size();
ObjectName[] result = new ObjectName[set.size()];
alreadyNotifieds = new int[set.size()];
int count = 0;
for (Iterator i = set.iterator(); i.hasNext();)
{
ObservedObject object = (ObservedObject) i.next();
result[count] = object.getObjectName();
alreadyNotifieds[count++] = object.getAlreadyNotified();
}
return result;
}
Instead of
"Set set =
new HashSet(observedObjects.keySet());"
I think it should be
"Set set =
new HashSet(observedObjects.values());"
Otherwise, it would
throw exception on
ObservedObject
object = (ObservedObject) i.next();
since i.next()
returns ObjectName
Thanks,
Dong