diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 607838f4..1711ae4b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -14,17 +14,17 @@ jobs:
checks: write
contents: read
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: actions/checkout@v6
+ - uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- run: mvn -B verify
- - uses: madrapps/jacoco-report@v1.7.1
+ - uses: madrapps/jacoco-report@v1.7.2
with:
paths: ${{ github.workspace }}/target/site/jacoco/jacoco.xml
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 80
min-coverage-changed-files: 80
- - uses: scacap/action-surefire-report@v1.9.0
\ No newline at end of file
+ - uses: scacap/action-surefire-report@v1.9.1
\ No newline at end of file
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index f6ad8c52..c00ed329 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -23,14 +23,14 @@ jobs:
language: [ 'java' ]
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: actions/checkout@v6
+ - uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- - uses: github/codeql-action/init@v3
+ - uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
- - uses: github/codeql-action/autobuild@v3
- - uses: github/codeql-action/analyze@v3
+ - uses: github/codeql-action/autobuild@v4
+ - uses: github/codeql-action/analyze@v4
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index dcad339d..ace69696 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -14,13 +14,13 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: actions/configure-pages@v5
- uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- - uses: actions/upload-pages-artifact@v3
+ - uses: actions/upload-pages-artifact@v4
deploy:
environment:
name: github-pages
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 69ce43c6..3ab20fb0 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -5,8 +5,8 @@ jobs:
publish:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@v4
+ - uses: actions/checkout@v6
+ - uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
@@ -28,7 +28,7 @@ jobs:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- - uses: release-drafter/release-drafter@v6
+ - uses: release-drafter/release-drafter@v7
with:
version: ${{ steps.version.outputs.version }}
publish: true
diff --git a/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java b/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java
index d9349836..42ef0c29 100644
--- a/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java
+++ b/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java
@@ -355,7 +355,7 @@ public class MatomoRequest {
/**
* The grand total for the ecommerce order (required when tracking an ecommerce order).
*/
- @TrackingParameter(name = "revenue")
+ @TrackingParameter(name = "revenue", min = 0)
private Double ecommerceRevenue;
/**
@@ -433,7 +433,7 @@ public class MatomoRequest {
/**
* Some numeric value that represents the event value.
*/
- @TrackingParameter(name = "e_v")
+ @TrackingParameter(name = "e_v", min = 0)
private Double eventValue;
/**
@@ -476,25 +476,25 @@ public class MatomoRequest {
/**
* The subtotal of the order; excludes shipping.
*/
- @TrackingParameter(name = "ec_st")
+ @TrackingParameter(name = "ec_st", min = 0)
private Double ecommerceSubtotal;
/**
* Tax amount of the order.
*/
- @TrackingParameter(name = "ec_tx")
+ @TrackingParameter(name = "ec_tx", min = 0)
private Double ecommerceTax;
/**
* Shipping cost of the order.
*/
- @TrackingParameter(name = "ec_sh")
+ @TrackingParameter(name = "ec_sh", min = 0)
private Double ecommerceShippingCost;
/**
* Discount offered.
*/
- @TrackingParameter(name = "ec_dt")
+ @TrackingParameter(name = "ec_dt", min = 0)
private Double ecommerceDiscount;
/**
diff --git a/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java b/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java
index 8611d106..a4e87e5b 100644
--- a/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java
+++ b/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java
@@ -550,4 +550,55 @@ void tracksEvent() {
assertThat(query).isEqualTo("idsite=42&token_auth=876de1876fb2cda2816c362a61bfc712&rec=1&apiv=1&_id=112210f47de98115&e_c=Event+Category&e_a=Event+Action&e_n=Event+Name&e_v=23.456&send_image=0&rand=random-value");
}
-}
+ @Test
+ void allowsZeroForEventValue() {
+ matomoRequestBuilder.eventName("Event Name")
+ .eventValue(0.0)
+ .eventAction("Event Action")
+ .eventCategory("Event Category");
+
+ whenCreatesQuery();
+
+ assertThat(query)
+ .isEqualTo("idsite=42&" +
+ "token_auth=876de1876fb2cda2816c362a61bfc712&" +
+ "rec=1&" +
+ "apiv=1&" +
+ "_id=112210f47de98115&" +
+ "e_c=Event+Category&" +
+ "e_a=Event+Action&" +
+ "e_n=Event+Name&" +
+ "e_v=0.0&" +
+ "send_image=0&" +
+ "rand=random-value"
+ );
+ }
+
+ @Test
+ void allowsZeroForEcommerceValues() {
+ matomoRequestBuilder
+ .ecommerceRevenue(0.0)
+ .ecommerceSubtotal(0.0)
+ .ecommerceTax(0.0)
+ .ecommerceShippingCost(0.0)
+ .ecommerceDiscount(0.0);
+
+ whenCreatesQuery();
+
+ assertThat(query)
+ .isEqualTo("idsite=42&" +
+ "token_auth=876de1876fb2cda2816c362a61bfc712&" +
+ "rec=1&" +
+ "apiv=1&" +
+ "_id=112210f47de98115&" +
+ "revenue=0.0&" +
+ "ec_st=0.0&" +
+ "ec_tx=0.0&" +
+ "ec_sh=0.0&" +
+ "ec_dt=0.0&" +
+ "send_image=0&" +
+ "rand=random-value"
+ );
+ }
+
+}
\ No newline at end of file
diff --git a/java11/pom.xml b/java11/pom.xml
index 677f0c18..fb03eedf 100644
--- a/java11/pom.xml
+++ b/java11/pom.xml
@@ -48,7 +48,7 @@
org.wiremock
wiremock
- 3.11.0
+ 3.13.2
test
diff --git a/pom.xml b/pom.xml
index d28931b9..f4c62914 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
1.8
${project.build.outputDirectory}/delombok
1.18.36
- 2.0.16
+ 2.0.17
@@ -71,7 +71,7 @@
com.github.spotbugs
spotbugs-annotations
- 4.9.0
+ 4.9.8
provided
@@ -94,7 +94,7 @@
org.assertj
assertj-core
- 3.27.3
+ 3.27.7
test
@@ -117,7 +117,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.13.0
+ 3.15.0
org.apache.maven.plugins
@@ -127,12 +127,12 @@
org.apache.maven.plugins
maven-clean-plugin
- 3.4.0
+ 3.5.0
org.apache.maven.plugins
maven-deploy-plugin
- 3.1.3
+ 3.1.4
org.apache.maven.plugins
@@ -147,7 +147,7 @@
org.apache.maven.plugins
maven-resources-plugin
- 3.3.1
+ 3.5.0
org.apache.maven.plugins
@@ -157,12 +157,12 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.5
org.apache.maven.plugins
maven-release-plugin
- 3.1.1
+ 3.3.1
true
false
@@ -174,7 +174,7 @@
org.apache.maven.plugins
maven-gpg-plugin
- 3.2.7
+ 3.2.8
sign-artifacts
@@ -202,7 +202,7 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 3.5.2
+ 3.5.5
@@ -290,7 +290,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.12
+ 0.8.14
prepare-agent
@@ -354,12 +354,12 @@
com.github.spotbugs
spotbugs-maven-plugin
- 4.8.6.6
+ 4.9.8.2
org.owasp
dependency-check-maven
- 12.0.2
+ 12.2.0
true
diff --git a/servlet-javax/pom.xml b/servlet-javax/pom.xml
index 26c169b5..7e76f0a5 100644
--- a/servlet-javax/pom.xml
+++ b/servlet-javax/pom.xml
@@ -53,7 +53,7 @@
org.eclipse.jetty
jetty-servlet
- 11.0.0
+ 10.0.24
test