Skip to content

Commit

Permalink
Extracting DTOs from ExtractorsResource.
Browse files Browse the repository at this point in the history
(cherry picked from commit db9cba7b22bd199f919ae904fcd77ecf5bde4410)
  • Loading branch information
dennisoelkers committed Mar 25, 2015
1 parent f512e22 commit 209959a
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 32 deletions.
@@ -0,0 +1,25 @@
package org.graylog2.rest.models.system.inputs.extractors.responses;

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.Map;

@AutoValue
@JsonAutoDetect
public abstract class ExtractorMetrics {

@JsonProperty
public abstract Map<String, Object> total();

@JsonProperty
public abstract Map<String, Object> converters();

@JsonCreator
public static ExtractorMetrics create(@JsonProperty("total") Map<String, Object> total,
@JsonProperty("converters") Map<String, Object> converters) {
return new AutoValue_ExtractorMetrics(total, converters);
}
}
@@ -0,0 +1,77 @@
package org.graylog2.rest.models.system.inputs.extractors.responses;

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;
import java.util.Map;

@AutoValue
@JsonAutoDetect
public abstract class ExtractorSummary {
@JsonProperty
public abstract String id();

@JsonProperty
public abstract String title();

@JsonProperty
public abstract String type();

@JsonProperty("cursor_strategy")
public abstract String cursorStrategy();

@JsonProperty("source_field")
public abstract String sourceField();

@JsonProperty("target_field")
public abstract String targetField();

@JsonProperty("extractor_config")
public abstract Map<String, Object> extractorConfig();

@JsonProperty("creator_user_id")
public abstract String creatorUserId();

@JsonProperty
public abstract List<Map<String, Object>> converters();

@JsonProperty("condition_type")
public abstract String conditionType();

@JsonProperty("condition_value")
public abstract String conditionValue();

@JsonProperty
public abstract Long order();

@JsonProperty
public abstract Long exceptions();

@JsonProperty("converter_exceptions")
public abstract Long converterExceptions();

@JsonProperty
public abstract ExtractorMetrics metrics();

@JsonCreator
public static ExtractorSummary create(@JsonProperty("id") String id,
@JsonProperty("title") String title,
@JsonProperty("type") String type,
@JsonProperty("cursor_strategy") String cursorStrategy,
@JsonProperty("source_field") String sourceField,
@JsonProperty("target_field") String targetField,
@JsonProperty("extractor_config") Map<String, Object> extractorConfig,
@JsonProperty("creator_user_id") String creatorUserId,
@JsonProperty("converters") List<Map<String, Object>> converters,
@JsonProperty("condition_type") String conditionType,
@JsonProperty("condition_value") String conditionValue,
@JsonProperty("order") Long order,
@JsonProperty("exceptions") Long exceptions,
@JsonProperty("converter_exceptions") Long converterExceptions,
@JsonProperty("metrics") ExtractorMetrics metrics) {
return new AutoValue_ExtractorSummary(id, title, type, cursorStrategy, sourceField, targetField, extractorConfig, creatorUserId, converters, conditionType, conditionValue, order, exceptions, converterExceptions, metrics);
}
}
@@ -0,0 +1,28 @@
package org.graylog2.rest.models.system.inputs.extractors.responses;

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 ExtractorSummaryList {
@JsonProperty
public abstract int total();

@JsonProperty
public abstract List<ExtractorSummary> extractors();

@JsonCreator
public static ExtractorSummaryList create(@JsonProperty("total") int total,
@JsonProperty("extractors") List<ExtractorSummary> extractors) {
return new AutoValue_ExtractorSummaryList(total, extractors);
}

public static ExtractorSummaryList create(List<ExtractorSummary> extractors) {
return new AutoValue_ExtractorSummaryList(extractors.size(), extractors);
}
}
Expand Up @@ -29,6 +29,9 @@
import org.graylog2.inputs.InputService; import org.graylog2.inputs.InputService;
import org.graylog2.inputs.converters.ConverterFactory; import org.graylog2.inputs.converters.ConverterFactory;
import org.graylog2.inputs.extractors.ExtractorFactory; import org.graylog2.inputs.extractors.ExtractorFactory;
import org.graylog2.rest.models.system.inputs.extractors.responses.ExtractorMetrics;
import org.graylog2.rest.models.system.inputs.extractors.responses.ExtractorSummary;
import org.graylog2.rest.models.system.inputs.extractors.responses.ExtractorSummaryList;
import org.graylog2.shared.metrics.MetricUtils; import org.graylog2.shared.metrics.MetricUtils;
import org.graylog2.plugin.Tools; import org.graylog2.plugin.Tools;
import org.graylog2.plugin.database.ValidationException; import org.graylog2.plugin.database.ValidationException;
Expand Down Expand Up @@ -144,7 +147,7 @@ public Response create(@ApiParam(name = "inputId", required = true)
@ApiResponse(code = 400, message = "Field the extractor should write on is reserved."), @ApiResponse(code = 400, message = "Field the extractor should write on is reserved."),
@ApiResponse(code = 400, message = "Missing or invalid configuration.") @ApiResponse(code = 400, message = "Missing or invalid configuration.")
}) })
public Map<String, Object> update(@ApiParam(name = "inputId", required = true) public ExtractorSummary update(@ApiParam(name = "inputId", required = true)
@PathParam("inputId") String inputId, @PathParam("inputId") String inputId,
@ApiParam(name = "extractorId", required = true) @ApiParam(name = "extractorId", required = true)
@PathParam("extractorId") String extractorId, @PathParam("extractorId") String extractorId,
Expand Down Expand Up @@ -184,7 +187,7 @@ public Map<String, Object> update(@ApiParam(name = "inputId", required = true)
@ApiResponse(code = 404, message = "No such input on this node.") @ApiResponse(code = 404, message = "No such input on this node.")
}) })
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> list(@ApiParam(name = "inputId", required = true) public ExtractorSummaryList list(@ApiParam(name = "inputId", required = true)
@PathParam("inputId") String inputId) throws NotFoundException { @PathParam("inputId") String inputId) throws NotFoundException {
checkPermission(RestPermissions.INPUTS_READ, inputId); checkPermission(RestPermissions.INPUTS_READ, inputId);


Expand All @@ -194,14 +197,12 @@ public Map<String, Object> list(@ApiParam(name = "inputId", required = true)
throw new javax.ws.rs.NotFoundException(); throw new javax.ws.rs.NotFoundException();
} }


final List<Map<String, Object>> extractors = Lists.newArrayList(); final List<ExtractorSummary> extractors = Lists.newArrayList();
for (Extractor extractor : inputService.getExtractors(input)) { for (Extractor extractor : inputService.getExtractors(input)) {
extractors.add(toMap(extractor)); extractors.add(toMap(extractor));
} }


return ImmutableMap.of( return ExtractorSummaryList.create(extractors);
"extractors", extractors,
"total", inputService.getExtractors(input).size());
} }


