Skip to content

Commit

Permalink
Extracting DTOs and using proper typing in AlarmCallbackResource.
Browse files Browse the repository at this point in the history
  • Loading branch information
dennisoelkers committed Mar 20, 2015
1 parent cba229a commit a842287
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 8 deletions.
@@ -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<AlarmCallbackSummary> alarmCallbacks();

@JsonCreator
public static AlarmCallbackListSummary create(@JsonProperty("total") int total, @JsonProperty("alarmcallbacks") List<AlarmCallbackSummary> alarmCallbacks) {
return new AutoValue_AlarmCallbackListSummary(total, alarmCallbacks);
}

public static AlarmCallbackListSummary create(List<AlarmCallbackSummary> alarmCallbacks) {
return new AutoValue_AlarmCallbackListSummary(alarmCallbacks.size(), alarmCallbacks);
}
}
@@ -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<String, Object> 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<String, Object> configuration,
@JsonProperty("created_at") DateTime createdAt,
@JsonProperty("creator_user_id") String creatorUserId) {
return new AutoValue_AlarmCallbackSummary(id, streamId, type, configuration, createdAt, creatorUserId);
}
}
Expand Up @@ -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 <dennis@torch.sh>
Expand All @@ -28,4 +29,6 @@ public interface AlarmCallbackConfiguration extends Persisted {
public String getStreamId();
public String getType();
public Configuration getConfiguration();
public DateTime getCreatedAt();
public String getCreatorUserId();
}
Expand Up @@ -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;
Expand Down Expand Up @@ -81,26 +83,31 @@ public AlarmCallbackResource(AlarmCallbackConfigurationService alarmCallbackConf
@Timed
@ApiOperation(value = "Get a list of all alarm callbacks for this stream")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> 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<Map<String, Object>> alarmCallbacks = Lists.newArrayList();
final List<AlarmCallbackSummary> 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
@Path("/{alarmCallbackId}")
@Timed
@ApiOperation(value = "Get a single specified alarm callback for this stream")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> 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 {
Expand All @@ -111,7 +118,7 @@ public Map<String, Object> 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
Expand Down

0 comments on commit a842287

Please sign in to comment.