From a84228765b3b34782c1e0ac748dc7500740955c8 Mon Sep 17 00:00:00 2001 From: Dennis Oelkers Date: Fri, 20 Mar 2015 11:15:09 +0100 Subject: [PATCH] Extracting DTOs and using proper typing in AlarmCallbackResource. --- .../AlarmCallbackListSummary.java | 27 ++++++++++++++ .../alarmcallbacks/AlarmCallbackSummary.java | 36 +++++++++++++++++++ .../AlarmCallbackConfiguration.java | 3 ++ .../alarmcallbacks/AlarmCallbackResource.java | 23 +++++++----- 4 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackListSummary.java create mode 100644 graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackSummary.java diff --git a/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackListSummary.java b/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackListSummary.java new file mode 100644 index 000000000000..7611087cb02c --- /dev/null +++ b/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackListSummary.java @@ -0,0 +1,27 @@ +package org.graylog2.rest.models.alarmcallbacks; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.auto.value.AutoValue; + +import java.util.List; + +@AutoValue +@JsonAutoDetect +public abstract class AlarmCallbackListSummary { + @JsonProperty + public abstract int total(); + + @JsonProperty("alarmcallbacks") + public abstract List alarmCallbacks(); + + @JsonCreator + public static AlarmCallbackListSummary create(@JsonProperty("total") int total, @JsonProperty("alarmcallbacks") List alarmCallbacks) { + return new AutoValue_AlarmCallbackListSummary(total, alarmCallbacks); + } + + public static AlarmCallbackListSummary create(List alarmCallbacks) { + return new AutoValue_AlarmCallbackListSummary(alarmCallbacks.size(), alarmCallbacks); + } +} diff --git a/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackSummary.java b/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackSummary.java new file mode 100644 index 000000000000..f88ebda2da86 --- /dev/null +++ b/graylog2-rest-models/src/main/java/org/graylog2/rest/models/alarmcallbacks/AlarmCallbackSummary.java @@ -0,0 +1,36 @@ +package org.graylog2.rest.models.alarmcallbacks; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.auto.value.AutoValue; +import org.joda.time.DateTime; + +import java.util.Map; + +@AutoValue +@JsonAutoDetect +public abstract class AlarmCallbackSummary { + @JsonProperty + public abstract String id(); + @JsonProperty("stream_id") + public abstract String streamId(); + @JsonProperty + public abstract String type(); + @JsonProperty + public abstract Map configuration(); + @JsonProperty("created_at") + public abstract DateTime createdAt(); + @JsonProperty("creator_user_id") + public abstract String creatorUserId(); + + @JsonCreator + public static AlarmCallbackSummary create(@JsonProperty("id") String id, + @JsonProperty("stream_id") String streamId, + @JsonProperty("type") String type, + @JsonProperty("configuration") Map configuration, + @JsonProperty("created_at") DateTime createdAt, + @JsonProperty("creator_user_id") String creatorUserId) { + return new AutoValue_AlarmCallbackSummary(id, streamId, type, configuration, createdAt, creatorUserId); + } +} diff --git a/graylog2-server/src/main/java/org/graylog2/alarmcallbacks/AlarmCallbackConfiguration.java b/graylog2-server/src/main/java/org/graylog2/alarmcallbacks/AlarmCallbackConfiguration.java index b90f8f4cd37b..76c1741a6957 100644 --- a/graylog2-server/src/main/java/org/graylog2/alarmcallbacks/AlarmCallbackConfiguration.java +++ b/graylog2-server/src/main/java/org/graylog2/alarmcallbacks/AlarmCallbackConfiguration.java @@ -19,6 +19,7 @@ import org.graylog2.plugin.configuration.Configuration; import org.graylog2.plugin.database.Persisted; import org.graylog2.plugin.streams.Stream; +import org.joda.time.DateTime; /** * @author Dennis Oelkers @@ -28,4 +29,6 @@ public interface AlarmCallbackConfiguration extends Persisted { public String getStreamId(); public String getType(); public Configuration getConfiguration(); + public DateTime getCreatedAt(); + public String getCreatorUserId(); } diff --git a/graylog2-server/src/main/java/org/graylog2/rest/resources/alarmcallbacks/AlarmCallbackResource.java b/graylog2-server/src/main/java/org/graylog2/rest/resources/alarmcallbacks/AlarmCallbackResource.java index 1868239027ae..c56852dc70f5 100644 --- a/graylog2-server/src/main/java/org/graylog2/rest/resources/alarmcallbacks/AlarmCallbackResource.java +++ b/graylog2-server/src/main/java/org/graylog2/rest/resources/alarmcallbacks/AlarmCallbackResource.java @@ -33,6 +33,8 @@ import org.graylog2.plugin.database.ValidationException; import org.graylog2.plugin.alarms.callbacks.AlarmCallback; import org.graylog2.plugin.streams.Stream; +import org.graylog2.rest.models.alarmcallbacks.AlarmCallbackListSummary; +import org.graylog2.rest.models.alarmcallbacks.AlarmCallbackSummary; import org.graylog2.shared.rest.resources.RestResource; import org.graylog2.shared.security.RestPermissions; import org.graylog2.streams.StreamService; @@ -81,18 +83,23 @@ public AlarmCallbackResource(AlarmCallbackConfigurationService alarmCallbackConf @Timed @ApiOperation(value = "Get a list of all alarm callbacks for this stream") @Produces(MediaType.APPLICATION_JSON) - public Map get(@ApiParam(name = "streamid", value = "The id of the stream whose alarm callbacks we want.", required = true) + public AlarmCallbackListSummary get(@ApiParam(name = "streamid", value = "The id of the stream whose alarm callbacks we want.", required = true) @PathParam("streamid") String streamid) throws NotFoundException { final Stream stream = streamService.load(streamid); - final List> alarmCallbacks = Lists.newArrayList(); + final List alarmCallbacks = Lists.newArrayList(); for (AlarmCallbackConfiguration callback : alarmCallbackConfigurationService.getForStream(stream)) { - alarmCallbacks.add(callback.getFields()); + alarmCallbacks.add(AlarmCallbackSummary.create( + callback.getId(), + callback.getStreamId(), + callback.getType(), + callback.getConfiguration().getSource(), + callback.getCreatedAt(), + callback.getCreatorUserId() + )); } - return ImmutableMap.of( - "alarmcallbacks", alarmCallbacks, - "total", alarmCallbacks.size()); + return AlarmCallbackListSummary.create(alarmCallbacks); } @GET @@ -100,7 +107,7 @@ public Map get(@ApiParam(name = "streamid", value = "The id of t @Timed @ApiOperation(value = "Get a single specified alarm callback for this stream") @Produces(MediaType.APPLICATION_JSON) - public Map get(@ApiParam(name = "streamid", value = "The id of the stream whose alarm callbacks we want.", required = true) + public AlarmCallbackSummary get(@ApiParam(name = "streamid", value = "The id of the stream whose alarm callbacks we want.", required = true) @PathParam("streamid") String streamid, @ApiParam(name = "alarmCallbackId", value = "The alarm callback id we are getting", required = true) @PathParam("alarmCallbackId") String alarmCallbackId) throws NotFoundException { @@ -111,7 +118,7 @@ public Map get(@ApiParam(name = "streamid", value = "The id of t throw new javax.ws.rs.NotFoundException(); } - return result.getFields(); + return AlarmCallbackSummary.create(result.getId(), result.getStreamId(), result.getType(), result.getConfiguration().getSource(), result.getCreatedAt(), result.getCreatorUserId()); } @POST