Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
9677471
feat: upgrade to Common SDK v4 with new interfaces
typotter Feb 21, 2026
bf3ed58
chore: update test imports for v4 API (WIP)
typotter Feb 21, 2026
ecdf3c5
chore: complete test updates for v4 API
typotter Feb 21, 2026
f44ff6e
style: apply spotless formatting fixes
typotter Feb 21, 2026
e81aafb
test: migrate tests from reflection to builder-based HTTP client inje…
typotter Feb 21, 2026
6964b24
test: update test config JSON format for v4 parser compatibility
typotter Feb 21, 2026
0cc0bbe
test: update mock HTTP client calls from get() to execute()
typotter Feb 21, 2026
080b448
test: revert mock HTTP client calls back to get() method
typotter Feb 21, 2026
01f7d52
test: add required fields to EMPTY_CONFIG for v4 parser
typotter Feb 21, 2026
c45dbc1
docs: update migration notes with CI fix progress
typotter Feb 21, 2026
2cee153
docs: document blocking CI issues for v4 upgrade
typotter Feb 21, 2026
7537676
test: fix mock HTTP client to stub execute() instead of get()
typotter Feb 21, 2026
c7098ba
revert: revert execute() changes - published SDK only has get()
typotter Feb 21, 2026
9247731
fix: properly store and parse initial configuration bytes
typotter Feb 21, 2026
5653d42
fix: deserialize flag config to Default implementations
typotter Feb 21, 2026
0b45c98
docs: update migration notes with recent fixes
typotter Feb 21, 2026
5995f89
feat: add Jackson deserializers for v4 configuration parsing
typotter Feb 21, 2026
84b50dd
style: fix import ordering for spotless
typotter Feb 21, 2026
4b9a599
fix: stub execute() instead of get() in mock tests
typotter Feb 21, 2026
d22fd54
docs: update migration notes with dependency blocker
typotter Feb 21, 2026
78e2322
fix: use get() instead of execute() for EppoConfigurationClient mock
typotter Feb 21, 2026
4840e78
fix: restore backwards compatibility for deprecated host() method
typotter Feb 21, 2026
532e43f
test: add URL adapter client for v4 SDK compatibility
typotter Feb 21, 2026
2facb2c
debug: add logging to TestUrlAdapterClient for CI debugging
typotter Feb 21, 2026
c84b21b
fix: implement execute() method in HTTP clients for SDK v4 compatibility
typotter Feb 21, 2026
26c4bca
debug: add detailed logging to TestUrlAdapterClient
typotter Feb 21, 2026
9605e30
debug: use EppoSDK tag for CI logcat capture
typotter Feb 21, 2026
c2ca6a8
debug: add logging to verify http client selection
typotter Feb 21, 2026
d752e65
debug: add extensive logging for HTTP client path tracing
typotter Feb 21, 2026
30e30ae
debug: add network connectivity test and more logging
typotter Feb 21, 2026
536d628
debug: add detailed logging to buildAndInitAsync() for init flow tracing
typotter Feb 21, 2026
1eb5b0a
debug: add test to verify TestUrlAdapterClient async execution
typotter Feb 21, 2026
316eaf2
fix: adapt v4 SDK resource paths to test server format
typotter Feb 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions MIGRATION-NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Migration Notes: Android SDK v4 Upgrade

## Current Status
- **Phase:** Blocked - waiting for common SDK SNAPSHOT publish
- **Branch:** `feature/v4-core-upgrade/pr3-sdk-v4-upgrade`
- **PR:** #246 (Draft)
- **Last Updated:** 2026-02-21

### CI Status: FAILING (Dependency Resolution)
CI cannot compile because `eppo-sdk-framework:0.1.0-SNAPSHOT` isn't published to Maven Central Snapshots.

**Error:** `cannot find symbol: method execute(EppoConfigurationRequest)`

The tests and code are correct, but CI can't find the `execute()` method because the SNAPSHOT dependency isn't available remotely.

## Blocker

**Action Required:** Publish `eppo-sdk-framework:0.1.0-SNAPSHOT` from the common SDK repository to Maven Central Snapshots.

Once published, CI should pass because:
1. Jackson deserializers are correctly configured
2. Mock tests now stub `execute()` (the correct method in v4)
3. Offline tests already pass

## Recent Fixes

### Fixed: Mock tests calling wrong method (2026-02-21)
Tests were stubbing `mockHttpClient.get()` but SDK v4's `ConfigurationRequestor` calls `execute()`.
The `get()` method is now a deprecated default method in `EppoConfigurationClient` that delegates to `execute()`.

Changed all test mocks from:
```java
when(mockHttpClient.get(any(EppoConfigurationRequest.class))).thenReturn(response);
```
to:
```java
when(mockHttpClient.execute(any(EppoConfigurationRequest.class))).thenReturn(response);
```

### Fixed: Jackson deserializers for v4 configuration
Added EppoModule and deserializers from common SDK to properly parse v4 flag config.

Files added in `dto/adapters/`:
- `EppoModule.java`
- `FlagConfigResponseDeserializer.java`
- `BanditParametersResponseDeserializer.java`
- `EppoValueDeserializer.java`
- `EppoValueSerializer.java`
- `DateSerializer.java`

## Test Categories

### Expected Passing Tests (after SNAPSHOT is published)
- `testOfflineInit` - Uses `initialConfiguration(byte[])`
- `testObfuscatedOfflineInit` - Same with obfuscated config
- `testLoadConfiguration` - Uses mocked HTTP client
- `testPollingClient` - Uses mocked HTTP client
- All other mock-based tests
- Unit tests (local)

## Commits on Branch
- `4b9a599` fix: stub execute() instead of get() in mock tests
- `84b50dd` style: fix import ordering for spotless
- `5995f89` feat: add Jackson deserializers for v4 configuration parsing
- `0b45c98` docs: update migration notes with recent fixes
- Earlier commits for initial v4 upgrade

## Dependency Graph
```
Android SDK (eppo module)
└── eppo-sdk-framework:0.1.0-SNAPSHOT <-- NOT PUBLISHED
└── Contains: EppoConfigurationClient.execute()
```
5 changes: 4 additions & 1 deletion eppo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,14 @@ ext.versions = [
]

dependencies {
api 'cloud.eppo:sdk-common-jvm:3.13.1'
// Use v4 framework - provides base classes and interfaces
api 'cloud.eppo:eppo-sdk-framework:0.1.0-SNAPSHOT'

implementation 'org.slf4j:slf4j-api:2.0.17'

implementation "androidx.core:core:${versions.androidx_core}"
// OkHttp and Jackson still needed temporarily in framework
// They will be moved to batteries-included in PR 4
implementation "com.squareup.okhttp3:okhttp:${versions.okhttp}"
implementation "com.github.zafarkhaja:java-semver:${versions.semver}"
implementation "com.fasterxml.jackson.core:jackson-databind:2.19.1"
Expand Down
Loading
Loading