private void updateTreeNodes(StatsProviderRegistryElement spre, boolean enable) { // Enable/Disable the child TreeNodes String parentNodePath = spre.getParentTreeNodePath(); List<String> childNodeNames = spre.getChildTreeNodeNames(); TreeNode rootNode = mrdr.get(instanceName); if (rootNode != null) { // This has to return one node List<TreeNode> nodeList = rootNode.getNodes(parentNodePath, false, true); TreeNode parentNode = nodeList.get(0); // For each child Node, enable it Collection<TreeNode> childNodes = parentNode.getChildNodes(); boolean hasUpdatedNode = false; for (TreeNode childNode : childNodes) { if (childNodeNames.contains(childNode.getName())) { // Enabling or Disabling the child node (based on enable flag) if (childNode.isEnabled() != enable) { childNode.setEnabled(enable); hasUpdatedNode = true; } } } if (!hasUpdatedNode) return; // Make sure the tree path is affected with the changes. if (enable) { enableTreeNode(parentNode); } else { disableTreeNode(parentNode); } } }
public void unregister(Object statsProvider) { // Unregisters the statsProvider try { StatsProviderRegistryElement spre = statsProviderRegistry.getStatsProviderRegistryElement(statsProvider); if (spre == null) { logger.log( Level.INFO, invalidStatsProvider, new Object[] {statsProvider.getClass().getName()}); return; } // get the Parent node and delete all children nodes (only that we know of) String parentNodePath = spre.getParentTreeNodePath(); List<String> childNodeNames = spre.getChildTreeNodeNames(); TreeNode rootNode = mrdr.get(instanceName); if ((rootNode != null) && (parentNodePath != null)) { // This has to return one node List<TreeNode> nodeList = rootNode.getNodes(parentNodePath, false, true); if (nodeList.size() > 0) { TreeNode parentNode = nodeList.get(0); // Remove each of the child nodes Collection<TreeNode> childNodes = parentNode.getChildNodes(); for (TreeNode childNode : childNodes) { if (childNodeNames.contains(childNode.getName())) { parentNode.removeChild(childNode); } } if (!parentNode.hasChildNodes()) removeParentNode(parentNode); } } // get the handles and unregister the listeners from Flashlight Collection<ProbeClientMethodHandle> handles = spre.getHandles(); if (handles != null) { for (ProbeClientMethodHandle handle : handles) { // handle.remove????? Mahesh? // TODO IMPLEMENTATION // For now disable the handle => remove the client from invokerlist handle.disable(); } } // unregister the statsProvider from Gmbal if (spre.getManagedObjectManager() != null) unregisterGmbal(spre); // Unregister from the MonitoringDataTreeRegistry and the map entries statsProviderRegistry.unregisterStatsProvider(statsProvider); } catch (Exception ex) { String msg = MessageFormat.format(errorUnregisteringStatsProvider, statsProvider.getClass().getName()); logger.log(Level.SEVERE, msg, ex); } }
private void resetChildNodeStatistics( String parentNodePath, List<String> childNodeNames, String statsProviderName) { TreeNode rootNode = mrdr.get(instanceName); if (rootNode != null) { List<TreeNode> nodeList = rootNode.getNodes(parentNodePath, false, true); if (nodeList.size() > 0) { TreeNode parentNode = nodeList.get(0); Collection<TreeNode> childNodes = parentNode.getChildNodes(); for (TreeNode childNode : childNodes) { if (childNodeNames.contains(childNode.getName())) { invokeStatisticResetMethod(childNode.getValue()); } } } else { logger.log(Level.WARNING, nodeNotFound, new Object[] {parentNodePath, statsProviderName}); } } }
private void disableTreeNode(TreeNode treeNode) { if (treeNode.isEnabled()) { boolean isAnyChildEnabled = false; Collection<TreeNode> childNodes = treeNode.getChildNodes(); if (childNodes != null) { for (TreeNode childNode : childNodes) { if (childNode.isEnabled()) { isAnyChildEnabled = true; break; } } } // if none of the childs are enabled, disable the parent if (!isAnyChildEnabled) { treeNode.setEnabled(false); // recursevely call the disable on parent nodes if (treeNode.getParent() != null) { disableTreeNode(treeNode.getParent()); } } } }