@Override public Object process(Entry<String, Node> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Node node = entry.getValue(); if (node.getVersion() == getVersion()) { entry.setValue(null); auditEntity(AuditType.delete, node); return node; } else { // throw ex ? logger.warn("process; outdated user version: {}; entry version: {}; process terminated", getVersion(), entry.getValue().getVersion()); } } return null; }
/** * {@inheritDoc} */ @Override public String toString() { return "Node [name=" + name + "; version=" + getVersion() + "; created at=" + getCreatedAt() + "; by=" + getCreatedBy() + "; options=" + options + "]"; }
@Override public Object process(Entry<String, Node> entry) { logger.debug("process.enter; entry: {}", entry); if (entry.getValue() != null) { Node node = entry.getValue(); if (node.getVersion() == getVersion()) { // what if new options are not consistent with the current node state?? if (override) { node.setOptions(options); } else { for (String name: options.stringPropertyNames()) { node.setOption(name, options.getProperty(name)); } } if (updateNodesInCluster(node, comment) == 0) { logger.info("process; no members updated!"); // rollback changes somehow? } node.updateVersion(getAdmin()); entry.setValue(node); auditEntity(AuditType.update, node); return node; } } return null; }
@ManagedOperation(description="Set named Node option") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "A name of the option to set"), @ManagedOperationParameter(name = "value", description = "A value of the option to set")}) public void setOption(String name, String value) { Node node = getEntity(); if (node != null) { Properties opts = new Properties(); opts.setProperty(name, value); Object result = entityCache.executeOnKey(entityName, new NodeUpdater(node.getVersion(), getCurrentUser(), "Option " + name + " set from JMX console", false, opts)); logger.trace("setProperty; execution result: {}", result); } }
@ManagedOperation(description="Removes named Node option") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "A name of the option to remove")}) public void removeOption(String name) { Node node = getEntity(); if (node != null) { Properties opts = node.getOptions(); opts.remove(name); // is it safe?? Object result = entityCache.executeOnKey(entityName, new NodeUpdater(node.getVersion(), getCurrentUser(), "Option " + name + " removed from JMX console", true, opts)); logger.trace("removeProperty; execution result: {}", result); } }
@ManagedOperation(description="Delete existing Node") @ManagedOperationParameters({ @ManagedOperationParameter(name = "name", description = "Node name")}) public boolean deleteNode(String name) { Node node = entityCache.get(name); if (node != null) { Object result = entityCache.executeOnKey(name, new NodeRemover(node.getVersion(), getCurrentUser())); logger.debug("deleteNode; execution result: {}", result); return result != null; } return false; }