Skip to content

Commit 7af5094

Browse files
author
Cameron Mace
authored
Added fromjson test and method for carmen feature (#279)
* added fromjson test and method for carmen feature * added registerTypeAdapter's
1 parent 2046e26 commit 7af5094

3 files changed

Lines changed: 56 additions & 0 deletions

File tree

mapbox/libjava-services/src/main/java/com/mapbox/services/api/geocoding/v5/models/CarmenFeature.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.mapbox.services.api.geocoding.v5.models;
22

3+
import com.google.gson.GsonBuilder;
34
import com.google.gson.JsonObject;
45
import com.google.gson.annotations.SerializedName;
6+
import com.mapbox.services.api.geocoding.v5.gson.CarmenGeometryDeserializer;
57
import com.mapbox.services.commons.geojson.Feature;
68
import com.mapbox.services.commons.geojson.Geometry;
9+
import com.mapbox.services.commons.geojson.custom.GeometryDeserializer;
10+
import com.mapbox.services.commons.geojson.custom.PositionDeserializer;
711
import com.mapbox.services.commons.models.Position;
812

913
import java.util.List;
@@ -100,6 +104,7 @@ public double getRelevance() {
100104
return relevance;
101105
}
102106

107+
103108
public void setText(String text) {
104109
this.text = text;
105110
}
@@ -128,6 +133,21 @@ public void setRelevance(double relevance) {
128133
this.relevance = relevance;
129134
}
130135

136+
/**
137+
* Create a CarmenFeature object from JSON.
138+
*
139+
* @param json String of JSON making up a carmen feature.
140+
* @return Carmen Feature
141+
* @since 2.0.0
142+
*/
143+
public static CarmenFeature fromJson(String json) {
144+
GsonBuilder gson = new GsonBuilder();
145+
gson.registerTypeAdapter(Position.class, new PositionDeserializer());
146+
gson.registerTypeAdapter(Geometry.class, new GeometryDeserializer());
147+
gson.registerTypeAdapter(Geometry.class, new CarmenGeometryDeserializer());
148+
return gson.create().fromJson(json, CarmenFeature.class);
149+
}
150+
131151
/**
132152
* Util to transform center into a Position object
133153
*
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"text":"Text field 1","place_name":"Text field 2","bbox":[1.2,3.4,5.6,7.8],"address":"Text field 3","center":[1.2,3.4],"relevance":1.2,"type":"Feature","properties":{"foo1":"bar"},"id":"Text field 4"}

mapbox/libjava-services/src/test/java/com/mapbox/services/api/geocoding/v5/CarmenFeatureTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55

66
import org.junit.Test;
77

8+
import java.io.IOException;
9+
import java.nio.charset.Charset;
10+
import java.nio.file.Files;
11+
import java.nio.file.Paths;
12+
813
import static org.junit.Assert.assertEquals;
914

1015
public class CarmenFeatureTest {
1116

1217
private static final double DELTA = 1E-10;
18+
private static final String GEOCODING_FIXTURE = "src/test/fixtures/geocoder_tofromjson.json";
1319

1420
@Test
1521
public void testAllowStandalone() {
@@ -50,4 +56,33 @@ public void testAllowStandalone() {
5056
assertEquals(feature.hasNonNullValueForProperty("foo2"), false);
5157
assertEquals(feature.getId(), "Text field 4");
5258
}
59+
60+
@Test
61+
public void carmenFeatureFromJson() throws IOException {
62+
// Build the standalone object
63+
double[] bbox = new double[] {1.2, 3.4, 5.6, 7.8};
64+
double[] center = new double[] {1.2, 3.4};
65+
double relevance = 1.2;
66+
JsonObject properties = new JsonObject();
67+
properties.addProperty("foo1", "bar");
68+
CarmenFeature feature = new CarmenFeature();
69+
70+
// Type specific
71+
feature.setText("Text field 1");
72+
feature.setPlaceName("Text field 2");
73+
feature.setBbox(bbox);
74+
feature.setAddress("Text field 3");
75+
feature.setCenter(center);
76+
feature.setContext(null);
77+
feature.setRelevance(relevance);
78+
79+
// Inherited
80+
feature.setGeometry(null);
81+
feature.setProperties(properties);
82+
feature.setId("Text field 4");
83+
84+
String body = new String(Files.readAllBytes(Paths.get(GEOCODING_FIXTURE)), Charset.forName("utf-8"));
85+
CarmenFeature carmenFeature = CarmenFeature.fromJson(body);
86+
assertEquals(carmenFeature.getText(), feature.getText());
87+
}
5388
}

0 commit comments

Comments
 (0)