@GET @GET
Expand All @@ -213,7 +214,7 @@ public Map<String, Object> list(@ApiParam(name = "inputId", required = true)
@ApiResponse(code = 404, message = "No such extractor on this input.") @ApiResponse(code = 404, message = "No such extractor on this input.")
}) })
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> single( public ExtractorSummary single(
@ApiParam(name = "inputId", required = true) @ApiParam(name = "inputId", required = true)
@PathParam("inputId") String inputId, @PathParam("inputId") String inputId,
@ApiParam(name = "extractorId", required = true) @ApiParam(name = "extractorId", required = true)
Expand Down Expand Up @@ -298,31 +299,14 @@ public void order(@ApiParam(name = "inputId", value = "Persist ID (!) of input."
LOG.info("Updated extractor ordering of input <persist:{}>.", inputPersistId); LOG.info("Updated extractor ordering of input <persist:{}>.", inputPersistId);
} }


private Map<String, Object> toMap(Extractor extractor) { private ExtractorSummary toMap(Extractor extractor) {
Map<String, Object> map = Maps.newHashMap(); final ExtractorMetrics metrics = ExtractorMetrics.create(MetricUtils.buildTimerMap(metricRegistry.getTimers().get(extractor.getTotalTimerName())),

MetricUtils.buildTimerMap(metricRegistry.getTimers().get(extractor.getConverterTimerName())));
map.put(Extractor.FIELD_ID, extractor.getId());
map.put(Extractor.FIELD_TITLE, extractor.getTitle()); return ExtractorSummary.create(extractor.getId(), extractor.getTitle(), extractor.getType().toString().toLowerCase(), extractor.getCursorStrategy().toString().toLowerCase(),
map.put(Extractor.FIELD_TYPE, extractor.getType().toString().toLowerCase()); extractor.getSourceField(), extractor.getTargetField(), extractor.getExtractorConfig(), extractor.getCreatorUserId(), extractor.converterConfigMap(),
map.put(Extractor.FIELD_CURSOR_STRATEGY, extractor.getCursorStrategy().toString().toLowerCase()); extractor.getConditionType().toString().toLowerCase(), extractor.getConditionValue(), extractor.getOrder(), extractor.getExceptionCount(),
map.put(Extractor.FIELD_SOURCE_FIELD, extractor.getSourceField()); extractor.getConverterExceptionCount(), metrics);
map.put(Extractor.FIELD_TARGET_FIELD, extractor.getTargetField());
map.put(Extractor.FIELD_EXTRACTOR_CONFIG, extractor.getExtractorConfig());
map.put(Extractor.FIELD_CREATOR_USER_ID, extractor.getCreatorUserId());
map.put(Extractor.FIELD_CONVERTERS, extractor.converterConfigMap());
map.put(Extractor.FIELD_CONDITION_TYPE, extractor.getConditionType().toString().toLowerCase());
map.put(Extractor.FIELD_CONDITION_VALUE, extractor.getConditionValue());
map.put(Extractor.FIELD_ORDER, extractor.getOrder());

map.put("exceptions", extractor.getExceptionCount());
map.put("converter_exceptions", extractor.getConverterExceptionCount());

Map<String, Object> metrics = Maps.newHashMap();
metrics.put("total", MetricUtils.buildTimerMap(metricRegistry.getTimers().get(extractor.getTotalTimerName())));
metrics.put("converters", MetricUtils.buildTimerMap(metricRegistry.getTimers().get(extractor.getConverterTimerName())));
map.put("metrics", metrics);

return map;
} }


private List<Converter> loadConverters(Map<String, Map<String, Object>> requestConverters) { private List<Converter> loadConverters(Map<String, Map<String, Object>> requestConverters) {
Expand Down

0 comments on commit 209959a

Please sign in to comment.