Skip to content

Commit 455f8e3

Browse files
Search 2.9.0; New functionality (#325)
* CI config for snapshots * Versions bump * Provide default onlineRequestTimeout * SearchResult.boundingBox * OfflineEvSearchOptions.excludeOperators * Offline Category Search function * Update public API * Changelog
1 parent 9519371 commit 455f8e3

File tree

49 files changed

+721
-16
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+721
-16
lines changed

.circleci/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,9 @@ workflows:
430430
- sample-instrumentation-tests:
431431
requires:
432432
- prepare-and-assemble
433+
- publish-snapshots:
434+
requires:
435+
- prepare-and-assemble
433436
# - pitest-validate:
434437
# requires:
435438
# - unit-tests

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog for the Mapbox Search SDK for Android
22

3+
## 2.9.0
4+
5+
### New features
6+
- Added an optional property `SearchResult.boundingBox` which represents the geographical boundaries of a location.
7+
- Introduced a dedicated function for category search: `OfflineSearchEngine.categorySearch()`. This function can accept multiple categories. Besides that `OfflineCategorySearchOptions` has a new option `ensureResultsPerCategory`. See documentation for more information.
8+
- Added a new option `OfflineEvSearchOptions.excludeOperators` which allows to exclude specific operators from search results.
9+
10+
### Mapbox dependencies
11+
- Search Native SDK `2.9.0`
12+
- Common SDK `24.11.0`
13+
14+
15+
316
## 2.9.0-rc.1
417

518
### New features

MapboxSearch/autofill/src/androidTest/java/com/mapbox/search/autofill/AddressAutofillIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.mapbox.search.base.location.LocationEngineAdapter
1616
import com.mapbox.search.base.location.WrapperLocationProvider
1717
import com.mapbox.search.base.location.defaultLocationProvider
1818
import com.mapbox.search.base.utils.UserAgentProvider
19+
import com.mapbox.search.base.utils.defaultOnlineRequestTimeoutSeconds
1920
import com.mapbox.search.common.IsoCountryCode
2021
import com.mapbox.search.common.IsoLanguageCode
2122
import com.mapbox.search.common.SearchRequestException
@@ -310,6 +311,7 @@ internal class AddressAutofillIntegrationTest {
310311
apiType = CoreApiType.AUTOFILL,
311312
sdkInformation = UserAgentProvider.sdkInformation(),
312313
eventsUrl = null,
314+
onlineRequestTimeout = defaultOnlineRequestTimeoutSeconds(),
313315
),
314316
WrapperLocationProvider(
315317
LocationEngineAdapter(app, locationProvider), null

MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AddressAutofillImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.mapbox.search.base.result.BaseSearchResult
2020
import com.mapbox.search.base.result.BaseSearchSuggestion
2121
import com.mapbox.search.base.result.SearchResultFactory
2222
import com.mapbox.search.base.utils.UserAgentProvider
23+
import com.mapbox.search.base.utils.defaultOnlineRequestTimeoutSeconds
2324
import com.mapbox.search.base.utils.extension.flatMap
2425
import com.mapbox.search.internal.bindgen.UserActivityReporterInterface
2526
import java.util.concurrent.ExecutorService
@@ -124,6 +125,7 @@ internal class AddressAutofillImpl(
124125
apiType = CoreApiType.AUTOFILL,
125126
sdkInformation = UserAgentProvider.sdkInformation(),
126127
eventsUrl = null,
128+
onlineRequestTimeout = defaultOnlineRequestTimeoutSeconds(),
127129
),
128130
WrapperLocationProvider(
129131
LocationEngineAdapter(app, locationProvider),

MapboxSearch/autofill/src/main/java/com/mapbox/search/autofill/AutofillSearchEngine.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.mapbox.search.base.result.SearchResultFactory
3333
import com.mapbox.search.base.result.mapToCore
3434
import com.mapbox.search.base.task.AsyncOperationTaskImpl
3535
import com.mapbox.search.base.utils.UserAgentProvider
36+
import com.mapbox.search.base.utils.defaultOnlineRequestTimeoutSeconds
3637
import com.mapbox.search.common.AsyncOperationTask
3738
import com.mapbox.search.common.concurrent.SearchSdkMainThreadWorker
3839
import com.mapbox.search.internal.bindgen.ApiType
@@ -257,6 +258,7 @@ internal class AutofillSearchEngine(
257258
apiType = apiType,
258259
sdkInformation = UserAgentProvider.sdkInformation(),
259260
eventsUrl = null,
261+
onlineRequestTimeout = defaultOnlineRequestTimeoutSeconds(),
260262
),
261263
WrapperLocationProvider(
262264
LocationEngineAdapter(app, locationProvider),

MapboxSearch/base/src/main/java/com/mapbox/search/base/core/CoreFactoryFunctions.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,12 @@ fun createCoreEvSearchOptions(
185185
minChargingPower: Float? = null,
186186
maxChargingPower: Float? = null,
187187
availability: CoreChargingStatus? = null,
188+
excludeOperators: List<String>? = null,
188189
): CoreEvSearchOptions = CoreEvSearchOptions(
189190
connectorTypes = connectorTypes,
190191
operators = operators,
191192
minChargingPower = minChargingPower,
192193
maxChargingPower = maxChargingPower,
193194
availability = availability,
195+
excludeOperators = excludeOperators,
194196
)

MapboxSearch/base/src/main/java/com/mapbox/search/base/result/BaseRawSearchResult.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.mapbox.search.base.result
22

33
import android.os.Parcelable
4+
import com.mapbox.geojson.BoundingBox
45
import com.mapbox.geojson.Point
56
import com.mapbox.search.base.assertDebug
67
import com.mapbox.search.base.core.CoreResultAccuracy
78
import com.mapbox.search.base.core.CoreResultMetadata
89
import com.mapbox.search.base.core.CoreRoutablePoint
910
import com.mapbox.search.base.core.CoreSearchResult
11+
import com.mapbox.search.base.utils.extension.mapToCore
12+
import com.mapbox.search.base.utils.extension.mapToPlatform
1013
import kotlinx.parcelize.IgnoredOnParcel
1114
import kotlinx.parcelize.Parcelize
1215
import java.util.HashMap
@@ -27,6 +30,7 @@ data class BaseRawSearchResult(
2730
val center: Point?,
2831
val accuracy: CoreResultAccuracy?,
2932
val routablePoints: List<CoreRoutablePoint>?,
33+
val bbox: BoundingBox?,
3034
val categories: List<String>?,
3135
val categoryIds: List<String>?,
3236
val brand: List<String>?,
@@ -114,6 +118,7 @@ fun CoreSearchResult.mapToBase() = BaseRawSearchResult(
114118
center = center,
115119
accuracy = accuracy,
116120
routablePoints = routablePoints,
121+
bbox = bbox?.mapToPlatform(),
117122
categories = categories,
118123
categoryIds = categoryIDs,
119124
brand = brand,
@@ -157,4 +162,5 @@ fun BaseRawSearchResult.mapToCore() = CoreSearchResult(
157162
userRecordPriority,
158163
action?.mapToCore(),
159164
serverIndex,
165+
bbox?.mapToCore(),
160166
)

MapboxSearch/base/src/main/java/com/mapbox/search/base/result/BaseSearchResult.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mapbox.search.base.result
22

33
import android.os.Parcelable
4+
import com.mapbox.geojson.BoundingBox
45
import com.mapbox.geojson.Point
56
import com.mapbox.search.base.BaseRequestOptions
67
import com.mapbox.search.base.core.CoreResultAccuracy
@@ -41,6 +42,9 @@ abstract class BaseSearchResult(
4142
open val routablePoints: List<CoreRoutablePoint>?
4243
get() = rawSearchResult.routablePoints
4344

45+
open val bbox: BoundingBox?
46+
get() = rawSearchResult.bbox
47+
4448
open val categories: List<String>?
4549
get() = rawSearchResult.categories
4650

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.mapbox.search.base.utils
2+
3+
import androidx.annotation.RestrictTo
4+
5+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
6+
fun defaultOnlineRequestTimeoutSeconds(): Int? = null

MapboxSearch/base/src/test/java/com/mapbox/search/base/result/BaseRawSearchResultTest.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.mapbox.search.base.result
22

33
import com.mapbox.geojson.Point
44
import com.mapbox.search.base.BuildConfig
5+
import com.mapbox.search.base.core.CoreBoundingBox
56
import com.mapbox.search.base.core.CoreResultAccuracy
67
import com.mapbox.search.base.core.CoreRoutablePoint
78
import com.mapbox.search.base.core.CoreSearchResult
@@ -10,6 +11,7 @@ import com.mapbox.search.base.core.createCoreResultMetadata
1011
import com.mapbox.search.base.logger.reinitializeLogImpl
1112
import com.mapbox.search.base.logger.resetLogImpl
1213
import com.mapbox.search.base.tests_support.createTestBaseRawSearchResult
14+
import com.mapbox.search.base.utils.extension.mapToPlatform
1315
import com.mapbox.search.common.tests.TestConstants.ASSERTIONS_KT_CLASS_NAME
1416
import com.mapbox.search.common.tests.catchThrowable
1517
import com.mapbox.search.common.tests.createCoreSearchAddress
@@ -300,7 +302,8 @@ internal class BaseRawSearchResultTest {
300302
null,
301303
-1,
302304
null,
303-
null
305+
null,
306+
null,
304307
)
305308

306309
val BASE_EMPTY_SEARCH_RESULT = BaseRawSearchResult(
@@ -318,6 +321,7 @@ internal class BaseRawSearchResultTest {
318321
center = CORE_EMPTY_SEARCH_RESULT.center,
319322
accuracy = CORE_EMPTY_SEARCH_RESULT.accuracy,
320323
routablePoints = CORE_EMPTY_SEARCH_RESULT.routablePoints,
324+
bbox = CORE_EMPTY_SEARCH_RESULT.bbox?.mapToPlatform(),
321325
categories = CORE_EMPTY_SEARCH_RESULT.categories,
322326
categoryIds = CORE_EMPTY_SEARCH_RESULT.categoryIDs,
323327
brand = CORE_EMPTY_SEARCH_RESULT.brand,
@@ -350,6 +354,7 @@ internal class BaseRawSearchResultTest {
350354
center = CORE_FILLED_SEARCH_RESULT.center,
351355
accuracy = CORE_FILLED_SEARCH_RESULT.accuracy,
352356
routablePoints = CORE_FILLED_SEARCH_RESULT.routablePoints,
357+
bbox = CORE_FILLED_SEARCH_RESULT.bbox?.mapToPlatform(),
353358
categories = CORE_FILLED_SEARCH_RESULT.categories,
354359
categoryIds = CORE_FILLED_SEARCH_RESULT.categoryIDs,
355360
brand = CORE_FILLED_SEARCH_RESULT.brand,
@@ -407,7 +412,8 @@ internal class BaseRawSearchResultTest {
407412
"test user record id",
408413
-1,
409414
CoreSuggestAction("test endpoint", "test path", "test query", byteArrayOf(1, 2, 3), true),
410-
123
415+
123,
416+
CoreBoundingBox(Point.fromLngLat(1.0, 2.0), Point.fromLngLat(2.0, 3.0)),
411417
)
412418
}
413419

0 commit comments

Comments
 (0)