diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 317a44113..1163518d0 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -32,12 +32,10 @@ jobs: fail-fast: false matrix: docker-img: - - docker.io/arangodb/arangodb:3.6.13 - - docker.io/arangodb/arangodb:3.7.12 - - arangodb/arangodb-preview:3.8.0-rc.2 - - docker.io/arangodb/enterprise:3.6.13 - - docker.io/arangodb/enterprise:3.7.12 - - arangodb/enterprise-preview:3.8.0-rc.2 + - docker.io/arangodb/arangodb:3.7.15 + - docker.io/arangodb/arangodb:3.8.1 + - docker.io/arangodb/enterprise:3.7.15 + - docker.io/arangodb/enterprise:3.8.1 topology: - single @@ -59,3 +57,37 @@ jobs: - name: Debug containers if: ${{ cancelled() || failure() }} run: ./docker/debug_containers_${{ matrix.topology }}.sh + + test-locale: + timeout-minutes: 20 + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + docker-img: +# - docker.io/arangodb/arangodb:3.7.15 + - docker.io/arangodb/arangodb:3.8.1 +# - docker.io/arangodb/enterprise:3.7.15 +# - docker.io/arangodb/enterprise:3.8.1 + + topology: + - single +# - cluster +# - active-failover + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Start Database + run: ./docker/start_db_${{ matrix.topology }}_retry_fail.sh ${{ matrix.docker-img }} + env: + ARANGO_LICENSE_KEY: ${{ secrets.ARANGO_LICENSE_KEY }} + - name: Test + run: mvn --no-transfer-progress test -DargLine="-Duser.language=tr" + - name: Debug containers + if: ${{ cancelled() || failure() }} + run: ./docker/debug_containers_${{ matrix.topology }}.sh diff --git a/src/main/java/com/arangodb/ArangoDB.java b/src/main/java/com/arangodb/ArangoDB.java index d0f08b3ae..25a0738f8 100644 --- a/src/main/java/com/arangodb/ArangoDB.java +++ b/src/main/java/com/arangodb/ArangoDB.java @@ -75,6 +75,7 @@ import java.io.InputStream; import java.lang.annotation.Annotation; import java.util.Collection; +import java.util.Locale; import java.util.Properties; /** @@ -119,7 +120,7 @@ protected void loadProperties(final Properties properties) { private static Protocol loadProtocol(final Properties properties, final Protocol currentValue) { return Protocol.valueOf( getProperty(properties, PROPERTY_KEY_PROTOCOL, currentValue, ArangoDefaults.DEFAULT_NETWORK_PROTOCOL) - .toUpperCase()); + .toUpperCase(Locale.ENGLISH)); } public Builder useProtocol(final Protocol protocol) { diff --git a/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index 8a06f6564..3b238a751 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -50,10 +50,7 @@ import javax.net.ssl.SSLContext; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Properties; +import java.util.*; /** @@ -353,7 +350,7 @@ private static LoadBalancingStrategy loadLoadBalancingStrategy( final Properties properties, final LoadBalancingStrategy currentValue) { return LoadBalancingStrategy.valueOf(getProperty(properties, PROPERTY_KEY_LOAD_BALANCING_STRATEGY, currentValue, - ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY).toUpperCase()); + ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY).toUpperCase(Locale.ENGLISH)); } protected static String getProperty( diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java index 56cfe2eab..8308c4b7a 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java @@ -65,11 +65,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; /** @@ -144,11 +140,11 @@ public class VPackDeserializers { public static final VPackDeserializer LOG_LEVEL = (parent, vpack, context) -> LogLevel.fromLevel(vpack.getAsInt()); - public static final VPackDeserializer LICENSE = (parent, vpack, context) -> License.valueOf(vpack.getAsString().toUpperCase()); + public static final VPackDeserializer LICENSE = (parent, vpack, context) -> License.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH)); - public static final VPackDeserializer PERMISSIONS = (parent, vpack, context) -> Permissions.valueOf(vpack.getAsString().toUpperCase()); + public static final VPackDeserializer PERMISSIONS = (parent, vpack, context) -> Permissions.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH)); - public static final VPackDeserializer QUERY_EXECUTION_STATE = (parent, vpack, context) -> QueryExecutionState.valueOf(vpack.getAsString().toUpperCase().replaceAll(" ", "_")); + public static final VPackDeserializer QUERY_EXECUTION_STATE = (parent, vpack, context) -> QueryExecutionState.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH).replaceAll(" ", "_")); public static final VPackDeserializer REPLICATION_FACTOR = (parent, vpack, context) -> { final ReplicationFactor replicationFactor = new ReplicationFactor(); @@ -167,7 +163,7 @@ public class VPackDeserializers { }; public static final VPackDeserializer VIEW_TYPE = (parent, vpack, context) -> "arangosearch".equals(vpack.getAsString()) ? ViewType.ARANGO_SEARCH - : ViewType.valueOf(vpack.getAsString().toUpperCase()); + : ViewType.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH)); public static final VPackDeserializer ARANGO_SEARCH_PROPERTIES = (parent, vpack, context) -> { final ArangoSearchProperties properties = new ArangoSearchProperties(); @@ -216,7 +212,7 @@ public class VPackDeserializers { } final VPackSlice storeValues = value.get("storeValues"); if (storeValues.isString()) { - link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase())); + link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase(Locale.ENGLISH))); } final VPackSlice fields = value.get("fields"); if (fields.isObject()) { @@ -290,7 +286,7 @@ protected static FieldLink deserializeField(final Entry fiel } final VPackSlice storeValues = value.get("storeValues"); if (storeValues.isString()) { - link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase())); + link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase(Locale.ENGLISH))); } final VPackSlice fields = value.get("fields"); if (fields.isObject()) { @@ -313,7 +309,7 @@ protected static FieldLink deserializeField(final Entry fiel final VPackSlice type = vpack.get("type"); if (type.isString()) { final ConsolidationPolicy consolidate = ConsolidationPolicy - .of(ConsolidationType.valueOf(type.getAsString().toUpperCase())); + .of(ConsolidationType.valueOf(type.getAsString().toUpperCase(Locale.ENGLISH))); final VPackSlice threshold = vpack.get("threshold"); if (threshold.isNumber()) { consolidate.threshold(threshold.getAsDouble()); diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java index 6bacf6b92..9c7884e2f 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java @@ -51,6 +51,7 @@ import java.util.Collection; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -119,7 +120,7 @@ public class VPackSerializers { public static final VPackSerializer LOG_LEVEL = (builder, attribute, value, context) -> builder.add(attribute, value.getLevel()); - public static final VPackSerializer PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase()); + public static final VPackSerializer PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase(Locale.ENGLISH)); public static final VPackSerializer REPLICATION_FACTOR = (builder, attribute, value, context) -> { final Boolean satellite = value.getSatellite(); @@ -137,7 +138,7 @@ public class VPackSerializers { }; public static final VPackSerializer VIEW_TYPE = (builder, attribute, value, context) -> { - final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(); + final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(Locale.ENGLISH); builder.add(attribute, type); }; @@ -187,7 +188,7 @@ public class VPackSerializers { } final StoreValuesType storeValues = collectionLink.getStoreValues(); if (storeValues != null) { - builder.add("storeValues", storeValues.name().toLowerCase()); + builder.add("storeValues", storeValues.name().toLowerCase(Locale.ENGLISH)); } serializeFieldLinks(builder, collectionLink.getFields()); builder.close(); @@ -253,7 +254,7 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec } final StoreValuesType storeValues = fieldLink.getStoreValues(); if (storeValues != null) { - builder.add("storeValues", storeValues.name().toLowerCase()); + builder.add("storeValues", storeValues.name().toLowerCase(Locale.ENGLISH)); } serializeFieldLinks(builder, fieldLink.getFields()); builder.close(); @@ -262,7 +263,7 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec } } - public static final VPackSerializer CONSOLIDATE_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase()); + public static final VPackSerializer CONSOLIDATE_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase(Locale.ENGLISH)); public static final VPackSerializer COLLECTION_VALIDATION = (builder, attribute, value, context) -> { VPackParser parser = new VPackParser.Builder().build();