jdk/src/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/RemoteMonitoredVm.java
changeset 25401 2e2b5a66a787
parent 5506 202f599c92aa
equal deleted inserted replaced
25400:f35efd853e7b 25401:2e2b5a66a787
     1 /*
     1 /*
     2  * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
   196      * Fire MonitoredVmStructureChanged events.
   196      * Fire MonitoredVmStructureChanged events.
   197      *
   197      *
   198      * @param inserted List of Monitor objects inserted.
   198      * @param inserted List of Monitor objects inserted.
   199      * @param removed List of Monitor objects removed.
   199      * @param removed List of Monitor objects removed.
   200      */
   200      */
   201     void fireMonitorStatusChangedEvents(List inserted, List removed) {
   201     @SuppressWarnings("unchecked") // Cast of result of clone
   202         ArrayList registered = null;
   202     void fireMonitorStatusChangedEvents(List<Monitor> inserted, List<Monitor> removed) {
       
   203         ArrayList<VmListener> registered = null;
   203         MonitorStatusChangeEvent ev = null;
   204         MonitorStatusChangeEvent ev = null;
   204 
   205 
   205         synchronized(listeners) {
   206         synchronized(listeners) {
   206             registered = (ArrayList)listeners.clone();
   207             registered = (ArrayList)listeners.clone();
   207         }
   208         }
   208 
   209 
   209         for (Iterator i = registered.iterator(); i.hasNext(); /* empty */) {
   210         for (Iterator<VmListener> i = registered.iterator(); i.hasNext(); /* empty */) {
   210             VmListener l = (VmListener)i.next();
   211             VmListener l = i.next();
   211             if (ev == null) {
   212             if (ev == null) {
   212                 ev = new MonitorStatusChangeEvent(this, inserted, removed);
   213                 ev = new MonitorStatusChangeEvent(this, inserted, removed);
   213             }
   214             }
   214             l.monitorStatusChanged(ev);
   215             l.monitorStatusChanged(ev);
   215         }
   216         }
   216     }
   217     }
   217 
   218 
   218     /**
   219     /**
   219      * Fire MonitoredVmStructureChanged events.
   220      * Fire MonitoredVmStructureChanged events.
   220      */
   221      */
       
   222     @SuppressWarnings("unchecked") // Cast of result of clone
   221     void fireMonitorsUpdatedEvents() {
   223     void fireMonitorsUpdatedEvents() {
   222         ArrayList registered = null;
   224         ArrayList<VmListener> registered = null;
   223         VmEvent ev = null;
   225         VmEvent ev = null;
   224 
   226 
   225         synchronized(listeners) {
   227         synchronized(listeners) {
   226             registered = (ArrayList)listeners.clone();
   228             registered = (ArrayList)listeners.clone();
   227         }
   229         }
   228 
   230 
   229         for (Iterator i = registered.iterator(); i.hasNext(); /* empty */) {
   231         for (Iterator<VmListener> i = registered.iterator(); i.hasNext(); /* empty */) {
   230             VmListener l = (VmListener)i.next();
   232             VmListener l = i.next();
   231             if (ev == null) {
   233             if (ev == null) {
   232                 ev = new VmEvent(this);
   234                 ev = new VmEvent(this);
   233             }
   235             }
   234             l.monitorsUpdated(ev);
   236             l.monitorsUpdated(ev);
   235         }
   237         }
   254         public void run() {
   256         public void run() {
   255             super.run();
   257             super.run();
   256             try {
   258             try {
   257                 MonitorStatus status = getMonitorStatus();
   259                 MonitorStatus status = getMonitorStatus();
   258 
   260 
   259                 List inserted = status.getInserted();
   261                 List<Monitor> inserted = status.getInserted();
   260                 List removed = status.getRemoved();
   262                 List<Monitor> removed = status.getRemoved();
   261 
   263 
   262                 if (!inserted.isEmpty() || !removed.isEmpty()) {
   264                 if (!inserted.isEmpty() || !removed.isEmpty()) {
   263                     fireMonitorStatusChangedEvents(inserted, removed);
   265                     fireMonitorStatusChangedEvents(inserted, removed);
   264                 }
   266                 }
   265             } catch (MonitorException e) {
   267             } catch (MonitorException e) {