Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WFCORE-5906 Expand set of utility methods for creating generic operations #5096

Merged
merged 1 commit into from May 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -18,6 +18,9 @@
*/
package org.jboss.as.controller.operations.common;

import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD_INDEX;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.COMPOSITE;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.FAILED;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.FAILURE_DESCRIPTION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.NAME;
Expand All @@ -28,17 +31,21 @@
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.READ_RESOURCE_DESCRIPTION_OPERATION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.READ_RESOURCE_OPERATION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.REMOVE;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.STEPS;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.UNDEFINE_ATTRIBUTE_OPERATION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.VALUE;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.WRITE_ATTRIBUTE_OPERATION;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.jboss.as.controller.OperationDefinition;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.logging.ControllerLogger;
import org.jboss.as.controller.operations.global.ListOperations;
import org.jboss.as.controller.operations.global.MapOperations;
import org.jboss.dmr.ModelNode;
import org.jboss.dmr.ModelType;

Expand Down Expand Up @@ -66,15 +73,42 @@ public static String getNameFromAddress(PathAddress address) {
}

public static ModelNode createAddOperation(final PathAddress address) {
return createOperation(ModelDescriptionConstants.ADD, address);
return createAddOperation(address, Map.of());
}

public static ModelNode createAddOperation(PathAddress address, Map<String, ModelNode> parameters) {
ModelNode operation = createEmptyOperation(ADD, address);
for (Map.Entry<String, ModelNode> entry : parameters.entrySet()) {
operation.get(entry.getKey()).set(entry.getValue());
}
return operation;
}

public static ModelNode createAddOperation(PathAddress address, int index) {
return createAddOperation(address, index, Map.of());
}

public static ModelNode createAddOperation(PathAddress address, int index, Map<String, ModelNode> parameters) {
ModelNode operation = createAddOperation(address, parameters);
operation.get(ADD_INDEX).set(new ModelNode(index));
return operation;
}

public static ModelNode createAddOperation() {
return createEmptyOperation(ModelDescriptionConstants.ADD, null);
return createEmptyOperation(ADD, null);
}

public static ModelNode createRemoveOperation(final PathAddress address) {
return createOperation(ModelDescriptionConstants.REMOVE, address);
return createEmptyOperation(REMOVE, address);
}

public static ModelNode createCompositeOperation(List<ModelNode> operations) {
ModelNode operation = createEmptyOperation(COMPOSITE, PathAddress.EMPTY_ADDRESS);
ModelNode steps = operation.get(STEPS);
for (ModelNode step: operations) {
steps.add(step);
}
return operation;
}

