Skip to content

Commit 50e4ff5

Browse files
WS-1741: add new Configuration request support for dynamic gazetteer
1 parent 34b2ade commit 50e4ff5

File tree

8 files changed

+180
-12
lines changed

8 files changed

+180
-12
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.basistech.rosette.apimodel.Address;
2020
import com.basistech.rosette.apimodel.AddressSimilarityRequest;
2121
import com.basistech.rosette.apimodel.AdmRequest;
22+
import com.basistech.rosette.apimodel.ConfigurationRequest;
2223
import com.basistech.rosette.apimodel.DocumentRequest;
2324
import com.basistech.rosette.apimodel.Name;
2425
import com.basistech.rosette.apimodel.NameDeduplicationRequest;
@@ -63,6 +64,9 @@ public void setupModule(Module.SetupContext context) {
6364
context.setMixInAnnotations(Address.AddressBuilder.class, AddressMixin.AddressBuilderMixin.class);
6465
context.setMixInAnnotations(AddressSimilarityRequest.class, AddressSimilarityRequestMixin.class);
6566
context.setMixInAnnotations(AddressSimilarityRequest.AddressSimilarityRequestBuilder.class, AddressSimilarityRequestMixin.AddressSimilarityRequestBuilderMixin.class);
67+
context.setMixInAnnotations(ConfigurationRequest.class, ConfigurationRequestMixin.class);
68+
context.setMixInAnnotations(ConfigurationRequest.ConfigurationRequestBuilder.class,
69+
ConfigurationRequestMixin.ConfigurationRequestBuilderMixin.class);
6670
}
6771

