package org.infinispan.server.endpoint.subsystem; import java.util.Set; import java.util.stream.Collectors; import org.jboss.dmr.ModelNode; /** * @author gustavonalle * @since 8.1 */ public class ModelNodeUtils { static ModelNode addToList(ModelNode listNode, ModelNode elements) { if (elements == null || !elements.isDefined()) return listNode; if (!listNode.isDefined()) { listNode.setEmptyList(); } ModelNode result = listNode.clone(); elements.asList().stream().map(ModelNode::asString).forEach(toAdd -> { boolean existent = result.asList().stream().anyMatch(m -> m.asString().equals(toAdd)); if (!existent) { result.add().set(toAdd); } }); return result; } static boolean contains(ModelNode list, String value) { return list.isDefined() && list.asList().stream().anyMatch(modelNode -> modelNode.asString().contains(value)); } static ModelNode removeFromList(ModelNode original, ModelNode elements) { if (elements == null || !elements.isDefined() || !original.isDefined()) return original; ModelNode result = new ModelNode(); Set<String> toRemove = elements.asList().stream().map(ModelNode::asString).collect(Collectors.toSet()); original.asList().stream().map(ModelNode::asString).filter(e -> !toRemove.contains(e)).forEach(result::add); return result; } }