From 1c59bca201d4c19b47a3a2c1e74c38cd31db3389 Mon Sep 17 00:00:00 2001 From: Cliff Casey Date: Tue, 28 Jul 2026 13:08:03 -0400 Subject: [PATCH 1/3] changed statementclientexception to add status code prop. Also updated testcontainers and revealed some old bad dependencies for junit --- pom.xml | 2 +- .../xapi/client/StatementClient.java | 13 +++++++----- .../exception/StatementClientException.java | 21 +++++++++++++++++++ .../model/ActivityDefinitionTest.java | 2 +- .../com/yetanalytics/model/StatementTest.java | 2 +- .../xapi/client/StatementClientTest.java | 6 +++--- .../client/filters/StatementFiltersTest.java | 4 ++-- .../yetanalytics/xapi/model/LangTagTest.java | 6 +++--- .../xapi/util/StatementValidatorTest.java | 4 ++-- .../xapi/util/ValidationUtils.java | 4 ++-- 10 files changed, 44 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index dba4927..7bde40f 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ org.testcontainers testcontainers - 1.20.6 + 2.0.5 test diff --git a/src/main/java/com/yetanalytics/xapi/client/StatementClient.java b/src/main/java/com/yetanalytics/xapi/client/StatementClient.java index d0f13c3..a487175 100644 --- a/src/main/java/com/yetanalytics/xapi/client/StatementClient.java +++ b/src/main/java/com/yetanalytics/xapi/client/StatementClient.java @@ -79,7 +79,8 @@ private List doPost(List statements, URI endpoint) EntityUtils.consumeQuietly(response.getEntity()); throw new StatementClientException(String.format( "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode())); + response.getStatusLine().getStatusCode()), + response.getStatusLine().getStatusCode()); } } @@ -107,7 +108,7 @@ public List postStatements(List stmts) { } return result; } catch (ParseException | IOException e) { - throw new StatementClientException("Error posting Statements", e); + throw new StatementClientException("Error posting Statements", 0, e); } } @@ -123,7 +124,8 @@ private StatementResult doGetStatementResult(URI endpoint) EntityUtils.consumeQuietly(response.getEntity()); throw new StatementClientException(String.format( "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode())); + response.getStatusLine().getStatusCode()), + response.getStatusLine().getStatusCode()); } } @@ -139,7 +141,8 @@ private Statement doGetStatement(URI endpoint) EntityUtils.consumeQuietly(response.getEntity()); throw new StatementClientException(String.format( "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode())); + response.getStatusLine().getStatusCode()), + response.getStatusLine().getStatusCode()); } } @@ -195,7 +198,7 @@ public List getStatements(StatementFilters filters, Integer max) { } } catch (IOException e) { - throw new StatementClientException("Error getting Statements", e); + throw new StatementClientException("Error getting Statements", 0, e); } return statements; } diff --git a/src/main/java/com/yetanalytics/xapi/exception/StatementClientException.java b/src/main/java/com/yetanalytics/xapi/exception/StatementClientException.java index 4b8d05b..ac34159 100644 --- a/src/main/java/com/yetanalytics/xapi/exception/StatementClientException.java +++ b/src/main/java/com/yetanalytics/xapi/exception/StatementClientException.java @@ -1,6 +1,8 @@ package com.yetanalytics.xapi.exception; public class StatementClientException extends RuntimeException { + + private Integer statusCode; public StatementClientException() { super(); @@ -10,14 +12,33 @@ public StatementClientException(String message) { super(message); } + public StatementClientException(String message, Integer status) { + super(message); + this.statusCode = status; + } + public StatementClientException(String message, Throwable cause) { super(message, cause); } + public StatementClientException(String message, Integer status, Throwable cause) { + super(message, cause); + this.statusCode = status; + } + public StatementClientException(Throwable cause) { super(cause); } + public StatementClientException(Integer status, Throwable cause) { + super(cause); + this.statusCode = status; + } + + public Integer getStatusCode() { + return statusCode; + } + @Override public String getMessage() { return "StatementClientException: " + super.getMessage(); diff --git a/src/test/java/com/yetanalytics/model/ActivityDefinitionTest.java b/src/test/java/com/yetanalytics/model/ActivityDefinitionTest.java index 35fdba6..b96f9eb 100644 --- a/src/test/java/com/yetanalytics/model/ActivityDefinitionTest.java +++ b/src/test/java/com/yetanalytics/model/ActivityDefinitionTest.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.List; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/yetanalytics/model/StatementTest.java b/src/test/java/com/yetanalytics/model/StatementTest.java index bd8fc04..5384d57 100644 --- a/src/test/java/com/yetanalytics/model/StatementTest.java +++ b/src/test/java/com/yetanalytics/model/StatementTest.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.UUID; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.semver4j.Semver; diff --git a/src/test/java/com/yetanalytics/xapi/client/StatementClientTest.java b/src/test/java/com/yetanalytics/xapi/client/StatementClientTest.java index 477ce8d..3e1d478 100644 --- a/src/test/java/com/yetanalytics/xapi/client/StatementClientTest.java +++ b/src/test/java/com/yetanalytics/xapi/client/StatementClientTest.java @@ -1,8 +1,8 @@ package com.yetanalytics.xapi.client; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.io.IOException; diff --git a/src/test/java/com/yetanalytics/xapi/client/filters/StatementFiltersTest.java b/src/test/java/com/yetanalytics/xapi/client/filters/StatementFiltersTest.java index b52d2b9..a793e1f 100644 --- a/src/test/java/com/yetanalytics/xapi/client/filters/StatementFiltersTest.java +++ b/src/test/java/com/yetanalytics/xapi/client/filters/StatementFiltersTest.java @@ -1,7 +1,7 @@ package com.yetanalytics.xapi.client.filters; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.net.URI; import java.util.UUID; diff --git a/src/test/java/com/yetanalytics/xapi/model/LangTagTest.java b/src/test/java/com/yetanalytics/xapi/model/LangTagTest.java index 13c4eed..4185212 100644 --- a/src/test/java/com/yetanalytics/xapi/model/LangTagTest.java +++ b/src/test/java/com/yetanalytics/xapi/model/LangTagTest.java @@ -2,9 +2,9 @@ import java.util.IllformedLocaleException; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; public class LangTagTest { diff --git a/src/test/java/com/yetanalytics/xapi/util/StatementValidatorTest.java b/src/test/java/com/yetanalytics/xapi/util/StatementValidatorTest.java index a016f42..371445b 100644 --- a/src/test/java/com/yetanalytics/xapi/util/StatementValidatorTest.java +++ b/src/test/java/com/yetanalytics/xapi/util/StatementValidatorTest.java @@ -1,10 +1,10 @@ package com.yetanalytics.xapi.util; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Set; -import org.junit.Test; +import org.junit.jupiter.api.Test; import com.yetanalytics.xapi.model.Activity; import com.yetanalytics.xapi.model.LangTag; diff --git a/src/test/java/com/yetanalytics/xapi/util/ValidationUtils.java b/src/test/java/com/yetanalytics/xapi/util/ValidationUtils.java index f712014..c3621f5 100644 --- a/src/test/java/com/yetanalytics/xapi/util/ValidationUtils.java +++ b/src/test/java/com/yetanalytics/xapi/util/ValidationUtils.java @@ -1,7 +1,7 @@ package com.yetanalytics.xapi.util; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import jakarta.validation.Validation; import jakarta.validation.Validator; From 92e219e26941744cadc61446f3a8f1bf45726b5f Mon Sep 17 00:00:00 2001 From: Cliff Casey Date: Tue, 28 Jul 2026 13:10:00 -0400 Subject: [PATCH 2/3] version bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7bde40f..4bcc572 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.yetanalytics xapi-tools jar - 0.0.5 + 0.0.6 xAPI Tools Java Serialization Model and Tools for xAPI Standard (IEEE 9274.1.1) https://github.com/yetanalytics/java-xapi-tools From e2d883c84025897d7b07e7113c07cd35ffda423b Mon Sep 17 00:00:00 2001 From: Cliff Casey Date: Tue, 28 Jul 2026 14:37:09 -0400 Subject: [PATCH 3/3] cleanup status lines --- .../yetanalytics/xapi/client/StatementClient.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yetanalytics/xapi/client/StatementClient.java b/src/main/java/com/yetanalytics/xapi/client/StatementClient.java index a487175..729d3d3 100644 --- a/src/main/java/com/yetanalytics/xapi/client/StatementClient.java +++ b/src/main/java/com/yetanalytics/xapi/client/StatementClient.java @@ -77,10 +77,9 @@ private List doPost(List statements, URI endpoint) new TypeReference>(){}); } else { EntityUtils.consumeQuietly(response.getEntity()); + int statusCode = response.getStatusLine().getStatusCode(); throw new StatementClientException(String.format( - "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode()), - response.getStatusLine().getStatusCode()); + "Error, Non-200 Status. Received: %s", statusCode), statusCode); } } @@ -122,10 +121,9 @@ private StatementResult doGetStatementResult(URI endpoint) return Mapper.getMapper().readValue(responseBody, StatementResult.class); } else { EntityUtils.consumeQuietly(response.getEntity()); + int statusCode = response.getStatusLine().getStatusCode(); throw new StatementClientException(String.format( - "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode()), - response.getStatusLine().getStatusCode()); + "Error, Non-200 Status. Received: %s", statusCode), statusCode); } } @@ -139,10 +137,9 @@ private Statement doGetStatement(URI endpoint) return Mapper.getMapper().readValue(responseBody, Statement.class); } else { EntityUtils.consumeQuietly(response.getEntity()); + int statusCode = response.getStatusLine().getStatusCode(); throw new StatementClientException(String.format( - "Error, Non-200 Status. Received: %s", - response.getStatusLine().getStatusCode()), - response.getStatusLine().getStatusCode()); + "Error, Non-200 Status. Received: %s", statusCode), statusCode); } }