NIFI-1563: Federate requests and merge responses from nodes instead of storing bulletins and stats at NCM
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/ad32cb82 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/ad32cb82 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/ad32cb82 Branch: refs/heads/NIFI-1563 Commit: ad32cb8243cc20ce7b04cc1fce0263503322ce5b Parents: 6776060 Author: Mark Payne <[email protected]> Authored: Thu Mar 3 13:29:34 2016 -0500 Committer: Mark Payne <[email protected]> Committed: Thu Mar 3 13:29:34 2016 -0500 ---------------------------------------------------------------------- .../nifi-framework/nifi-client-dto/pom.xml | 8 + .../api/dto/status/ClusterStatusHistoryDTO.java | 79 -- .../web/api/dto/status/ConnectionStatusDTO.java | 168 +++-- .../web/api/dto/status/ControllerStatusDTO.java | 134 ++-- .../api/dto/status/NodeStatusHistoryDTO.java | 60 -- .../nifi/web/api/dto/status/PortStatusDTO.java | 100 ++- .../api/dto/status/ProcessGroupStatusDTO.java | 372 +++++++--- .../web/api/dto/status/ProcessorStatusDTO.java | 159 +++- .../dto/status/RemoteProcessGroupStatusDTO.java | 107 ++- .../nifi/web/api/dto/status/StatusDTO.java | 14 +- .../web/api/dto/status/StatusHistoryDTO.java | 66 +- .../api/dto/status/StatusHistoryDetailDTO.java | 59 -- .../nifi/web/api/dto/status/StatusMerger.java | 375 ++++++++++ .../api/entity/ClusterStatusHistoryEntity.java | 43 -- .../cluster/protocol/NodeProtocolSender.java | 10 - .../protocol/impl/NodeProtocolSenderImpl.java | 6 - .../impl/NodeProtocolSenderListener.java | 6 - .../protocol/jaxb/message/ObjectFactory.java | 5 - .../protocol/message/NodeBulletinsMessage.java | 42 -- .../protocol/message/ProtocolMessage.java | 2 - .../nifi/cluster/manager/ClusterManager.java | 7 - .../manager/impl/ClusteredEventAccess.java | 2 +- .../cluster/manager/impl/WebClusterManager.java | 737 +++++++++---------- .../apache/nifi/controller/FlowController.java | 192 +---- .../history/ConnectionStatusDescriptor.java | 110 +++ .../history/ProcessGroupStatusDescriptor.java | 143 ++++ .../history/ProcessorStatusDescriptor.java | 220 ++++++ .../RemoteProcessGroupStatusDescriptor.java | 127 ++++ .../status/history/StatusHistoryUtil.java | 4 +- .../VolatileComponentStatusRepository.java | 418 +---------- .../events/NodeBulletinProcessingStrategy.java | 38 +- .../nifi/events/VolatileBulletinRepository.java | 20 - .../org/apache/nifi/web/NiFiServiceFacade.java | 24 - .../nifi/web/StandardNiFiServiceFacade.java | 129 +--- .../apache/nifi/web/api/ClusterResource.java | 221 +----- .../apache/nifi/web/api/ConnectionResource.java | 89 ++- .../apache/nifi/web/api/ControllerResource.java | 4 + .../nifi/web/api/ProcessGroupResource.java | 29 +- .../apache/nifi/web/api/ProcessorResource.java | 37 +- .../web/api/RemoteProcessGroupResource.java | 30 +- .../nifi/web/api/ReportingTaskResource.java | 38 +- .../org/apache/nifi/web/api/dto/DtoFactory.java | 98 ++- .../src/main/resources/nifi-web-api-context.xml | 1 + 43 files changed, 2364 insertions(+), 2169 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/pom.xml ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/pom.xml index c1cb557..3318f3b 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/pom.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/pom.xml @@ -26,5 +26,13 @@ <groupId>com.wordnik</groupId> <artifactId>swagger-annotations</artifactId> </dependency> + <dependency> + <groupId>org.apache.nifi</groupId> + <artifactId>nifi-utils</artifactId> + </dependency> + <dependency> + <groupId>org.apache.nifi</groupId> + <artifactId>nifi-api</artifactId> + </dependency> </dependencies> </project> http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ClusterStatusHistoryDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ClusterStatusHistoryDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ClusterStatusHistoryDTO.java deleted file mode 100644 index 997e24b..0000000 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ClusterStatusHistoryDTO.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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.web.api.dto.status; - -import com.wordnik.swagger.annotations.ApiModelProperty; -import java.util.Collection; -import java.util.Date; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.apache.nifi.web.api.dto.util.TimeAdapter; - -/** - * DTO for serializing the a status history across the cluster. - */ -@XmlType(name = "clusterStatusHistory") -public class ClusterStatusHistoryDTO { - - private Collection<NodeStatusHistoryDTO> nodeStatusHistory; - private StatusHistoryDTO clusterStatusHistory; - private Date generated; - - /** - * @return when this status history was generated - */ - @XmlJavaTypeAdapter(TimeAdapter.class) - @ApiModelProperty( - value = "When the status history was generated." - ) - public Date getGenerated() { - return generated; - } - - public void setGenerated(Date generated) { - this.generated = generated; - } - - /** - * @return status history from each node in the cluster - */ - @ApiModelProperty( - value = "The status history from each node." - ) - public Collection<NodeStatusHistoryDTO> getNodeStatusHistory() { - return nodeStatusHistory; - } - - public void setNodeStatusHistory(Collection<NodeStatusHistoryDTO> nodeStatusHistory) { - this.nodeStatusHistory = nodeStatusHistory; - } - - /** - * @return status history for this component across the entire cluster - */ - @ApiModelProperty( - value = "The status history for the entire cluster." - ) - public StatusHistoryDTO getClusterStatusHistory() { - return clusterStatusHistory; - } - - public void setClusterStatusHistory(StatusHistoryDTO clusterStatusHistory) { - this.clusterStatusHistory = clusterStatusHistory; - } - -} http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ConnectionStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ConnectionStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ConnectionStatusDTO.java index dc17c21..4083e1f 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ConnectionStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ConnectionStatusDTO.java @@ -23,29 +23,34 @@ import javax.xml.bind.annotation.XmlType; * DTO for serializing the status of a connection. */ @XmlType(name = "connectionStatus") -public class ConnectionStatusDTO { +public class ConnectionStatusDTO implements Cloneable { private String id; private String groupId; private String name; - private String input; - private String queuedCount; - private String queuedSize; - private String queued; - private String output; private String sourceId; private String sourceName; private String destinationId; private String destinationName; + private Integer flowFilesIn = 0; + private Long bytesIn = 0L; + private String input; + private Integer flowFilesOut = 0; + private Long bytesOut = 0L; + private String output; + private Integer flowFilesQueued = 0; + private Long bytesQueued = 0L; + private String queued; + private String queuedSize; + private String queuedCount; + /* getters / setters */ /** * @return The connection id */ - @ApiModelProperty( - value = "The id of the connection." - ) + @ApiModelProperty("The id of the connection.") public String getId() { return id; } @@ -57,9 +62,7 @@ public class ConnectionStatusDTO { /** * @return the ID of the Process Group to which this connection belongs. */ - @ApiModelProperty( - value = "The id of the process group the connection belongs to." - ) + @ApiModelProperty("The id of the process group the connection belongs to.") public String getGroupId() { return groupId; } @@ -71,9 +74,7 @@ public class ConnectionStatusDTO { /** * @return name of this connection */ - @ApiModelProperty( - value = "The name of the connection." - ) + @ApiModelProperty("The name of the connection.") public String getName() { return name; } @@ -85,9 +86,7 @@ public class ConnectionStatusDTO { /** * @return total count of flow files that are queued */ - @ApiModelProperty( - value = "The number of flowfiles that are queued." - ) + @ApiModelProperty("The number of flowfiles that are queued, pretty printed.") public String getQueuedCount() { return queuedCount; } @@ -96,16 +95,28 @@ public class ConnectionStatusDTO { this.queuedCount = queuedCount; } + /** * @return total size of flow files that are queued */ - @ApiModelProperty( - value = "The total size of flowfiles that are queued formatted." - ) + @ApiModelProperty("The total size of flowfiles that are queued formatted.") public String getQueuedSize() { return queuedSize; } + + public void setInput(String input) { + this.input = input; + } + + public void setOutput(String output) { + this.output = output; + } + + public void setQueued(String queued) { + this.queued = queued; + } + public void setQueuedSize(String queuedSize) { this.queuedSize = queuedSize; } @@ -113,23 +124,16 @@ public class ConnectionStatusDTO { /** * @return The total count and size of queued flow files */ - @ApiModelProperty( - value = "The total count and size of queued flowfiles formatted." - ) + @ApiModelProperty("The total count and size of queued flowfiles formatted.") public String getQueued() { return queued; } - public void setQueued(String queued) { - this.queued = queued; - } /** * @return id of the source of this connection */ - @ApiModelProperty( - value = "The id of the source of the connection." - ) + @ApiModelProperty("The id of the source of the connection.") public String getSourceId() { return sourceId; } @@ -141,9 +145,7 @@ public class ConnectionStatusDTO { /** * @return name of the source of this connection */ - @ApiModelProperty( - value = "The name of the source of the connection." - ) + @ApiModelProperty("The name of the source of the connection.") public String getSourceName() { return sourceName; } @@ -155,9 +157,7 @@ public class ConnectionStatusDTO { /** * @return id of the destination of this connection */ - @ApiModelProperty( - value = "The id of the destination of the connection." - ) + @ApiModelProperty("The id of the destination of the connection.") public String getDestinationId() { return destinationId; } @@ -169,9 +169,7 @@ public class ConnectionStatusDTO { /** * @return name of the destination of this connection */ - @ApiModelProperty( - value = "The name of the destination of the connection." - ) + @ApiModelProperty("The name of the destination of the connection.") public String getDestinationName() { return destinationName; } @@ -183,29 +181,99 @@ public class ConnectionStatusDTO { /** * @return input for this connection */ - @ApiModelProperty( - value = "The input count/size for the connection in the last 5 minutes." - ) + @ApiModelProperty("The input count/size for the connection in the last 5 minutes, pretty printed.") public String getInput() { return input; } - public void setInput(String input) { - this.input = input; - } /** * @return output for this connection */ - @ApiModelProperty( - value = "The output count/sie for the connection in the last 5 minutes." - ) + @ApiModelProperty("The output count/sie for the connection in the last 5 minutes, pretty printed.") public String getOutput() { return output; } - public void setOutput(String output) { - this.output = output; + + @ApiModelProperty("The number of FlowFiles that have come into the connection in the last 5 minutes.") + public Integer getFlowFilesIn() { + return flowFilesIn; + } + + public void setFlowFilesIn(Integer flowFilesIn) { + this.flowFilesIn = flowFilesIn; + } + + @ApiModelProperty("The size of the FlowFiles that have come into the connection in the last 5 minutes.") + public Long getBytesIn() { + return bytesIn; + } + + public void setBytesIn(Long bytesIn) { + this.bytesIn = bytesIn; + } + + @ApiModelProperty("The number of FlowFiles that have left the connection in the last 5 minutes.") + public Integer getFlowFilesOut() { + return flowFilesOut; + } + + public void setFlowFilesOut(Integer flowFilesOut) { + this.flowFilesOut = flowFilesOut; + } + + @ApiModelProperty("The number of bytes that have left the connection in the last 5 minutes.") + public Long getBytesOut() { + return bytesOut; + } + + public void setBytesOut(Long bytesOut) { + this.bytesOut = bytesOut; + } + + @ApiModelProperty("The number of FlowFiles that are currently queued in the connection.") + public Integer getFlowFilesQueued() { + return flowFilesQueued; + } + + public void setFlowFilesQueued(Integer flowFilesQueued) { + this.flowFilesQueued = flowFilesQueued; } + @ApiModelProperty("The size of the FlowFiles that are currently queued in the connection.") + public Long getBytesQueued() { + return bytesQueued; + } + + public void setBytesQueued(Long bytesQueued) { + this.bytesQueued = bytesQueued; + } + + + @Override + public ConnectionStatusDTO clone() { + final ConnectionStatusDTO other = new ConnectionStatusDTO(); + other.setDestinationId(getDestinationId()); + other.setDestinationName(getDestinationName()); + other.setGroupId(getGroupId()); + other.setId(getId()); + other.setName(getName()); + other.setSourceId(getSourceId()); + other.setSourceName(getSourceName()); + + other.setFlowFilesIn(getFlowFilesIn()); + other.setBytesIn(getBytesIn()); + other.setInput(getInput()); + other.setFlowFilesOut(getFlowFilesOut()); + other.setBytesOut(getBytesOut()); + other.setOutput(getOutput()); + other.setFlowFilesQueued(getFlowFilesQueued()); + other.setBytesQueued(getBytesQueued()); + other.setQueued(getQueued()); + other.setQueuedCount(getQueuedCount()); + other.setQueuedSize(getQueuedSize()); + + return other; + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ControllerStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ControllerStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ControllerStatusDTO.java index 5d5eddf..03e2124 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ControllerStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ControllerStatusDTO.java @@ -17,6 +17,8 @@ package org.apache.nifi.web.api.dto.status; import com.wordnik.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlType; import org.apache.nifi.web.api.dto.BulletinDTO; @@ -25,19 +27,25 @@ import org.apache.nifi.web.api.dto.BulletinDTO; * The status of this NiFi controller. */ @XmlType(name = "controllerStatus") -public class ControllerStatusDTO { +public class ControllerStatusDTO implements Cloneable { - private Integer activeThreadCount; + private Integer activeThreadCount = 0; private String queued; + private Integer flowFilesQueued = 0; + private Long bytesQueued = 0L; + private String connectedNodes; + private Integer connectedNodeCount = 0; + private Integer totalNodeCount = 0; + private Boolean hasPendingAccounts; - private Integer runningCount; - private Integer stoppedCount; - private Integer invalidCount; - private Integer disabledCount; - private Integer activeRemotePortCount; - private Integer inactiveRemotePortCount; + private Integer runningCount = 0; + private Integer stoppedCount = 0; + private Integer invalidCount = 0; + private Integer disabledCount = 0; + private Integer activeRemotePortCount = 0; + private Integer inactiveRemotePortCount = 0; private List<BulletinDTO> bulletins; private List<BulletinDTO> controllerServiceBulletins; @@ -48,9 +56,7 @@ public class ControllerStatusDTO { * * @return The active thread count */ - @ApiModelProperty( - value = "The number of active threads in the NiFi." - ) + @ApiModelProperty("The number of active threads in the NiFi.") public Integer getActiveThreadCount() { return activeThreadCount; } @@ -62,9 +68,7 @@ public class ControllerStatusDTO { /** * @return queue for the controller */ - @ApiModelProperty( - value = "The number of flowfilew queued in the NiFi." - ) + @ApiModelProperty("The number of flowfilew queued in the NiFi.") public String getQueued() { return queued; } @@ -77,9 +81,7 @@ public class ControllerStatusDTO { * @return Used in clustering, will report the number of nodes connected vs * the number of nodes in the cluster */ - @ApiModelProperty( - value = "When clustered, reports the number of nodes connected vs the number of nodes in the cluster." - ) + @ApiModelProperty("When clustered, reports the number of nodes connected vs the number of nodes in the cluster.") public String getConnectedNodes() { return connectedNodes; } @@ -91,9 +93,7 @@ public class ControllerStatusDTO { /** * @return System bulletins to be reported to the user */ - @ApiModelProperty( - value = "System level bulletins to be reported to the user." - ) + @ApiModelProperty("System level bulletins to be reported to the user.") public List<BulletinDTO> getBulletins() { return bulletins; } @@ -105,9 +105,7 @@ public class ControllerStatusDTO { /** * @return Controller service bulletins to be reported to the user */ - @ApiModelProperty( - value = "Controller service bulletins to be reported to the user." - ) + @ApiModelProperty("Controller service bulletins to be reported to the user.") public List<BulletinDTO> getControllerServiceBulletins() { return controllerServiceBulletins; } @@ -119,9 +117,7 @@ public class ControllerStatusDTO { /** * @return Reporting task bulletins to be reported to the user */ - @ApiModelProperty( - value = "Reporting task bulletins to be reported to the user." - ) + @ApiModelProperty("Reporting task bulletins to be reported to the user.") public List<BulletinDTO> getReportingTaskBulletins() { return reportingTaskBulletins; } @@ -133,9 +129,7 @@ public class ControllerStatusDTO { /** * @return whether or not there are pending user requests */ - @ApiModelProperty( - value = "Whether there are any pending user account requests." - ) + @ApiModelProperty("Whether there are any pending user account requests.") public Boolean getHasPendingAccounts() { return hasPendingAccounts; } @@ -147,9 +141,7 @@ public class ControllerStatusDTO { /** * @return number of running components in this controller */ - @ApiModelProperty( - value = "The number of running components in the NiFi." - ) + @ApiModelProperty("The number of running components in the NiFi.") public Integer getRunningCount() { return runningCount; } @@ -161,9 +153,7 @@ public class ControllerStatusDTO { /** * @return number of stopped components in this controller */ - @ApiModelProperty( - value = "The number of stopped components in the NiFi." - ) + @ApiModelProperty("The number of stopped components in the NiFi.") public Integer getStoppedCount() { return stoppedCount; } @@ -175,9 +165,7 @@ public class ControllerStatusDTO { /** * @return number of invalid components in this controller */ - @ApiModelProperty( - value = "The number of invalid components in the NiFi." - ) + @ApiModelProperty("The number of invalid components in the NiFi.") public Integer getInvalidCount() { return invalidCount; } @@ -189,9 +177,7 @@ public class ControllerStatusDTO { /** * @return number of disabled components in this controller */ - @ApiModelProperty( - value = "The number of disabled components in the NiFi." - ) + @ApiModelProperty("The number of disabled components in the NiFi.") public Integer getDisabledCount() { return disabledCount; } @@ -203,9 +189,7 @@ public class ControllerStatusDTO { /** * @return number of active remote ports in this controller */ - @ApiModelProperty( - value = "The number of active remote ports in the NiFi." - ) + @ApiModelProperty("The number of active remote ports in the NiFi.") public Integer getActiveRemotePortCount() { return activeRemotePortCount; } @@ -217,9 +201,7 @@ public class ControllerStatusDTO { /** * @return number of inactive remote ports in this controller */ - @ApiModelProperty( - value = "The number of inactive remote ports in the NiFi." - ) + @ApiModelProperty("The number of inactive remote ports in the NiFi.") public Integer getInactiveRemotePortCount() { return inactiveRemotePortCount; } @@ -228,4 +210,62 @@ public class ControllerStatusDTO { this.inactiveRemotePortCount = inactiveRemotePortCount; } + @ApiModelProperty("The number of FlowFiles queued across the entire flow") + public Integer getFlowFilesQueued() { + return flowFilesQueued; + } + + public void setFlowFilesQueued(Integer flowFilesQueued) { + this.flowFilesQueued = flowFilesQueued; + } + + @ApiModelProperty("The size of the FlowFiles queued across the entire flow") + public Long getBytesQueued() { + return bytesQueued; + } + + public void setBytesQueued(Long bytesQueued) { + this.bytesQueued = bytesQueued; + } + + @ApiModelProperty("The number of nodes that are currently connected to the cluster") + public Integer getConnectedNodeCount() { + return connectedNodeCount; + } + + public void setConnectedNodeCount(Integer connectedNodeCount) { + this.connectedNodeCount = connectedNodeCount; + } + + @ApiModelProperty("The number of nodes in the cluster, regardless of whether or not they are connected") + public Integer getTotalNodeCount() { + return totalNodeCount; + } + + public void setTotalNodeCount(Integer totalNodeCount) { + this.totalNodeCount = totalNodeCount; + } + + @Override + public ControllerStatusDTO clone() { + final ControllerStatusDTO other = new ControllerStatusDTO(); + other.setActiveThreadCount(getActiveThreadCount()); + other.setQueued(getQueued()); + other.setFlowFilesQueued(getFlowFilesQueued()); + other.setBytesQueued(getBytesQueued()); + other.setConnectedNodes(getConnectedNodes()); + other.setConnectedNodeCount(getConnectedNodeCount()); + other.setTotalNodeCount(getTotalNodeCount()); + other.setHasPendingAccounts(getHasPendingAccounts()); + other.setRunningCount(getRunningCount()); + other.setStoppedCount(getStoppedCount()); + other.setInvalidCount(getInvalidCount()); + other.setDisabledCount(getDisabledCount()); + other.setActiveRemotePortCount(getActiveRemotePortCount()); + other.setInactiveRemotePortCount(getInactiveRemotePortCount()); + other.setBulletins(getBulletins() == null ? null : new ArrayList<>(getBulletins())); + other.setControllerServiceBulletins(getControllerServiceBulletins() == null ? null : new ArrayList<>(getControllerServiceBulletins())); + other.setReportingTaskBulletins(getReportingTaskBulletins() == null ? null : new ArrayList<>(getReportingTaskBulletins())); + return other; + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/NodeStatusHistoryDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/NodeStatusHistoryDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/NodeStatusHistoryDTO.java deleted file mode 100644 index 5cf9f41..0000000 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/NodeStatusHistoryDTO.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.web.api.dto.status; - -import com.wordnik.swagger.annotations.ApiModelProperty; -import javax.xml.bind.annotation.XmlType; -import org.apache.nifi.web.api.dto.NodeDTO; - -/** - * DTO for serializing the status history for a particular node. - */ -@XmlType(name = "nodeStatusHistory") -public class NodeStatusHistoryDTO { - - private NodeDTO node; - private StatusHistoryDTO statusHistory; - - /** - * @return the node - */ - @ApiModelProperty( - value = "The node." - ) - public NodeDTO getNode() { - return node; - } - - public void setNode(NodeDTO node) { - this.node = node; - } - - /** - * @return processor status history - */ - @ApiModelProperty( - value = "The processor status for each node." - ) - public StatusHistoryDTO getStatusHistory() { - return statusHistory; - } - - public void setStatusHistory(StatusHistoryDTO statusHistory) { - this.statusHistory = statusHistory; - } - -} http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/PortStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/PortStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/PortStatusDTO.java index c1d95d0..6a2a972 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/PortStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/PortStatusDTO.java @@ -16,30 +16,35 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; import javax.xml.bind.annotation.XmlType; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** * The status for a port in this NiFi. */ @XmlType(name = "portStatus") -public class PortStatusDTO extends StatusDTO { +public class PortStatusDTO extends StatusDTO implements Cloneable { private String id; private String groupId; private String name; - private Integer activeThreadCount; + + private Integer activeThreadCount = 0; + private Integer flowFilesIn = 0; + private Long bytesIn = 0L; private String input; + private Integer flowFilesOut = 0; + private Long bytesOut = 0L; private String output; + private Boolean transmitting; private String runStatus; /** * @return whether this port has incoming or outgoing connections to a remote NiFi */ - @ApiModelProperty( - value = "Whether the port has incoming or outgoing connections to a remote NiFi." - ) + @ApiModelProperty("Whether the port has incoming or outgoing connections to a remote NiFi.") public Boolean isTransmitting() { return transmitting; } @@ -51,9 +56,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return the active thread count for this port */ - @ApiModelProperty( - value = "The active thread count for the port." - ) + @ApiModelProperty("The active thread count for the port.") public Integer getActiveThreadCount() { return activeThreadCount; } @@ -65,9 +68,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return id of this port */ - @ApiModelProperty( - value = "The id of the port." - ) + @ApiModelProperty("The id of the port.") public String getId() { return id; } @@ -79,9 +80,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return id of the group this port resides in */ - @ApiModelProperty( - value = "The id of the parent process group of the port." - ) + @ApiModelProperty("The id of the parent process group of the port.") public String getGroupId() { return groupId; } @@ -93,9 +92,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return name of this port */ - @ApiModelProperty( - value = "The name of the port." - ) + @ApiModelProperty("The name of the port.") public String getName() { return name; } @@ -107,9 +104,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return run status of this port */ - @ApiModelProperty( - value = "The run status of the port." - ) + @ApiModelProperty("The run status of the port.") public String getRunStatus() { return runStatus; } @@ -121,9 +116,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return The total count and size of flow files that have been accepted in the last five minutes */ - @ApiModelProperty( - value = "The count/size of flowfiles that have been accepted in the last 5 minutes." - ) + @ApiModelProperty("The count/size of flowfiles that have been accepted in the last 5 minutes.") public String getInput() { return input; } @@ -135,9 +128,7 @@ public class PortStatusDTO extends StatusDTO { /** * @return The total count and size of flow files that have been processed in the last five minutes */ - @ApiModelProperty( - value = "The count/size of flowfiles that have been processed in the last 5 minutes." - ) + @ApiModelProperty("The count/size of flowfiles that have been processed in the last 5 minutes.") public String getOutput() { return output; } @@ -146,4 +137,59 @@ public class PortStatusDTO extends StatusDTO { this.output = output; } + @ApiModelProperty("The number of FlowFiles that have been accepted in the last 5 minutes.") + public Integer getFlowFilesIn() { + return flowFilesIn; + } + + public void setFlowFilesIn(Integer flowFilesIn) { + this.flowFilesIn = flowFilesIn; + } + + @ApiModelProperty("The size of hte FlowFiles that have been accepted in the last 5 minutes.") + public Long getBytesIn() { + return bytesIn; + } + + public void setBytesIn(Long bytesIn) { + this.bytesIn = bytesIn; + } + + @ApiModelProperty("The number of FlowFiles that have been processed in the last 5 minutes.") + public Integer getFlowFilesOut() { + return flowFilesOut; + } + + public void setFlowFilesOut(Integer flowFilesOut) { + this.flowFilesOut = flowFilesOut; + } + + @ApiModelProperty("The number of bytes that have been processed in the last 5 minutes.") + public Long getBytesOut() { + return bytesOut; + } + + public void setBytesOut(Long bytesOut) { + this.bytesOut = bytesOut; + } + + @Override + public PortStatusDTO clone() { + final PortStatusDTO other = new PortStatusDTO(); + other.setId(getId()); + other.setGroupId(getGroupId()); + other.setName(getName()); + other.setActiveThreadCount(getActiveThreadCount()); + other.setFlowFilesIn(getFlowFilesIn()); + other.setBytesIn(getBytesIn()); + other.setFlowFilesOut(getFlowFilesOut()); + other.setBytesOut(getBytesOut()); + other.setTransmitting(isTransmitting()); + other.setRunStatus(getRunStatus()); + other.setInput(getInput()); + other.setOutput(getOutput()); + other.setBulletins(cloneBulletins()); + + return other; + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessGroupStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessGroupStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessGroupStatusDTO.java index 3ebae8f..ff7eecc 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessGroupStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessGroupStatusDTO.java @@ -16,18 +16,23 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; +import java.util.List; + import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + import org.apache.nifi.web.api.dto.util.TimeAdapter; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** * The status for a process group in this NiFi. */ @XmlType(name = "processGroupStatus") -public class ProcessGroupStatusDTO extends StatusDTO { +public class ProcessGroupStatusDTO extends StatusDTO implements Cloneable { private String id; private String name; @@ -38,17 +43,38 @@ public class ProcessGroupStatusDTO extends StatusDTO { private Collection<PortStatusDTO> inputPortStatus; private Collection<PortStatusDTO> outputPortStatus; + private Integer flowFilesIn = 0; + private Long bytesIn = 0L; private String input; + + private Integer flowFilesQueued = 0; + private Long bytesQueued = 0L; + private String queued; private String queuedCount; private String queuedSize; - private String queued; + + private Long bytesRead = 0L; private String read; + private Long bytesWritten = 0L; private String written; + + private Integer flowFilesOut = 0; + private Long bytesOut = 0L; private String output; + + private Integer flowFilesTransferred = 0; + private Long bytesTransferred = 0L; private String transferred; + + private Long bytesReceived = 0L; + private Integer flowFilesReceived = 0; private String received; + + private Long bytesSent = 0L; + private Integer flowFilesSent = 0; private String sent; - private Integer activeThreadCount; + + private Integer activeThreadCount = 0; private Date statsLastRefreshed; /** @@ -56,9 +82,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The id for the process group */ - @ApiModelProperty( - value = "The id of the process group." - ) + @ApiModelProperty("The id of the process group.") public String getId() { return id; } @@ -70,9 +94,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { /** * @return name of this process group */ - @ApiModelProperty( - value = "The name of this process group." - ) + @ApiModelProperty("The name of this process group.") public String getName() { return name; } @@ -84,9 +106,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { /** * @return active thread count for this process group */ - @ApiModelProperty( - value = "The active thread count for this process group." - ) + @ApiModelProperty("The active thread count for this process group.") public Integer getActiveThreadCount() { return activeThreadCount; } @@ -100,9 +120,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all connections */ - @ApiModelProperty( - value = "The status of all conenctions in the process group." - ) + @ApiModelProperty("The status of all conenctions in the process group.") public Collection<ConnectionStatusDTO> getConnectionStatus() { return connectionStatus; } @@ -116,9 +134,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all process groups */ - @ApiModelProperty( - value = "The status of all process groups in the process group." - ) + @ApiModelProperty("The status of all process groups in the process group.") public Collection<ProcessGroupStatusDTO> getProcessGroupStatus() { return processGroupStatus; } @@ -132,9 +148,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all remote process groups */ - @ApiModelProperty( - value = "The status of all remote process groups in the process group.." - ) + @ApiModelProperty("The status of all remote process groups in the process group.") public Collection<RemoteProcessGroupStatusDTO> getRemoteProcessGroupStatus() { return remoteProcessGroupStatus; } @@ -148,9 +162,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all processors */ - @ApiModelProperty( - value = "The status of all processors in the process group." - ) + @ApiModelProperty("The status of all processors in the process group.") public Collection<ProcessorStatusDTO> getProcessorStatus() { return processorStatus; } @@ -164,9 +176,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all input ports */ - @ApiModelProperty( - value = "The status of all input ports in the process group." - ) + @ApiModelProperty("The status of all input ports in the process group.") public Collection<PortStatusDTO> getInputPortStatus() { return inputPortStatus; } @@ -180,9 +190,7 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The status of all output ports */ - @ApiModelProperty( - value = "The status of all output ports in the process group." - ) + @ApiModelProperty("The status of all output ports in the process group.") public Collection<PortStatusDTO> getOutputPortStatus() { return outputPortStatus; } @@ -196,159 +204,233 @@ public class ProcessGroupStatusDTO extends StatusDTO { * * @return The output stats */ - @ApiModelProperty( - value = "The output count/size for the process group in the last 5 minutes." - ) + @ApiModelProperty("The output count/size for the process group in the last 5 minutes.") public String getOutput() { return output; } - public void setOutput(String output) { - this.output = output; - } - /** * The transferred stats for this process group. This represents the count/size of flowfiles transferred to/from queues. * * @return The transferred status for this process group */ - @ApiModelProperty( - value = "The count/size transferred to/frome queues in the process group in the last 5 minutes." - ) + @ApiModelProperty("The count/size transferred to/frome queues in the process group in the last 5 minutes.") public String getTransferred() { return transferred; } - public void setTransferred(String transferred) { - this.transferred = transferred; - } - /** * The received stats for this process group. This represents the count/size of flowfiles received. * * @return The received stats for this process group */ - @ApiModelProperty( - value = "The count/size sent to the process group in the last 5 minutes." - ) + @ApiModelProperty("The count/size sent to the process group in the last 5 minutes.") public String getReceived() { return received; } - public void setReceived(String received) { - this.received = received; - } /** * The sent stats for this process group. This represents the count/size of flowfiles sent. * * @return The sent stats for this process group */ - @ApiModelProperty( - value = "The count/size sent from this process group in the last 5 minutes." - ) + @ApiModelProperty("The count/size sent from this process group in the last 5 minutes.") public String getSent() { return sent; } - public void setSent(String sent) { - this.sent = sent; - } /** * The queued count for this process group. * * @return The queued count for this process group */ - @ApiModelProperty( - value = "The count that is queued for the process group." - ) + @ApiModelProperty("The count that is queued for the process group.") public String getQueuedCount() { return queuedCount; } - public void setQueuedCount(String queuedCount) { - this.queuedCount = queuedCount; - } /** * The queued size for this process group. * * @return The queued size for this process group */ - @ApiModelProperty( - value = "The size that is queued for the process group." - ) + @ApiModelProperty("The size that is queued for the process group.") public String getQueuedSize() { return queuedSize; } - public void setQueuedSize(String queuedSize) { - this.queuedSize = queuedSize; - } /** * The queued stats for this process group. * * @return The queued stats */ - @ApiModelProperty( - value = "The count/size that is queued in the the process group." - ) + @ApiModelProperty("The count/size that is queued in the the process group.") public String getQueued() { return queued; } - public void setQueued(String queued) { - this.queued = queued; - } /** * The read stats for this process group. * * @return The read stats */ - @ApiModelProperty( - value = "The number of bytes read in the last 5 minutes." - ) + @ApiModelProperty("The number of bytes read in the last 5 minutes.") public String getRead() { return read; } - public void setRead(String read) { - this.read = read; - } /** * The written stats for this process group. * * @return The written stats */ - @ApiModelProperty( - value = "The number of bytes written in the last 5 minutes." - ) + @ApiModelProperty("The number of bytes written in the last 5 minutes.") public String getWritten() { return written; } - public void setWritten(String written) { - this.written = written; - } /** * The input stats for this process group. * * @return The input stats */ - @ApiModelProperty( - value = "The input count/size for the process group in the last 5 minutes." - ) + @ApiModelProperty("The input count/size for the process group in the last 5 minutes (pretty printed).") public String getInput() { return input; } - public void setInput(String input) { - this.input = input; + + @ApiModelProperty("The number of FlowFiles that have come into this ProcessGroup in the last 5 minutes") + public Integer getFlowFilesIn() { + return flowFilesIn; + } + + public void setFlowFilesIn(Integer flowFilesIn) { + this.flowFilesIn = flowFilesIn; + } + + @ApiModelProperty("The number of bytes that have come into this ProcessGroup in the last 5 minutes") + public Long getBytesIn() { + return bytesIn; + } + + public void setBytesIn(Long bytesIn) { + this.bytesIn = bytesIn; + } + + @ApiModelProperty("The number of FlowFiles that are queued up in this ProcessGroup right now") + public Integer getFlowFilesQueued() { + return flowFilesQueued; + } + + public void setFlowFilesQueued(Integer flowFilesQueued) { + this.flowFilesQueued = flowFilesQueued; + } + + @ApiModelProperty("The number of bytes that are queued up in this ProcessGroup right now") + public Long getBytesQueued() { + return bytesQueued; + } + + public void setBytesQueued(Long bytesQueued) { + this.bytesQueued = bytesQueued; + } + + @ApiModelProperty("The number of bytes read by components in this ProcessGroup in the last 5 minutes") + public Long getBytesRead() { + return bytesRead; + } + + public void setBytesRead(Long bytesRead) { + this.bytesRead = bytesRead; + } + + @ApiModelProperty("The number of bytes written by components in this ProcessGroup in the last 5 minutes") + public Long getBytesWritten() { + return bytesWritten; + } + + public void setBytesWritten(Long bytesWritten) { + this.bytesWritten = bytesWritten; + } + + @ApiModelProperty("The number of FlowFiles transferred out of this ProcessGroup in the last 5 minutes") + public Integer getFlowFilesOut() { + return flowFilesOut; + } + + public void setFlowFilesOut(Integer flowFilesOut) { + this.flowFilesOut = flowFilesOut; + } + + @ApiModelProperty("The number of bytes transferred out of this ProcessGroup in the last 5 minutes") + public Long getBytesOut() { + return bytesOut; + } + + public void setBytesOut(Long bytesOut) { + this.bytesOut = bytesOut; + } + + @ApiModelProperty("The number of FlowFiles transferred in this ProcessGroup in the last 5 minutes") + public Integer getFlowFilesTransferred() { + return flowFilesTransferred; + } + + public void setFlowFilesTransferred(Integer flowFilesTransferred) { + this.flowFilesTransferred = flowFilesTransferred; + } + + @ApiModelProperty("The number of bytes transferred in this ProcessGroup in the last 5 minutes") + public Long getBytesTransferred() { + return bytesTransferred; + } + + public void setBytesTransferred(Long bytesTransferred) { + this.bytesTransferred = bytesTransferred; + } + + @ApiModelProperty("The number of bytes received from external sources by components within this ProcessGroup in the last 5 minutes") + public Long getBytesReceived() { + return bytesReceived; + } + + public void setBytesReceived(Long bytesReceived) { + this.bytesReceived = bytesReceived; + } + + @ApiModelProperty("The number of bytes sent to an external sink by components within this ProcessGroup in the last 5 minutes") + public Long getBytesSent() { + return bytesSent; + } + + public void setBytesSent(Long bytesSent) { + this.bytesSent = bytesSent; + } + + @ApiModelProperty("The number of FlowFiles sent to an external sink by components within this ProcessGroup in the last 5 minutes") + public Integer getFlowFilesSent() { + return flowFilesSent; + } + + public void setFlowFilesSent(Integer flowFilesSent) { + this.flowFilesSent = flowFilesSent; + } + + @ApiModelProperty("The number of FlowFiles received from external sources by components within this ProcessGroup in the last 5 minutes") + public Integer getFlowFilesReceived() { + return flowFilesReceived; + } + + public void setFlowFilesReceived(Integer flowFilesReceived) { + this.flowFilesReceived = flowFilesReceived; } /** @@ -368,4 +450,110 @@ public class ProcessGroupStatusDTO extends StatusDTO { this.statsLastRefreshed = statsLastRefreshed; } + + public void setInput(String input) { + this.input = input; + } + + public void setQueued(String queued) { + this.queued = queued; + } + + public void setQueuedCount(String queuedCount) { + this.queuedCount = queuedCount; + } + + public void setQueuedSize(String queuedSize) { + this.queuedSize = queuedSize; + } + + public void setRead(String read) { + this.read = read; + } + + public void setWritten(String written) { + this.written = written; + } + + public void setOutput(String output) { + this.output = output; + } + + public void setTransferred(String transferred) { + this.transferred = transferred; + } + + public void setReceived(String received) { + this.received = received; + } + + public void setSent(String sent) { + this.sent = sent; + } + + @Override + public ProcessGroupStatusDTO clone() { + final ProcessGroupStatusDTO other = new ProcessGroupStatusDTO(); + other.setId(getId()); + other.setName(getName()); + + other.setBytesIn(getBytesIn()); + other.setFlowFilesIn(getFlowFilesIn()); + other.setInput(getInput()); + + other.setBytesQueued(getBytesQueued()); + other.setFlowFilesQueued(getFlowFilesQueued()); + other.setQueued(getQueued()); + other.setQueuedCount(getQueuedCount()); + other.setQueuedSize(getQueuedSize()); + + other.setBytesRead(getBytesRead()); + other.setRead(getRead()); + other.setBytesWritten(getBytesWritten()); + other.setWritten(getWritten()); + + other.setBytesOut(getBytesOut()); + other.setFlowFilesOut(getFlowFilesOut()); + other.setOutput(getOutput()); + + other.setBytesTransferred(getBytesTransferred()); + other.setFlowFilesTransferred(getFlowFilesTransferred()); + other.setTransferred(getTransferred()); + + other.setBytesReceived(getBytesReceived()); + other.setFlowFilesReceived(getFlowFilesReceived()); + other.setReceived(getReceived()); + other.setBytesSent(getBytesSent()); + other.setFlowFilesSent(getFlowFilesSent()); + other.setSent(getSent()); + + other.setActiveThreadCount(getActiveThreadCount()); + other.setStatsLastRefreshed(getStatsLastRefreshed()); + + other.setConnectionStatus(copy(getConnectionStatus())); + other.setProcessorStatus(copy(getProcessorStatus())); + other.setRemoteProcessGroupStatus(copy(getRemoteProcessGroupStatus())); + other.setInputPortStatus(copy(getInputPortStatus())); + other.setOutputPortStatus(copy(getOutputPortStatus())); + + if (processGroupStatus != null) { + final List<ProcessGroupStatusDTO> childGroups = new ArrayList<>(); + for (final ProcessGroupStatusDTO procGroupStatus : processGroupStatus) { + childGroups.add(procGroupStatus.clone()); + } + other.setProcessGroupStatus(childGroups); + } + + other.setBulletins(cloneBulletins()); + + return other; + } + + private <T> Collection<T> copy(final Collection<T> original) { + if (original == null) { + return null; + } + + return new ArrayList<T>(original); + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessorStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessorStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessorStatusDTO.java index 1899418..f1b26db 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessorStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/ProcessorStatusDTO.java @@ -16,14 +16,15 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; import javax.xml.bind.annotation.XmlType; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** * DTO for serializing the status of a processor. */ @XmlType(name = "processorStatus") -public class ProcessorStatusDTO extends StatusDTO { +public class ProcessorStatusDTO extends StatusDTO implements Cloneable { private String id; private String groupId; @@ -31,23 +32,30 @@ public class ProcessorStatusDTO extends StatusDTO { private String type; private String runStatus; + private Long bytesRead = 0L; + private Long bytesWritten = 0L; private String read; private String written; + private Integer flowFilesIn = 0; + private Long bytesIn = 0L; private String input; + + private Integer flowFilesOut = 0; + private Long bytesOut = 0L; private String output; + private Integer taskCount = 0; + private Long taskDurationNanos = 0L; private String tasks; private String tasksDuration; - private Integer activeThreadCount; + private Integer activeThreadCount = 0; /* getters / setters */ /** * @return The processor id */ - @ApiModelProperty( - value = "The id of the processor." - ) + @ApiModelProperty("The id of the processor.") public String getId() { return id; } @@ -59,9 +67,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return The processor name */ - @ApiModelProperty( - value = "The name of the prcessor." - ) + @ApiModelProperty("The name of the prcessor.") public String getName() { return name; } @@ -73,9 +79,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return The processor type */ - @ApiModelProperty( - value = "The type of the processor." - ) + @ApiModelProperty("The type of the processor.") public String getType() { return type; } @@ -102,9 +106,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return The total count and size of flow files that have been accepted in the last five minutes */ - @ApiModelProperty( - value = "The count/size of flowfiles that have been accepted in the last 5 minutes." - ) + @ApiModelProperty("The count/size of flowfiles that have been accepted in the last 5 minutes.") public String getInput() { return input; } @@ -116,9 +118,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return number of bytes read */ - @ApiModelProperty( - value = "The number of bytes read in the last 5 minutes." - ) + @ApiModelProperty("The number of bytes read in the last 5 minutes.") public String getRead() { return read; } @@ -130,9 +130,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return number of bytes written */ - @ApiModelProperty( - value = "The number of bytes written in the last 5 minutes." - ) + @ApiModelProperty("The number of bytes written in the last 5 minutes.") public String getWritten() { return written; } @@ -144,9 +142,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return the ID of the Process Group to which this processor belongs. */ - @ApiModelProperty( - value = "The id of the parent process group to which the processor belongs." - ) + @ApiModelProperty("The id of the parent process group to which the processor belongs.") public String getGroupId() { return groupId; } @@ -158,9 +154,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return The total count and size of flow files that have been processed in the last five minutes */ - @ApiModelProperty( - value = "The count/size of flowfiles that have been processed in the last 5 minutes." - ) + @ApiModelProperty("The count/size of flowfiles that have been processed in the last 5 minutes.") public String getOutput() { return output; } @@ -172,9 +166,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return number of threads currently running for this Processor */ - @ApiModelProperty( - value = "The number of threads currently executing in the processor." - ) + @ApiModelProperty("The number of threads currently executing in the processor.") public Integer getActiveThreadCount() { return activeThreadCount; } @@ -186,9 +178,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return number of task this connectable has had over the last 5 minutes */ - @ApiModelProperty( - value = "The total number of task this connectable has completed over the last 5 minutes." - ) + @ApiModelProperty("The total number of task this connectable has completed over the last 5 minutes.") public String getTasks() { return tasks; } @@ -200,9 +190,7 @@ public class ProcessorStatusDTO extends StatusDTO { /** * @return total duration of all tasks for this connectable over the last 5 minutes */ - @ApiModelProperty( - value = "The total duration of all tasks for this connectable over the last 5 minutes." - ) + @ApiModelProperty("The total duration of all tasks for this connectable over the last 5 minutes.") public String getTasksDuration() { return tasksDuration; } @@ -211,4 +199,103 @@ public class ProcessorStatusDTO extends StatusDTO { this.tasksDuration = tasksDuration; } + @ApiModelProperty("The number of bytes read by this Processor in the last 5 mintues") + public Long getBytesRead() { + return bytesRead; + } + + public void setBytesRead(Long bytesRead) { + this.bytesRead = bytesRead; + } + + @ApiModelProperty("The number of bytes written by this Processor in the last 5 minutes") + public Long getBytesWritten() { + return bytesWritten; + } + + public void setBytesWritten(Long bytesWritten) { + this.bytesWritten = bytesWritten; + } + + @ApiModelProperty("The number of FlowFiles that have been accepted in the last 5 minutes") + public Integer getFlowFilesIn() { + return flowFilesIn; + } + + public void setFlowFilesIn(Integer flowFilesIn) { + this.flowFilesIn = flowFilesIn; + } + + @ApiModelProperty("The size of the FlowFiles that have been accepted in the last 5 minutes") + public Long getBytesIn() { + return bytesIn; + } + + public void setBytesIn(Long bytesIn) { + this.bytesIn = bytesIn; + } + + @ApiModelProperty("The number of FlowFiles transferred to a Connection in the last 5 minutes") + public Integer getFlowFilesOut() { + return flowFilesOut; + } + + public void setFlowFilesOut(Integer flowFilesOut) { + this.flowFilesOut = flowFilesOut; + } + + @ApiModelProperty("The size of the FlowFiles transferred to a Connection in the last 5 minutes") + public Long getBytesOut() { + return bytesOut; + } + + public void setBytesOut(Long bytesOut) { + this.bytesOut = bytesOut; + } + + @ApiModelProperty("The number of times this Processor has run in the last 5 minutes") + public Integer getTaskCount() { + return taskCount; + } + + public void setTaskCount(Integer taskCount) { + this.taskCount = taskCount; + } + + @ApiModelProperty("The number of nanoseconds that this Processor has spent running in the last 5 minutes") + public Long getTaskDuration() { + return taskDurationNanos; + } + + public void setTaskDuration(Long taskNanos) { + this.taskDurationNanos = taskNanos; + } + + @Override + public ProcessorStatusDTO clone() { + final ProcessorStatusDTO other = new ProcessorStatusDTO(); + other.setId(getId()); + other.setGroupId(getGroupId()); + other.setName(getName()); + other.setType(getType()); + + other.setRunStatus(getRunStatus()); + other.setBytesRead(getBytesRead()); + other.setBytesWritten(getBytesWritten()); + other.setFlowFilesIn(getFlowFilesIn()); + other.setBytesIn(getBytesIn()); + other.setFlowFilesOut(getFlowFilesOut()); + other.setBytesOut(getBytesOut()); + other.setTaskCount(getTaskCount()); + other.setTaskDuration(getTaskDuration()); + other.setActiveThreadCount(getActiveThreadCount()); + other.setInput(getInput()); + other.setOutput(getOutput()); + other.setRead(getRead()); + other.setWritten(getWritten()); + other.setTasks(getTasks()); + other.setBulletins(cloneBulletins()); + + return other; + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/RemoteProcessGroupStatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/RemoteProcessGroupStatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/RemoteProcessGroupStatusDTO.java index f556deb..e1dad2a 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/RemoteProcessGroupStatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/RemoteProcessGroupStatusDTO.java @@ -16,15 +16,18 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; import java.util.List; + import javax.xml.bind.annotation.XmlType; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** * The status of a remote process group in this NiFi. */ @XmlType(name = "remoteProcessGroupStatus") -public class RemoteProcessGroupStatusDTO extends StatusDTO { +public class RemoteProcessGroupStatusDTO extends StatusDTO implements Cloneable { private String id; private String groupId; @@ -35,15 +38,18 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { private List<String> authorizationIssues; + private Integer flowFilesSent = 0; + private Long bytesSent = 0L; private String sent; + + private Integer flowFilesReceived = 0; + private Long bytesReceived = 0L; private String received; /** * @return The id for the remote process group */ - @ApiModelProperty( - value = "The id of the remote process group." - ) + @ApiModelProperty("The id of the remote process group.") public String getId() { return id; } @@ -55,9 +61,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return id of the group this remote process group is in */ - @ApiModelProperty( - value = "The id of the parent process group the remote process group resides in." - ) + @ApiModelProperty("The id of the parent process group the remote process group resides in.") public String getGroupId() { return groupId; } @@ -69,9 +73,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return URI of the target system */ - @ApiModelProperty( - value = "The URI of the target system." - ) + @ApiModelProperty("The URI of the target system.") public String getTargetUri() { return targetUri; } @@ -83,9 +85,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return name of this remote process group */ - @ApiModelProperty( - value = "The name of the remote process group." - ) + @ApiModelProperty("The name of the remote process group.") public String getName() { return name; } @@ -97,9 +97,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return transmission status of this remote process group */ - @ApiModelProperty( - value = "The transmission status of the remote process group." - ) + @ApiModelProperty("The transmission status of the remote process group.") public String getTransmissionStatus() { return transmissionStatus; } @@ -111,9 +109,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return number of active threads */ - @ApiModelProperty( - value = "The number of active threads for the remote process group." - ) + @ApiModelProperty("The number of active threads for the remote process group.") public Integer getActiveThreadCount() { return activeThreadCount; } @@ -125,9 +121,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return any remote authorization issues for this remote process group */ - @ApiModelProperty( - value = "Any remote authorization issues for the remote process group." - ) + @ApiModelProperty("Any remote authorization issues for the remote process group.") public List<String> getAuthorizationIssues() { return authorizationIssues; } @@ -139,9 +133,7 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { /** * @return Formatted description of the amount of data sent to this remote process group */ - @ApiModelProperty( - value = "The count/size of the flowfiles sent to the remote process group in the last 5 minutes." - ) + @ApiModelProperty("The count/size of the flowfiles sent to the remote process group in the last 5 minutes.") public String getSent() { return sent; } @@ -150,12 +142,11 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { this.sent = sent; } + /** * @return Formatted description of the amount of data received from this remote process group */ - @ApiModelProperty( - value = "The count/size of the flowfiles received from the remote process group in the last 5 minutes." - ) + @ApiModelProperty("The count/size of the flowfiles received from the remote process group in the last 5 minutes.") public String getReceived() { return received; } @@ -164,4 +155,62 @@ public class RemoteProcessGroupStatusDTO extends StatusDTO { this.received = received; } + @ApiModelProperty("The number of FlowFiles sent to the remote process group in the last 5 minutes.") + public Integer getFlowFilesSent() { + return flowFilesSent; + } + + public void setFlowFilesSent(Integer flowFilesSent) { + this.flowFilesSent = flowFilesSent; + } + + @ApiModelProperty("The size of the FlowFiles sent to the remote process group in the last 5 minutes.") + public Long getBytesSent() { + return bytesSent; + } + + public void setBytesSent(Long bytesSent) { + this.bytesSent = bytesSent; + } + + @ApiModelProperty("The number of FlowFiles received from the remote process group in the last 5 minutes.") + public Integer getFlowFilesReceived() { + return flowFilesReceived; + } + + public void setFlowFilesReceived(Integer flowFilesReceived) { + this.flowFilesReceived = flowFilesReceived; + } + + @ApiModelProperty("The size of the FlowFiles received from the remote process group in the last 5 minutes.") + public Long getBytesReceived() { + return bytesReceived; + } + + public void setBytesReceived(Long bytesReceived) { + this.bytesReceived = bytesReceived; + } + + + @Override + public RemoteProcessGroupStatusDTO clone() { + final RemoteProcessGroupStatusDTO other = new RemoteProcessGroupStatusDTO(); + other.setId(getId()); + other.setGroupId(getGroupId()); + other.setName(getName()); + other.setTargetUri(getTargetUri()); + other.setTransmissionStatus(getTransmissionStatus()); + other.setActiveThreadCount(getActiveThreadCount()); + other.setAuthorizationIssues(getAuthorizationIssues() == null ? null : new ArrayList<String>(getAuthorizationIssues())); + other.setFlowFilesSent(getFlowFilesSent()); + other.setBytesSent(getBytesSent()); + other.setFlowFilesReceived(getFlowFilesReceived()); + other.setBytesReceived(getBytesReceived()); + other.setReceived(getReceived()); + other.setSent(getSent()); + other.setBulletins(cloneBulletins()); + + return other; + } + } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusDTO.java index 39b9c06..ad6d64f 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusDTO.java @@ -16,11 +16,15 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; import java.util.List; + import javax.xml.bind.annotation.XmlType; + import org.apache.nifi.web.api.dto.BulletinDTO; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** * The status of a component in this NiFi. */ @@ -42,4 +46,12 @@ public abstract class StatusDTO { public void setBulletins(List<BulletinDTO> bulletins) { this.bulletins = bulletins; } + + public List<BulletinDTO> cloneBulletins() { + if (bulletins == null) { + return null; + } + + return new ArrayList<>(bulletins); + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDTO.java index c0ef33b..4a9e1e3 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDTO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDTO.java @@ -16,34 +16,37 @@ */ package org.apache.nifi.web.api.dto.status; -import com.wordnik.swagger.annotations.ApiModelProperty; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; + import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + import org.apache.nifi.web.api.dto.util.TimeAdapter; +import com.wordnik.swagger.annotations.ApiModelProperty; + /** - * History status for a component in this NiFi. + * DTO for serializing the status history of a single component across the cluster. */ @XmlType(name = "statusHistory") public class StatusHistoryDTO { private Date generated; - private LinkedHashMap<String, String> details; - + private LinkedHashMap<String, String> componentDetails; private List<StatusDescriptorDTO> fieldDescriptors; - private List<StatusSnapshotDTO> statusSnapshots; + private List<StatusSnapshotDTO> aggregateStatusSnapshots; + private Map<String, List<StatusSnapshotDTO>> nodeStatusSnapshots; + /** * @return when this status history was generated */ @XmlJavaTypeAdapter(TimeAdapter.class) - @ApiModelProperty( - value = "The timestamp when the status history was generated." - ) + @ApiModelProperty("When the status history was generated.") public Date getGenerated() { return generated; } @@ -53,25 +56,18 @@ public class StatusHistoryDTO { } /** - * @return The component details for this status history + * @return key/value pairs that describe the component that the status history belongs to */ - @ApiModelProperty( - value = "The component details for the status history." - ) - public LinkedHashMap<String, String> getDetails() { - return details; + @ApiModelProperty("A Map of key/value pairs that describe the component that the status history belongs to") + public LinkedHashMap<String, String> getComponentDetails() { + return componentDetails; } - public void setDetails(LinkedHashMap<String, String> details) { - this.details = details; + public void setComponentDetails(LinkedHashMap<String, String> componentDetails) { + this.componentDetails = componentDetails; } - /** - * @return Descriptors for each supported status field - */ - @ApiModelProperty( - value = "The descriptor for each support status field." - ) + @ApiModelProperty("The Descriptors that provide information on each of the metrics provided in the status history") public List<StatusDescriptorDTO> getFieldDescriptors() { return fieldDescriptors; } @@ -80,18 +76,24 @@ public class StatusHistoryDTO { this.fieldDescriptors = fieldDescriptors; } - /** - * @return The status snapshots - */ - @ApiModelProperty( - value = "The status snapshots." - ) - public List<StatusSnapshotDTO> getStatusSnapshots() { - return statusSnapshots; + @ApiModelProperty("A list of StatusSnapshotDTO objects that provide the actual metric values for the component. If the NiFi instance " + + "is clustered, this will represent the aggregate status across all nodes. If the NiFi instance is not clustered, this will represent " + + "the status of the entire NiFi instance.") + public List<StatusSnapshotDTO> getAggregateStatusSnapshots() { + return aggregateStatusSnapshots; } - public void setStatusSnapshots(List<StatusSnapshotDTO> statusSnapshots) { - this.statusSnapshots = statusSnapshots; + public void setAggregateStatusSnapshots(List<StatusSnapshotDTO> aggregateStatusSnapshots) { + this.aggregateStatusSnapshots = aggregateStatusSnapshots; } + @ApiModelProperty("A Map of Node Address to a list of StatusSnapshotDTO objects that provide the actual metric values for the component, for that node. " + + "If the NiFi instance is not clustered, this value will be null.") + public Map<String, List<StatusSnapshotDTO>> getNodeStatusSnapshots() { + return nodeStatusSnapshots; + } + + public void setNodeStatusSnapshots(Map<String, List<StatusSnapshotDTO>> nodeStatusSnapshots) { + this.nodeStatusSnapshots = nodeStatusSnapshots; + } } http://git-wip-us.apache.org/repos/asf/nifi/blob/ad32cb82/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDetailDTO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDetailDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDetailDTO.java deleted file mode 100644 index e78641e..0000000 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/status/StatusHistoryDetailDTO.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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.web.api.dto.status; - -import com.wordnik.swagger.annotations.ApiModelProperty; -import javax.xml.bind.annotation.XmlType; - -/** - * Detail of a status history metric. - */ -@XmlType(name = "statusHistoryDetail") -public class StatusHistoryDetailDTO { - - private String label; - private String value; - - /** - * @return label for this status detail - */ - @ApiModelProperty( - value = "The label for the status detail." - ) - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - /** - * @return value for this status detail - */ - @ApiModelProperty( - value = "The value for the status detail." - ) - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - -}
