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) {