|
From: Lukas P. <pe...@us...> - 2002-07-17 12:25:43
|
Update of /cvsroot/javaprofiler/jpiimpl/net/sourceforge/javaprofiler/jpiimpl/realtime
In directory usw-pr-cvs1:/tmp/cvs-serv31114
Modified Files:
ClassR.java ImageR.java MethodR.java ThreadGroupR.java
Log Message:
ChildrenListeners added for ImageR
Index: ClassR.java
===================================================================
RCS file: /cvsroot/javaprofiler/jpiimpl/net/sourceforge/javaprofiler/jpiimpl/realtime/ClassR.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** ClassR.java 2 Jul 2002 20:27:02 -0000 1.5
--- ClassR.java 17 Jul 2002 12:25:36 -0000 1.6
***************
*** 117,122 ****
public void refreshMethods() {
image.extractChildRoot(this.objId, IProf.CLASS_METHODS, image.
! methodFactory);
}
--- 117,124 ----
public void refreshMethods() {
+ List list=new ArrayList();
image.extractChildRoot(this.objId, IProf.CLASS_METHODS, image.
! methodFactory, list);
! image.addMethods(list);
}
***************
*** 186,190 ****
void addMethod(MethodRef o) {
methods.add(o);
- // PENDING event
}
--- 188,191 ----
Index: ImageR.java
===================================================================
RCS file: /cvsroot/javaprofiler/jpiimpl/net/sourceforge/javaprofiler/jpiimpl/realtime/ImageR.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** ImageR.java 2 Jul 2002 20:27:02 -0000 1.9
--- ImageR.java 17 Jul 2002 12:25:36 -0000 1.10
***************
*** 36,39 ****
--- 36,40 ----
import java.util.*;
+ import javax.swing.event.EventListenerList;
import net.sourceforge.javaprofiler.jpiimpl.commun.IProf;
import net.sourceforge.javaprofiler.jpiimpl.commun.*;
***************
*** 114,130 ****
final Constructor monThreadMethodFactory;
final Constructor monThreadTraceFactory;
- // multi-root ID factories
- // final Constructor allocTypeMethodIDFactory;
- // final Constructor allocTypeTraceIDFactory;
- // final Constructor allocTypeThreadIDFactory;
- // final Constructor allocThreadMethodIDFactory;
- // final Constructor allocTypeThreadMethodIDFactory;
- // final Constructor allocThreadTraceIDFactory;
- // final Constructor allocTypeThreadTraceIDFactory;
- // final Constructor cpuThreadMethodIDFactory;
- // final Constructor cpuThreadTraceIDFactory;
Set getAllFlags=new HashSet();
/** Constructs image that mirrors objects gained through given IProf.
* It is not intended that end users construct this object, they shall
--- 115,131 ----
final Constructor monThreadMethodFactory;
final Constructor monThreadTraceFactory;
Set getAllFlags=new HashSet();
+ /** A list of event listeners for this component. */
+ protected EventListenerList threadListeners = new EventListenerList();
+ protected EventListenerList typeListeners = new EventListenerList();
+ protected EventListenerList classListeners = new EventListenerList();
+ protected EventListenerList methodListeners = new EventListenerList();
+ protected EventListenerList CPUTraceListeners = new EventListenerList();
+ protected EventListenerList allocTraceListeners = new EventListenerList();
+ protected EventListenerList monTraceListeners = new EventListenerList();
+ protected EventListenerList threadgroupListeners = new EventListenerList();
+
/** Constructs image that mirrors objects gained through given IProf.
* It is not intended that end users construct this object, they shall
***************
*** 241,245 ****
"net.sourceforge.javaprofiler.jpiimpl.realtime.MonThreadTraceR"
).getDeclaredConstructor(mrParameterTypes);
- // init multi-root ID factories
} catch (ClassNotFoundException e) {
// PENDING
--- 242,245 ----
***************
*** 257,260 ****
--- 257,270 ----
}
+ /** This method performs a call to the profiled machine and gets new
+ * objects. Only usable for root object types.
+ * @param direction Type of the root object to query for. Guaranted to
+ * work are IProf.THREADS, IProf.OBJECT_TYPES, IProf.CLASSES,
+ * IProf.METHODS, IProf.CPU_TRACES, IProf.ALLOC_TRACES, IProf.MON_TRACES,
+ * IProf.GROUPS_OF_THREADS
+ * @param factory Factory used to create new objects holding information
+ * about the profiled counterparts.
+ * @param list List to which to append new objects.
+ */
private void extractRoot(int direction, java.lang.reflect.Constructor
factory, List list) {
***************
*** 277,282 ****
} else {
try {
! dataObject=(DataR) factory.newInstance(new Object[] {sid, this
! });
} catch (InstantiationException e) {
// PENDING
--- 287,292 ----
} else {
try {
! dataObject=(DataR) factory.newInstance(new Object[] {sid,
! this});
} catch (InstantiationException e) {
// PENDING
***************
*** 299,333 ****
}
- private List getListFromDirection(int direction) {
- List list;
- switch (direction) {
- case IProf.GROUP_THREADS:
- list=threads;
- break;
- case IProf.CLASS_METHODS:
- list=methods;
- break;
- case IProf.CPU_METHOD_TRACES:
- list=cpuTraces;
- break;
- case IProf.ALLOC_METHOD_TRACES:
- list=allocTraces;
- break;
- case IProf.MON_METHOD_TRACES:
- list=monTraces;
- break;
- default:
- throw new RuntimeException("Illegal object requested.");
- }
- return list;
- }
-
// this method is for ThreadGroup->Thread, Class->Method, Method->*Trace
// lists refreshing
void extractChildRoot(Integer parentId, int direction,
! java.lang.reflect.Constructor factory) {
// method should synchronize on image to be thread-safe
- // Image has to add new objects into its lists.
- List list=getListFromDirection(direction);
Iterator itChildren;
try {
--- 309,317 ----
}
// this method is for ThreadGroup->Thread, Class->Method, Method->*Trace
// lists refreshing
void extractChildRoot(Integer parentId, int direction,
! java.lang.reflect.Constructor factory, List list) {
// method should synchronize on image to be thread-safe
Iterator itChildren;
try {
***************
*** 475,479 ****
--- 459,471 ----
*/
public void refreshThreads() {
+ List children=threads;
+ int old=children.size();
extractRoot(IProf.THREADS, threadFactory, threads);
+ int nw=children.size();
+ if (old!=nw && threadListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.THREAD,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), threadListeners);
+ }
}
***************
*** 488,492 ****
--- 480,492 ----
*/
public void refreshTypes() {
+ List children=types;
+ int old=children.size();
extractRoot(IProf.OBJECT_TYPES, typeFactory, types);
+ int nw=children.size();
+ if (old!=nw && typeListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.TYPE,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), typeListeners);
+ }
}
***************
*** 502,506 ****
--- 502,514 ----
*/
public void refreshClasses() {
+ List children=classes;
+ int old=children.size();
extractRoot(IProf.CLASSES, classFactory, classes);
+ int nw=children.size();
+ if (old!=nw && classListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.CLASS,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), classListeners);
+ }
}
***************
*** 516,520 ****
--- 524,536 ----
*/
public void refreshMethods() {
+ List children=methods;
+ int old=children.size();
extractRoot(IProf.METHODS, methodFactory, methods);
+ int nw=children.size();
+ if (old!=nw && methodListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.METHOD,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), methodListeners);
+ }
}
***************
*** 527,531 ****
--- 543,555 ----
public void refreshCPUTraces() {
+ List children=cpuTraces;
+ int old=children.size();
extractRoot(IProf.CPU_TRACES, cpuTraceFactory, cpuTraces);
+ int nw=children.size();
+ if (old!=nw && CPUTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.CPU_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), CPUTraceListeners);
+ }
}
***************
*** 537,541 ****
--- 561,573 ----
public void refreshAllocTraces() {
+ List children=allocTraces;
+ int old=children.size();
extractRoot(IProf.ALLOC_TRACES, allocTraceFactory, allocTraces);
+ int nw=children.size();
+ if (old!=nw && allocTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.ALLOC_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), allocTraceListeners);
+ }
}
***************
*** 547,551 ****
--- 579,591 ----
public void refreshMonTraces() {
+ List children=monTraces;
+ int old=children.size();
extractRoot(IProf.MON_TRACES, monTraceFactory, monTraces);
+ int nw=children.size();
+ if (old!=nw && monTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.MON_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), monTraceListeners);
+ }
}
***************
*** 557,561 ****
--- 597,609 ----
public void refreshThreadGroups() {
+ List children=threadGroups;
+ int old=children.size();
extractRoot(IProf.GROUPS_OF_THREADS, threadGroupFactory, threadGroups);
+ int nw=children.size();
+ if (old!=nw && threadgroupListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.THREADGROUP,
+ children.subList(old, nw).toArray(), createIndicesArray(old, nw)
+ ), threadgroupListeners);
+ }
}
***************
*** 685,689 ****
*/
ThreadR resolveThread(Integer oId) {
! return (ThreadR) resolveRoot(oId, null, threadIDFactory, threads);
}
--- 733,747 ----
*/
ThreadR resolveThread(Integer oId) {
! List children=threads;
! int old=children.size();
! ThreadR res=(ThreadR) resolveRoot(oId, null, threadIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && threadListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.THREAD,
! children.subList(old, nw).toArray(), new int[]{old}),
! threadListeners);
! }
! return res;
}
***************
*** 694,698 ****
ThreadR resolveThread(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! return (ThreadR) resolveRoot(oId, sid, threadFactory, threads);
}
--- 752,765 ----
ThreadR resolveThread(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! List children=threads;
! int old=children.size();
! ThreadR res=(ThreadR) resolveRoot(oId, sid, threadFactory, threads);
! int nw=children.size();
! if (old!=nw && threadListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.THREAD,
! children.subList(old, nw).toArray(), new int[]{old}),
! threadListeners);
! }
! return res;
}
***************
*** 702,706 ****
*/
AllocTypeR resolveAllocType(Integer oId) {
! return (AllocTypeR) resolveRoot(oId, null, typeIDFactory, types);
}
--- 769,783 ----
*/
AllocTypeR resolveAllocType(Integer oId) {
! List children=types;
! int old=children.size();
! AllocTypeR res=(AllocTypeR) resolveRoot(oId, null, typeIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && typeListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.TYPE,
! children.subList(old, nw).toArray(), new int[]{old}),
! threadListeners);
! }
! return res;
}
***************
*** 711,715 ****
AllocTypeR resolveAllocType(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! return (AllocTypeR) resolveRoot(oId, sid, typeFactory, types);
}
--- 788,801 ----
AllocTypeR resolveAllocType(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! List children=types;
! int old=children.size();
! AllocTypeR res=(AllocTypeR) resolveRoot(oId, sid, typeFactory, types);
! int nw=children.size();
! if (old!=nw && typeListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.TYPE,
! children.subList(old, nw).toArray(), new int[]{old}),
! threadListeners);
! }
! return res;
}
***************
*** 719,723 ****
*/
ClassR resolveClass(Integer oId) {
! return (ClassR) resolveRoot(oId, null, classIDFactory, classes);
}
--- 805,819 ----
*/
ClassR resolveClass(Integer oId) {
! List children=classes;
! int old=children.size();
! ClassR res=(ClassR) resolveRoot(oId, null, classIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && classListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.CLASS,
! children.subList(old, nw).toArray(), new int[]{old}),
! classListeners);
! }
! return res;
}
***************
*** 728,732 ****
ClassR resolveClass(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! return (ClassR) resolveRoot(oId, sid, classFactory, classes);
}
--- 824,837 ----
ClassR resolveClass(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! List children=classes;
! int old=children.size();
! ClassR res=(ClassR) resolveRoot(oId, sid, classFactory, classes);
! int nw=children.size();
! if (old!=nw && classListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.CLASS,
! children.subList(old, nw).toArray(), new int[]{old}),
! classListeners);
! }
! return res;
}
***************
*** 736,740 ****
*/
MethodR resolveMethod(Integer oId) {
! return (MethodR) resolveRoot(oId, null, methodIDFactory, methods);
}
--- 841,855 ----
*/
MethodR resolveMethod(Integer oId) {
! List children=methods;
! int old=children.size();
! MethodR res=(MethodR) resolveRoot(oId, null, methodIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && methodListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.METHOD,
! children.subList(old, nw).toArray(), new int[]{old}),
! methodListeners);
! }
! return res;
}
***************
*** 745,749 ****
MethodR resolveMethod(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! return (MethodR) resolveRoot(oId, sid, methodFactory, methods);
}
--- 860,873 ----
MethodR resolveMethod(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! List children=methods;
! int old=children.size();
! MethodR res=(MethodR) resolveRoot(oId, sid, methodFactory, methods);
! int nw=children.size();
! if (old!=nw && methodListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.METHOD,
! children.subList(old, nw).toArray(), new int[]{old}),
! methodListeners);
! }
! return res;
}
***************
*** 753,758 ****
*/
AllocTraceR resolveAllocTrace(Integer oId) {
! return (AllocTraceR) resolveRoot(oId, null, allocTraceIDFactory,
! allocTraces);
}
--- 877,891 ----
*/
AllocTraceR resolveAllocTrace(Integer oId) {
! List children=allocTraces;
! int old=children.size();
! AllocTraceR res=(AllocTraceR) resolveRoot(oId, null, allocTraceIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && allocTraceListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.ALLOC_TRACE,
! children.subList(old, nw).toArray(), new int[]{old}),
! allocTraceListeners);
! }
! return res;
}
***************
*** 763,768 ****
AllocTraceR resolveAllocTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! return (AllocTraceR) resolveRoot(oId, sid, allocTraceFactory,
allocTraces);
}
--- 896,910 ----
AllocTraceR resolveAllocTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! List children=allocTraces;
! int old=children.size();
! AllocTraceR res=(AllocTraceR) resolveRoot(oId, sid, allocTraceFactory,
allocTraces);
+ int nw=children.size();
+ if (old!=nw && allocTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.ALLOC_TRACE,
+ children.subList(old, nw).toArray(), new int[]{old}),
+ allocTraceListeners);
+ }
+ return res;
}
***************
*** 772,777 ****
*/
CPUTraceR resolveCPUTrace(Integer oId) {
! return (CPUTraceR) resolveRoot(oId, null, cpuTraceIDFactory,
! cpuTraces);
}
--- 914,928 ----
*/
CPUTraceR resolveCPUTrace(Integer oId) {
! List children=cpuTraces;
! int old=children.size();
! CPUTraceR res=(CPUTraceR) resolveRoot(oId, null, cpuTraceIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && CPUTraceListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.CPU_TRACE,
! children.subList(old, nw).toArray(), new int[]{old}),
! CPUTraceListeners);
! }
! return res;
}
***************
*** 782,787 ****
CPUTraceR resolveCPUTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! return (CPUTraceR) resolveRoot(oId, sid, cpuTraceFactory,
cpuTraces);
}
--- 933,947 ----
CPUTraceR resolveCPUTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! List children=cpuTraces;
! int old=children.size();
! CPUTraceR res=(CPUTraceR) resolveRoot(oId, sid, cpuTraceFactory,
cpuTraces);
+ int nw=children.size();
+ if (old!=nw && CPUTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.CPU_TRACE,
+ children.subList(old, nw).toArray(), new int[]{old}),
+ CPUTraceListeners);
+ }
+ return res;
}
***************
*** 791,796 ****
*/
MonTraceR resolveMonTrace(Integer oId) {
! return (MonTraceR) resolveRoot(oId, null, monTraceIDFactory,
! monTraces);
}
--- 951,965 ----
*/
MonTraceR resolveMonTrace(Integer oId) {
! List children=monTraces;
! int old=children.size();
! MonTraceR res=(MonTraceR) resolveRoot(oId, null, monTraceIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && monTraceListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.MON_TRACE,
! children.subList(old, nw).toArray(), new int[]{old}),
! monTraceListeners);
! }
! return res;
}
***************
*** 801,806 ****
MonTraceR resolveMonTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! return (MonTraceR) resolveRoot(oId, sid, monTraceFactory,
monTraces);
}
--- 970,984 ----
MonTraceR resolveMonTrace(IProf.sID sid) {
Integer oId = new Integer(sid.objId);
! List children=monTraces;
! int old=children.size();
! MonTraceR res=(MonTraceR) resolveRoot(oId, sid, monTraceFactory,
monTraces);
+ int nw=children.size();
+ if (old!=nw && monTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.MON_TRACE,
+ children.subList(old, nw).toArray(), new int[]{old}),
+ monTraceListeners);
+ }
+ return res;
}
***************
*** 810,815 ****
*/
ThreadGroupR resolveThreadGroup(Integer oId) {
! return (ThreadGroupR) resolveRoot(oId, null, threadGroupIDFactory,
! threadGroups);
}
--- 988,1002 ----
*/
ThreadGroupR resolveThreadGroup(Integer oId) {
! List children=threadGroups;
! int old=children.size();
! ThreadGroupR res=(ThreadGroupR) resolveRoot(oId, null, threadGroupIDFactory,
! children);
! int nw=children.size();
! if (old!=nw && threadgroupListeners.getListenerCount()!=0) {
! fireChildrenAdded(new ChildrenEvent(this, Constants.THREADGROUP,
! children.subList(old, nw).toArray(), new int[]{old}),
! threadgroupListeners);
! }
! return res;
}
***************
*** 820,827 ****
ThreadGroupR resolveThreadGroup(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! return (ThreadGroupR) resolveRoot(oId, sid, threadGroupFactory,
threadGroups);
}
// ------------------------------------------- getAll / getChanged wrapping
--- 1007,1095 ----
ThreadGroupR resolveThreadGroup(IProf.sID sid) {
Integer oId=new Integer(sid.objId);
! List children=threadGroups;
! int old=children.size();
! ThreadGroupR res=(ThreadGroupR) resolveRoot(oId, sid, threadGroupFactory,
threadGroups);
+ int nw=children.size();
+ if (old!=nw && threadgroupListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.THREADGROUP,
+ children.subList(old, nw).toArray(), new int[]{old}),
+ threadgroupListeners);
+ }
+ return res;
}
+ // ------------------------------------------------------ children addition
+
+ void addThreads(List l) {
+ if (! l.isEmpty()) {
+ List children=threads;
+ int old=children.size();
+ children.addAll(l);
+ int nw=children.size();
+ if (threadListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.THREAD,
+ children.subList(old, nw).toArray(), createIndicesArray(old,
+ nw)), threadListeners);
+ }
+ }
+ }
+
+ void addMethods(List l) {
+ if (! l.isEmpty()) {
+ List children=methods;
+ int old=children.size();
+ children.addAll(l);
+ int nw=children.size();
+ if (methodListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.METHOD,
+ children.subList(old, nw).toArray(), createIndicesArray(old,
+ nw)), methodListeners);
+ }
+ }
+ }
+
+ void addCPUTraces(List l) {
+ if (! l.isEmpty()) {
+ List children=cpuTraces;
+ int old=children.size();
+ children.addAll(l);
+ int nw=children.size();
+ if (CPUTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.CPU_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old,
+ nw)), CPUTraceListeners);
+ }
+ }
+ }
+
+ void addAllocTraces(List l) {
+ if (! l.isEmpty()) {
+ List children=allocTraces;
+ int old=children.size();
+ children.addAll(l);
+ int nw=children.size();
+ if (allocTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.ALLOC_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old,
+ nw)), allocTraceListeners);
+ }
+ }
+ }
+
+ void addMonTraces(List l) {
+ if (! l.isEmpty()) {
+ List children=monTraces;
+ int old=children.size();
+ children.addAll(l);
+ int nw=children.size();
+ if (monTraceListeners.getListenerCount()!=0) {
+ fireChildrenAdded(new ChildrenEvent(this, Constants.MON_TRACE,
+ children.subList(old, nw).toArray(), createIndicesArray(old,
+ nw)), monTraceListeners);
+ }
+ }
+ }
+
// ------------------------------------------- getAll / getChanged wrapping
***************
*** 945,959 ****
}
! public void removeChildrenListener(int type, ChildrenListener listener) {
! // PENDING
}
public List getGCRuns() {
// PENDING
return null;
- }
-
- public void addChildrenListener(int type, ChildrenListener listener) {
- // PENDING
}
--- 1213,1304 ----
}
! // -------------------------------------------------------------- listeners
!
! /**
! * Removes an <code>ChildrenListener</code> from this object.
! * @param type Type of children to listen events for. Constants are defined
! * in net.sourceforge.javaprofiler.jpi.Constants.
! * @param l the listener to be removed
! */
! public void removeChildrenListener(int type, ChildrenListener l) {
! if (type==Constants.THREAD)
! threadListeners.remove(ChildrenListener.class, l);
! if (type==Constants.TYPE)
! typeListeners.remove(ChildrenListener.class, l);
! if (type==Constants.CLASS)
! classListeners.remove(ChildrenListener.class, l);
! if (type==Constants.METHOD)
! methodListeners.remove(ChildrenListener.class, l);
! if (type==Constants.CPU_TRACE)
! CPUTraceListeners.remove(ChildrenListener.class, l);
! if (type==Constants.ALLOC_TRACE)
! allocTraceListeners.remove(ChildrenListener.class, l);
! if (type==Constants.MON_TRACE)
! monTraceListeners.remove(ChildrenListener.class, l);
! if (type==Constants.THREADGROUP)
! threadgroupListeners.remove(ChildrenListener.class, l);
! else
! throw new IllegalArgumentException("Illegal child type.");
}
+ /**
+ * Adds an <code>ChildrenListener</code> to this object.
+ * <strong>Warning:</strong> Events are not dispatched in the swing event-
+ * dispatching thread, rather they are dispatched in the thread which
+ * caused new data to be loaded.
+ * @param type Type of children to listen events for. Constants are defined
+ * in net.sourceforge.javaprofiler.jpi.Constants.
+ * @param l the listener to be added
+ */
+ public void addChildrenListener(int type, ChildrenListener l) {
+ if (type==Constants.THREAD)
+ threadListeners.add(ChildrenListener.class, l);
+ if (type==Constants.TYPE)
+ typeListeners.add(ChildrenListener.class, l);
+ if (type==Constants.CLASS)
+ classListeners.add(ChildrenListener.class, l);
+ if (type==Constants.METHOD)
+ methodListeners.add(ChildrenListener.class, l);
+ if (type==Constants.CPU_TRACE)
+ CPUTraceListeners.add(ChildrenListener.class, l);
+ if (type==Constants.ALLOC_TRACE)
+ allocTraceListeners.add(ChildrenListener.class, l);
+ if (type==Constants.MON_TRACE)
+ monTraceListeners.add(ChildrenListener.class, l);
+ if (type==Constants.THREADGROUP)
+ threadgroupListeners.add(ChildrenListener.class, l);
+ else
+ throw new IllegalArgumentException("Illegal child type.");
+ }
+
+ /** Returns an array of int containing all numbers from <code>from</code>
+ * (inclusive) to <code>to</code> (exclusive).
+ */
+ private int[] createIndicesArray(int from, int to) {
+ int[] r=new int[to-from];
+ for (int i=0; i<(to-from); i++)
+ r[i]=i+from;
+ return r;
+ }
+
+ /**
+ * Notifies all listeners that have registered interest for
+ * notification on this event type. The event instance
+ * is taken from a parameter.
+ * @param e the event to fire
+ * @param list list holding the listeners to receive the event
+ */
+ private void fireChildrenAdded(ChildrenEvent e, EventListenerList list) {
+ // Guaranteed to return a non-null array
+ Object[] listeners = list.getListenerList();
+ // Process the listeners last to first, notifying all
+ for (int i = listeners.length-2; i>=0; i-=2) {
+ ((ChildrenListener)listeners[i+1]).childrenAdded(e);
+ }
+ }
+
public List getGCRuns() {
// PENDING
return null;
}
Index: MethodR.java
===================================================================
RCS file: /cvsroot/javaprofiler/jpiimpl/net/sourceforge/javaprofiler/jpiimpl/realtime/MethodR.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** MethodR.java 11 Jul 2002 18:17:23 -0000 1.8
--- MethodR.java 17 Jul 2002 12:25:36 -0000 1.9
***************
*** 156,161 ****
public void refreshCPUTraces() {
image.extractChildRoot(this.objId, IProf.CPU_METHOD_TRACES, image.
! cpuTraceFactory);
}
--- 156,163 ----
public void refreshCPUTraces() {
+ List list=new ArrayList();
image.extractChildRoot(this.objId, IProf.CPU_METHOD_TRACES, image.
! cpuTraceFactory, list);
! image.addCPUTraces(list);
}
***************
*** 167,172 ****
public void refreshAllocTraces() {
image.extractChildRoot(this.objId, IProf.ALLOC_METHOD_TRACES, image.
! allocTraceFactory);
}
--- 169,176 ----
public void refreshAllocTraces() {
+ List list=new ArrayList();
image.extractChildRoot(this.objId, IProf.ALLOC_METHOD_TRACES, image.
! allocTraceFactory, list);
! image.addAllocTraces(list);
}
***************
*** 178,183 ****
public void refreshMonTraces() {
image.extractChildRoot(this.objId, IProf.MON_METHOD_TRACES, image.
! monTraceFactory);
}
--- 182,189 ----
public void refreshMonTraces() {
+ List list=new ArrayList();
image.extractChildRoot(this.objId, IProf.MON_METHOD_TRACES, image.
! monTraceFactory, list);
! image.addMonTraces(list);
}
Index: ThreadGroupR.java
===================================================================
RCS file: /cvsroot/javaprofiler/jpiimpl/net/sourceforge/javaprofiler/jpiimpl/realtime/ThreadGroupR.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** ThreadGroupR.java 2 Jul 2002 20:27:02 -0000 1.5
--- ThreadGroupR.java 17 Jul 2002 12:25:36 -0000 1.6
***************
*** 36,39 ****
--- 36,40 ----
import java.util.*;
+ import javax.swing.event.EventListenerList;
import net.sourceforge.javaprofiler.jpi.*;
import net.sourceforge.javaprofiler.jpiimpl.commun.IProf;
***************
*** 64,67 ****
--- 65,71 ----
threads);
+ /** A list of event listeners for this component. */
+ protected EventListenerList threadListeners = new EventListenerList();
+
/** Constructs new object with info.
* @param sid Object with data from communication layer.
***************
*** 95,100 ****
public void refreshThreads() {
image.extractChildRoot(this.objId, IProf.GROUP_THREADS, image.
! threadFactory);
}
--- 99,106 ----
public void refreshThreads() {
+ List list=new ArrayList();
image.extractChildRoot(this.objId, IProf.GROUP_THREADS, image.
! threadFactory, list);
! image.addThreads(list);
}
***************
*** 134,138 ****
void addThread(ThreadRef thread) {
threads.add(thread);
! // PENDING event
}
--- 140,145 ----
void addThread(ThreadRef thread) {
threads.add(thread);
! fireChildrenAdded(new ChildrenEvent(this, Constants.THREAD, new Object[]
! {thread}, new int[]{threads.size()-1}), threadListeners);
}
***************
*** 185,195 ****
}
! public void removeChildrenListener(int type, ChildrenListener listener) {
! // PENDING
}
! public void addChildrenListener(int type, ChildrenListener listener) {
! // PENDING
}
}
--- 192,236 ----
}
! // -------------------------------------------------------------- listeners
!
! /**
! * Removes an <code>ChildrenListener</code> from this object.
! * @param l the listener to be removed
! */
! public void removeChildrenListener(int type, ChildrenListener l) {
! if (type==Constants.THREAD)
! threadListeners.remove(ChildrenListener.class, l);
! else
! throw new IllegalArgumentException("Illegal child type.");
}
! /**
! * Adds an <code>ChildrenListener</code> to this object.
! * <strong>Warning:</strong> Events are not dispatched in the swing event-
! * dispatching thread, rather they are dispatched in the thread which
! * caused new data to be loaded.
! * @param l the listener to be added
! */
! public void addChildrenListener(int type, ChildrenListener l) {
! if (type==Constants.THREAD)
! threadListeners.add(ChildrenListener.class, l);
! else
! throw new IllegalArgumentException("Illegal child type.");
}
+ /**
+ * Notifies all listeners that have registered interest for
+ * notification on this event type. The event instance
+ * is taken from a parameter.
+ * @param e the event to fire
+ * @param list list holding the listeners to receive the event
+ */
+ private void fireChildrenAdded(ChildrenEvent e, EventListenerList list) {
+ // Guaranteed to return a non-null array
+ Object[] listeners = list.getListenerList();
+ // Process the listeners last to first, notifying all
+ for (int i = listeners.length-2; i>=0; i-=2) {
+ ((ChildrenListener)listeners[i+1]).childrenAdded(e);
+ }
+ }
}
|