Skip to content

Commit 45c50d0

Browse files
author
Li Xu
authored
Etrog 2784 case insensitive enum (#124)
* ETROG-2784: Expose /morphology model type option * ETROG-2784: make enum deser case insensitive * ETROG-2784: remove unused imports
1 parent 7954222 commit 45c50d0

File tree

9 files changed

+62
-211
lines changed

9 files changed

+62
-211
lines changed

json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeDeserializer.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeMixin.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

json/src/main/java/com/basistech/rosette/apimodel/jackson/AccuracyModeSerializer.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

json/src/main/java/com/basistech/rosette/apimodel/jackson/ApiModelMixinModule.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017 Basis Technology Corp.
2+
* Copyright 2018 Basis Technology Corp.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,18 +16,16 @@
1616

1717
package com.basistech.rosette.apimodel.jackson;
1818

19-
import com.basistech.rosette.apimodel.AccuracyMode;
2019
import com.basistech.rosette.apimodel.AdmRequest;
2120
import com.basistech.rosette.apimodel.DocumentRequest;
2221
import com.basistech.rosette.apimodel.Name;
2322
import com.basistech.rosette.apimodel.NameDeduplicationRequest;
2423
import com.basistech.rosette.apimodel.NameSimilarityRequest;
2524
import com.basistech.rosette.apimodel.NameTranslationRequest;
26-
import com.basistech.rosette.apimodel.SentimentModelType;
2725
import com.basistech.rosette.dm.jackson.AnnotatedDataModelModule;
26+
import com.fasterxml.jackson.databind.MapperFeature;
2827
import com.fasterxml.jackson.databind.Module;
2928
import com.fasterxml.jackson.databind.ObjectMapper;
30-
import com.fasterxml.jackson.databind.module.SimpleSerializers;
3129

3230
/**
3331
* Jackson module to configure Json serialization and deserialization for the
@@ -59,17 +57,6 @@ public void setupModule(Module.SetupContext context) {
5957
context.setMixInAnnotations(NameTranslationRequest.NameTranslationRequestBuilder.class, NameTranslationRequestMixin.NameTranslationRequestBuilderMixin.class);
6058
context.setMixInAnnotations(NameDeduplicationRequest.class, NameDeduplicationRequestMixin.class);
6159
context.setMixInAnnotations(NameDeduplicationRequest.NameDeduplicationRequestBuilder.class, NameDeduplicationRequestMixin.NameDeduplicationRequestBuilderMixin.class);
62-
63-
// TODO: see if there's something similar that can be used to generalize enum handling
64-
context.setMixInAnnotations(AccuracyMode.class, AccuracyModeMixin.class);
65-
SimpleSerializers keySerializers = new SimpleSerializers();
66-
keySerializers.addSerializer(new AccuracyModeSerializer());
67-
context.addKeySerializers(keySerializers);
68-
69-
context.setMixInAnnotations(SentimentModelType.class, SentimentModelTypeMixin.class);
70-
keySerializers = new SimpleSerializers();
71-
keySerializers.addSerializer(new SentimentModelTypeSerializer());
72-
context.addKeySerializers(keySerializers);
7360
}
7461

7562
/**
@@ -81,6 +68,7 @@ public void setupModule(Module.SetupContext context) {
8168
public static ObjectMapper setupObjectMapper(ObjectMapper mapper) {
8269
final ApiModelMixinModule module = new ApiModelMixinModule();
8370
mapper.registerModule(module);
71+
mapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS);
8472
return mapper;
8573
}
8674
}

json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelTypeDeserializer.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelTypeSerializer.java

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright 2018 Basis Technology Corp.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.basistech.rosette.apimodel;
17+
18+
import com.fasterxml.jackson.core.type.TypeReference;
19+
import org.junit.Assert;
20+
import org.junit.Before;
21+
import org.junit.Test;
22+
23+
import com.fasterxml.jackson.databind.ObjectMapper;
24+
25+
import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule;
26+
27+
public class EnumTest extends Assert {
28+
private ObjectMapper mapper;
29+
30+
@Before
31+
public void init() {
32+
mapper = ApiModelMixinModule.setupObjectMapper(new ObjectMapper());
33+
}
34+
35+
@Test
36+
public void testCaseInsensitivity() throws Exception {
37+
String json = "{\"content\": \"foo\", \"options\": {\"modelType\": \"dEfAuLT\"}}";
38+
Request request = mapper.readValue(json, new TypeReference<DocumentRequest<MorphologyOptions>>() { });
39+
assertTrue(request instanceof DocumentRequest);
40+
DocumentRequest docRequest = (DocumentRequest) request;
41+
MorphologyOptions options = (MorphologyOptions) docRequest.getOptions();
42+
assertEquals(MorphologyModelType.DEFAULT, options.getModelType());
43+
}
44+
}

json/src/main/java/com/basistech/rosette/apimodel/jackson/SentimentModelTypeMixin.java renamed to model/src/main/java/com/basistech/rosette/apimodel/MorphologyModelType.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017 Basis Technology Corp.
2+
* Copyright 2018 Basis Technology Corp.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -14,12 +14,13 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.basistech.rosette.apimodel.jackson;
17+
package com.basistech.rosette.apimodel;
1818

19-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
20-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
21-
22-
@JsonSerialize(using = SentimentModelTypeSerializer.class, keyUsing = SentimentModelTypeSerializer.class)
23-
@JsonDeserialize(using = SentimentModelTypeDeserializer.class)
24-
public class SentimentModelTypeMixin {
19+
/**
20+
* A model type for morphological analysis.
21+
*/
22+
public enum MorphologyModelType {
23+
DEFAULT,
24+
PERCEPTRON,
25+
/**/;
2526
}

model/src/main/java/com/basistech/rosette/apimodel/MorphologyOptions.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017 Basis Technology Corp.
2+
* Copyright 2018 Basis Technology Corp.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -49,4 +49,9 @@ public class MorphologyOptions extends Options {
4949
* indicates the default.
5050
*/
5151
private final PartOfSpeechTagSet partOfSpeechTagSet;
52+
53+
/**
54+
* @return the model type
55+
*/
56+
private final MorphologyModelType modelType;
5257
}

0 commit comments

Comments
 (0)