-
Notifications
You must be signed in to change notification settings - Fork 194
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial work to support core data types in Data Prepper (#4496)
Adds an enum to represent core data types in Data Prepper. This is initially created to help connect the convert_entry_type processor with upcoming work for evaluating type information as part of #4478. Signed-off-by: David Venable <dlv@amazon.com>
- Loading branch information
Showing
6 changed files
with
163 additions
and
14 deletions.
There are no files selected for viewing
78 changes: 78 additions & 0 deletions
78
data-prepper-api/src/main/java/org/opensearch/dataprepper/model/event/DataType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.model.event; | ||
|
||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
|
||
import java.util.Arrays; | ||
import java.util.Map; | ||
import java.util.stream.Collectors; | ||
|
||
/** | ||
* Represents data types that are core to Data Prepper. | ||
* | ||
* @since 2.8 | ||
*/ | ||
public enum DataType { | ||
/** | ||
* Type of <i>string</i>. Compatible with {@link java.lang.String}. | ||
* | ||
* @since 2.8 | ||
*/ | ||
STRING("string"), | ||
/** | ||
* Type of <i>boolean</i>. Compatible with the Java <b>boolean</b> primitive data type. | ||
* | ||
* @since 2.8 | ||
*/ | ||
BOOLEAN("boolean"), | ||
/** | ||
* Type of <i>integer</i>. A 32-bit signed integer. Compatible with the Java <b>int</b> primitive data type. | ||
* | ||
* @since 2.8 | ||
*/ | ||
INTEGER("integer"), | ||
/** | ||
* Type of <i>long</i>. A 64-bit signed integer. Compatible with the Java <b>long</b> primitive data type. | ||
* | ||
* @since 2.8 | ||
*/ | ||
LONG("long"), | ||
/** | ||
* Type of <i>double</i>. A 64-bit IEEE 754 floating point number. Compatible with the Java <b>double</b> primitive data type. | ||
* | ||
* @since 2.8 | ||
*/ | ||
DOUBLE("double"); | ||
|
||
private static final Map<String, DataType> TYPES_MAP = Arrays.stream(DataType.values()) | ||
.collect(Collectors.toMap( | ||
value -> value.typeName, | ||
value -> value | ||
)); | ||
|
||
private final String typeName; | ||
|
||
DataType(final String typeName) { | ||
this.typeName = typeName; | ||
} | ||
|
||
/** | ||
* Gets the name of the type. This is the name that users of | ||
* Data Prepper use or see. | ||
* | ||
* @return The name of the type. | ||
* @since 2.8 | ||
*/ | ||
public String getTypeName() { | ||
return typeName; | ||
} | ||
|
||
@JsonCreator | ||
static DataType fromTypeName(final String option) { | ||
return TYPES_MAP.get(option); | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
data-prepper-api/src/test/java/org/opensearch/dataprepper/model/event/DataTypeTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.model.event; | ||
|
||
import org.junit.jupiter.params.ParameterizedTest; | ||
import org.junit.jupiter.params.provider.EnumSource; | ||
|
||
import static org.hamcrest.CoreMatchers.equalTo; | ||
import static org.hamcrest.MatcherAssert.assertThat; | ||
|
||
class DataTypeTest { | ||
@ParameterizedTest | ||
@EnumSource(DataType.class) | ||
void fromTypeName_returns_expected_value(final DataType dataType) { | ||
assertThat(DataType.fromTypeName(dataType.getTypeName()), equalTo(dataType)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...rc/test/java/org/opensearch/dataprepper/plugins/processor/mutateevent/TargetTypeTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Copyright OpenSearch Contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.opensearch.dataprepper.plugins.processor.mutateevent; | ||
|
||
import org.junit.jupiter.api.extension.ExtensionContext; | ||
import org.junit.jupiter.params.ParameterizedTest; | ||
import org.junit.jupiter.params.provider.Arguments; | ||
import org.junit.jupiter.params.provider.ArgumentsProvider; | ||
import org.junit.jupiter.params.provider.ArgumentsSource; | ||
import org.junit.jupiter.params.provider.EnumSource; | ||
import org.opensearch.dataprepper.model.event.DataType; | ||
|
||
import java.util.stream.Stream; | ||
|
||
import static org.hamcrest.CoreMatchers.equalTo; | ||
import static org.hamcrest.MatcherAssert.assertThat; | ||
import static org.junit.jupiter.params.provider.Arguments.arguments; | ||
|
||
class TargetTypeTest { | ||
@ParameterizedTest | ||
@EnumSource(TargetType.class) | ||
void fromTypeName_returns_expected_value(final TargetType targetType) { | ||
assertThat(TargetType.fromOptionValue(targetType.getDataType().getTypeName()), equalTo(targetType)); | ||
} | ||
@ParameterizedTest | ||
@ArgumentsSource(DataTypeToTargetTypeArgumentsProvider.class) | ||
void fromTypeName_returns_expected_value_based_on_DataType(final String typeName, final TargetType targetType) { | ||
assertThat(TargetType.fromOptionValue(typeName), equalTo(targetType)); | ||
} | ||
|
||
static class DataTypeToTargetTypeArgumentsProvider implements ArgumentsProvider { | ||
@Override | ||
public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) { | ||
return Stream.of( | ||
arguments(DataType.STRING.getTypeName(), TargetType.STRING), | ||
arguments(DataType.BOOLEAN.getTypeName(), TargetType.BOOLEAN), | ||
arguments(DataType.INTEGER.getTypeName(), TargetType.INTEGER), | ||
arguments(DataType.LONG.getTypeName(), TargetType.LONG), | ||
arguments(DataType.DOUBLE.getTypeName(), TargetType.DOUBLE) | ||
); | ||
} | ||
} | ||
} |