1 23 24 38 39 package com.sun.enterprise.admin.monitor.registry.spi.reconfig; 40 41 import java.util.Iterator ; 42 import java.util.Map ; 43 import java.util.logging.Logger ; 44 import com.sun.enterprise.admin.monitor.registry.MonitoringLevel; 45 import com.sun.enterprise.admin.monitor.registry.MonitoredObjectType; 46 import com.sun.enterprise.admin.monitor.registry.StatsHolder; 47 import com.sun.enterprise.admin.monitor.registry.MonitoringLevelListener; 48 49 import com.sun.enterprise.admin.monitor.registry.spi.ValueListMap; 50 import com.sun.enterprise.admin.monitor.registry.spi.MonitoringRegistrationHelper; 51 import com.sun.enterprise.admin.common.constant.AdminConstants; 52 53 61 class TransactionServiceChangeHandler implements ChangeHandler { 62 63 private final ChangeHandler successor; 64 private final ValueListMap listeners; 65 66 private static final Logger logger = Logger.getLogger(AdminConstants.kLoggerName); 67 68 TransactionServiceChangeHandler(ChangeHandler successor, ValueListMap listeners) { 69 this.successor = successor; 70 this.listeners = listeners; 71 } 72 73 public void handleChange(MonitoredObjectType t, MonitoringLevel from, MonitoringLevel to) { 74 if (isTransactionServiceType(t)) { 75 handleChange(from, to); 76 } 77 else { 78 successor.handleChange(t, from, to); 79 } 80 } 81 82 private boolean isTransactionServiceType(MonitoredObjectType t) { 83 return ( t == MonitoredObjectType.TRANSACTION_SERVICE ); 84 } 85 86 private void handleChange(MonitoringLevel from, MonitoringLevel to) { 87 if (off2Low(from, to) || off2High(from, to)) { 88 notifyListeners(from, to); 89 registerMBeans(); 90 } 91 if (low2Off(from, to) || high2Off(from, to)) { 92 unregisterMBeans(); 93 notifyListeners(from, to); 94 } 95 if (low2High(from, to) || high2Low(from, to)) { 96 } 98 } 99 100 private void notifyListeners(MonitoringLevel from, MonitoringLevel to) { 101 logger.finer("DynamicReconfigurator: Now notifying the listeners for jta stats --- from = " + from.toString() + " to = " + to.toString()); 102 final Map l = (Map )listeners.get(MonitoredObjectType.TRANSACTION_SERVICE); 103 if (l == null) 104 return; 105 final Iterator it = l.keySet().iterator(); 106 while (it.hasNext()) { 107 final MonitoringLevelListener ml = (MonitoringLevelListener)it.next(); 108 ml.changeLevel(from, to, MonitoredObjectType.TRANSACTION_SERVICE); 109 } 110 } 111 112 private void registerMBeans() { 113 final MonitoringRegistrationHelper registryImpl = 114 (MonitoringRegistrationHelper) MonitoringRegistrationHelper.getInstance(); 115 117 final Iterator iter = registryImpl.getTransactionServiceNodes().iterator(); 119 while (iter.hasNext()) { 120 final StatsHolder c = (StatsHolder) iter.next(); 121 c.registerMBean(); 122 logger.finer("DynamicReconfigurator: Now Registering MBean for --- " + c.getName()); 123 } 124 } 125 126 private void unregisterMBeans() { 127 final MonitoringRegistrationHelper registryImpl = 128 (MonitoringRegistrationHelper) MonitoringRegistrationHelper.getInstance(); 129 131 final Iterator iter = registryImpl.getTransactionServiceNodes().iterator(); 132 while (iter.hasNext()) { 133 final StatsHolder c = (StatsHolder) iter.next(); 134 c.unregisterMBean(); 135 logger.finer("DynamicReconfigurator: Now UnRegistering MBean for --- " + c.getName()); 136 } 137 } 138 139 private boolean off2Low(MonitoringLevel from, MonitoringLevel to) { 140 return ( from == MonitoringLevel.OFF && to == MonitoringLevel.LOW ); 141 } 142 private boolean off2High(MonitoringLevel from, MonitoringLevel to) { 143 return ( from == MonitoringLevel.OFF && to == MonitoringLevel.HIGH ); 144 } 145 private boolean low2Off(MonitoringLevel from, MonitoringLevel to) { 146 return ( from == MonitoringLevel.LOW && to == MonitoringLevel.OFF); 147 } 148 private boolean high2Off(MonitoringLevel from, MonitoringLevel to) { 149 return ( from == MonitoringLevel.HIGH && to == MonitoringLevel.OFF ); 150 } 151 private boolean low2High(MonitoringLevel from, MonitoringLevel to) { 152 return ( from == MonitoringLevel.LOW && to == MonitoringLevel.HIGH); 153 } 154 private boolean high2Low(MonitoringLevel from, MonitoringLevel to) { 155 return ( from == MonitoringLevel.HIGH && to == MonitoringLevel.LOW ); 156 } 157 } 158 | Popular Tags |