Skip to content

Commit

Permalink
Search SDK 2.7; Attributes set for the category search (#304)
Browse files Browse the repository at this point in the history
* Bump versions; Add attributes set for category search options

* Bump SDK version name, update changelog
  • Loading branch information
DzmitryFomchyn authored Dec 18, 2024
1 parent b7240b1 commit 5506df1
Show file tree
Hide file tree
Showing 13 changed files with 106 additions and 12 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Changelog for the Mapbox Search SDK for Android

## 2.7.0

### New features
- New option `CategorySearchOptions.attributeSets` is available. It allows to request additional metadata attributes besides the basic ones.

### Mapbox dependencies
- Search Native SDK `2.7.0`
- Common SDK `24.9.0`



## 2.7.0-rc.1

### New features
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.mapbox.search.base.core

import com.mapbox.geojson.Point
import com.mapbox.search.internal.bindgen.AttributeSet
import com.mapbox.search.internal.bindgen.LonLatBBox
import com.mapbox.search.internal.bindgen.QueryType
import com.mapbox.search.internal.bindgen.ReverseGeoOptions
Expand All @@ -27,6 +28,7 @@ fun createCoreSearchOptions(
addonAPI: Map<String, String>? = null,
offlineSearchPlacesOutsideBbox: Boolean = false,
ensureResultsPerCategory: Boolean? = null,
attributeSets: List<AttributeSet>? = null,
): CoreSearchOptions = CoreSearchOptions(
proximity = proximity,
origin = origin,
Expand All @@ -47,6 +49,7 @@ fun createCoreSearchOptions(
addonAPI = addonAPI?.let { it as? HashMap<String, String> ?: HashMap(it) },
offlineSearchPlacesOutsideBbox = offlineSearchPlacesOutsideBbox,
ensureResultsPerCategory = ensureResultsPerCategory,
attributeSets = attributeSets,
)

fun createCoreReverseGeoOptions(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.mapbox.search.common.tests

import com.mapbox.bindgen.ExpectedFactory
import com.mapbox.geojson.Point
import com.mapbox.search.internal.bindgen.AttributeSet
import com.mapbox.search.internal.bindgen.ConnectionError
import com.mapbox.search.internal.bindgen.HttpError
import com.mapbox.search.internal.bindgen.ImageInfo
Expand Down Expand Up @@ -49,6 +50,7 @@ fun createTestCoreSearchOptions(
addonAPI: Map<String, String>? = null,
offlineSearchPlacesOutsideBbox: Boolean = false,
ensureResultsPerCategory: Boolean? = null,
attributeSets: List<AttributeSet>? = null,
): SearchOptions = SearchOptions(
proximity,
origin,
Expand All @@ -69,6 +71,7 @@ fun createTestCoreSearchOptions(
addonAPI?.let { it as? HashMap<String, String> ?: HashMap(it) },
offlineSearchPlacesOutsideBbox,
ensureResultsPerCategory,
attributeSets,
)

@Suppress("LongParameterList")
Expand Down
2 changes: 1 addition & 1 deletion MapboxSearch/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ android.enableJetifier=false
kotlin.code.style=official

# SDK version attributes
VERSION_NAME=2.7.0-rc.1
VERSION_NAME=2.7.0

# Artifact attributes
mapboxArtifactUserOrg=mapbox
Expand Down
6 changes: 3 additions & 3 deletions MapboxSearch/gradle/versions.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ ext {

pitest_version = '1.6.7'

mapbox_maps_version = '11.9.0-beta.1'
mapbox_maps_version = '11.9.0-rc.1'
mapbox_turf_version = '6.15.0'

common_sdk_version = '24.9.0-rc.1'
common_sdk_version = '24.9.0'
mapbox_base_version = '0.8.0'

search_native_version = '2.7.0-rc.1'
search_native_version = '2.7.0'

detekt_version = '1.19.0'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import androidx.appcompat.app.AppCompatActivity;

import com.mapbox.search.ApiType;
import com.mapbox.search.AttributeSet;
import com.mapbox.search.CategorySearchOptions;
import com.mapbox.search.ResponseInfo;
import com.mapbox.search.SearchCallback;
Expand Down Expand Up @@ -52,6 +53,14 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
final CategorySearchOptions options = new CategorySearchOptions.Builder()
.limit(10)
.ensureResultsPerCategory(true)
.attributeSets(
Arrays.asList(
AttributeSet.BASIC,
AttributeSet.VISIT,
AttributeSet.VENUE,
AttributeSet.PHOTOS
)
)
.build();

searchRequestTask = searchEngine.search(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.mapbox.search.sample.api

import android.os.Bundle
import com.mapbox.search.ApiType
import com.mapbox.search.AttributeSet
import com.mapbox.search.CategorySearchOptions
import com.mapbox.search.ResponseInfo
import com.mapbox.search.SearchCallback
Expand Down Expand Up @@ -52,6 +53,12 @@ class CategorySearchKotlinExampleActivity : BaseKotlinExampleActivity() {
CategorySearchOptions(
limit = 10,
ensureResultsPerCategory = true,
attributeSets = listOf(
AttributeSet.BASIC,
AttributeSet.VISIT,
AttributeSet.VENUE,
AttributeSet.PHOTOS,
),
),
searchCallback
)
Expand Down
4 changes: 4 additions & 0 deletions MapboxSearch/sdk/api/api-metalava.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ package com.mapbox.search {
}

@kotlinx.parcelize.Parcelize public final class CategorySearchOptions implements android.os.Parcelable {
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null, java.util.List<com.mapbox.search.common.IsoCountryCode>? countries = null, Boolean? fuzzyMatch = null, java.util.List<com.mapbox.search.common.IsoLanguageCode>? languages = defaultSearchOptionsLanguage(), Integer? limit = null, Integer? requestDebounce = null, com.mapbox.geojson.Point? origin = null, com.mapbox.search.common.NavigationProfile? navigationProfile = null, com.mapbox.search.RouteOptions? routeOptions = null, java.util.Map<java.lang.String,java.lang.String>? unsafeParameters = null, boolean ignoreIndexableRecords = false, Double? indexableRecordsDistanceThresholdMeters = null, Boolean? ensureResultsPerCategory = null, java.util.List<? extends com.mapbox.search.AttributeSet>? attributeSets = null);
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null, java.util.List<com.mapbox.search.common.IsoCountryCode>? countries = null, Boolean? fuzzyMatch = null, java.util.List<com.mapbox.search.common.IsoLanguageCode>? languages = defaultSearchOptionsLanguage(), Integer? limit = null, Integer? requestDebounce = null, com.mapbox.geojson.Point? origin = null, com.mapbox.search.common.NavigationProfile? navigationProfile = null, com.mapbox.search.RouteOptions? routeOptions = null, java.util.Map<java.lang.String,java.lang.String>? unsafeParameters = null, boolean ignoreIndexableRecords = false, Double? indexableRecordsDistanceThresholdMeters = null, Boolean? ensureResultsPerCategory = null);
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null, java.util.List<com.mapbox.search.common.IsoCountryCode>? countries = null, Boolean? fuzzyMatch = null, java.util.List<com.mapbox.search.common.IsoLanguageCode>? languages = defaultSearchOptionsLanguage(), Integer? limit = null, Integer? requestDebounce = null, com.mapbox.geojson.Point? origin = null, com.mapbox.search.common.NavigationProfile? navigationProfile = null, com.mapbox.search.RouteOptions? routeOptions = null, java.util.Map<java.lang.String,java.lang.String>? unsafeParameters = null, boolean ignoreIndexableRecords = false, Double? indexableRecordsDistanceThresholdMeters = null);
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null, java.util.List<com.mapbox.search.common.IsoCountryCode>? countries = null, Boolean? fuzzyMatch = null, java.util.List<com.mapbox.search.common.IsoLanguageCode>? languages = defaultSearchOptionsLanguage(), Integer? limit = null, Integer? requestDebounce = null, com.mapbox.geojson.Point? origin = null, com.mapbox.search.common.NavigationProfile? navigationProfile = null, com.mapbox.search.RouteOptions? routeOptions = null, java.util.Map<java.lang.String,java.lang.String>? unsafeParameters = null, boolean ignoreIndexableRecords = false);
Expand All @@ -35,6 +36,7 @@ package com.mapbox.search {
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null, java.util.List<com.mapbox.search.common.IsoCountryCode>? countries = null);
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null, com.mapbox.geojson.BoundingBox? boundingBox = null);
ctor public CategorySearchOptions(com.mapbox.geojson.Point? proximity = null);
method public java.util.List<com.mapbox.search.AttributeSet>? getAttributeSets();
method public com.mapbox.geojson.BoundingBox? getBoundingBox();
method public java.util.List<com.mapbox.search.common.IsoCountryCode>? getCountries();
method public Boolean? getEnsureResultsPerCategory();
Expand All @@ -50,6 +52,7 @@ package com.mapbox.search {
method public com.mapbox.search.RouteOptions? getRouteOptions();
method public java.util.Map<java.lang.String,java.lang.String>? getUnsafeParameters();
method public com.mapbox.search.CategorySearchOptions.Builder toBuilder();
property public final java.util.List<com.mapbox.search.AttributeSet>? attributeSets;
property public final com.mapbox.geojson.BoundingBox? boundingBox;
property public final java.util.List<com.mapbox.search.common.IsoCountryCode>? countries;
property public final Boolean? ensureResultsPerCategory;
Expand All @@ -68,6 +71,7 @@ package com.mapbox.search {

public static final class CategorySearchOptions.Builder {
ctor public CategorySearchOptions.Builder();
method public com.mapbox.search.CategorySearchOptions.Builder attributeSets(java.util.List<? extends com.mapbox.search.AttributeSet>? attributeSets);
method public com.mapbox.search.CategorySearchOptions.Builder boundingBox(com.mapbox.geojson.BoundingBox boundingBox);
method public com.mapbox.search.CategorySearchOptions build();
method public com.mapbox.search.CategorySearchOptions.Builder countries(com.mapbox.search.common.IsoCountryCode... countries);
Expand Down
9 changes: 6 additions & 3 deletions MapboxSearch/sdk/api/sdk.api
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,13 @@ public final class com/mapbox/search/CategorySearchOptions : android/os/Parcelab
public fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;Z)V
public fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;)V
public fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;)V
public synthetic fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final synthetic fun copy (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;)Lcom/mapbox/search/CategorySearchOptions;
public static synthetic fun copy$default (Lcom/mapbox/search/CategorySearchOptions;Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/mapbox/search/CategorySearchOptions;
public fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;Ljava/util/List;)V
public synthetic fun <init> (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final synthetic fun copy (Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;Ljava/util/List;)Lcom/mapbox/search/CategorySearchOptions;
public static synthetic fun copy$default (Lcom/mapbox/search/CategorySearchOptions;Lcom/mapbox/geojson/Point;Lcom/mapbox/geojson/BoundingBox;Ljava/util/List;Ljava/lang/Boolean;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Integer;Lcom/mapbox/geojson/Point;Lcom/mapbox/search/common/NavigationProfile;Lcom/mapbox/search/RouteOptions;Ljava/util/Map;ZLjava/lang/Double;Ljava/lang/Boolean;Ljava/util/List;ILjava/lang/Object;)Lcom/mapbox/search/CategorySearchOptions;
public fun describeContents ()I
public fun equals (Ljava/lang/Object;)Z
public final fun getAttributeSets ()Ljava/util/List;
public final fun getBoundingBox ()Lcom/mapbox/geojson/BoundingBox;
public final fun getCountries ()Ljava/util/List;
public final fun getEnsureResultsPerCategory ()Ljava/lang/Boolean;
Expand All @@ -66,6 +68,7 @@ public final class com/mapbox/search/CategorySearchOptions : android/os/Parcelab

public final class com/mapbox/search/CategorySearchOptions$Builder {
public fun <init> ()V
public final fun attributeSets (Ljava/util/List;)Lcom/mapbox/search/CategorySearchOptions$Builder;
public final fun boundingBox (Lcom/mapbox/geojson/BoundingBox;)Lcom/mapbox/search/CategorySearchOptions$Builder;
public final fun build ()Lcom/mapbox/search/CategorySearchOptions;
public final fun countries (Ljava/util/List;)Lcom/mapbox/search/CategorySearchOptions$Builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.mapbox.common.MapboxOptions
import com.mapbox.geojson.BoundingBox
import com.mapbox.geojson.Point
import com.mapbox.search.ApiType
import com.mapbox.search.AttributeSet
import com.mapbox.search.BaseTest
import com.mapbox.search.BuildConfig
import com.mapbox.search.CategorySearchOptions
Expand Down Expand Up @@ -122,6 +123,12 @@ internal class CategorySearchIntegrationTest : BaseTest() {
navigationProfile = NavigationProfile.DRIVING,
routeOptions = TEST_ROUTE_OPTIONS,
ensureResultsPerCategory = true,
attributeSets = listOf(
AttributeSet.BASIC,
AttributeSet.VENUE,
AttributeSet.VISIT,
AttributeSet.PHOTOS,
)
)

searchEngine.categorySearchBlocking(TEST_CATEGORY, options)
Expand Down Expand Up @@ -151,6 +158,11 @@ internal class CategorySearchIntegrationTest : BaseTest() {

assertEquals(options.ensureResultsPerCategory.toString(), url.queryParameter("ensure_results_per_category"))

assertEquals(
options.attributeSets!!.joinToString(separator = ",") { it.name.lowercase() },
url.queryParameter("attribute_sets")
)

assertFalse(request.headers["X-Request-ID"].isNullOrBlank())
}

Expand Down
Loading

0 comments on commit 5506df1

Please sign in to comment.