NIFIREG-7 Defining Provider API and framework for loading providers - Renaming nifi-registry-flow-data-model to nifi-registry-data-model - Implementing FileSystemFlowProvider & FileSystemMetadataProvider - Adding unit tests for file system providers - Injecting providers into test REST resource
Project: http://git-wip-us.apache.org/repos/asf/nifi-registry/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-registry/commit/9eb0cef0 Tree: http://git-wip-us.apache.org/repos/asf/nifi-registry/tree/9eb0cef0 Diff: http://git-wip-us.apache.org/repos/asf/nifi-registry/diff/9eb0cef0 Branch: refs/heads/master Commit: 9eb0cef0169e084002725420415c57b327e86559 Parents: a520c75 Author: Bryan Bende <[email protected]> Authored: Tue Aug 8 17:19:59 2017 -0400 Committer: Bryan Bende <[email protected]> Committed: Mon Aug 21 14:18:40 2017 -0400 ---------------------------------------------------------------------- nifi-registry-assembly/pom.xml | 3 + nifi-registry-data-model/pom.xml | 31 ++ .../org/apache/nifi/registry/bucket/Bucket.java | 114 +++++ .../nifi/registry/bucket/BucketObject.java | 55 +++ .../apache/nifi/registry/flow/BatchSize.java | 53 +++ .../org/apache/nifi/registry/flow/Bundle.java | 83 ++++ .../nifi/registry/flow/ComponentType.java | 49 ++ .../registry/flow/ConnectableComponent.java | 73 +++ .../registry/flow/ConnectableComponentType.java | 27 ++ .../registry/flow/ControllerServiceAPI.java | 65 +++ .../org/apache/nifi/registry/flow/PortType.java | 23 + .../org/apache/nifi/registry/flow/Position.java | 58 +++ .../flow/SiteToSiteTransportProtocol.java | 23 + .../nifi/registry/flow/VersionedComponent.java | 67 +++ .../nifi/registry/flow/VersionedConnection.java | 139 ++++++ .../flow/VersionedControllerService.java | 108 +++++ .../nifi/registry/flow/VersionedFlow.java | 120 +++++ .../registry/flow/VersionedFlowSnapshot.java | 113 +++++ .../nifi/registry/flow/VersionedFunnel.java | 25 + .../nifi/registry/flow/VersionedLabel.java | 75 +++ .../nifi/registry/flow/VersionedPort.java | 52 +++ .../registry/flow/VersionedProcessGroup.java | 123 +++++ .../nifi/registry/flow/VersionedProcessor.java | 169 +++++++ .../registry/flow/VersionedRemoteGroupPort.java | 98 ++++ .../flow/VersionedRemoteProcessGroup.java | 177 ++++++++ nifi-registry-flow-data-model/pom.xml | 31 -- .../apache/nifi/registry/flow/BatchSize.java | 53 --- .../org/apache/nifi/registry/flow/Bucket.java | 96 ---- .../apache/nifi/registry/flow/BucketObject.java | 35 -- .../org/apache/nifi/registry/flow/Bundle.java | 83 ---- .../nifi/registry/flow/ComponentType.java | 49 -- .../registry/flow/ConnectableComponent.java | 73 --- .../registry/flow/ConnectableComponentType.java | 27 -- .../registry/flow/ControllerServiceAPI.java | 65 --- .../org/apache/nifi/registry/flow/PortType.java | 23 - .../org/apache/nifi/registry/flow/Position.java | 58 --- .../flow/SiteToSiteTransportProtocol.java | 23 - .../nifi/registry/flow/VersionedComponent.java | 67 --- .../nifi/registry/flow/VersionedConnection.java | 139 ------ .../flow/VersionedControllerService.java | 108 ----- .../nifi/registry/flow/VersionedFlow.java | 136 ------ .../registry/flow/VersionedFlowSnapshot.java | 93 ---- .../nifi/registry/flow/VersionedFunnel.java | 25 - .../nifi/registry/flow/VersionedLabel.java | 75 --- .../nifi/registry/flow/VersionedPort.java | 52 --- .../registry/flow/VersionedProcessGroup.java | 123 ----- .../nifi/registry/flow/VersionedProcessor.java | 169 ------- .../registry/flow/VersionedRemoteGroupPort.java | 98 ---- .../flow/VersionedRemoteProcessGroup.java | 177 -------- nifi-registry-framework/pom.xml | 80 ++++ .../flow/StandardFlowSnapshotContext.java | 140 ++++++ .../nifi/registry/provider/ProviderFactory.java | 44 ++ .../provider/ProviderFactoryException.java | 38 ++ .../StandardProviderConfigurationContext.java | 39 ++ .../provider/StandardProviderFactory.java | 178 ++++++++ .../src/main/xsd/providers.xsd | 51 +++ .../flow/TestStandardFlowSnapshotContext.java | 53 +++ .../provider/MockFlowPersistenceProvider.java | 57 +++ .../registry/provider/MockMetadataProvider.java | 109 +++++ .../provider/TestStandardProviderFactory.java | 105 +++++ .../provider/providers-class-not-found.xml | 30 ++ .../test/resources/provider/providers-good.xml | 30 ++ .../properties/NiFiRegistryProperties.java | 11 + nifi-registry-provider-api/pom.xml | 40 ++ .../registry/flow/FlowPersistenceException.java | 31 ++ .../registry/flow/FlowPersistenceProvider.java | 68 +++ .../nifi/registry/flow/FlowSnapshotContext.java | 59 +++ .../registry/metadata/MetadataProvider.java | 146 ++++++ .../metadata/MetadataProviderException.java | 35 ++ .../apache/nifi/registry/provider/Provider.java | 32 ++ .../provider/ProviderConfigurationContext.java | 36 ++ .../provider/ProviderCreationException.java | 39 ++ nifi-registry-provider-impl/pom.xml | 90 ++++ .../flow/FileSystemFlowPersistenceProvider.java | 166 +++++++ .../metadata/FileSystemMetadataProvider.java | 451 ++++++++++++++++++ .../nifi/registry/metadata/MetadataHolder.java | 141 ++++++ .../src/main/xsd/metadata.xsd | 139 ++++++ .../TestFileSystemFlowPersistenceProvider.java | 202 +++++++++ .../TestFileSystemMetadataProvider.java | 454 +++++++++++++++++++ .../metadata/metadata-empty-concise.xml | 16 + .../test/resources/metadata/metadata-empty.xml | 17 + .../resources/metadata/metadata-existing.xml | 35 ++ .../resources/conf/nifi-registry.properties | 3 + .../src/main/resources/conf/providers.xml | 28 ++ nifi-registry-service-api/pom.xml | 35 -- .../apache/nifi/registry/util/StringUtils.java | 99 ++++ nifi-registry-web-api/pom.xml | 7 +- .../web/NiFiRegistryResourceConfig.java | 13 +- .../nifi/registry/web/api/TestResource.java | 19 + pom.xml | 13 +- 90 files changed, 5262 insertions(+), 1918 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-assembly/pom.xml ---------------------------------------------------------------------- diff --git a/nifi-registry-assembly/pom.xml b/nifi-registry-assembly/pom.xml index 4e8b85b..b2403de 100644 --- a/nifi-registry-assembly/pom.xml +++ b/nifi-registry-assembly/pom.xml @@ -137,5 +137,8 @@ <nifi.registry.security.needClientAuth /> <nifi.registry.security.authorized.users>./conf/authorized-users.xml</nifi.registry.security.authorized.users> + <!-- nifi-registry.properties: provider properties --> + <nifi.registry.providers.configuration.file>./conf/providers.xml</nifi.registry.providers.configuration.file> + </properties> </project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/pom.xml ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/pom.xml b/nifi-registry-data-model/pom.xml new file mode 100644 index 0000000..dbdda37 --- /dev/null +++ b/nifi-registry-data-model/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- 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. --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.nifi.registry</groupId> + <artifactId>nifi-registry</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + + <artifactId>nifi-registry-data-model</artifactId> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>io.swagger</groupId> + <artifactId>swagger-annotations</artifactId> + <version>1.5.16</version> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java new file mode 100644 index 0000000..d24e797 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java @@ -0,0 +1,114 @@ +/* + * 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.registry.bucket; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +@ApiModel(value = "bucket") +public class Bucket { + + private String identifier; + private String name; + private long createdTimestamp; + private String description; + private Map<String, BucketObject> bucketObjectMap = new HashMap<>(); + + @ApiModelProperty("The id of the bucket. This is set by the server at creation time.") + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty("The name of the bucket.") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The timestamp of when the bucket was first created. This is set by the server at creation time.") + public long getCreatedTimestamp() { + return createdTimestamp; + } + + public void setCreatedTimestamp(long createdTimestamp) { + this.createdTimestamp = createdTimestamp; + } + + @ApiModelProperty("A description of the bucket.") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * Add a new object version to this bucket. + * + * Note that this method has a potential side effect. + * If a BucketObject ID is not set, a random UUID string will be set. + * + * @param object The object to add to this bucket. + */ + public void addObject(BucketObject object) { + if(object.getIdentifier() == null) { + object.setIdentifier(UUID.randomUUID().toString()); + } + + this.bucketObjectMap.put(object.getIdentifier(), object); + } + + protected Map<String, BucketObject> getBucketObjectMap() { + return bucketObjectMap; + } + + protected void setBucketObjectMap(Map<String, BucketObject> bucketObjectMap) { + this.bucketObjectMap = bucketObjectMap; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.identifier); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final Bucket other = (Bucket) obj; + return Objects.equals(this.identifier, other.identifier); + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketObject.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketObject.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketObject.java new file mode 100644 index 0000000..bd3a9d9 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketObject.java @@ -0,0 +1,55 @@ +/* + * 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.registry.bucket; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Objects; + +@ApiModel("bucketObject") +public abstract class BucketObject { + + private String identifier; + + @ApiModelProperty("An ID to uniquely identify this object.") + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String id) { + this.identifier = id; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.identifier); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final BucketObject other = (BucketObject) obj; + return Objects.equals(this.identifier, other.identifier); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java new file mode 100644 index 0000000..b0687b9 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java @@ -0,0 +1,53 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; + +public class BatchSize { + private Integer count; + private String size; + private String duration; + + @ApiModelProperty("Preferred number of flow files to include in a transaction.") + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + @ApiModelProperty("Preferred number of bytes to include in a transaction.") + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + @ApiModelProperty("Preferred amount of time that a transaction should span.") + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java new file mode 100644 index 0000000..1050ac9 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java @@ -0,0 +1,83 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class Bundle { + private String group; + private String artifact; + private String version; + + public Bundle() { + } + + public Bundle(final String group, final String artifact, final String version) { + this.group = group; + this.artifact = artifact; + this.version = version; + } + + @ApiModelProperty("The group of the bundle") + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + @ApiModelProperty("The artifact of the bundle") + public String getArtifact() { + return artifact; + } + + public void setArtifact(String artifact) { + this.artifact = artifact; + } + + @ApiModelProperty("The version of the bundle") + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj == null || getClass() != obj.getClass()) { + return false; + } + + final Bundle other = (Bundle) obj; + return Objects.equals(group, other.group) && Objects.equals(artifact, other.artifact) && Objects.equals(version, other.version); + } + + @Override + public int hashCode() { + return Objects.hash(group, artifact, version); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java new file mode 100644 index 0000000..300c146 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java @@ -0,0 +1,49 @@ +/* + * 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.registry.flow; + +public enum ComponentType { + + CONNECTION("Connection"), + PROCESSOR("Processor"), + PROCESS_GROUP("Process Group"), + REMOTE_PROCESS_GROUP("Remote Process Group"), + INPUT_PORT("Input Port"), + OUTPUT_PORT("Output Port"), + REMOTE_INPUT_PORT("Remote Input Port"), + REMOTE_OUTPUT_PORT("Remote Output Port"), + FUNNEL("Funnel"), + LABEL("Label"), + CONTROLLER_SERVICE("Controller Service"); + + + private final String typeName; + + private ComponentType(final String typeName) { + this.typeName = typeName; + } + + public String getTypeName() { + return typeName; + } + + @Override + public String toString() { + return typeName; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java new file mode 100644 index 0000000..abd34bf --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java @@ -0,0 +1,73 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; + +public class ConnectableComponent { + private String id; + private ConnectableComponentType type; + private String groupId; + private String name; + private String comments; + + @ApiModelProperty(value = "The id of the connectable component.", required = true) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @ApiModelProperty(value = "The type of component the connectable is.", required = true) + public ConnectableComponentType getType() { + return type; + } + + public void setType(ConnectableComponentType type) { + this.type = type; + } + + @ApiModelProperty(value = "The id of the group that the connectable component resides in", required = true) + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @ApiModelProperty("The name of the connectable component") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The comments for the connectable component.") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java new file mode 100644 index 0000000..1b73cac --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java @@ -0,0 +1,27 @@ +/* + * 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.registry.flow; + +public enum ConnectableComponentType { + PROCESSOR, + REMOTE_INPUT_PORT, + REMOTE_OUTPUT_PORT, + INPUT_PORT, + OUTPUT_PORT, + FUNNEL; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java new file mode 100644 index 0000000..b46e87a --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java @@ -0,0 +1,65 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class ControllerServiceAPI { + private String type; + private Bundle bundle; + + @ApiModelProperty("The fully qualified name of the service interface.") + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @ApiModelProperty("The details of the artifact that bundled this service interface.") + public Bundle getBundle() { + return bundle; + } + + public void setBundle(Bundle bundle) { + this.bundle = bundle; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + final ControllerServiceAPI other = (ControllerServiceAPI) o; + return Objects.equals(type, other.type) && Objects.equals(bundle, other.bundle); + } + + @Override + public int hashCode() { + return Objects.hash(type, bundle); + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java new file mode 100644 index 0000000..6a32c11 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java @@ -0,0 +1,23 @@ +/* + * 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.registry.flow; + +public enum PortType { + INPUT_PORT, + OUTPUT_PORT; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java new file mode 100644 index 0000000..0cbb12c --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java @@ -0,0 +1,58 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel("The position of a component on the graph") +public class Position { + private double x; + private double y; + + public Position() { + } + + public Position(double x, double y) { + this.x = x; + this.y = y; + } + + @ApiModelProperty("The x coordinate.") + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + @ApiModelProperty("The y coordinate.") + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + @Override + public String toString() { + return "[x=" + x + ", y=" + y + "]"; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java new file mode 100644 index 0000000..9f94c1a --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java @@ -0,0 +1,23 @@ +/* + * 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.registry.flow; + +public enum SiteToSiteTransportProtocol { + RAW, + HTTP; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java new file mode 100644 index 0000000..bef9557 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java @@ -0,0 +1,67 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; + + +public abstract class VersionedComponent { + + private String identifier; + private String name; + private String comments; + private Position position; + + @ApiModelProperty("The component's unique identifier") + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty("The component's name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The component's position on the graph") + public Position getPosition() { + return position; + } + + public void setPosition(Position position) { + this.position = position; + } + + @ApiModelProperty("The user-supplied comments for the component") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public abstract ComponentType getComponentType(); +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConnection.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConnection.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConnection.java new file mode 100644 index 0000000..59740e9 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConnection.java @@ -0,0 +1,139 @@ +/* + * 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.registry.flow; + +import java.util.List; +import java.util.Set; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedConnection extends VersionedComponent { + private ConnectableComponent source; + private ConnectableComponent destination; + private Integer labelIndex; + private Long zIndex; + private Set<String> selectedRelationships; + + private Long backPressureObjectThreshold; + private String backPressureDataSizeThreshold; + private String flowFileExpiration; + private List<String> prioritizers; + private List<Position> bends; + + @ApiModelProperty("The source of the connection.") + public ConnectableComponent getSource() { + return source; + } + + public void setSource(ConnectableComponent source) { + this.source = source; + } + + @ApiModelProperty("The destination of the connection.") + public ConnectableComponent getDestination() { + return destination; + } + + public void setDestination(ConnectableComponent destination) { + this.destination = destination; + } + + @ApiModelProperty("The bend points on the connection.") + public List<Position> getBends() { + return bends; + } + + public void setBends(List<Position> bends) { + this.bends = bends; + } + + @ApiModelProperty("The index of the bend point where to place the connection label.") + public Integer getLabelIndex() { + return labelIndex; + } + + public void setLabelIndex(Integer labelIndex) { + this.labelIndex = labelIndex; + } + + @ApiModelProperty("The z index of the connection.") + public Long getzIndex() { + return zIndex; + } + + public void setzIndex(Long zIndex) { + this.zIndex = zIndex; + } + + @ApiModelProperty("The selected relationship that comprise the connection.") + public Set<String> getSelectedRelationships() { + return selectedRelationships; + } + + public void setSelectedRelationships(Set<String> relationships) { + this.selectedRelationships = relationships; + } + + + @ApiModelProperty("The object count threshold for determining when back pressure is applied. Updating this value is a passive change in the sense that it won't impact whether existing files " + + "over the limit are affected but it does help feeder processors to stop pushing too much into this work queue.") + public Long getBackPressureObjectThreshold() { + return backPressureObjectThreshold; + } + + public void setBackPressureObjectThreshold(Long backPressureObjectThreshold) { + this.backPressureObjectThreshold = backPressureObjectThreshold; + } + + + @ApiModelProperty("The object data size threshold for determining when back pressure is applied. Updating this value is a passive change in the sense that it won't impact whether existing " + + "files over the limit are affected but it does help feeder processors to stop pushing too much into this work queue.") + public String getBackPressureDataSizeThreshold() { + return backPressureDataSizeThreshold; + } + + public void setBackPressureDataSizeThreshold(String backPressureDataSizeThreshold) { + this.backPressureDataSizeThreshold = backPressureDataSizeThreshold; + } + + + @ApiModelProperty("The amount of time a flow file may be in the flow before it will be automatically aged out of the flow. Once a flow file reaches this age it will be terminated from " + + "the flow the next time a processor attempts to start work on it.") + public String getFlowFileExpiration() { + return flowFileExpiration; + } + + public void setFlowFileExpiration(String flowFileExpiration) { + this.flowFileExpiration = flowFileExpiration; + } + + + @ApiModelProperty("The comparators used to prioritize the queue.") + public List<String> getPrioritizers() { + return prioritizers; + } + + public void setPrioritizers(List<String> prioritizers) { + this.prioritizers = prioritizers; + } + + @Override + public ComponentType getComponentType() { + return ComponentType.CONNECTION; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedControllerService.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedControllerService.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedControllerService.java new file mode 100644 index 0000000..2275e73 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedControllerService.java @@ -0,0 +1,108 @@ +/* + * 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.registry.flow; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedControllerService extends VersionedComponent { + + private String type; + private Bundle bundle; + private List<ControllerServiceAPI> controllerServiceApis; + + private Map<String, String> properties; + private String annotationData; + + + @ApiModelProperty(value = "The type of the controller service.") + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @ApiModelProperty(value = "The details of the artifact that bundled this processor type.") + public Bundle getBundle() { + return bundle; + } + + public void setBundle(Bundle bundle) { + this.bundle = bundle; + } + + @ApiModelProperty(value = "Lists the APIs this Controller Service implements.") + public List<ControllerServiceAPI> getControllerServiceApis() { + return controllerServiceApis; + } + + public void setControllerServiceApis(List<ControllerServiceAPI> controllerServiceApis) { + this.controllerServiceApis = controllerServiceApis; + } + + @ApiModelProperty(value = "The properties of the controller service.") + public Map<String, String> getProperties() { + return properties; + } + + public void setProperties(Map<String, String> properties) { + this.properties = properties; + } + + @ApiModelProperty(value = "The annotation for the controller service. This is how the custom UI relays configuration to the controller service.") + public String getAnnotationData() { + return annotationData; + } + + public void setAnnotationData(String annotationData) { + this.annotationData = annotationData; + } + + @Override + public int hashCode() { + final String id = getIdentifier(); + return 37 + 3 * ((id == null) ? 0 : id.hashCode()); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + + if (obj.getClass() != VersionedControllerService.class) { + return false; + } + + final VersionedControllerService other = (VersionedControllerService) obj; + return Objects.equals(getIdentifier(), other.getIdentifier()); + } + + @Override + public ComponentType getComponentType() { + return ComponentType.CONTROLLER_SERVICE; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java new file mode 100644 index 0000000..4b8a910 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java @@ -0,0 +1,120 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.apache.nifi.registry.bucket.BucketObject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * Represents a versioned flow. A versioned flow is a named flow that is expected to change + * over time. This flow is saved to the registry with information such as its name, a description, + * and each version of the flow. + * </p> + * + * @see VersionedFlowSnapshot + */ +@ApiModel(value = "versionedFlow") +public class VersionedFlow extends BucketObject { + + private String name; + private long createdTimestamp; + private long modifiedTimestamp; + private String description; + private int currentMaxVersion = 0; + private ArrayList<VersionedFlowSnapshot> snapshots = new ArrayList<>(); + private Map<Integer, VersionedFlowSnapshot> snapshotsByVersion = new HashMap<>(); // TODO, could use a third-party collection type that supports primitive keys. + + @ApiModelProperty("The name of the flow.") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The timestamp of when the flow was first created.") + public long getCreatedTimestamp() { + return createdTimestamp; + } + + public void setCreatedTimestamp(long timestamp) { + this.createdTimestamp = timestamp; + } + + @ApiModelProperty("The timestamp of when the flow was last modified, e.g., when a new version was saved.") + public long getModifiedTimestamp() { + return modifiedTimestamp; + } + + public void setModifiedTimestamp(long modifiedTimestamp) { + this.modifiedTimestamp = modifiedTimestamp; + } + + @ApiModelProperty("A description of the flow.") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List<VersionedFlowSnapshot> getSnapshots() { + return snapshots; + } + + public VersionedFlowSnapshot getSnapshot(int version) { + return snapshotsByVersion.get(Integer.valueOf(version)); + } + + /** + * Add a new snapshot version to this VersionedFlow. + * + * Note that this method has potential side effects. + * If a snapshot version number is not a positive integer, + * a new version number will be set as the current max version number + 1. + * + * @param snapshot The snapshot to add to this versionedFlow + */ + public void addVersionedFlowSnapshot(VersionedFlowSnapshot snapshot) { + if (snapshot == null) { + return; + } + + int snapshotVersion = snapshot.getVersion(); + if (snapshotVersion < 1) { + snapshotVersion = ++currentMaxVersion; + snapshot.setVersion(snapshotVersion); + } else if (snapshotsByVersion.containsKey(Integer.valueOf(snapshotVersion))) { + throw new IllegalStateException("Unable to add snapshot to VersionedFlow with duplicate version number '" + snapshotVersion + "'."); + } else { + currentMaxVersion = (snapshotVersion > currentMaxVersion) ? snapshotVersion : currentMaxVersion; + } + + snapshots.add(snapshot); + snapshotsByVersion.put(Integer.valueOf(snapshotVersion), snapshot); + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java new file mode 100644 index 0000000..a1500a4 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java @@ -0,0 +1,113 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Objects; + +/** + * <p> + * Represents a snapshot of a versioned flow. A versioned flow may change many times + * over the course of its life. Each of these versions that is saved to the registry + * is saved as a snapshot, representing information such as the name of the flow, the + * version of the flow, the timestamp when it was saved, the contents of the flow, etc. + * </p> + */ +@ApiModel(value = "versionedFlowSnapshot") +public class VersionedFlowSnapshot { + private String flowIdentifier; + private String flowName; + private int version; + private long timestamp; + private String comments; + private VersionedProcessGroup flowContents; + + @ApiModelProperty("The identifier of the flow this snapshot belongs to") + public String getFlowIdentifier() { + return flowIdentifier; + } + + public void setFlowIdentifier(String flowIdentifier) { + this.flowIdentifier = flowIdentifier; + } + + @ApiModelProperty("The name of the flow this snapshot belongs to") + public String getFlowName() { + return flowName; + } + + public void setFlowName(String flowName) { + this.flowName = flowName; + } + + @ApiModelProperty("The version of this snapshot of the flow") + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + + @ApiModelProperty("The timestamp when the flow was saved") + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + @ApiModelProperty("The comments provided by the user when creating the snapshot") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + @ApiModelProperty("The contents of the versioned flow") + public VersionedProcessGroup getFlowContents() { + return flowContents; + } + + public void setFlowContents(VersionedProcessGroup flowContents) { + this.flowContents = flowContents; + } + + @Override + public int hashCode() { + return Objects.hash(this.flowIdentifier, Integer.valueOf(this.version)); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final VersionedFlowSnapshot other = (VersionedFlowSnapshot) obj; + return Objects.equals(this.flowIdentifier, other.flowIdentifier) && Objects.equals(this.version, other.version); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFunnel.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFunnel.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFunnel.java new file mode 100644 index 0000000..871dafc --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFunnel.java @@ -0,0 +1,25 @@ +/* + * 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.registry.flow; + +public class VersionedFunnel extends VersionedComponent { + @Override + public ComponentType getComponentType() { + return ComponentType.FUNNEL; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedLabel.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedLabel.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedLabel.java new file mode 100644 index 0000000..e7af4de --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedLabel.java @@ -0,0 +1,75 @@ +/* + * 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.registry.flow; + +import java.util.Map; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedLabel extends VersionedComponent { + private String label; + + private Double width; + private Double height; + + // font-size = 12px + // background-color = #eee + private Map<String, String> style; + + + @ApiModelProperty("The text that appears in the label.") + public String getLabel() { + return label; + } + + public void setLabel(final String label) { + this.label = label; + } + + @ApiModelProperty("The styles for this label (font-size : 12px, background-color : #eee, etc).") + public Map<String, String> getStyle() { + return style; + } + + public void setStyle(final Map<String, String> style) { + this.style = style; + } + + @ApiModelProperty("The height of the label in pixels when at a 1:1 scale.") + public Double getHeight() { + return height; + } + + public void setHeight(Double height) { + this.height = height; + } + + @ApiModelProperty("The width of the label in pixels when at a 1:1 scale.") + public Double getWidth() { + return width; + } + + public void setWidth(Double width) { + this.width = width; + } + + @Override + public ComponentType getComponentType() { + return ComponentType.LABEL; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedPort.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedPort.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedPort.java new file mode 100644 index 0000000..f24e386 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedPort.java @@ -0,0 +1,52 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedPort extends VersionedComponent { + private PortType type; + private Integer concurrentlySchedulableTaskCount; + + @ApiModelProperty("The number of tasks that should be concurrently scheduled for the port.") + public Integer getConcurrentlySchedulableTaskCount() { + return concurrentlySchedulableTaskCount; + } + + public void setConcurrentlySchedulableTaskCount(Integer concurrentlySchedulableTaskCount) { + this.concurrentlySchedulableTaskCount = concurrentlySchedulableTaskCount; + } + + @ApiModelProperty("The type of port.") + public PortType getType() { + return type; + } + + public void setType(PortType type) { + this.type = type; + } + + @Override + public ComponentType getComponentType() { + if (type == PortType.OUTPUT_PORT) { + return ComponentType.OUTPUT_PORT; + } + + return ComponentType.INPUT_PORT; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java new file mode 100644 index 0000000..9458cda --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java @@ -0,0 +1,123 @@ +/* + * 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.registry.flow; + +import java.util.LinkedHashSet; +import java.util.Set; + +import io.swagger.annotations.ApiModelProperty; + + +public class VersionedProcessGroup extends VersionedComponent { + + private Set<VersionedProcessGroup> processGroups = new LinkedHashSet<>(); + private Set<VersionedRemoteProcessGroup> remoteProcessGroups = new LinkedHashSet<>(); + private Set<VersionedProcessor> processors = new LinkedHashSet<>(); + private Set<VersionedPort> inputPorts = new LinkedHashSet<>(); + private Set<VersionedPort> outputPorts = new LinkedHashSet<>(); + private Set<VersionedConnection> connections = new LinkedHashSet<>(); + private Set<VersionedLabel> labels = new LinkedHashSet<>(); + private Set<VersionedFunnel> funnels = new LinkedHashSet<>(); + private Set<VersionedControllerService> controllerServices = new LinkedHashSet<>(); + + @ApiModelProperty("The child Process Groups") + public Set<VersionedProcessGroup> getProcessGroups() { + return processGroups; + } + + public void setProcessGroups(Set<VersionedProcessGroup> processGroups) { + this.processGroups = processGroups; + } + + @ApiModelProperty("The Remote Process Groups") + public Set<VersionedRemoteProcessGroup> getRemoteProcessGroups() { + return remoteProcessGroups; + } + + public void setRemoteProcessGroups(Set<VersionedRemoteProcessGroup> remoteProcessGroups) { + this.remoteProcessGroups = remoteProcessGroups; + } + + @ApiModelProperty("The Processors") + public Set<VersionedProcessor> getProcessors() { + return processors; + } + + public void setProcessors(Set<VersionedProcessor> processors) { + this.processors = processors; + } + + @ApiModelProperty("The Input Ports") + public Set<VersionedPort> getInputPorts() { + return inputPorts; + } + + public void setInputPorts(Set<VersionedPort> inputPorts) { + this.inputPorts = inputPorts; + } + + @ApiModelProperty("The Output Ports") + public Set<VersionedPort> getOutputPorts() { + return outputPorts; + } + + public void setOutputPorts(Set<VersionedPort> outputPorts) { + this.outputPorts = outputPorts; + } + + @ApiModelProperty("The Connections") + public Set<VersionedConnection> getConnections() { + return connections; + } + + public void setConnections(Set<VersionedConnection> connections) { + this.connections = connections; + } + + @ApiModelProperty("The Labels") + public Set<VersionedLabel> getLabels() { + return labels; + } + + public void setLabels(Set<VersionedLabel> labels) { + this.labels = labels; + } + + @ApiModelProperty("The Funnels") + public Set<VersionedFunnel> getFunnels() { + return funnels; + } + + public void setFunnels(Set<VersionedFunnel> funnels) { + this.funnels = funnels; + } + + @ApiModelProperty("The Controller Services") + public Set<VersionedControllerService> getControllerServices() { + return controllerServices; + } + + public void setControllerServices(Set<VersionedControllerService> controllerServices) { + this.controllerServices = controllerServices; + } + + @Override + public ComponentType getComponentType() { + return ComponentType.PROCESS_GROUP; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessor.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessor.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessor.java new file mode 100644 index 0000000..4678726 --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessor.java @@ -0,0 +1,169 @@ +/* + * 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.registry.flow; + +import java.util.Map; +import java.util.Set; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedProcessor extends VersionedComponent { + + private Bundle bundle; + private Map<String, String> style; + + private Map<String, String> properties; + private String annotationData; + + private String schedulingPeriod; + private String schedulingStrategy; + private String executionNode; + private String penaltyDuration; + private String yieldDuration; + private String bulletinLevel; + private Long runDurationMillis; + private Integer concurrentlySchedulableTaskCount; + private Set<String> autoTerminatedRelationships; + + + @ApiModelProperty("The frequency with which to schedule the processor. The format of the value will depend on th value of schedulingStrategy.") + public String getSchedulingPeriod() { + return schedulingPeriod; + } + + public void setSchedulingPeriod(String setSchedulingPeriod) { + this.schedulingPeriod = setSchedulingPeriod; + } + + @ApiModelProperty("Indcates whether the prcessor should be scheduled to run in event or timer driven mode.") + public String getSchedulingStrategy() { + return schedulingStrategy; + } + + public void setSchedulingStrategy(String schedulingStrategy) { + this.schedulingStrategy = schedulingStrategy; + } + + @ApiModelProperty("Indicates the node where the process will execute.") + public String getExecutionNode() { + return executionNode; + } + + public void setExecutionNode(String executionNode) { + this.executionNode = executionNode; + } + + @ApiModelProperty("The amout of time that is used when the process penalizes a flowfile.") + public String getPenaltyDuration() { + return penaltyDuration; + } + + public void setPenaltyDuration(String penaltyDuration) { + this.penaltyDuration = penaltyDuration; + } + + @ApiModelProperty("The amount of time that must elapse before this processor is scheduled again after yielding.") + public String getYieldDuration() { + return yieldDuration; + } + + public void setYieldDuration(String yieldDuration) { + this.yieldDuration = yieldDuration; + } + + @ApiModelProperty("The level at which the processor will report bulletins.") + public String getBulletinLevel() { + return bulletinLevel; + } + + public void setBulletinLevel(String bulletinLevel) { + this.bulletinLevel = bulletinLevel; + } + + @ApiModelProperty("The number of tasks that should be concurrently schedule for the processor. If the processor doesn't allow parallol processing then any positive input will be ignored.") + public Integer getConcurrentlySchedulableTaskCount() { + return concurrentlySchedulableTaskCount; + } + + public void setConcurrentlySchedulableTaskCount(Integer concurrentlySchedulableTaskCount) { + this.concurrentlySchedulableTaskCount = concurrentlySchedulableTaskCount; + } + + + @ApiModelProperty("The properties for the processor. Properties whose value is not set will only contain the property name.") + public Map<String, String> getProperties() { + return properties; + } + + public void setProperties(Map<String, String> properties) { + this.properties = properties; + } + + @ApiModelProperty("The annotation data for the processor used to relay configuration between a custom UI and the procesosr.") + public String getAnnotationData() { + return annotationData; + } + + public void setAnnotationData(String annotationData) { + this.annotationData = annotationData; + } + + + @ApiModelProperty("The names of all relationships that cause a flow file to be terminated if the relationship is not connected elsewhere. This property differs " + + "from the 'isAutoTerminate' property of the RelationshipDTO in that the RelationshipDTO is meant to depict the current configuration, whereas this " + + "property can be set in a DTO when updating a Processor in order to change which Relationships should be auto-terminated.") + public Set<String> getAutoTerminatedRelationships() { + return autoTerminatedRelationships; + } + + public void setAutoTerminatedRelationships(final Set<String> autoTerminatedRelationships) { + this.autoTerminatedRelationships = autoTerminatedRelationships; + } + + @ApiModelProperty("The run duration for the processor in milliseconds.") + public Long getRunDurationMillis() { + return runDurationMillis; + } + + public void setRunDurationMillis(Long runDurationMillis) { + this.runDurationMillis = runDurationMillis; + } + + @ApiModelProperty("Information about the bundle from which the component came") + public Bundle getBundle() { + return bundle; + } + + public void setBundle(Bundle bundle) { + this.bundle = bundle; + } + + @ApiModelProperty("Stylistic data for rendering in a UI") + public Map<String, String> getStyle() { + return style; + } + + public void setStyle(Map<String, String> style) { + this.style = style; + } + + @Override + public ComponentType getComponentType() { + return ComponentType.PROCESSOR; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteGroupPort.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteGroupPort.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteGroupPort.java new file mode 100644 index 0000000..73b037e --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteGroupPort.java @@ -0,0 +1,98 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedRemoteGroupPort extends VersionedComponent { + private String groupId; + private Integer concurrentlySchedulableTaskCount; + private Boolean useCompression; + private BatchSize batchSize; + private ComponentType componentType; + + @ApiModelProperty("The number of task that may transmit flowfiles to the target port concurrently.") + public Integer getConcurrentlySchedulableTaskCount() { + return concurrentlySchedulableTaskCount; + } + + public void setConcurrentlySchedulableTaskCount(Integer concurrentlySchedulableTaskCount) { + this.concurrentlySchedulableTaskCount = concurrentlySchedulableTaskCount; + } + + @ApiModelProperty("The id of the remote process group that the port resides in.") + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + + @ApiModelProperty("Whether the flowfiles are compressed when sent to the target port.") + public Boolean isUseCompression() { + return useCompression; + } + + public void setUseCompression(Boolean useCompression) { + this.useCompression = useCompression; + } + + @ApiModelProperty("The batch settings for data transmission.") + public BatchSize getBatchSize() { + return batchSize; + } + + public void setBatchSettings(BatchSize batchSize) { + this.batchSize = batchSize; + } + + @Override + public int hashCode() { + return 923847 + String.valueOf(getName()).hashCode(); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (!(obj instanceof VersionedRemoteGroupPort)) { + return false; + } + + final VersionedRemoteGroupPort other = (VersionedRemoteGroupPort) obj; + return Objects.equals(getName(), other.getName()); + } + + @Override + public ComponentType getComponentType() { + return componentType; + } + + public void setComponentType(final ComponentType componentType) { + if (componentType != ComponentType.REMOTE_INPUT_PORT && componentType != ComponentType.REMOTE_OUTPUT_PORT) { + throw new IllegalArgumentException(); + } + + this.componentType = componentType; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteProcessGroup.java ---------------------------------------------------------------------- diff --git a/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteProcessGroup.java b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteProcessGroup.java new file mode 100644 index 0000000..8417cfc --- /dev/null +++ b/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedRemoteProcessGroup.java @@ -0,0 +1,177 @@ +/* + * 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.registry.flow; + +import java.util.Set; + +import io.swagger.annotations.ApiModelProperty; + +public class VersionedRemoteProcessGroup extends VersionedComponent { + private String targetUri; + private String targetUris; + private Boolean targetSecure; + + private String communicationsTimeout; + private String yieldDuration; + private SiteToSiteTransportProtocol transportProtocol; + private String localNetworkInterface; + private String proxyHost; + private Integer proxyPort; + private String proxyUser; + + private Set<VersionedRemoteGroupPort> inputPorts; + private Set<VersionedRemoteGroupPort> outputPorts; + + + public void setTargetUri(final String targetUri) { + this.targetUri = targetUri; + } + + + @ApiModelProperty("The target URI of the remote process group." + + " If target uri is not set, but uris are set, then returns the first url in the urls." + + " If neither target uri nor uris are set, then returns null.") + public String getTargetUri() { + if (targetUri == null || targetUri.length() == 0) { + if (targetUri == null || targetUri.length() == 0) { + if (targetUris != null && targetUris.length() > 0) { + if (targetUris.indexOf(',') > -1) { + targetUri = targetUris.substring(0, targetUris.indexOf(',')); + } else { + targetUri = targetUris; + } + } + } + } + + return this.targetUri; + } + + public void setTargetUris(String targetUris) { + this.targetUris = targetUris; + } + + + @ApiModelProperty("The target URI of the remote process group." + + " If target uris is not set but target uri is set," + + " then returns a collection containing the single target uri." + + " If neither target uris nor uris are set, then returns null.") + public String getTargetUris() { + if (targetUris == null || targetUris.length() == 0) { + if (targetUris == null || targetUris.length() == 0) { + targetUris = targetUri; + } + } + + return this.targetUris; + } + + + @ApiModelProperty("Whether the target is running securely.") + public Boolean isTargetSecure() { + return targetSecure; + } + + public void setTargetSecure(Boolean targetSecure) { + this.targetSecure = targetSecure; + } + + @ApiModelProperty("The time period used for the timeout when communicating with the target.") + public String getCommunicationsTimeout() { + return communicationsTimeout; + } + + public void setCommunicationsTimeout(String communicationsTimeout) { + this.communicationsTimeout = communicationsTimeout; + } + + @ApiModelProperty("When yielding, this amount of time must elapse before the remote process group is scheduled again.") + public String getYieldDuration() { + return yieldDuration; + } + + public void setYieldDuration(String yieldDuration) { + this.yieldDuration = yieldDuration; + } + + + public SiteToSiteTransportProtocol getTransportProtocol() { + return transportProtocol; + } + + public void setTransportProtocol(SiteToSiteTransportProtocol transportProtocol) { + this.transportProtocol = transportProtocol; + } + + @ApiModelProperty("A Set of Input Ports that can be connected to, in order to send data to the remote NiFi instance") + public Set<VersionedRemoteGroupPort> getInputPorts() { + return inputPorts; + } + + public void setInputPorts(Set<VersionedRemoteGroupPort> inputPorts) { + this.inputPorts = inputPorts; + } + + @ApiModelProperty("A Set of Output Ports that can be connected to, in order to pull data from the remote NiFi instance") + public Set<VersionedRemoteGroupPort> getOutputPorts() { + return outputPorts; + } + + public void setOutputPorts(Set<VersionedRemoteGroupPort> outputPorts) { + this.outputPorts = outputPorts; + } + + + @ApiModelProperty("The local network interface to send/receive data. If not specified, any local address is used. If clustered, all nodes must have an interface with this identifier.") + public String getLocalNetworkInterface() { + return localNetworkInterface; + } + + public void setLocalNetworkInterface(String localNetworkInterface) { + this.localNetworkInterface = localNetworkInterface; + } + + public String getProxyHost() { + return proxyHost; + } + + public void setProxyHost(String proxyHost) { + this.proxyHost = proxyHost; + } + + public Integer getProxyPort() { + return proxyPort; + } + + public void setProxyPort(Integer proxyPort) { + this.proxyPort = proxyPort; + } + + public String getProxyUser() { + return proxyUser; + } + + public void setProxyUser(String proxyUser) { + this.proxyUser = proxyUser; + } + + @Override + public ComponentType getComponentType() { + return ComponentType.REMOTE_PROCESS_GROUP; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/9eb0cef0/nifi-registry-flow-data-model/pom.xml ---------------------------------------------------------------------- diff --git a/nifi-registry-flow-data-model/pom.xml b/nifi-registry-flow-data-model/pom.xml deleted file mode 100644 index 2485791..0000000 --- a/nifi-registry-flow-data-model/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- 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. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.nifi.registry</groupId> - <artifactId>nifi-registry</artifactId> - <version>0.0.1-SNAPSHOT</version> - </parent> - - <artifactId>nifi-registry-flow-data-model</artifactId> - <packaging>jar</packaging> - - <dependencies> - <dependency> - <groupId>io.swagger</groupId> - <artifactId>swagger-annotations</artifactId> - <version>1.5.16</version> - </dependency> - </dependencies> -</project> \ No newline at end of file