6872
/**
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.basistech.rosette.apimodel.jackson;
2+
3+
import com.basistech.rosette.apimodel.Configuration;
4+
import com.basistech.util.LanguageCode;
5+
import com.fasterxml.jackson.annotation.JsonCreator;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.JsonProperty;
8+
import com.fasterxml.jackson.annotation.JsonTypeName;
9+
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
10+
11+
@JsonTypeName("ConfigurationRequest")
12+
@JsonInclude(JsonInclude.Include.NON_NULL)
13+
public class ConfigurationRequestMixin {
14+
@JsonCreator
15+
protected ConfigurationRequestMixin(
16+
@JsonProperty("profileId") String profileId,
17+
@JsonProperty("language") LanguageCode language,
18+
@JsonProperty("configuration") Configuration configuration
19+
) {
20+
//
21+
}
22+
23+
@JsonPOJOBuilder(withPrefix = "")
24+
abstract class ConfigurationRequestBuilderMixin {
25+
}
26+
}

json/src/test/java/com/basistech/rosette/apimodel/ModelTest.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@
1616

1717
package com.basistech.rosette.apimodel;
1818

19+
import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule;
20+
import com.basistech.rosette.apimodel.jackson.DocumentRequestMixin;
21+
import com.fasterxml.jackson.databind.ObjectMapper;
22+
import com.fasterxml.jackson.databind.ObjectWriter;
23+
import com.google.common.collect.Lists;
24+
import org.junit.Before;
25+
import org.junit.Test;
26+
import org.junit.runner.RunWith;
27+
import org.junit.runners.Parameterized;
28+
import org.reflections.Reflections;
29+
import org.reflections.scanners.SubTypesScanner;
30+
1931
import java.io.ByteArrayInputStream;
2032
import java.io.IOException;
2133
import java.lang.reflect.Constructor;
@@ -31,18 +43,6 @@
3143
import java.util.List;
3244
import java.util.Set;
3345

34-
import com.basistech.rosette.apimodel.jackson.ApiModelMixinModule;
35-
import com.basistech.rosette.apimodel.jackson.DocumentRequestMixin;
36-
import com.fasterxml.jackson.databind.ObjectMapper;
37-
import com.fasterxml.jackson.databind.ObjectWriter;
38-
import com.google.common.collect.Lists;
39-
import org.junit.Before;
40-
import org.junit.Test;
41-
import org.junit.runner.RunWith;
42-
import org.junit.runners.Parameterized;
43-
import org.reflections.Reflections;
44-
import org.reflections.scanners.SubTypesScanner;
45-
4646
import static org.junit.Assert.assertEquals;
4747
import static org.junit.Assert.fail;
4848

@@ -100,6 +100,10 @@ public void packageTest() throws ClassNotFoundException, IllegalAccessException,
100100
continue;
101101
}
102102

103+
if (className.contains("ConfigurationRequest")) {
104+
continue;
105+
}
106+
103107
Class c = Class.forName(className);
104108
if (Modifier.isAbstract(c.getModifiers())) {
105109
continue;

json/src/test/java/com/basistech/rosette/apimodel/PolymorphicRequestTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package com.basistech.rosette.apimodel;
1717

18+
import com.basistech.util.LanguageCode;
1819
import com.fasterxml.jackson.core.type.TypeReference;
1920
import org.junit.Assert;
2021
import org.junit.Before;
@@ -68,5 +69,9 @@ public void testRequestTypes() throws Exception {
6869
json = "{\"names\": [\"Joe\", \"Smith\"], \"threshold\": 0.8}";
6970
request = mapper.readValue(json, NameDeduplicationRequest.class);
7071
assertTrue(request instanceof NameDeduplicationRequest);
72+
73+
json = "{\"language\": \"xxx\", \"configuration\": {\"entities\": { \"LOCATION\": [\"Boston\", \"Mos Eisley\"] } } }";
74+
request = mapper.readValue(json, new TypeReference<ConfigurationRequest<GazetteerConfiguration>>() { });
75+
assertTrue(request instanceof ConfigurationRequest);
7176
}
7277
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*******************************************************************************
2+
* Copyright 2019 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+
******************************************************************************/
17+
18+
package com.basistech.rosette.apimodel;
19+
20+
import lombok.EqualsAndHashCode;
21+
22+
@EqualsAndHashCode
23+
public abstract class Configuration {
24+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*******************************************************************************
2+
* Copyright 2019 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+
******************************************************************************/
17+
18+
package com.basistech.rosette.apimodel;
19+
20+
import com.basistech.util.LanguageCode;
21+
import lombok.Builder;
22+
import lombok.Value;
23+
24+
@Value
25+
public final class ConfigurationRequest<T extends Configuration> extends Request {
26+
private final LanguageCode language;
27+
private final T configuration;
28+
29+
@Builder
30+
public ConfigurationRequest(String profileId, LanguageCode language, T configuration) {
31+
super(profileId);
32+
this.language = language;
33+
this.configuration = configuration;
34+
}
35+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*******************************************************************************
2+
* Copyright 2019 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+
******************************************************************************/
17+
18+
package com.basistech.rosette.apimodel;
19+
20+
import com.basistech.rosette.annotations.JacksonMixin;
21+
import lombok.Builder;
22+
import lombok.EqualsAndHashCode;
23+
import lombok.Getter;
24+
25+
/**
26+
* Response ping data
27+
*/
28+
@Getter
29+
@EqualsAndHashCode
30+
@Builder
31+
@JacksonMixin
32+
public class ConfigurationResponse extends Response {
33+
/**
34+
* @return the ping response message
35+
*/
36+
private final String message;
37+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*******************************************************************************
2+
* Copyright 2019 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+
******************************************************************************/
17+
18+
package com.basistech.rosette.apimodel;
19+
20+
import com.basistech.rosette.annotations.JacksonMixin;
21+
import lombok.Builder;
22+
import lombok.Value;
23+
24+
import java.util.Collection;
25+
import java.util.Map;
26+
27+
@Value
28+
@Builder
29+
@JacksonMixin
30+
public class GazetteerConfiguration extends Configuration {
31+
// list of gazetteer entities keyed by entity type
32+
Map<String, Collection<String>> entities;
33+
}

0 commit comments

Comments
 (0)