public static class Fork { @JsonSchemaDescription("List of operations to perform.") @JsonSchemaDefault("[]") @JsonProperty(required = false) private List<OperationConfig> operations = Collections.emptyList(); public List<OperationConfig> getOperations() { return this.operations; } public void setOperations(List<OperationConfig> operations) { this.operations = operations; } }
public abstract class ReporterConfig extends ConfigurableFactoryConfig { @JsonSchemaDescription("List of filter to apply to stats. If a stat matches the filter it is excluded when being published.") @JsonSchemaDefault("[]") @JsonProperty(required = false) private List<StatFilter> statFilters = Collections.emptyList(); public List<StatFilter> getStatFilters() { return statFilters; } public void setStatFilters(List<StatFilter> statFilters) { this.statFilters = statFilters; } }
public abstract class TransportConfig extends ConfigurableFactoryConfig<TransportConfig> { @JsonSchemaDefault("5") @JsonSchemaDescription("Number of concurrent transporters allowed") private Integer threads = 5; public Integer getThreads() { return threads; } public void setThreads(Integer threads) { this.threads = threads; } }
public abstract class ReporterConfig extends ConfigurableFactoryConfig { @JsonSchemaDescription("List of filter to apply to stats. If a stat matches the filter it is excluded when being published.") @JsonSchemaDefault("[]") @JsonProperty(required = false) private List<StatFilter> statFilters = Collections.emptyList(); public List<StatFilter> getStatFilters() { return statFilters; } public void setStatFilters(List<StatFilter> statFilters) { this.statFilters = statFilters; } }
public abstract class TransportConfig extends ConfigurableFactoryConfig<TransportConfig> { @JsonSchemaDefault("5") @JsonSchemaDescription("Number of concurrent transporters allowed") private Integer threads = 5; public Integer getThreads() { return threads; } public void setThreads(Integer threads) { this.threads = threads; } }
public static class Fork { @JsonSchemaDescription("List of operations to perform.") @JsonSchemaDefault("[]") @JsonProperty(required = false) private List<OperationConfig> operations = Collections.emptyList(); public List<OperationConfig> getOperations() { return this.operations; } public void setOperations(List<OperationConfig> operations) { this.operations = operations; } }
@JsonTypeName("BasicFilterOperation") @JsonSchemaDescription("If pass is set to false then events are filtered out.") public class BasicFilterOperationConfig extends FilterOperationConfig { @JsonSchemaDescription("If 'false', event is filtered out.") @JsonSchemaDefault(value = "false") private Boolean pass = false; public Boolean getPass() { return this.pass; } public void setPass(Boolean pass) { this.pass = pass; } @Override public Class<BasicFilterOperationFactory> getFactoryClass() { return BasicFilterOperationFactory.class; } }
@JsonTypeName("BasicFilterOperation") @JsonSchemaDescription("If pass is set to false then events are filtered out.") public class BasicFilterOperationConfig extends FilterOperationConfig { @JsonSchemaDescription("If 'false', event is filtered out.") @JsonSchemaDefault(value = "false") private Boolean pass = false; public Boolean getPass() { return this.pass; } public void setPass(Boolean pass) { this.pass = pass; } @Override public Class<BasicFilterOperationFactory> getFactoryClass() { return BasicFilterOperationFactory.class; } }
@JsonTypeName("Json") @JsonSchemaDescription("Serializes events into JSON format.") public class JsonSerializerConfig extends SerializerConfig { @JsonSchemaDefault("LOWER_CASE_WITH_UNDERSCORES") @JsonSchemaDescription("GSON field naming policy. See https://google.github.io/gson/apidocs/com/google/gson/FieldNamingPolicy.html") private FieldNamingPolicy fieldNamingPolicy = FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES; @Override public Class<JsonSerializerFactory> getFactoryClass() { return JsonSerializerFactory.class; } public FieldNamingPolicy getFieldNamingPolicy() { return fieldNamingPolicy; } public void setFieldNamingPolicy(FieldNamingPolicy fieldNamingPolicy) { this.fieldNamingPolicy = fieldNamingPolicy; } }
@JsonTypeName("DataDog") @JsonSchemaDescription("Writes metrics to standard out. To setup DataDog lambda integration see " + "https://www.datadoghq.com/blog/monitoring-lambda-functions-datadog/.") public class DataDogReporterConfig extends ReporterConfig { @JsonSchemaDefault("lambda.bender") @JsonSchemaDescription("Prefix to append to metric names") private String prefix = "lambda.bender"; @Override public Class<DataDogReporterFactory> getFactoryClass() { return DataDogReporterFactory.class; } public String getPrefix() { return prefix; } public void setPrefixName(String prefix) { this.prefix = prefix; } }
@JsonTypeName("Cloudwatch") @JsonSchemaDescription("Writes metrics to Cloudwatch. It is important to consider costs when " + "using this reporter see https://aws.amazon.com/cloudwatch/pricing/.") public class CloudwatchReporterConfig extends RegionalReporterConfig { @JsonSchemaDefault("Nextdoor/bender") @JsonSchemaDescription("Cloudwatch namespace to write metrics under.") private String namespace = "Nextdoor/bender"; @Override public Class<CloudwatchReporterFactory> getFactoryClass() { return CloudwatchReporterFactory.class; } public String getNamespace() { return namespace; } public void setNamespace(String namespace) { this.namespace = namespace; } }
@JsonTypeName("KinesisHandler") @JsonSchemaDescription("For use with Kinesis triggers. Set the function handler to " + "\"com.nextdoor.bender.handler.kinesis.KinesisHandler::handler\". The following IAM permissions " + "are also required: kinesis:DescribeStream, kinesis:ListStreams, kinesis:GetShardIterator, " + "kinesis:GetRecords, and kinesis:ListTagsForStream.") public class KinesisHandlerConfig extends HandlerConfig { @JsonSchemaDescription("Whether to add kinesis shardid to the event partitions list. The key " + "is \"__shardid__\" and value will look like \"shardId-000000000000\". Note that " + "partitioning must be either enabled or supported by the transport you use. Not all " + "transporters support partitioning.") @JsonProperty(required = false) @JsonSchemaDefault("false") private Boolean addKinesisShardToPartitions = false; @JsonProperty("add_shardid_to_partitions") public Boolean getAddShardIdToPartitions() { return this.addKinesisShardToPartitions; } @JsonProperty("add_shardid_to_partitions") public void setAddShardIdToPartitions(Boolean addKinesisShardToPartitions) { this.addKinesisShardToPartitions = addKinesisShardToPartitions; } }
@JsonTypeName("KinesisHandler") @JsonSchemaDescription("For use with Kinesis triggers. Set the function handler to " + "\"com.nextdoor.bender.handler.kinesis.KinesisHandler::handler\". The following IAM permissions " + "are also required: kinesis:DescribeStream, kinesis:ListStreams, kinesis:GetShardIterator, " + "kinesis:GetRecords, and kinesis:ListTagsForStream.") public class KinesisHandlerConfig extends HandlerConfig { @JsonSchemaDescription("Whether to add kinesis shardid to the event partitions list. The key " + "is \"__shardid__\" and value will look like \"shardId-000000000000\". Note that " + "partitioning must be either enabled or supported by the transport you use. Not all " + "transporters support partitioning.") @JsonProperty(required = false) @JsonSchemaDefault("false") private Boolean addKinesisShardToPartitions = false; @JsonProperty("add_shardid_to_partitions") public Boolean getAddShardIdToPartitions() { return this.addKinesisShardToPartitions; } @JsonProperty("add_shardid_to_partitions") public void setAddShardIdToPartitions(Boolean addKinesisShardToPartitions) { this.addKinesisShardToPartitions = addKinesisShardToPartitions; } }
@JsonTypeName("PartitionOperation") @JsonSchemaDescription("Sets the partition information for the Event using fields from the " + "deserialized object. When using JSON use JsonPath format to specify fields. See " + "https://github.com/jayway/JsonPath") public class PartitionOperationConfig extends OperationConfig { @JsonSchemaDescription("Configuration to specify object fields that are treated as partitions") @JsonSchemaDefault("[]") @JsonProperty(required = false) private List<PartitionSpec> partitionSpecs = Collections.emptyList(); @JsonProperty("partition_specs") public List<PartitionSpec> getPartitionSpecs() { return partitionSpecs; } @JsonProperty("partition_specs") public void setPartitionSpecs(List<PartitionSpec> partitionSpecs) { this.partitionSpecs = partitionSpecs; } @Override public Class<PartitionOperationFactory> getFactoryClass() { return PartitionOperationFactory.class; } }
@JsonTypeName("Json") @JsonSchemaDescription("Serializes events into JSON format.") public class JsonSerializerConfig extends SerializerConfig { @JsonSchemaDefault("LOWER_CASE_WITH_UNDERSCORES") @JsonSchemaDescription("GSON field naming policy. See https://google.github.io/gson/apidocs/com/google/gson/FieldNamingPolicy.html") private FieldNamingPolicy fieldNamingPolicy = FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES; @Override public Class<JsonSerializerFactory> getFactoryClass() { return JsonSerializerFactory.class; } public FieldNamingPolicy getFieldNamingPolicy() { return fieldNamingPolicy; } public void setFieldNamingPolicy(FieldNamingPolicy fieldNamingPolicy) { this.fieldNamingPolicy = fieldNamingPolicy; } }
@JsonTypeName("Cloudwatch") @JsonSchemaDescription("Writes metrics to Cloudwatch. It is important to consider costs when " + "using this reporter see https://aws.amazon.com/cloudwatch/pricing/.") public class CloudwatchReporterConfig extends RegionalReporterConfig { @JsonSchemaDefault("Nextdoor/bender") @JsonSchemaDescription("Cloudwatch namespace to write metrics under.") private String namespace = "Nextdoor/bender"; @Override public Class<CloudwatchReporterFactory> getFactoryClass() { return CloudwatchReporterFactory.class; } public String getNamespace() { return namespace; } public void setNamespace(String namespace) { this.namespace = namespace; } }
@JsonTypeName("DataDog") @JsonSchemaDescription("Writes metrics to standard out. To setup DataDog lambda integration see " + "https://www.datadoghq.com/blog/monitoring-lambda-functions-datadog/.") public class DataDogReporterConfig extends ReporterConfig { @JsonSchemaDefault("lambda.bender") @JsonSchemaDescription("Prefix to append to metric names") private String prefix = "lambda.bender"; @Override public Class<DataDogReporterFactory> getFactoryClass() { return DataDogReporterFactory.class; } public String getPrefix() { return prefix; } public void setPrefixName(String prefix) { this.prefix = prefix; } }
@JsonSchemaDefault(value = "{}") @JsonProperty(required = true) private List<String> fields = Collections.emptyList(); + "if a field is encoded multiple times.") @JsonProperty(required = false) @JsonSchemaDefault(value = "1") @Min(1) @Max(65535)
@JsonSchemaDefault(value = "{}") @JsonProperty(required = true) private List<String> fields = Collections.emptyList(); + "if a field is encoded multiple times.") @JsonProperty(required = false) @JsonSchemaDefault(value = "1") @Min(1) @Max(65535)
@JsonTypeName("FlattenOperation") @JsonSchemaDescription("Provided a deeply nested JSON Object, it will flatten out the object " + "into keys with a specific separator (dot by default). For example, if the input is " + "{\"foo\": {\"bar\": {\"baz\": 1}}} the operation will produce " + "{\"foo.bar.baz\": 1} as the new payload.") public class FlattenOperationConfig extends OperationConfig { @JsonSchemaDescription("Separator to be used between nested key names (typically a dot(.))") @JsonSchemaDefault(value = ".") private String separator = "."; @Override public Class<FlattenOperationFactory> getFactoryClass() { return FlattenOperationFactory.class; } public String getSeparator() { return separator; } public void setSeparator(String separator) { this.separator = separator; } }