From ef5ad6e521c9ac84ea717a87f540881064f7a74c Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Thu, 10 Jul 2025 15:54:48 +0530 Subject: [PATCH 1/9] MOB-23669 : Removing return statements while parsing callback event in public API --- .../com/adobe/marketing/mobile/optimize/Optimize.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/Optimize.java b/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/Optimize.java index 1474998e..0f661c61 100644 --- a/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/Optimize.java +++ b/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/Optimize.java @@ -234,15 +234,6 @@ public void call(final Event event) { AEPOptimizeError.Companion.getUnexpectedError(); failWithOptimizeError(callback, aepOptimizeError); } - return; - } - - if (!eventData.containsKey( - OptimizeConstants.EventDataKeys.PROPOSITIONS)) { - AEPOptimizeError aepOptimizeError = - AEPOptimizeError.Companion.getUnexpectedError(); - failWithOptimizeError(callback, aepOptimizeError); - return; } final List> propositionsList; From 378ef946bd377829e2b5706b3fe66d2a298f41e3 Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Thu, 10 Jul 2025 19:25:07 +0530 Subject: [PATCH 2/9] MOB-23669 : Adding test case for propositions with error case --- .../mobile/optimize/OptimizeTests.java | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java b/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java index 11b8798d..c4a785f2 100644 --- a/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java +++ b/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java @@ -41,11 +41,13 @@ public class OptimizeTests { private Map responseMap; private AdobeError responseError; + private AEPOptimizeError optimizeError; @After public void teardown() { responseMap = null; responseError = null; + optimizeError = null; } @Test @@ -222,6 +224,111 @@ public void call(Map propositionsMap) { } } + @Test + public void testUpdatePropositionsWithCallback_validDecisionScopeWithError() throws Exception { + try (MockedStatic mobileCoreMockedStatic = + Mockito.mockStatic(MobileCore.class); + MockedStatic base64MockedStatic = Mockito.mockStatic(Base64.class)) { + // setup + base64MockedStatic + .when( + () -> + Base64.decode( + ArgumentMatchers.anyString(), + ArgumentMatchers.anyInt())) + .thenAnswer( + (Answer) + invocation -> + java.util.Base64.getDecoder() + .decode((String) invocation.getArguments()[0])); + + // test + final List scopes = new ArrayList<>(); + scopes.add( + new DecisionScope( + "eyJhY3Rpdml0eUlkIjoieGNvcmU6b2ZmZXItYWN0aXZpdHk6MTExMTExMTExMTExMTExMSIsInBsYWNlbWVudElkIjoieGNvcmU6b2ZmZXItcGxhY2VtZW50OjExMTExMTExMTExMTExMTEifQ==")); + + Optimize.updatePropositions( + scopes, + null, + null, + new AdobeCallbackWithOptimizeError>() { + @Override + public void fail(AEPOptimizeError adobeError) { + optimizeError = adobeError; + } + + @Override + public void call(Map propositionsMap) { + responseMap = propositionsMap; + } + }); + + final ArgumentCaptor eventCaptor = ArgumentCaptor.forClass(Event.class); + final ArgumentCaptor> callbackCaptor = + ArgumentCaptor.forClass(AdobeCallbackWithError.class); + + mobileCoreMockedStatic.verify( + () -> + MobileCore.dispatchEventWithResponseCallback( + eventCaptor.capture(), + ArgumentMatchers.anyLong(), + callbackCaptor.capture())); + + final Event event = eventCaptor.getValue(); + final AdobeCallbackWithError callbackWithError = callbackCaptor.getValue(); + + Assert.assertNotNull(event); + Assert.assertEquals("com.adobe.eventType.optimize", event.getType()); + Assert.assertEquals("com.adobe.eventSource.requestContent", event.getSource()); + + final Map eventData = event.getEventData(); + Assert.assertEquals("updatepropositions", eventData.get("requesttype")); + + final List> scopesList = + (List>) eventData.get("decisionscopes"); + Assert.assertEquals(1, scopesList.size()); + + final Map scopeData = scopesList.get(0); + Assert.assertNotNull(scopeData); + Assert.assertEquals(1, scopeData.size()); + Assert.assertEquals( + "eyJhY3Rpdml0eUlkIjoieGNvcmU6b2ZmZXItYWN0aXZpdHk6MTExMTExMTExMTExMTExMSIsInBsYWNlbWVudElkIjoieGNvcmU6b2ZmZXItcGxhY2VtZW50OjExMTExMTExMTExMTExMTEifQ==", + scopeData.get("name")); + + // verify callback response + final Map propositionData = + new ObjectMapper() + .readValue( + getClass() + .getClassLoader() + .getResource("json/PROPOSITION_VALID_ODE.json"), + HashMap.class); + final OptimizeProposition optimizeProposition = + OptimizeProposition.fromEventData(propositionData); + Assert.assertNotNull(optimizeProposition); + + final List> propositionsList = new ArrayList<>(); + propositionsList.add(optimizeProposition.toEventData()); + + final Map responseEventData = new HashMap<>(); + responseEventData.put("propositions", propositionsList); + responseEventData.put( + "responseerror", AEPOptimizeError.Companion.getUnexpectedError().toEventData()); + final Event responseEvent = + new Event.Builder( + "Optimize Response", + "com.adobe.eventType.optimize", + "com.adobe.eventSource.responseContent") + .setEventData(responseEventData) + .build(); + callbackWithError.call(responseEvent); + + Assert.assertNotNull(optimizeError); + Assert.assertNotNull(responseMap); + } + } + @Test public void testUpdatePropositions_validDecisionScopeWithXDMAndData() { try (MockedStatic mobileCoreMockedStatic = From 34ec511405333867bb4d0c5350c8816b8d8316a6 Mon Sep 17 00:00:00 2001 From: sagar-sharma-adobe Date: Mon, 14 Jul 2025 11:22:21 +0530 Subject: [PATCH 3/9] MOB-23669 : renaming test case --- .../java/com/adobe/marketing/mobile/optimize/OptimizeTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java b/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java index c4a785f2..c045f2b7 100644 --- a/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java +++ b/code/optimize/src/test/java/com/adobe/marketing/mobile/optimize/OptimizeTests.java @@ -225,7 +225,7 @@ public void call(Map propositionsMap) { } @Test - public void testUpdatePropositionsWithCallback_validDecisionScopeWithError() throws Exception { + public void testUpdatePropositionsWithCallback_SuccessWithError() throws Exception { try (MockedStatic mobileCoreMockedStatic = Mockito.mockStatic(MobileCore.class); MockedStatic base64MockedStatic = Mockito.mockStatic(Base64.class)) { From f57caf8297d5a639edc1317550dd34499d401598 Mon Sep 17 00:00:00 2001 From: saquib-adobe Date: Wed, 16 Jul 2025 15:20:59 +0530 Subject: [PATCH 4/9] enabling the gradle task to generate verification.properties file for Play console verification --- code/build.gradle.kts | 2 +- code/optimize/build.gradle.kts | 1 + code/testapp/build.gradle.kts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/build.gradle.kts b/code/build.gradle.kts index 0a4b7a14..23ed431f 100644 --- a/code/build.gradle.kts +++ b/code/build.gradle.kts @@ -19,6 +19,6 @@ buildscript { mavenLocal() } dependencies { - classpath("com.github.adobe:aepsdk-commons:gp-3.0.2") + classpath("com.github.adobe:aepsdk-commons:gp-3.4.0") } } \ No newline at end of file diff --git a/code/optimize/build.gradle.kts b/code/optimize/build.gradle.kts index 11a49a54..919dc4d1 100644 --- a/code/optimize/build.gradle.kts +++ b/code/optimize/build.gradle.kts @@ -23,6 +23,7 @@ aepLibrary { enableDokkaDoc = true enableSpotless = true enableCheckStyle = true + enablePlayConsoleVerification = true publishing { gitRepoName = "aepsdk-optimize-android" diff --git a/code/testapp/build.gradle.kts b/code/testapp/build.gradle.kts index 8bb410c5..f264f905 100644 --- a/code/testapp/build.gradle.kts +++ b/code/testapp/build.gradle.kts @@ -54,7 +54,7 @@ android { dependencies { implementation(project(":optimize")) - implementation(platform("com.adobe.marketing.mobile:sdk-bom:3.8.0")) + implementation(platform("com.adobe.marketing.mobile:sdk-bom:3.13.0")) implementation("com.adobe.marketing.mobile:edge") implementation("com.adobe.marketing.mobile:core") implementation("com.adobe.marketing.mobile:edgeidentity") From 24e907df34dd36e7fed4bfe62bb67d8256134410 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 16 Jul 2025 10:38:53 +0000 Subject: [PATCH 5/9] Updating version to 3.6.1 --- code/gradle.properties | 2 +- .../adobe/marketing/mobile/optimize/OptimizeTestConstants.java | 2 +- .../com/adobe/marketing/mobile/optimize/OptimizeConstants.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/gradle.properties b/code/gradle.properties index 202031c1..d523c389 100644 --- a/code/gradle.properties +++ b/code/gradle.properties @@ -16,7 +16,7 @@ org.gradle.caching=true android.useAndroidX=true moduleName=optimize -moduleVersion=3.6.0 +moduleVersion=3.6.1 #Maven artifact mavenRepoName=AdobeMobileOptimizeSdk diff --git a/code/optimize/src/androidTest/java/com/adobe/marketing/mobile/optimize/OptimizeTestConstants.java b/code/optimize/src/androidTest/java/com/adobe/marketing/mobile/optimize/OptimizeTestConstants.java index dcc597c2..1a5d9176 100644 --- a/code/optimize/src/androidTest/java/com/adobe/marketing/mobile/optimize/OptimizeTestConstants.java +++ b/code/optimize/src/androidTest/java/com/adobe/marketing/mobile/optimize/OptimizeTestConstants.java @@ -13,7 +13,7 @@ public class OptimizeTestConstants { - static final String EXTENSION_VERSION = "3.6.0"; + static final String EXTENSION_VERSION = "3.6.1"; public static final String LOG_TAG = "OptimizeTest"; static final String CONFIG_DATA_STORE = "AdobeMobile_ConfigState"; diff --git a/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/OptimizeConstants.java b/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/OptimizeConstants.java index a673959d..027faef6 100644 --- a/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/OptimizeConstants.java +++ b/code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/OptimizeConstants.java @@ -13,7 +13,7 @@ class OptimizeConstants { static final String LOG_TAG = "Optimize"; - static final String EXTENSION_VERSION = "3.6.0"; + static final String EXTENSION_VERSION = "3.6.1"; static final String EXTENSION_NAME = "com.adobe.optimize"; static final String FRIENDLY_NAME = "Optimize"; static final double GET_RESPONSE_CALLBACK_TIMEOUT = 10; From 97b900c179228478bed0025a8d0f4117afd806fc Mon Sep 17 00:00:00 2001 From: saquib-adobe Date: Thu, 17 Jul 2025 01:58:02 +0530 Subject: [PATCH 6/9] Updating release and snapshot workflows for sonatype migration --- .github/workflows/maven-release.yml | 3 ++- .github/workflows/maven-snapshot.yml | 12 ++++++++++-- Makefile | 4 ++-- code/settings.gradle.kts | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/maven-release.yml b/.github/workflows/maven-release.yml index 16055c27..f21cab10 100644 --- a/.github/workflows/maven-release.yml +++ b/.github/workflows/maven-release.yml @@ -40,10 +40,11 @@ jobs: publish: permissions: contents: write - uses: adobe/aepsdk-commons/.github/workflows/android-maven-release.yml@gha-android-3.3.0 + uses: adobe/aepsdk-commons/.github/workflows/android-maven-release.yml@gha-android-3.4.0 with: tag: ${{ github.event.inputs.tag }} create-github-release: ${{ github.event.inputs.create-github-release == 'true' }} version-validation-paths: code/gradle.properties, code/optimize/src/main/java/com/adobe/marketing/mobile/optimize/OptimizeConstants.java version-validation-dependencies: Core ${{ github.event.inputs.core-dependency }}, Edge ${{ github.event.inputs.edge-dependency }} + staging-dir: code/optimize/build/staging-deploy secrets: inherit \ No newline at end of file diff --git a/.github/workflows/maven-snapshot.yml b/.github/workflows/maven-snapshot.yml index 5e29380b..3675e26a 100644 --- a/.github/workflows/maven-snapshot.yml +++ b/.github/workflows/maven-snapshot.yml @@ -14,10 +14,18 @@ name: Publish Snapshot on: workflow_dispatch: + inputs: + ref: + description: "Git reference (branch, tag, or SHA) to check out when publishing the snapshot. Defaults to 'main'." + required: false + default: "staging" jobs: publish: permissions: contents: write - uses: adobe/aepsdk-commons/.github/workflows/android-maven-snapshot.yml@gha-android-3.3.0 - secrets: inherit \ No newline at end of file + uses: adobe/aepsdk-commons/.github/workflows/android-maven-snapshot.yml@gha-android-3.4.0 + secrets: inherit + with: + ref: ${{ inputs.ref }} + staging-dir: code/optimize/build/staging-deploy \ No newline at end of file diff --git a/Makefile b/Makefile index ddb5f0d5..58976fd4 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,7 @@ ci-publish-maven-local-jitpack: assemble-phone-release (./code/gradlew -p code/$(EXTENSION-LIBRARY-FOLDER-NAME) publishReleasePublicationToMavenLocal -Pjitpack -x signReleasePublication) ci-publish-staging: assemble-phone-release - (./code/gradlew -p code/$(EXTENSION-LIBRARY-FOLDER-NAME) publishReleasePublicationToSonatypeRepository) + (./code/gradlew -p code/$(EXTENSION-LIBRARY-FOLDER-NAME) publish --stacktrace) ci-publish: assemble-phone-release - (./code/gradlew -p code/$(EXTENSION-LIBRARY-FOLDER-NAME) publishReleasePublicationToSonatypeRepository -Prelease) + (./code/gradlew -p code/$(EXTENSION-LIBRARY-FOLDER-NAME) publish -Prelease) diff --git a/code/settings.gradle.kts b/code/settings.gradle.kts index 3a5d9e55..d19991d7 100755 --- a/code/settings.gradle.kts +++ b/code/settings.gradle.kts @@ -24,7 +24,7 @@ dependencyResolutionManagement { google() mavenCentral() mavenLocal() - maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") } + maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") } maven { url = uri("https://jitpack.io") } } } From 1e2d575e467162cc01c6041d8538527cf835ab41 Mon Sep 17 00:00:00 2001 From: saquib-adobe Date: Thu, 24 Jul 2025 00:46:14 +0530 Subject: [PATCH 7/9] 1. Disabling Play Console Verification 2. Upgrading workflow versions 3.4.2 3. Upgrading gradle plugin version to 3.4.1 --- .github/workflows/maven-release.yml | 2 +- .github/workflows/maven-snapshot.yml | 2 +- code/build.gradle.kts | 2 +- code/optimize/build.gradle.kts | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven-release.yml b/.github/workflows/maven-release.yml index f21cab10..60a4b72f 100644 --- a/.github/workflows/maven-release.yml +++ b/.github/workflows/maven-release.yml @@ -40,7 +40,7 @@ jobs: publish: permissions: contents: write - uses: adobe/aepsdk-commons/.github/workflows/android-maven-release.yml@gha-android-3.4.0 + uses: adobe/aepsdk-commons/.github/workflows/android-maven-release.yml@gha-android-3.4.2 with: tag: ${{ github.event.inputs.tag }} create-github-release: ${{ github.event.inputs.create-github-release == 'true' }} diff --git a/.github/workflows/maven-snapshot.yml b/.github/workflows/maven-snapshot.yml index 3675e26a..0380d85f 100644 --- a/.github/workflows/maven-snapshot.yml +++ b/.github/workflows/maven-snapshot.yml @@ -24,7 +24,7 @@ jobs: publish: permissions: contents: write - uses: adobe/aepsdk-commons/.github/workflows/android-maven-snapshot.yml@gha-android-3.4.0 + uses: adobe/aepsdk-commons/.github/workflows/android-maven-snapshot.yml@gha-android-3.4.2 secrets: inherit with: ref: ${{ inputs.ref }} diff --git a/code/build.gradle.kts b/code/build.gradle.kts index 23ed431f..b4a4d942 100644 --- a/code/build.gradle.kts +++ b/code/build.gradle.kts @@ -19,6 +19,6 @@ buildscript { mavenLocal() } dependencies { - classpath("com.github.adobe:aepsdk-commons:gp-3.4.0") + classpath("com.github.adobe:aepsdk-commons:gp-3.4.1") } } \ No newline at end of file diff --git a/code/optimize/build.gradle.kts b/code/optimize/build.gradle.kts index 919dc4d1..11a49a54 100644 --- a/code/optimize/build.gradle.kts +++ b/code/optimize/build.gradle.kts @@ -23,7 +23,6 @@ aepLibrary { enableDokkaDoc = true enableSpotless = true enableCheckStyle = true - enablePlayConsoleVerification = true publishing { gitRepoName = "aepsdk-optimize-android" From bf87cf010ce858e31f0a33f5bdac83d7bf70c57c Mon Sep 17 00:00:00 2001 From: saquib-adobe Date: Thu, 24 Jul 2025 14:28:56 +0530 Subject: [PATCH 8/9] Upgrading the core and edge SDK version --- code/gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/gradle.properties b/code/gradle.properties index d523c389..dd2f3f42 100644 --- a/code/gradle.properties +++ b/code/gradle.properties @@ -24,6 +24,6 @@ mavenRepoDescription=Adobe Experience Platform Optimize extension for the Adobe mavenUploadDryRunFlag=false # production versions for production build -mavenCoreVersion=3.3.0 -mavenEdgeVersion=3.0.1 +mavenCoreVersion=3.5.0 +mavenEdgeVersion=3.0.2 functionalTestEdgeVersion=3.0.1 From 69563b47f20b9c6cc35e656bfc71b49357705aa5 Mon Sep 17 00:00:00 2001 From: saquib-adobe Date: Thu, 24 Jul 2025 15:37:16 +0530 Subject: [PATCH 9/9] Setting enablePlayConsoleVerification to false --- code/optimize/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/optimize/build.gradle.kts b/code/optimize/build.gradle.kts index 11a49a54..60889a59 100644 --- a/code/optimize/build.gradle.kts +++ b/code/optimize/build.gradle.kts @@ -23,6 +23,7 @@ aepLibrary { enableDokkaDoc = true enableSpotless = true enableCheckStyle = true + enablePlayConsoleVerification = false publishing { gitRepoName = "aepsdk-optimize-android"