mirror of https://github.com/apache/nifi.git
CEM-9557: Change C2 OperandType to Enum
Signed-off-by: Matthew Burgess <mattyb149@apache.org> This closes #5649
This commit is contained in:
parent
73de3a0fe7
commit
93b58ccffe
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
package org.apache.nifi.c2.protocol.api;
|
package org.apache.nifi.c2.protocol.api;
|
||||||
|
|
||||||
|
import static java.lang.String.format;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -29,7 +31,7 @@ public class C2Operation implements Serializable {
|
||||||
|
|
||||||
private String identifier;
|
private String identifier;
|
||||||
private OperationType operation;
|
private OperationType operation;
|
||||||
private String operand;
|
private OperandType operand;
|
||||||
private Map<String, String> args;
|
private Map<String, String> args;
|
||||||
private Set<String> dependencies;
|
private Set<String> dependencies;
|
||||||
|
|
||||||
|
@ -48,6 +50,10 @@ public class C2Operation implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOperation(OperationType operation) {
|
public void setOperation(OperationType operation) {
|
||||||
|
if (operand != null && !operation.isSupportedOperand(operand)) {
|
||||||
|
throw new IllegalArgumentException(format("%s is not a valid operand for %s", operand, operation));
|
||||||
|
}
|
||||||
|
|
||||||
this.operation = operation;
|
this.operation = operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,11 +64,15 @@ public class C2Operation implements Serializable {
|
||||||
"If no operand is needed, this field will be absent." +
|
"If no operand is needed, this field will be absent." +
|
||||||
"If one operand is insufficient, the operation will contain an args map" +
|
"If one operand is insufficient, the operation will contain an args map" +
|
||||||
"with additional keyword parameters and values (see 'args').")
|
"with additional keyword parameters and values (see 'args').")
|
||||||
public String getOperand() {
|
public OperandType getOperand() {
|
||||||
return operand;
|
return operand;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOperand(String operand) {
|
public void setOperand(OperandType operand) {
|
||||||
|
if (operation != null && !operation.isSupportedOperand(operand)) {
|
||||||
|
throw new IllegalArgumentException(format("%s is not a valid operand for %s", operand, operation));
|
||||||
|
}
|
||||||
|
|
||||||
this.operand = operand;
|
this.operand = operand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
* (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.nifi.c2.protocol.api;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public enum OperandType {
|
||||||
|
|
||||||
|
CONFIGURATION,
|
||||||
|
CONNECTION,
|
||||||
|
DEBUG,
|
||||||
|
MANIFEST,
|
||||||
|
REPOSITORY;
|
||||||
|
|
||||||
|
public static Optional<OperandType> fromString(String value) {
|
||||||
|
return Arrays.stream(values())
|
||||||
|
.filter(operandType -> operandType.name().equalsIgnoreCase(value))
|
||||||
|
.findAny();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,15 @@
|
||||||
|
|
||||||
package org.apache.nifi.c2.protocol.api;
|
package org.apache.nifi.c2.protocol.api;
|
||||||
|
|
||||||
|
import static org.apache.nifi.c2.protocol.api.OperandType.CONFIGURATION;
|
||||||
|
import static org.apache.nifi.c2.protocol.api.OperandType.CONNECTION;
|
||||||
|
import static org.apache.nifi.c2.protocol.api.OperandType.DEBUG;
|
||||||
|
import static org.apache.nifi.c2.protocol.api.OperandType.MANIFEST;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public enum OperationType {
|
public enum OperationType {
|
||||||
|
|
||||||
// C2 Client Status Updates -> C2 Server
|
// C2 Client Status Updates -> C2 Server
|
||||||
|
@ -24,14 +33,25 @@ public enum OperationType {
|
||||||
HEARTBEAT,
|
HEARTBEAT,
|
||||||
|
|
||||||
// C2 Server -> C2 Client Commands
|
// C2 Server -> C2 Client Commands
|
||||||
CLEAR,
|
CLEAR(CONNECTION),
|
||||||
DESCRIBE,
|
DESCRIBE(MANIFEST),
|
||||||
UPDATE,
|
UPDATE(CONFIGURATION),
|
||||||
RESTART,
|
RESTART,
|
||||||
START,
|
START,
|
||||||
STOP,
|
STOP,
|
||||||
PAUSE,
|
PAUSE,
|
||||||
REPLICATE,
|
REPLICATE,
|
||||||
SUBSCRIBE,
|
SUBSCRIBE,
|
||||||
TRANSFER
|
TRANSFER(DEBUG);
|
||||||
|
|
||||||
|
private final Set<OperandType> supportedOperands;
|
||||||
|
|
||||||
|
OperationType(OperandType... supportedOperands) {
|
||||||
|
this.supportedOperands = Arrays.stream(supportedOperands).collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSupportedOperand(OperandType operand) {
|
||||||
|
return supportedOperands.contains(operand);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue