Skip to content

Commit b52d757

Browse files
authored
Fix issues with non-English locales (#407)
* gh actions upd * fixed toUpperCase/toLowerCase with non-english locales
1 parent 062daed commit b52d757

File tree

5 files changed

+56
-29
lines changed

5 files changed

+56
-29
lines changed

.github/workflows/maven.yml

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,10 @@ jobs:
3232
fail-fast: false
3333
matrix:
3434
docker-img:
35-
- docker.io/arangodb/arangodb:3.6.13
36-
- docker.io/arangodb/arangodb:3.7.12
37-
- arangodb/arangodb-preview:3.8.0-rc.2
38-
- docker.io/arangodb/enterprise:3.6.13
39-
- docker.io/arangodb/enterprise:3.7.12
40-
- arangodb/enterprise-preview:3.8.0-rc.2
35+
- docker.io/arangodb/arangodb:3.7.15
36+
- docker.io/arangodb/arangodb:3.8.1
37+
- docker.io/arangodb/enterprise:3.7.15
38+
- docker.io/arangodb/enterprise:3.8.1
4139

4240
topology:
4341
- single
@@ -59,3 +57,37 @@ jobs:
5957
- name: Debug containers
6058
if: ${{ cancelled() || failure() }}
6159
run: ./docker/debug_containers_${{ matrix.topology }}.sh
60+
61+
test-locale:
62+
timeout-minutes: 20
63+
runs-on: ubuntu-latest
64+
65+
strategy:
66+
fail-fast: false
67+
matrix:
68+
docker-img:
69+
# - docker.io/arangodb/arangodb:3.7.15
70+
- docker.io/arangodb/arangodb:3.8.1
71+
# - docker.io/arangodb/enterprise:3.7.15
72+
# - docker.io/arangodb/enterprise:3.8.1
73+
74+
topology:
75+
- single
76+
# - cluster
77+
# - active-failover
78+
79+
steps:
80+
- uses: actions/checkout@v1
81+
- name: Set up JDK 1.8
82+
uses: actions/setup-java@v1
83+
with:
84+
java-version: 1.8
85+
- name: Start Database
86+
run: ./docker/start_db_${{ matrix.topology }}_retry_fail.sh ${{ matrix.docker-img }}
87+
env:
88+
ARANGO_LICENSE_KEY: ${{ secrets.ARANGO_LICENSE_KEY }}
89+
- name: Test
90+
run: mvn --no-transfer-progress test -DargLine="-Duser.language=tr"
91+
- name: Debug containers
92+
if: ${{ cancelled() || failure() }}
93+
run: ./docker/debug_containers_${{ matrix.topology }}.sh

src/main/java/com/arangodb/ArangoDB.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import java.io.InputStream;
7676
import java.lang.annotation.Annotation;
7777
import java.util.Collection;
78+
import java.util.Locale;
7879
import java.util.Properties;
7980

8081
/**
@@ -119,7 +120,7 @@ protected void loadProperties(final Properties properties) {
119120
private static Protocol loadProtocol(final Properties properties, final Protocol currentValue) {
120121
return Protocol.valueOf(
121122
getProperty(properties, PROPERTY_KEY_PROTOCOL, currentValue, ArangoDefaults.DEFAULT_NETWORK_PROTOCOL)
122-
.toUpperCase());
123+
.toUpperCase(Locale.ENGLISH));
123124
}
124125

125126
public Builder useProtocol(final Protocol protocol) {

src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,7 @@
5050
import javax.net.ssl.SSLContext;
5151
import java.io.IOException;
5252
import java.io.InputStream;
53-
import java.util.ArrayList;
54-
import java.util.Collection;
55-
import java.util.List;
56-
import java.util.Properties;
53+
import java.util.*;
5754

5855

5956
/**
@@ -353,7 +350,7 @@ private static LoadBalancingStrategy loadLoadBalancingStrategy(
353350
final Properties properties,
354351
final LoadBalancingStrategy currentValue) {
355352
return LoadBalancingStrategy.valueOf(getProperty(properties, PROPERTY_KEY_LOAD_BALANCING_STRATEGY, currentValue,
356-
ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY).toUpperCase());
353+
ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY).toUpperCase(Locale.ENGLISH));
357354
}
358355

359356
protected static <T> String getProperty(

src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,7 @@
6565

6666
import java.text.ParseException;
6767
import java.text.SimpleDateFormat;
68-
import java.util.ArrayList;
69-
import java.util.Date;
70-
import java.util.Iterator;
71-
import java.util.List;
72-
import java.util.Map;
68+
import java.util.*;
7369
import java.util.Map.Entry;
7470

7571
/**
@@ -144,11 +140,11 @@ public class VPackDeserializers {
144140

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

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

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

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

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

169165
public static final VPackDeserializer<ViewType> VIEW_TYPE = (parent, vpack, context) -> "arangosearch".equals(vpack.getAsString()) ? ViewType.ARANGO_SEARCH
170-
: ViewType.valueOf(vpack.getAsString().toUpperCase());
166+
: ViewType.valueOf(vpack.getAsString().toUpperCase(Locale.ENGLISH));
171167

172168
public static final VPackDeserializer<ArangoSearchProperties> ARANGO_SEARCH_PROPERTIES = (parent, vpack, context) -> {
173169
final ArangoSearchProperties properties = new ArangoSearchProperties();
@@ -216,7 +212,7 @@ public class VPackDeserializers {
216212
}
217213
final VPackSlice storeValues = value.get("storeValues");
218214
if (storeValues.isString()) {
219-
link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase()));
215+
link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase(Locale.ENGLISH)));
220216
}
221217
final VPackSlice fields = value.get("fields");
222218
if (fields.isObject()) {
@@ -290,7 +286,7 @@ protected static FieldLink deserializeField(final Entry<String, VPackSlice> fiel
290286
}
291287
final VPackSlice storeValues = value.get("storeValues");
292288
if (storeValues.isString()) {
293-
link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase()));
289+
link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase(Locale.ENGLISH)));
294290
}
295291
final VPackSlice fields = value.get("fields");
296292
if (fields.isObject()) {
@@ -313,7 +309,7 @@ protected static FieldLink deserializeField(final Entry<String, VPackSlice> fiel
313309
final VPackSlice type = vpack.get("type");
314310
if (type.isString()) {
315311
final ConsolidationPolicy consolidate = ConsolidationPolicy
316-
.of(ConsolidationType.valueOf(type.getAsString().toUpperCase()));
312+
.of(ConsolidationType.valueOf(type.getAsString().toUpperCase(Locale.ENGLISH)));
317313
final VPackSlice threshold = vpack.get("threshold");
318314
if (threshold.isNumber()) {
319315
consolidate.threshold(threshold.getAsDouble());

src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151

5252
import java.util.Collection;
5353
import java.util.HashMap;
54+
import java.util.Locale;
5455
import java.util.Map;
5556
import java.util.Map.Entry;
5657

@@ -119,7 +120,7 @@ public class VPackSerializers {
119120

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

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

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

139140
public static final VPackSerializer<ViewType> VIEW_TYPE = (builder, attribute, value, context) -> {
140-
final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase();
141+
final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(Locale.ENGLISH);
141142
builder.add(attribute, type);
142143
};
143144

@@ -187,7 +188,7 @@ public class VPackSerializers {
187188
}
188189
final StoreValuesType storeValues = collectionLink.getStoreValues();
189190
if (storeValues != null) {
190-
builder.add("storeValues", storeValues.name().toLowerCase());
191+
builder.add("storeValues", storeValues.name().toLowerCase(Locale.ENGLISH));
191192
}
192193
serializeFieldLinks(builder, collectionLink.getFields());
193194
builder.close();
@@ -253,7 +254,7 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec
253254
}
254255
final StoreValuesType storeValues = fieldLink.getStoreValues();
255256
if (storeValues != null) {
256-
builder.add("storeValues", storeValues.name().toLowerCase());
257+
builder.add("storeValues", storeValues.name().toLowerCase(Locale.ENGLISH));
257258
}
258259
serializeFieldLinks(builder, fieldLink.getFields());
259260
builder.close();
@@ -262,7 +263,7 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec
262263
}
263264
}
264265

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

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

0 commit comments

Comments
 (0)