NIFIREG-160 Fixing issue where version created event throws an exception when comments are not provided

This closes #118.

Signed-off-by: Kevin Doran <kdoran@apache.org>
diff --git a/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/EventFactory.java b/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/EventFactory.java
index ba9e775..b837d6d 100644
--- a/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/EventFactory.java
+++ b/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/EventFactory.java
@@ -81,13 +81,16 @@
     }
 
     public static Event flowVersionCreated(final VersionedFlowSnapshot versionedFlowSnapshot) {
+        final String versionComments = versionedFlowSnapshot.getSnapshotMetadata().getComments() == null
+                ? "" : versionedFlowSnapshot.getSnapshotMetadata().getComments();
+
         return new StandardEvent.Builder()
                 .eventType(EventType.CREATE_FLOW_VERSION)
                 .addField(EventFieldName.BUCKET_ID, versionedFlowSnapshot.getSnapshotMetadata().getBucketIdentifier())
                 .addField(EventFieldName.FLOW_ID, versionedFlowSnapshot.getSnapshotMetadata().getFlowIdentifier())
                 .addField(EventFieldName.VERSION, String.valueOf(versionedFlowSnapshot.getSnapshotMetadata().getVersion()))
                 .addField(EventFieldName.USER, versionedFlowSnapshot.getSnapshotMetadata().getAuthor())
-                .addField(EventFieldName.COMMENT, versionedFlowSnapshot.getSnapshotMetadata().getComments())
+                .addField(EventFieldName.COMMENT, versionComments)
                 .build();
     }
 
diff --git a/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/StandardEventField.java b/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/StandardEventField.java
index 7ff94c5..21266bb 100644
--- a/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/StandardEventField.java
+++ b/nifi-registry-framework/src/main/java/org/apache/nifi/registry/event/StandardEventField.java
@@ -33,7 +33,7 @@
         this.name = name;
         this.value = value;
         Validate.notNull(this.name);
-        Validate.notBlank(this.value);
+        Validate.notNull(this.value);
     }
 
     @Override
diff --git a/nifi-registry-framework/src/test/java/org/apache/nifi/registry/event/TestEventFactory.java b/nifi-registry-framework/src/test/java/org/apache/nifi/registry/event/TestEventFactory.java
index 95dd6ab..a9ad911 100644
--- a/nifi-registry-framework/src/test/java/org/apache/nifi/registry/event/TestEventFactory.java
+++ b/nifi-registry-framework/src/test/java/org/apache/nifi/registry/event/TestEventFactory.java
@@ -158,4 +158,12 @@
                 event.getField(EventFieldName.COMMENT).getValue());
     }
 
+    @Test
+    public void testFlowVersionedCreatedWhenCommentsMissing() {
+        versionedFlowSnapshot.getSnapshotMetadata().setComments(null);
+        final Event event = EventFactory.flowVersionCreated(versionedFlowSnapshot);
+        event.validate();
+        assertEquals("", event.getField(EventFieldName.COMMENT).getValue());
+    }
+
 }
diff --git a/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java b/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
index 34369d0..776a693 100644
--- a/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
+++ b/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
@@ -62,8 +62,13 @@
         Validate.notNull(this.eventService);
     }
 
+    // We don't want an error creating/publishing an event to cause the overall request to fail, so catch all throwables here
     protected void publish(final Event event) {
-        eventService.publish(event);
+        try {
+            eventService.publish(event);
+        } catch (Throwable t) {
+            logger.error("Unable to publish event: " + t.getMessage(), t);
+        }
     }
 
     protected String generateResourceUri(final String... path) {