From 7dce6adde82ee00314211c093d44c4ede147b8c5 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelrazek Date: Thu, 18 Apr 2024 16:12:12 -0700 Subject: [PATCH] Adding V6FeatureType.SECONDARY_ADDRESS & address_line1 --- .../api/geocoding/v6/MapboxV6Geocoding.java | 1 + .../v6/V6ForwardGeocodingRequestOptions.java | 7 +++++++ .../api/geocoding/v6/V6GeocodingService.java | 2 ++ .../api/geocoding/v6/V6StructuredInputQuery.java | 16 +++++++++++++++- .../api/geocoding/v6/models/V6FeatureType.java | 8 +++++++- .../api/geocoding/v6/MapboxV6GeocodingTest.java | 2 ++ .../api/geocoding/v6/V6GeocodingTestUtils.java | 1 + .../geocoding/v6/V6StructuredInputQueryTest.java | 9 +++++++++ ...uctured_input_request_options_serialised.json | 1 + 9 files changed, 45 insertions(+), 2 deletions(-) diff --git a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/MapboxV6Geocoding.java b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/MapboxV6Geocoding.java index e3a4a419d..d24de8cb9 100644 --- a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/MapboxV6Geocoding.java +++ b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/MapboxV6Geocoding.java @@ -87,6 +87,7 @@ private Call structuredInputCall( return getService().structureInputForwardGeocoding( ApiCallHelper.getHeaderUserAgent(clientAppName()), accessToken(), + options.addressLine1(), options.addressNumber(), options.street(), options.block(), diff --git a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6ForwardGeocodingRequestOptions.java b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6ForwardGeocodingRequestOptions.java index b872d37ed..a33b6722a 100644 --- a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6ForwardGeocodingRequestOptions.java +++ b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6ForwardGeocodingRequestOptions.java @@ -33,6 +33,10 @@ public abstract class V6ForwardGeocodingRequestOptions implements V6RequestOptio @Nullable abstract String query(); + @SerializedName("address_line1") + @Nullable + abstract String addressLine1(); + @SerializedName("address_number") @Nullable abstract String addressNumber(); @@ -147,6 +151,7 @@ public static V6ForwardGeocodingRequestOptions.Builder builder( @NonNull V6StructuredInputQuery query ) { return new $AutoValue_V6ForwardGeocodingRequestOptions.Builder() + .addressLine1(query.addressLine1()) .addressNumber(query.addressNumber()) .street(query.street()) .block(query.block()) @@ -186,6 +191,8 @@ public abstract static class Builder { abstract Builder query(@NonNull String query); // Structured input options + abstract Builder addressLine1(String addressLine1); + abstract Builder addressNumber(String addressNumber); abstract Builder street(String street); diff --git a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6GeocodingService.java b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6GeocodingService.java index 9d54f9154..29c4b0b28 100644 --- a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6GeocodingService.java +++ b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6GeocodingService.java @@ -54,6 +54,7 @@ Call forwardGeocoding( * * @param userAgent the user agent * @param accessToken {@link MapboxV6Geocoding#accessToken()} + * @param addressLine1 {@link V6StructuredInputQuery#addressLine1()} * @param addressNumber {@link V6StructuredInputQuery#addressNumber()} * @param street {@link V6StructuredInputQuery#street()} * @param block {@link V6StructuredInputQuery#block()} @@ -77,6 +78,7 @@ Call forwardGeocoding( Call structureInputForwardGeocoding( @Header("User-Agent") String userAgent, @Query("access_token") String accessToken, + @Query("address_line1") String addressLine1, @Query("address_number") String addressNumber, @Query("street") String street, @Query("block") String block, diff --git a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6StructuredInputQuery.java b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6StructuredInputQuery.java index 63ff1423f..caaa62a48 100644 --- a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6StructuredInputQuery.java +++ b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/V6StructuredInputQuery.java @@ -19,6 +19,10 @@ @AutoValue public abstract class V6StructuredInputQuery { + @SerializedName("address_line1") + @Nullable + abstract String addressLine1(); + @SerializedName("address_number") @Nullable abstract String addressNumber(); @@ -65,6 +69,15 @@ public static V6StructuredInputQuery.Builder builder() { @AutoValue.Builder public abstract static class Builder { + /** + * A string including address_number and street. These values can be provided as separate + * parameters address_number and street listed below. + * + * @param addressLine1 structured input component. + * @return this builder for chaining options together + */ + public abstract Builder addressLine1(@NonNull String addressLine1); + /** * The number associated with the house. * @@ -147,7 +160,8 @@ public abstract static class Builder { public V6StructuredInputQuery build() { final V6StructuredInputQuery query = autoBuild(); - if (query.addressNumber() == null + if (query.addressLine1() == null + && query.addressNumber() == null && query.street() == null && query.block() == null && query.place() == null diff --git a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/models/V6FeatureType.java b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/models/V6FeatureType.java index 7ad76ae8a..a5bc81474 100644 --- a/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/models/V6FeatureType.java +++ b/services-geocoding/src/main/java/com/mapbox/api/geocoding/v6/models/V6FeatureType.java @@ -84,6 +84,11 @@ private V6FeatureType() { */ public static final String ADDRESS = "address"; + /** + * Sub-unit, suite, or lot within a single parent address. Currently available in the US only. + */ + public static final String SECONDARY_ADDRESS = "secondary_address"; + /** * Retention policy for the types. */ @@ -98,7 +103,8 @@ private V6FeatureType() { NEIGHBORHOOD, STREET, BLOCK, - ADDRESS + ADDRESS, + SECONDARY_ADDRESS }) public @interface FeatureType { } diff --git a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/MapboxV6GeocodingTest.java b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/MapboxV6GeocodingTest.java index aef5dd43b..cdfbc22eb 100644 --- a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/MapboxV6GeocodingTest.java +++ b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/MapboxV6GeocodingTest.java @@ -157,6 +157,7 @@ public void testStructuredInputRequestParameters() throws InterruptedException, final HttpUrl url = request.getRequestUrl(); assertEquals("/search/geocode/v6/forward", Objects.requireNonNull(url).encodedPath()); + assertEquals(options.addressLine1(), url.queryParameter("address_line1")); assertEquals(options.addressNumber(), url.queryParameter("address_number")); assertEquals(options.street(), url.queryParameter("street")); assertEquals(options.block(), url.queryParameter("block")); @@ -192,6 +193,7 @@ public void testDefaultStructuredInputRequestParameters() throws InterruptedExce assertEquals(geocoding.accessToken(), url.queryParameter("access_token")); assertNull(url.queryParameter("q")); assertEquals(structuredInputQuery.addressNumber(), url.queryParameter("address_number")); + assertNull(url.queryParameter("address_line1")); assertNull(url.queryParameter("street")); assertNull(url.queryParameter("block")); assertNull(url.queryParameter("place")); diff --git a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6GeocodingTestUtils.java b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6GeocodingTestUtils.java index 8fdcf71fe..244b8055f 100644 --- a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6GeocodingTestUtils.java +++ b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6GeocodingTestUtils.java @@ -68,6 +68,7 @@ public static String removeJsonWhitespaces(String json) { public static final V6StructuredInputQuery TEST_COMPLETE_STRUCTURED_INPUT = V6StructuredInputQuery.builder() + .addressLine1("test-address-line1") .addressNumber("test-address-number") .street("test-street") .block("test-block") diff --git a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6StructuredInputQueryTest.java b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6StructuredInputQueryTest.java index 5945206cb..3054250c4 100644 --- a/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6StructuredInputQueryTest.java +++ b/services-geocoding/src/test/java/com/mapbox/api/geocoding/v6/V6StructuredInputQueryTest.java @@ -27,6 +27,7 @@ public void run() { @Test public void testStructuredInputWithAllValuesSet() { final V6StructuredInputQuery query = V6StructuredInputQuery.builder() + .addressLine1("test-address-line1") .addressNumber("test-address-number") .street("test-street") .block("test-block") @@ -37,6 +38,7 @@ public void testStructuredInputWithAllValuesSet() { .neighborhood("test-neighborhood") .build(); + assertEquals("test-address-line1", query.addressLine1()); assertEquals("test-address-number", query.addressNumber()); assertEquals("test-street", query.street()); assertEquals("test-block", query.block()); @@ -62,6 +64,13 @@ public void testUnspecifiedValuesAreNull() { assertNull(queryWithAddress.locality()); assertNull(queryWithAddress.neighborhood()); + final V6StructuredInputQuery queryWithAddressLine1 = V6StructuredInputQuery.builder() + .addressLine1("test-address-line1") + .build(); + + assertEquals("test-address-line1", queryWithAddressLine1.addressLine1()); + assertNull(queryWithAddressLine1.addressNumber()); + final V6StructuredInputQuery queryWithStreet = V6StructuredInputQuery.builder() .street("test-street") .build(); diff --git a/services-geocoding/src/test/resources/v6/forward_structured_input_request_options_serialised.json b/services-geocoding/src/test/resources/v6/forward_structured_input_request_options_serialised.json index 08d8565b4..72a90c5f1 100644 --- a/services-geocoding/src/test/resources/v6/forward_structured_input_request_options_serialised.json +++ b/services-geocoding/src/test/resources/v6/forward_structured_input_request_options_serialised.json @@ -1,4 +1,5 @@ { + "address_line1": "test-address-line1", "address_number": "test-address-number", "street": "test-street", "block": "test-block",