From e783903034c47dab8285541ff168fde6cb7f60c9 Mon Sep 17 00:00:00 2001 From: maheshshinde9100 Date: Sat, 31 Jan 2026 00:10:55 +0530 Subject: [PATCH 1/3] Added a safety check in parseResponse to throw a clear RazorpayException if an entity class cannot be found, rather than failing with a NullPointerException --- src/main/java/com/razorpay/ApiClient.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/razorpay/ApiClient.java b/src/main/java/com/razorpay/ApiClient.java index b9697087..5d970b4a 100755 --- a/src/main/java/com/razorpay/ApiClient.java +++ b/src/main/java/com/razorpay/ApiClient.java @@ -121,6 +121,9 @@ else if(response.code()==204){ private T parseResponse(JSONObject jsonObject, String entity) throws RazorpayException { if (entity != null) { Class cls = getClass(entity); + if (cls == null) { + throw new RazorpayException("Unable to find class for entity: " + entity); + } try { return cls.getConstructor(JSONObject.class).newInstance(jsonObject); } catch (Exception e) { @@ -247,7 +250,7 @@ private void throwServerException(int statusCode, String responseBody) throws Ra private Class getClass(String entity) { try { - String entityClass = "com.razorpay." + WordUtils.capitalize(entity, '_').replaceAll("_", ""); + String entityClass = getClass().getPackage().getName() + "." + WordUtils.capitalize(entity, '_').replaceAll("_", ""); return Class.forName(entityClass); } catch (ClassNotFoundException e) { return null; From 8ff78bc9ea533d5cacc53071000e2b3f8440fe80 Mon Sep 17 00:00:00 2001 From: maheshshinde9100 Date: Sat, 31 Jan 2026 00:33:48 +0530 Subject: [PATCH 2/3] fixed dynamic package resolution and modernize build for Java 21 - Resolve response parsing errors in shaded/re-packaged environments (#333) - Update Mockito and Jacoco for modern JDK compatibility - Fix deprecated Mockito matchers in BaseTest --- pom.xml | 20 ++++++++++++-------- src/test/java/com/razorpay/BaseTest.java | 6 +++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 94240c6f..a2549996 100644 --- a/pom.xml +++ b/pom.xml @@ -54,17 +54,11 @@ org.mockito mockito-inline - 2.13.0 - test - - - org.json - json + 4.11.0 test - com.squareup.okhttp3 okhttp @@ -158,7 +152,7 @@ org.jacoco jacoco-maven-plugin - 0.8.7 + 0.8.11 com/razorpay/**/EntityNameURLMapping.class @@ -204,6 +198,16 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + -XX:+EnableDynamicAgentLoading -Dnet.bytebuddy.experimental=true @{argLine} + + + diff --git a/src/test/java/com/razorpay/BaseTest.java b/src/test/java/com/razorpay/BaseTest.java index fde9918f..1f8ce102 100644 --- a/src/test/java/com/razorpay/BaseTest.java +++ b/src/test/java/com/razorpay/BaseTest.java @@ -16,7 +16,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.anyObject; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -30,7 +30,7 @@ public class BaseTest { @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); + MockitoAnnotations.openMocks(this); mockGetCall(); mockURL(Collections.emptyList()); } @@ -44,7 +44,7 @@ private void mockGetCall() throws IOException, IllegalAccessException { Call call = mock(Call.class); when(call.execute()).thenReturn(mockedResponse); - when(okHttpClient.newCall(anyObject())).thenReturn(call); + when(okHttpClient.newCall(any())).thenReturn(call); } From 4045f180a4f7411354184b65f2b766261c12a28b Mon Sep 17 00:00:00 2001 From: maheshshinde9100 Date: Sun, 4 Oct 2026 00:14:18 +0530 Subject: [PATCH 3/3] fix(ci): resolve Guice inject error, correct OSSRH URLs, modernize GHA actions - Bump nexus-staging-maven-plugin 1.6.9 -> 1.7.0 to eliminate the Guice/MissingImplementation WARNING (ObjectMapper annotated with TypeArguments) during Maven project scanning. - Correct distributionManagement OSSRH URLs: - snapshot: /content/repositories/releases/ -> .../snapshots/ - release: /service/local/repositories/releases/content/ -> /service/local/staging/deploy/maven2/ so nexus-staging owns the staging upload (and snapshots go to the snapshots repository). - Bump plugins: maven-gpg-plugin 1.6 -> 3.2.7, maven-source-plugin 3.0.1 -> 3.3.1, maven-javadoc-plugin 3.0.1 -> 3.8.0 for modern runner and GPG 2.3+ compatibility. - Update .github/workflows/ci.yml: actions/checkout v2 -> v4, actions/setup-java v2 -> v4 with distribution=temurin (adopt was retired in 2021), codecov/codecov-action v3 -> v4. Eliminates the 'Node.js 20 is deprecated' GitHub Actions annotation. --- .github/workflows/ci.yml | 14 +++++++------- pom.xml | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23d629f3..a7c4dda3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - name: Set up Java JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 with: java-version: 8 - distribution: 'adopt' + distribution: 'temurin' - name: Install dependencies run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Dgpg.skip @@ -30,7 +30,7 @@ jobs: run: mvn -B test - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4 with: fail_ci_if_error: false verbose: true @@ -40,12 +40,12 @@ jobs: needs: test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - name: Set up Maven Central Repository - uses: actions/setup-java@v2 + uses: actions/setup-java@8df103950f1a284ea214c9acc06196fd9f766f2a # v4 with: java-version: 8 - distribution: 'adopt' + distribution: 'temurin' server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD diff --git a/pom.xml b/pom.xml index a2549996..5d880030 100644 --- a/pom.xml +++ b/pom.xml @@ -94,11 +94,11 @@ ossrh - https://oss.sonatype.org/content/repositories/releases/ + https://oss.sonatype.org/content/repositories/snapshots/ ossrh - https://oss.sonatype.org/service/local/repositories/releases/content/ + https://oss.sonatype.org/service/local/staging/deploy/maven2/ @@ -115,7 +115,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.9 + 1.7.0 true ossrh @@ -126,7 +126,7 @@ org.apache.maven.plugins maven-source-plugin - 3.0.1 + 3.3.1 attach-sources @@ -139,7 +139,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.0.1 + 3.8.0 attach-javadocs @@ -180,7 +180,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.6 + 3.2.7 sign-artifacts