This is an automated email from the ASF dual-hosted git repository.

kdoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-registry.git


The following commit(s) were added to refs/heads/master by this push:
     new cd50df8  NIFIREG-251 Update data model to allow tracking of external 
controller service references (#173)
cd50df8 is described below

commit cd50df84e4cee6be7f28acd8a994fce96c3c88b2
Author: Bryan Bende <[email protected]>
AuthorDate: Thu Apr 25 12:25:48 2019 -0400

    NIFIREG-251 Update data model to allow tracking of external controller 
service references (#173)
---
 .../flow/ExternalControllerServiceReference.java   | 45 ++++++++++++++++++++++
 .../nifi/registry/flow/VersionedProcessGroup.java  | 17 ++++++--
 .../TestVersionedProcessGroupSerializer.java       | 44 +++++++++++++++++++++
 3 files changed, 102 insertions(+), 4 deletions(-)

diff --git 
a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ExternalControllerServiceReference.java
 
b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ExternalControllerServiceReference.java
new file mode 100644
index 0000000..3bc269e
--- /dev/null
+++ 
b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ExternalControllerServiceReference.java
@@ -0,0 +1,45 @@
+/*
+ * 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
+public class ExternalControllerServiceReference {
+
+    private String identifier;
+    private String name;
+
+    @ApiModelProperty("The identifier of the controller service")
+    public String getIdentifier() {
+        return identifier;
+    }
+
+    public void setIdentifier(String identifier) {
+        this.identifier = identifier;
+    }
+
+    @ApiModelProperty("The name of the controller service")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
diff --git 
a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
 
b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
index 2acd0a4..071574d 100644
--- 
a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
+++ 
b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedProcessGroup.java
@@ -17,15 +17,14 @@
 
 package org.apache.nifi.registry.flow;
 
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.xml.bind.annotation.XmlRootElement;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.xml.bind.annotation.XmlRootElement;
-
-import io.swagger.annotations.ApiModelProperty;
-
 @XmlRootElement
 public class VersionedProcessGroup extends VersionedComponent {
 
@@ -41,6 +40,7 @@ public class VersionedProcessGroup extends VersionedComponent 
{
     private VersionedFlowCoordinates versionedFlowCoordinates = null;
 
     private Map<String, String> variables = new HashMap<>();
+    private Map<String,ExternalControllerServiceReference> 
externalControllerServices;
 
     @ApiModelProperty("The child Process Groups")
     public Set<VersionedProcessGroup> getProcessGroups() {
@@ -145,4 +145,13 @@ public class VersionedProcessGroup extends 
VersionedComponent {
     public VersionedFlowCoordinates getVersionedFlowCoordinates() {
         return versionedFlowCoordinates;
     }
+
+    @ApiModelProperty("The information about controller services that exist 
outside the versioned process group, but are referenced by components within 
the versioned process group.")
+    public Map<String, ExternalControllerServiceReference> 
getExternalControllerServices() {
+        return externalControllerServices;
+    }
+
+    public void setExternalControllerServices(Map<String, 
ExternalControllerServiceReference> externalControllerServices) {
+        this.externalControllerServices = externalControllerServices;
+    }
 }
diff --git 
a/nifi-registry-core/nifi-registry-framework/src/test/java/org/apache/nifi/registry/serialization/TestVersionedProcessGroupSerializer.java
 
b/nifi-registry-core/nifi-registry-framework/src/test/java/org/apache/nifi/registry/serialization/TestVersionedProcessGroupSerializer.java
index 38fdc03..145204b 100644
--- 
a/nifi-registry-core/nifi-registry-framework/src/test/java/org/apache/nifi/registry/serialization/TestVersionedProcessGroupSerializer.java
+++ 
b/nifi-registry-core/nifi-registry-framework/src/test/java/org/apache/nifi/registry/serialization/TestVersionedProcessGroupSerializer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.registry.serialization;
 
+import org.apache.nifi.registry.flow.ExternalControllerServiceReference;
 import org.apache.nifi.registry.flow.VersionedProcessGroup;
 import org.apache.nifi.registry.flow.VersionedProcessor;
 import org.junit.Assert;
@@ -25,6 +26,8 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
@@ -64,6 +67,47 @@ public class TestVersionedProcessGroupSerializer {
     }
 
     @Test
+    public void testSerializeDeserializeWithExternalServices() throws 
SerializationException {
+        final Serializer<VersionedProcessGroup> serializer = new 
VersionedProcessGroupSerializer();
+
+        final VersionedProcessGroup processGroup1 = new 
VersionedProcessGroup();
+        processGroup1.setIdentifier("pg1");
+        processGroup1.setName("My Process Group");
+
+        final ExternalControllerServiceReference serviceReference1 = new 
ExternalControllerServiceReference();
+        serviceReference1.setIdentifier("1");
+        serviceReference1.setName("Service 1");
+
+        final ExternalControllerServiceReference serviceReference2 = new 
ExternalControllerServiceReference();
+        serviceReference2.setIdentifier("2");
+        serviceReference2.setName("Service 2");
+
+        final Map<String,ExternalControllerServiceReference> serviceReferences 
= new HashMap<>();
+        serviceReferences.put(serviceReference1.getIdentifier(), 
serviceReference1);
+        serviceReferences.put(serviceReference2.getIdentifier(), 
serviceReference2);
+
+        processGroup1.setExternalControllerServices(serviceReferences);
+
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
+        serializer.serialize(processGroup1, out);
+
+        final ByteArrayInputStream in = new 
ByteArrayInputStream(out.toByteArray());
+        final VersionedProcessGroup deserializedProcessGroup = 
serializer.deserialize(in);
+
+        Assert.assertEquals(processGroup1.getIdentifier(), 
deserializedProcessGroup.getIdentifier());
+        Assert.assertEquals(processGroup1.getName(), 
deserializedProcessGroup.getName());
+
+        final Map<String,ExternalControllerServiceReference> 
deserializedServiceReferences = 
deserializedProcessGroup.getExternalControllerServices();
+        Assert.assertNotNull(deserializedServiceReferences);
+        Assert.assertEquals(2, deserializedServiceReferences.size());
+
+        final ExternalControllerServiceReference deserializedServiceReference1 
= deserializedServiceReferences.get(serviceReference1.getIdentifier());
+        Assert.assertNotNull(deserializedServiceReference1);
+        Assert.assertEquals(serviceReference1.getIdentifier(), 
deserializedServiceReference1.getIdentifier());
+        Assert.assertEquals(serviceReference1.getName(), 
deserializedServiceReference1.getName());
+    }
+
+    @Test
     public void testDeserializeJsonNonIntegerVersion() throws IOException {
         final String file = "/serialization/json/non-integer-version.snapshot";
         final VersionedProcessGroupSerializer serializer = new 
VersionedProcessGroupSerializer();

Reply via email to