Skip to content

Fix issues with non-English locales #407

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 38 additions & 6 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
3 changes: 2 additions & 1 deletion src/main/java/com/arangodb/ArangoDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;


/**
Expand Down Expand Up @@ -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 <T> String getProperty(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -144,11 +140,11 @@ public class VPackDeserializers {

public static final VPackDeserializer<LogLevel> LOG_LEVEL = (parent, vpack, context) -> LogLevel.fromLevel(vpack.getAsInt());

public static final VPackDeserializer<License> LICENSE = (parent, vpack, context) -> License.valueOf(vpack.getAsString().toUpperCase());
public static final VPackDeserializer<License> LICENSE = (parent, vpack, context) -> License.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH));

public static final VPackDeserializer<Permissions> PERMISSIONS = (parent, vpack, context) -> Permissions.valueOf(vpack.getAsString().toUpperCase());
public static final VPackDeserializer<Permissions> PERMISSIONS = (parent, vpack, context) -> Permissions.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH));

public static final VPackDeserializer<QueryExecutionState> QUERY_EXECUTION_STATE = (parent, vpack, context) -> QueryExecutionState.valueOf(vpack.getAsString().toUpperCase().replaceAll(" ", "_"));
public static final VPackDeserializer<QueryExecutionState> QUERY_EXECUTION_STATE = (parent, vpack, context) -> QueryExecutionState.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH).replaceAll(" ", "_"));

public static final VPackDeserializer<ReplicationFactor> REPLICATION_FACTOR = (parent, vpack, context) -> {
final ReplicationFactor replicationFactor = new ReplicationFactor();
Expand All @@ -167,7 +163,7 @@ public class VPackDeserializers {
};

public static final VPackDeserializer<ViewType> 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<ArangoSearchProperties> ARANGO_SEARCH_PROPERTIES = (parent, vpack, context) -> {
final ArangoSearchProperties properties = new ArangoSearchProperties();
Expand Down Expand Up @@ -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()) {
Expand Down Expand Up @@ -290,7 +286,7 @@ protected static FieldLink deserializeField(final Entry<String, VPackSlice> 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()) {
Expand All @@ -313,7 +309,7 @@ protected static FieldLink deserializeField(final Entry<String, VPackSlice> 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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -119,7 +120,7 @@ public class VPackSerializers {

public static final VPackSerializer<LogLevel> LOG_LEVEL = (builder, attribute, value, context) -> builder.add(attribute, value.getLevel());

public static final VPackSerializer<Permissions> PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase());
public static final VPackSerializer<Permissions> PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase(Locale.ENGLISH));

public static final VPackSerializer<ReplicationFactor> REPLICATION_FACTOR = (builder, attribute, value, context) -> {
final Boolean satellite = value.getSatellite();
Expand All @@ -137,7 +138,7 @@ public class VPackSerializers {
};

public static final VPackSerializer<ViewType> 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);
};

Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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();
Expand All @@ -262,7 +263,7 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec
}
}

public static final VPackSerializer<ConsolidationType> CONSOLIDATE_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase());
public static final VPackSerializer<ConsolidationType> CONSOLIDATE_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase(Locale.ENGLISH));

public static final VPackSerializer<CollectionSchema> COLLECTION_VALIDATION = (builder, attribute, value, context) -> {
VPackParser parser = new VPackParser.Builder().build();
Expand Down