public static ModelNode createOperation(final String operationName, final PathAddress address) {
Expand Down Expand Up @@ -105,6 +139,12 @@ public static ModelNode getResourceRemoveOperation(final PathAddress address) {
return createEmptyOperation(REMOVE, address);
}

private static ModelNode createAttributeOperation(String operationName, PathAddress address, String attributeName) {
ModelNode operation = createEmptyOperation(operationName, address);
operation.get(NAME).set(attributeName);
return operation;
}

public static ModelNode getWriteAttributeOperation(ModelNode address, String attributeName, String value) {
return getWriteAttributeOperation(address, attributeName, new ModelNode().set(value));
}
Expand All @@ -126,16 +166,13 @@ public static ModelNode getWriteAttributeOperation(final PathAddress address, S
}

public static ModelNode getWriteAttributeOperation(final PathAddress address, String attributeName, ModelNode value) {
ModelNode op = createEmptyOperation(WRITE_ATTRIBUTE_OPERATION, address);
op.get(NAME).set(attributeName);
ModelNode op = createAttributeOperation(WRITE_ATTRIBUTE_OPERATION, address, attributeName);
op.get(VALUE).set(value);
return op;
}

public static ModelNode getReadAttributeOperation(final PathAddress address, String attributeName) {
ModelNode op = createEmptyOperation(READ_ATTRIBUTE_OPERATION, address);
op.get(NAME).set(attributeName);
return op;
return createAttributeOperation(READ_ATTRIBUTE_OPERATION, address, attributeName);
}

public static ModelNode getReadResourceDescriptionOperation(final PathAddress address) {
Expand All @@ -149,9 +186,63 @@ public static ModelNode getReadResourceOperation(final PathAddress address) {
}

public static ModelNode getUndefineAttributeOperation(final PathAddress address, String attributeName) {
ModelNode op = createEmptyOperation(UNDEFINE_ATTRIBUTE_OPERATION, address);
op.get(NAME).set(attributeName);
return op;
return createAttributeOperation(UNDEFINE_ATTRIBUTE_OPERATION, address, attributeName);
}

public static ModelNode createListAddOperation(PathAddress address, String attributeName, String value) {
return createListElementOperation(ListOperations.LIST_ADD_DEFINITION, address, attributeName, value);
}

public static ModelNode createListRemoveOperation(PathAddress address, String attributeName, String value) {
return createListElementOperation(ListOperations.LIST_REMOVE_DEFINITION, address, attributeName, value);
}

public static ModelNode createListRemoveOperation(PathAddress address, String attributeName, int index) {
return createListElementOperation(ListOperations.LIST_REMOVE_DEFINITION, address, attributeName, index);
}

public static ModelNode createListGetOperation(PathAddress address, String attributeName, int index) {
return createListElementOperation(ListOperations.LIST_GET_DEFINITION, address, attributeName, index);
}

public static ModelNode createListClearOperation(PathAddress address, String attributeName) {
return createAttributeOperation(ListOperations.LIST_CLEAR_DEFINITION.getName(), address, attributeName);
}

private static ModelNode createListElementOperation(OperationDefinition definition, PathAddress address, String attributeName, String value) {
ModelNode operation = createAttributeOperation(definition.getName(), address, attributeName);
operation.get(VALUE).set(value);
return operation;
}

private static ModelNode createListElementOperation(OperationDefinition definition, PathAddress address, String attributeName, int index) {
ModelNode operation = createAttributeOperation(definition.getName(), address, attributeName);
operation.get(ListOperations.INDEX.getName()).set(new ModelNode(index));
return operation;
}

public static ModelNode createMapGetOperation(PathAddress address, String attributeName, String key) {
return createMapEntryOperation(MapOperations.MAP_GET_DEFINITION, address, attributeName, key);
}

public static ModelNode createMapPutOperation(PathAddress address, String attributeName, String key, String value) {
ModelNode operation = createMapEntryOperation(MapOperations.MAP_PUT_DEFINITION, address, attributeName, key);
operation.get(VALUE).set(value);
return operation;
}

public static ModelNode createMapRemoveOperation(PathAddress address, String attributeName, String key) {
return createMapEntryOperation(MapOperations.MAP_REMOVE_DEFINITION, address, attributeName, key);
}

public static ModelNode createMapClearOperation(PathAddress address, String attributeName) {
return createAttributeOperation(MapOperations.MAP_CLEAR_DEFINITION.getName(), address, attributeName);
}

private static ModelNode createMapEntryOperation(OperationDefinition definition, PathAddress address, String attributeName, String key) {
ModelNode operation = createAttributeOperation(definition.getName(), address, attributeName);
operation.get(MapOperations.KEY.getName()).set(key);
return operation;
}

public static boolean isExpression(String value) {
Expand Down
Expand Up @@ -44,15 +44,16 @@
*/
public class ListOperations {

public static final SimpleAttributeDefinition INDEX = new SimpleAttributeDefinitionBuilder("index", ModelType.INT).setRequired(false).build();
public static final OperationDefinition LIST_ADD_DEFINITION = new SimpleOperationDefinitionBuilder("list-add", ControllerResolver.getResolver("global"))
.setParameters(AbstractCollectionHandler.NAME, AbstractCollectionHandler.VALUE, AbstractListHandler.INDEX)
.setParameters(AbstractCollectionHandler.NAME, AbstractCollectionHandler.VALUE, INDEX)
.build();
public static final OperationDefinition LIST_GET_DEFINITION = new SimpleOperationDefinitionBuilder("list-get", ControllerResolver.getResolver("global"))
.setParameters(AbstractCollectionHandler.NAME, AbstractListHandler.INDEX)
.setParameters(AbstractCollectionHandler.NAME, INDEX)
.setReadOnly()
.build();
public static final OperationDefinition LIST_REMOVE_DEFINITION = new SimpleOperationDefinitionBuilder("list-remove", ControllerResolver.getResolver("global"))
.setParameters(AbstractCollectionHandler.NAME, AbstractCollectionHandler.VALUE, AbstractListHandler.INDEX)
.setParameters(AbstractCollectionHandler.NAME, AbstractCollectionHandler.VALUE, INDEX)
.build();
public static final OperationDefinition LIST_CLEAR_DEFINITION = new SimpleOperationDefinitionBuilder("list-clear", ControllerResolver.getResolver("global"))
.setParameters(AbstractCollectionHandler.NAME)
Expand All @@ -72,7 +73,6 @@ public class ListOperations {
* @author Tomaz Cerar (c) 2014 Red Hat Inc.
*/
abstract static class AbstractListHandler extends AbstractCollectionHandler {
static final SimpleAttributeDefinition INDEX = new SimpleAttributeDefinitionBuilder("index", ModelType.INT).setRequired(false).build();

AbstractListHandler(AttributeDefinition... attributes) {
super(attributes);
Expand Down
Expand Up @@ -38,18 +38,19 @@
* @author Tomaz Cerar (c) 2014 Red Hat Inc.
*/
public class MapOperations {
public static final SimpleAttributeDefinition KEY = new SimpleAttributeDefinitionBuilder("key", ModelType.STRING, false).build();
public static final OperationDefinition MAP_CLEAR_DEFINITION = new SimpleOperationDefinitionBuilder("map-clear", ControllerResolver.getResolver("global"))
.setParameters(AbstractMapHandler.NAME)
.setParameters(AbstractCollectionHandler.NAME)
.build();
public static final OperationDefinition MAP_REMOVE_DEFINITION = new SimpleOperationDefinitionBuilder("map-remove", ControllerResolver.getResolver("global"))
.setParameters(AbstractMapHandler.NAME, AbstractMapHandler.KEY)
.setParameters(AbstractCollectionHandler.NAME, KEY)
.build();
public static final OperationDefinition MAP_GET_DEFINITION = new SimpleOperationDefinitionBuilder("map-get", ControllerResolver.getResolver("global"))
.setParameters(AbstractMapHandler.NAME, AbstractMapHandler.KEY)
.setParameters(AbstractCollectionHandler.NAME, KEY)
.setReadOnly()
.build();
public static final OperationDefinition MAP_PUT_DEFINITION = new SimpleOperationDefinitionBuilder("map-put", ControllerResolver.getResolver("global"))
.setParameters(AbstractMapHandler.NAME, AbstractMapHandler.KEY, AbstractMapHandler.VALUE)
.setParameters(AbstractCollectionHandler.NAME, KEY, AbstractCollectionHandler.VALUE)
.build();

public static final OperationStepHandler MAP_CLEAR_HANDLER = new MapClearHandler();
Expand All @@ -66,7 +67,6 @@ public class MapOperations {
* @author Tomaz Cerar (c) 2014 Red Hat Inc.
*/
abstract static class AbstractMapHandler extends AbstractCollectionHandler {
static final SimpleAttributeDefinition KEY = new SimpleAttributeDefinitionBuilder("key", ModelType.STRING, false).build();

AbstractMapHandler(AttributeDefinition... attributes) {
super(attributes);
Expand Down