diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 486ee6ccb3..088adb9482 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -15,22 +15,19 @@ jobs:
strategy:
matrix:
- jdk: [ 11, 17 ]
- os: [ubuntu-latest, windows-latest]
- exclude:
- - os: windows-latest
- jdk: 11
+ jdk: [ 17, 21 ]
+ os: [ubuntu-latest]
name: Check / Tests -> JDK-${{ matrix.jdk }}/${{ matrix.os }}
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
# we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves
fetch-depth: 0
- name: Set up python 3
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v4
with:
python-version: '3.x'
architecture: 'x64'
@@ -39,7 +36,7 @@ jobs:
- run: pip install -r python/requirements.txt
- name: Set up JDK ${{ matrix.jdk }}
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
java-version: ${{ matrix.jdk }}
distribution: 'adopt'
@@ -55,21 +52,21 @@ jobs:
name: BUILD ${{ github.sha }}
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
# we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves
fetch-depth: 0
- - name: Set up python 2
- uses: actions/setup-python@v2
+ - name: Set up python 3
+ uses: actions/setup-python@v4
with:
- python-version: '2.x'
+ python-version: '3.x'
architecture: 'x64'
- - name: Set up JDK 17
- uses: actions/setup-java@v2
+ - name: Set up JDK 21
+ uses: actions/setup-java@v3
with:
- java-version: 17
+ java-version: 21
distribution: 'adopt'
- name: Build with Ant
@@ -77,7 +74,7 @@ jobs:
run: ant artifact
- name: ziping artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: play-${{ github.sha }}
if-no-files-found: error
diff --git a/documentation/manual/configuration.textile b/documentation/manual/configuration.textile
index 3c4bd74b13..a1c70f6e0c 100644
--- a/documentation/manual/configuration.textile
+++ b/documentation/manual/configuration.textile
@@ -758,7 +758,7 @@ Java source level, which overrides the @java.version@ system property. For examp
bc. java.source=11
-Values: @1.7@ (No longer supported since 1.5.0), @1.8@ (No longer supported since 1.7.0), @9@ (No longer supported since 1.7.0), @10@ (No longer supported since 1.7.0), @11@, @12@, @13@, @14@, @15@, @17@, @18@.
+Values: @1.7@ (No longer supported since 1.5.0), @1.8@ (No longer supported since 1.7.0), @9@ (No longer supported since 1.7.0), @10@ (No longer supported since 1.7.0), @11@, @12@, @13@, @14@, @15@, @17@, @18@, @19@.
Default: @11@
diff --git a/framework/build.xml b/framework/build.xml
index 516feec6e5..40cc92ffa9 100644
--- a/framework/build.xml
+++ b/framework/build.xml
@@ -282,6 +282,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/framework/dependencies.yml b/framework/dependencies.yml
index da2827a326..5f4c8f4e0a 100644
--- a/framework/dependencies.yml
+++ b/framework/dependencies.yml
@@ -10,72 +10,74 @@ require: &allDependencies
- antlr 2.7.7
- com.mchange -> c3p0 0.9.5.5
- com.zaxxer -> HikariCP 5.0.1
- - org.ow2.asm -> asm 9.3
- - org.ow2.asm -> asm-commons 9.3
- - org.ow2.asm -> asm-util 9.3
- - org.ow2.asm -> asm-tree 9.3
- - org.ow2.asm -> asm-analysis 9.3
+ - org.ow2.asm -> asm 9.6
+ - org.ow2.asm -> asm-commons 9.6
+ - org.ow2.asm -> asm-util 9.6
+ - org.ow2.asm -> asm-tree 9.6
+ - org.ow2.asm -> asm-analysis 9.6
- cglib -> cglib 3.3.0
- - com.google.code.gson -> gson 2.9.1
+ - com.google.code.gson -> gson 2.10.1
- com.jamonapi -> jamon 2.82
- com.ning -> async-http-client 1.9.40
- commons-beanutils 1.9.4
- - commons-codec 1.15
+ - commons-codec 1.16.0
- org.apache.commons -> commons-email 1.5
- - commons-fileupload 1.4
- - commons-io 2.11.0
+ - commons-fileupload 1.5
+ - commons-io 2.14.0
- com.google.code.maven-play-plugin.org.apache.commons -> commons-javaflow 1590792
- - commons-lang 2.6
+ - org.apache.commons -> commons-lang3 3.13.0
+ - org.apache.commons -> commons-text 1.10.0
- commons-logging 1.2
- - org.dom4j -> dom4j 2.1.3
+ - org.dom4j -> dom4j 2.1.4
- com.h2database -> h2 1.4.200
- javax.activation -> javax.activation-api 1.2.0
- com.sun.mail -> javax.mail 1.6.2
- javax.inject 1.0
- javax.validation -> validation-api 1.1.0.Final
- - jaxen 1.2.0
- - joda-time 2.11.1
+ - jaxen 2.0.0
+ - joda-time 2.12.5
- org.hamcrest -> hamcrest-all 1.3
- junit 4.13.2
- jregex 1.2_01
- - log4j-api 2.18.0
- - log4j-core 2.18.0
+ - org.apache.logging.log4j -> log4j-api 2.20.0
+ - org.apache.logging.log4j -> log4j-core 2.20.0
- net.sf.ehcache -> ehcache 2.10.9.2
- net.sf.ezmorph -> ezmorph 1.0.6
- net.sf.jsr107cache -> jsr107cache 1.1
- net.sf.oval -> oval 3.1.0
- oauth.signpost -> signpost-core 1.2.1.2
- org.apache.geronimo.specs -> geronimo-servlet_2.5_spec 1.2
- - org.apache.ivy -> ivy 2.5.0
- - org.bouncycastle -> bcprov-jdk18on 1.71.1
- - org.bouncycastle -> bcpkix-jdk18on 1.71.1
- - org.bouncycastle -> bcutil-jdk18on 1.71.1
- - org.codehaus.groovy -> groovy 3.0.12
- - org.codehaus.groovy -> groovy-xml 3.0.12
- - org.eclipse.jdt -> org.eclipse.jdt.core 3.31.0
+ - org.apache.ivy -> ivy 2.5.2
+ - org.bouncycastle -> bcprov-jdk18on 1.76
+ - org.bouncycastle -> bcpkix-jdk18on 1.76
+ - org.bouncycastle -> bcutil-jdk18on 1.76
+ - org.codehaus.groovy -> groovy 3.0.19
+ - org.codehaus.groovy -> groovy-xml 3.0.19
+ - org.eclipse.jdt -> org.eclipse.jdt.core 3.36.0
+ - org.eclipse.jdt -> ecj 3.36.0
- org.hibernate -> hibernate-core 5.6.5.Final.patched
- - net.bytebuddy -> byte-buddy 1.12.16
+ - net.bytebuddy -> byte-buddy 1.14.9
- javax.persistence -> javax.persistence-api 2.2
- org.hibernate.common -> hibernate-commons-annotations 5.1.2.Final
- - org.hibernate -> hibernate-validator 5.4.1.Final
- - org.jboss -> jandex 2.4.3.Final
- - org.jboss.logging -> jboss-logging 3.5.0.Final
+ - org.hibernate -> hibernate-validator 5.4.3.Final
+ - io.smallrye -> jandex 3.1.5
+ - org.jboss.logging -> jboss-logging 3.5.3.Final
- org.jboss.spec.javax.transaction -> jboss-transaction-api_1.2_spec 1.1.1.Final
- javax.persistence -> javax.persistence-api 2.2
- javax.xml.bind -> jaxb-api 2.3.1
- - org.glassfish.jaxb -> jaxb-runtime 2.3.6
- - com.fasterxml -> classmate 1.5.1
- - org.hibernate -> hibernate-c3p0 5.6.11.Final
- - org.hibernate -> hibernate-ehcache 5.6.11.Final
+ - org.glassfish.jaxb -> jaxb-runtime 2.3.8
+ - com.fasterxml -> classmate 1.6.0
+ - org.hibernate -> hibernate-c3p0 5.6.15.Final
+ - org.hibernate -> hibernate-ehcache 5.6.15.Final
- com.mchange -> mchange-commons-java 0.2.20
- - org.javassist -> javassist 3.29.1-GA
+ - org.javassist -> javassist 3.29.2-GA
- io.netty -> netty 3.10.6.Final
- - org.postgresql -> postgresql 42.5.0
- - org.slf4j -> slf4j-api 1.7.36
- - org.apache.logging.log4j -> log4j-slf4j-impl 2.18.0
- - org.yaml -> snakeyaml 1.32
+ - org.postgresql -> postgresql 42.6.0
+ - org.slf4j -> slf4j-api 2.0.9
+ - org.apache.logging.log4j -> log4j-slf4j2-impl 2.20.0
+ - org.yaml -> snakeyaml 2.2
- net.spy -> spymemcached 2.12.3
- - com.thoughtworks.xstream -> xstream 1.4.19
+ - com.thoughtworks.xstream -> xstream 1.4.20
- xmlpull 1.1.3.4d_b4_min
- org.apache.logging.log4j -> log4j-web 2.18.0
diff --git a/framework/lib/asm-9.3.jar b/framework/lib/asm-9.3.jar
deleted file mode 100644
index bd8b948601..0000000000
Binary files a/framework/lib/asm-9.3.jar and /dev/null differ
diff --git a/framework/lib/asm-9.6.jar b/framework/lib/asm-9.6.jar
new file mode 100644
index 0000000000..cc1c2cd8e4
Binary files /dev/null and b/framework/lib/asm-9.6.jar differ
diff --git a/framework/lib/asm-analysis-9.3.jar b/framework/lib/asm-analysis-9.3.jar
deleted file mode 100644
index 6bbfb05cbc..0000000000
Binary files a/framework/lib/asm-analysis-9.3.jar and /dev/null differ
diff --git a/framework/lib/asm-analysis-9.6.jar b/framework/lib/asm-analysis-9.6.jar
new file mode 100644
index 0000000000..f4e8691b97
Binary files /dev/null and b/framework/lib/asm-analysis-9.6.jar differ
diff --git a/framework/lib/asm-commons-9.3.jar b/framework/lib/asm-commons-9.3.jar
deleted file mode 100644
index 3ce4b82cb6..0000000000
Binary files a/framework/lib/asm-commons-9.3.jar and /dev/null differ
diff --git a/framework/lib/asm-commons-9.6.jar b/framework/lib/asm-commons-9.6.jar
new file mode 100644
index 0000000000..75f3bad86a
Binary files /dev/null and b/framework/lib/asm-commons-9.6.jar differ
diff --git a/framework/lib/asm-tree-9.3.jar b/framework/lib/asm-tree-9.3.jar
deleted file mode 100644
index 55ef2a925e..0000000000
Binary files a/framework/lib/asm-tree-9.3.jar and /dev/null differ
diff --git a/framework/lib/asm-tree-9.6.jar b/framework/lib/asm-tree-9.6.jar
new file mode 100644
index 0000000000..9fe5275876
Binary files /dev/null and b/framework/lib/asm-tree-9.6.jar differ
diff --git a/framework/lib/asm-util-9.3.jar b/framework/lib/asm-util-9.3.jar
deleted file mode 100644
index 15e5efde41..0000000000
Binary files a/framework/lib/asm-util-9.3.jar and /dev/null differ
diff --git a/framework/lib/asm-util-9.6.jar b/framework/lib/asm-util-9.6.jar
new file mode 100644
index 0000000000..cc109b03d0
Binary files /dev/null and b/framework/lib/asm-util-9.6.jar differ
diff --git a/framework/lib/bcpkix-jdk18on-1.71.1.jar b/framework/lib/bcpkix-jdk18on-1.71.1.jar
deleted file mode 100644
index 40c84725f9..0000000000
Binary files a/framework/lib/bcpkix-jdk18on-1.71.1.jar and /dev/null differ
diff --git a/framework/lib/bcpkix-jdk18on-1.76.jar b/framework/lib/bcpkix-jdk18on-1.76.jar
new file mode 100644
index 0000000000..16c2f0ba85
Binary files /dev/null and b/framework/lib/bcpkix-jdk18on-1.76.jar differ
diff --git a/framework/lib/bcprov-jdk18on-1.71.1.jar b/framework/lib/bcprov-jdk18on-1.76.jar
similarity index 53%
rename from framework/lib/bcprov-jdk18on-1.71.1.jar
rename to framework/lib/bcprov-jdk18on-1.76.jar
index 2bec110f1d..c0c899419c 100644
Binary files a/framework/lib/bcprov-jdk18on-1.71.1.jar and b/framework/lib/bcprov-jdk18on-1.76.jar differ
diff --git a/framework/lib/bcutil-jdk18on-1.71.1.jar b/framework/lib/bcutil-jdk18on-1.76.jar
similarity index 58%
rename from framework/lib/bcutil-jdk18on-1.71.1.jar
rename to framework/lib/bcutil-jdk18on-1.76.jar
index b20e960461..2c2ab91362 100644
Binary files a/framework/lib/bcutil-jdk18on-1.71.1.jar and b/framework/lib/bcutil-jdk18on-1.76.jar differ
diff --git a/framework/lib/byte-buddy-1.12.16.jar b/framework/lib/byte-buddy-1.12.16.jar
deleted file mode 100644
index 3f70b08f8a..0000000000
Binary files a/framework/lib/byte-buddy-1.12.16.jar and /dev/null differ
diff --git a/framework/lib/byte-buddy-1.14.9.jar b/framework/lib/byte-buddy-1.14.9.jar
new file mode 100644
index 0000000000..ea387ae3e2
Binary files /dev/null and b/framework/lib/byte-buddy-1.14.9.jar differ
diff --git a/framework/lib/classmate-1.5.1.jar b/framework/lib/classmate-1.6.0.jar
similarity index 54%
rename from framework/lib/classmate-1.5.1.jar
rename to framework/lib/classmate-1.6.0.jar
index 819f5eaf09..e30bc6533f 100644
Binary files a/framework/lib/classmate-1.5.1.jar and b/framework/lib/classmate-1.6.0.jar differ
diff --git a/framework/lib/commons-codec-1.15.jar b/framework/lib/commons-codec-1.15.jar
deleted file mode 100644
index f14985ac92..0000000000
Binary files a/framework/lib/commons-codec-1.15.jar and /dev/null differ
diff --git a/framework/lib/commons-codec-1.16.0.jar b/framework/lib/commons-codec-1.16.0.jar
new file mode 100644
index 0000000000..854fc7eb34
Binary files /dev/null and b/framework/lib/commons-codec-1.16.0.jar differ
diff --git a/framework/lib/commons-fileupload-1.4.jar b/framework/lib/commons-fileupload-1.4.jar
deleted file mode 100644
index e25a6bc951..0000000000
Binary files a/framework/lib/commons-fileupload-1.4.jar and /dev/null differ
diff --git a/framework/lib/commons-fileupload-1.5.jar b/framework/lib/commons-fileupload-1.5.jar
new file mode 100644
index 0000000000..5e608753c1
Binary files /dev/null and b/framework/lib/commons-fileupload-1.5.jar differ
diff --git a/framework/lib/commons-io-2.11.0.jar b/framework/lib/commons-io-2.11.0.jar
deleted file mode 100644
index be507d94fd..0000000000
Binary files a/framework/lib/commons-io-2.11.0.jar and /dev/null differ
diff --git a/framework/lib/commons-io-2.14.0.jar b/framework/lib/commons-io-2.14.0.jar
new file mode 100644
index 0000000000..4273f3223c
Binary files /dev/null and b/framework/lib/commons-io-2.14.0.jar differ
diff --git a/framework/lib/commons-lang-2.6.jar b/framework/lib/commons-lang-2.6.jar
deleted file mode 100644
index 98467d3a65..0000000000
Binary files a/framework/lib/commons-lang-2.6.jar and /dev/null differ
diff --git a/framework/lib/commons-lang3-3.13.0.jar b/framework/lib/commons-lang3-3.13.0.jar
new file mode 100644
index 0000000000..891540f404
Binary files /dev/null and b/framework/lib/commons-lang3-3.13.0.jar differ
diff --git a/framework/lib/commons-text-1.10.0.jar b/framework/lib/commons-text-1.10.0.jar
new file mode 100644
index 0000000000..beada0274f
Binary files /dev/null and b/framework/lib/commons-text-1.10.0.jar differ
diff --git a/framework/lib/dom4j-2.1.3.jar b/framework/lib/dom4j-2.1.3.jar
deleted file mode 100644
index 9a4f5d2731..0000000000
Binary files a/framework/lib/dom4j-2.1.3.jar and /dev/null differ
diff --git a/framework/lib/dom4j-2.1.4.jar b/framework/lib/dom4j-2.1.4.jar
new file mode 100644
index 0000000000..0769bed921
Binary files /dev/null and b/framework/lib/dom4j-2.1.4.jar differ
diff --git a/framework/lib/ecj-3.36.0.jar b/framework/lib/ecj-3.36.0.jar
new file mode 100644
index 0000000000..5fe2e5dc71
Binary files /dev/null and b/framework/lib/ecj-3.36.0.jar differ
diff --git a/framework/lib/groovy-3.0.12.jar b/framework/lib/groovy-3.0.19.jar
similarity index 81%
rename from framework/lib/groovy-3.0.12.jar
rename to framework/lib/groovy-3.0.19.jar
index fc1b0378f1..ea5097adf6 100644
Binary files a/framework/lib/groovy-3.0.12.jar and b/framework/lib/groovy-3.0.19.jar differ
diff --git a/framework/lib/groovy-xml-3.0.12.jar b/framework/lib/groovy-xml-3.0.19.jar
similarity index 82%
rename from framework/lib/groovy-xml-3.0.12.jar
rename to framework/lib/groovy-xml-3.0.19.jar
index c49f8d8674..6728a70e44 100644
Binary files a/framework/lib/groovy-xml-3.0.12.jar and b/framework/lib/groovy-xml-3.0.19.jar differ
diff --git a/framework/lib/gson-2.10.1.jar b/framework/lib/gson-2.10.1.jar
new file mode 100644
index 0000000000..a88c5bd9b5
Binary files /dev/null and b/framework/lib/gson-2.10.1.jar differ
diff --git a/framework/lib/gson-2.9.1.jar b/framework/lib/gson-2.9.1.jar
deleted file mode 100644
index 8a663ecceb..0000000000
Binary files a/framework/lib/gson-2.9.1.jar and /dev/null differ
diff --git a/framework/lib/hibernate-c3p0-5.6.11.Final.jar b/framework/lib/hibernate-c3p0-5.6.15.Final.jar
similarity index 72%
rename from framework/lib/hibernate-c3p0-5.6.11.Final.jar
rename to framework/lib/hibernate-c3p0-5.6.15.Final.jar
index 5f03d02273..21e5801556 100644
Binary files a/framework/lib/hibernate-c3p0-5.6.11.Final.jar and b/framework/lib/hibernate-c3p0-5.6.15.Final.jar differ
diff --git a/framework/lib/hibernate-ehcache-5.6.11.Final.jar b/framework/lib/hibernate-ehcache-5.6.15.Final.jar
similarity index 93%
rename from framework/lib/hibernate-ehcache-5.6.11.Final.jar
rename to framework/lib/hibernate-ehcache-5.6.15.Final.jar
index 4692e2080a..7e927e4911 100644
Binary files a/framework/lib/hibernate-ehcache-5.6.11.Final.jar and b/framework/lib/hibernate-ehcache-5.6.15.Final.jar differ
diff --git a/framework/lib/hibernate-validator-5.4.1.Final.jar b/framework/lib/hibernate-validator-5.4.3.Final.jar
similarity index 76%
rename from framework/lib/hibernate-validator-5.4.1.Final.jar
rename to framework/lib/hibernate-validator-5.4.3.Final.jar
index 1975846ff4..e9870ebf29 100644
Binary files a/framework/lib/hibernate-validator-5.4.1.Final.jar and b/framework/lib/hibernate-validator-5.4.3.Final.jar differ
diff --git a/framework/lib/ivy-2.5.0.jar b/framework/lib/ivy-2.5.0.jar
deleted file mode 100644
index eb7569f78b..0000000000
Binary files a/framework/lib/ivy-2.5.0.jar and /dev/null differ
diff --git a/framework/lib/ivy-2.5.2.jar b/framework/lib/ivy-2.5.2.jar
new file mode 100644
index 0000000000..7d2648a898
Binary files /dev/null and b/framework/lib/ivy-2.5.2.jar differ
diff --git a/framework/lib/jandex-2.4.3.Final.jar b/framework/lib/jandex-2.4.3.Final.jar
deleted file mode 100644
index 7f8e2a05f3..0000000000
Binary files a/framework/lib/jandex-2.4.3.Final.jar and /dev/null differ
diff --git a/framework/lib/jandex-3.1.5.jar b/framework/lib/jandex-3.1.5.jar
new file mode 100644
index 0000000000..edea66574f
Binary files /dev/null and b/framework/lib/jandex-3.1.5.jar differ
diff --git a/framework/lib/javassist-3.29.1-GA.jar b/framework/lib/javassist-3.29.2-GA.jar
similarity index 91%
rename from framework/lib/javassist-3.29.1-GA.jar
rename to framework/lib/javassist-3.29.2-GA.jar
index aa7b5a98e2..68fc301018 100644
Binary files a/framework/lib/javassist-3.29.1-GA.jar and b/framework/lib/javassist-3.29.2-GA.jar differ
diff --git a/framework/lib/jaxb-runtime-2.3.6.jar b/framework/lib/jaxb-runtime-2.3.8.jar
similarity index 72%
rename from framework/lib/jaxb-runtime-2.3.6.jar
rename to framework/lib/jaxb-runtime-2.3.8.jar
index dbc5e50d36..7b0e4ac014 100644
Binary files a/framework/lib/jaxb-runtime-2.3.6.jar and b/framework/lib/jaxb-runtime-2.3.8.jar differ
diff --git a/framework/lib/jaxen-1.2.0.jar b/framework/lib/jaxen-1.2.0.jar
deleted file mode 100644
index c819d63b6a..0000000000
Binary files a/framework/lib/jaxen-1.2.0.jar and /dev/null differ
diff --git a/framework/lib/jaxen-2.0.0.jar b/framework/lib/jaxen-2.0.0.jar
new file mode 100644
index 0000000000..17030697ea
Binary files /dev/null and b/framework/lib/jaxen-2.0.0.jar differ
diff --git a/framework/lib/jboss-logging-3.5.0.Final.jar b/framework/lib/jboss-logging-3.5.0.Final.jar
deleted file mode 100644
index d39dfcfa58..0000000000
Binary files a/framework/lib/jboss-logging-3.5.0.Final.jar and /dev/null differ
diff --git a/framework/lib/jboss-logging-3.5.3.Final.jar b/framework/lib/jboss-logging-3.5.3.Final.jar
new file mode 100644
index 0000000000..a922e47523
Binary files /dev/null and b/framework/lib/jboss-logging-3.5.3.Final.jar differ
diff --git a/framework/lib/joda-time-2.11.1.jar b/framework/lib/joda-time-2.11.1.jar
deleted file mode 100644
index b1697b5510..0000000000
Binary files a/framework/lib/joda-time-2.11.1.jar and /dev/null differ
diff --git a/framework/lib/joda-time-2.12.5.jar b/framework/lib/joda-time-2.12.5.jar
new file mode 100644
index 0000000000..3aaca7dd61
Binary files /dev/null and b/framework/lib/joda-time-2.12.5.jar differ
diff --git a/framework/lib/log4j-api-2.18.0.jar b/framework/lib/log4j-api-2.18.0.jar
deleted file mode 100644
index b4e933f7ec..0000000000
Binary files a/framework/lib/log4j-api-2.18.0.jar and /dev/null differ
diff --git a/framework/lib/log4j-api-2.20.0.jar b/framework/lib/log4j-api-2.20.0.jar
new file mode 100644
index 0000000000..29d1b52a2c
Binary files /dev/null and b/framework/lib/log4j-api-2.20.0.jar differ
diff --git a/framework/lib/log4j-core-2.18.0.jar b/framework/lib/log4j-core-2.20.0.jar
similarity index 61%
rename from framework/lib/log4j-core-2.18.0.jar
rename to framework/lib/log4j-core-2.20.0.jar
index d6486fdf3d..54dafcd0ca 100644
Binary files a/framework/lib/log4j-core-2.18.0.jar and b/framework/lib/log4j-core-2.20.0.jar differ
diff --git a/framework/lib/log4j-slf4j-impl-2.18.0.jar b/framework/lib/log4j-slf4j-impl-2.18.0.jar
deleted file mode 100644
index cc41910c32..0000000000
Binary files a/framework/lib/log4j-slf4j-impl-2.18.0.jar and /dev/null differ
diff --git a/framework/lib/log4j-slf4j2-impl-2.20.0.jar b/framework/lib/log4j-slf4j2-impl-2.20.0.jar
new file mode 100644
index 0000000000..075498f422
Binary files /dev/null and b/framework/lib/log4j-slf4j2-impl-2.20.0.jar differ
diff --git a/framework/lib/org.eclipse.jdt.core-3.31.0.jar b/framework/lib/org.eclipse.jdt.core-3.31.0.jar
deleted file mode 100644
index 3a49c313b8..0000000000
Binary files a/framework/lib/org.eclipse.jdt.core-3.31.0.jar and /dev/null differ
diff --git a/framework/lib/org.eclipse.jdt.core-3.36.0.jar b/framework/lib/org.eclipse.jdt.core-3.36.0.jar
new file mode 100644
index 0000000000..c7a65695a9
Binary files /dev/null and b/framework/lib/org.eclipse.jdt.core-3.36.0.jar differ
diff --git a/framework/lib/postgresql-42.5.0.jar b/framework/lib/postgresql-42.6.0.jar
similarity index 60%
rename from framework/lib/postgresql-42.5.0.jar
rename to framework/lib/postgresql-42.6.0.jar
index 49b9556223..02f902afc5 100644
Binary files a/framework/lib/postgresql-42.5.0.jar and b/framework/lib/postgresql-42.6.0.jar differ
diff --git a/framework/lib/slf4j-api-1.7.36.jar b/framework/lib/slf4j-api-1.7.36.jar
deleted file mode 100644
index 7d3ce68d25..0000000000
Binary files a/framework/lib/slf4j-api-1.7.36.jar and /dev/null differ
diff --git a/framework/lib/slf4j-api-2.0.9.jar b/framework/lib/slf4j-api-2.0.9.jar
new file mode 100644
index 0000000000..3796afe2bd
Binary files /dev/null and b/framework/lib/slf4j-api-2.0.9.jar differ
diff --git a/framework/lib/snakeyaml-1.32.jar b/framework/lib/snakeyaml-1.32.jar
deleted file mode 100644
index cd73a293a6..0000000000
Binary files a/framework/lib/snakeyaml-1.32.jar and /dev/null differ
diff --git a/framework/lib/snakeyaml-2.2.jar b/framework/lib/snakeyaml-2.2.jar
new file mode 100644
index 0000000000..275dd5700a
Binary files /dev/null and b/framework/lib/snakeyaml-2.2.jar differ
diff --git a/framework/lib/xstream-1.4.19.jar b/framework/lib/xstream-1.4.20.jar
similarity index 82%
rename from framework/lib/xstream-1.4.19.jar
rename to framework/lib/xstream-1.4.20.jar
index 95d1c6a644..a8f7cd8028 100644
Binary files a/framework/lib/xstream-1.4.19.jar and b/framework/lib/xstream-1.4.20.jar differ
diff --git a/framework/pym/play/cmdloader.py b/framework/pym/play/cmdloader.py
index 459f6850fc..862bd1e5f6 100644
--- a/framework/pym/play/cmdloader.py
+++ b/framework/pym/play/cmdloader.py
@@ -1,5 +1,6 @@
from __future__ import print_function
-import imp
+import importlib.util
+import importlib.machinery
import os
import warnings
import traceback
@@ -22,8 +23,9 @@ def load_core(self):
for filename in os.listdir(self.path):
if filename != "__init__.py" and filename.endswith(".py"):
try:
- name = filename.replace(".py", "")
- mod = load_python_module(name, self.path)
+ module_name = filename.replace(".py", "")
+ module_path = os.path.join(self.path, filename)
+ mod = load_python_module(module_name, module_path)
self._load_cmd_from(mod)
except Exception as e:
print (e)
@@ -35,7 +37,8 @@ def load_play_module(self, modname):
if os.path.exists(commands):
try:
leafname = os.path.basename(modname).split('.')[0]
- mod = imp.load_source(leafname, os.path.join(modname, "commands.py"))
+ # print(f"Loading commands for module \"{modname}\"")
+ mod = load_source(leafname, os.path.join(modname, "commands.py"))
self._load_cmd_from(mod)
except Exception as e:
print('~')
@@ -55,12 +58,26 @@ def _load_cmd_from(self, mod):
if 'MODULE' in dir(mod):
self.modules[mod.MODULE] = mod
+
def load_python_module(name, location):
- mod_desc = imp.find_module(name, [location])
- mod_file = mod_desc[0]
- try:
- return imp.load_module(name, mod_desc[0], mod_desc[1], mod_desc[2])
- finally:
- if mod_file != None and not mod_file.closed:
- mod_file.close()
+# print(f"Loading module \"{name}\" at location \"{location}\"")
+ spec = importlib.util.spec_from_file_location(name, location)
+ if spec is None:
+ raise ImportError(f"Could not find module {name} at {location}")
+
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
+
+ return mod
+
+# Obtained from https://docs.python.org/dev/whatsnew/3.12.html#imp
+def load_source(modname, filename):
+ loader = importlib.machinery.SourceFileLoader(modname, filename)
+ spec = importlib.util.spec_from_file_location(modname, filename, loader=loader)
+ module = importlib.util.module_from_spec(spec)
+ # The module is always executed and not cached in sys.modules.
+ # Uncomment the following line to cache the module.
+ # sys.modules[module.__name__] = module
+ loader.exec_module(module)
+ return module
diff --git a/framework/pym/play/commands/autotest.py b/framework/pym/play/commands/autotest.py
index 09c115e1cc..808f3da1d9 100644
--- a/framework/pym/play/commands/autotest.py
+++ b/framework/pym/play/commands/autotest.py
@@ -149,12 +149,20 @@ def autotest(app, args):
opener.open('%s://localhost:%s/@kill' % (protocol, http_port))
except Exception as e:
pass
-
+
+ testCompleted = False
if os.path.exists(os.path.join(app.path, 'test-result/result.passed')):
+ testCompleted = True
print("~ All tests passed")
print("~")
testspassed = True
if os.path.exists(os.path.join(app.path, 'test-result/result.failed')):
+ testCompleted = True
print("~ Some tests have failed. See file://%s for results" % test_result)
print("~")
sys.exit(1)
+
+ if not testCompleted:
+ print("~ Tests did not successfully complete.")
+ print("~")
+ sys.exit(-1)
diff --git a/framework/pym/play/commands/modulesrepo.py b/framework/pym/play/commands/modulesrepo.py
index d76681cc42..5a993a0ca8 100644
--- a/framework/pym/play/commands/modulesrepo.py
+++ b/framework/pym/play/commands/modulesrepo.py
@@ -12,7 +12,7 @@
import urllib.request, urllib.error, urllib.parse
import shutil
import string
-import imp
+import importlib.util
import time
import urllib.request, urllib.parse, urllib.error
import yaml
@@ -40,8 +40,16 @@
def load_module(name):
base = os.path.normpath(os.path.dirname(os.path.realpath(sys.argv[0])))
- mod_desc = imp.find_module(name, [os.path.join(base, 'framework/pym')])
- return imp.load_module(name, mod_desc[0], mod_desc[1], mod_desc[2])
+ module_path = os.path.join(base, 'framework/pym', name, '__init__.py')
+
+ spec = importlib.util.spec_from_file_location(name, module_path)
+ if spec is None:
+ raise ImportError(f"Could not find module \"{name}\" at \"{module_path}\"")
+
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
+
+ return mod
json = load_module('simplejson')
@@ -117,7 +125,7 @@ def retrieve(self, url, destination, callback=None):
return self.size
def chunk_read(self, response, destination, chunk_size=8192, report_hook=None):
- total_size = response.info().getheader('Content-Length').strip()
+ total_size = response.headers['Content-Length'].strip()
total_size = int(total_size)
bytes_so_far = 0
file = open(destination,"wb")
diff --git a/framework/src/play/classloading/ApplicationClassloader.java b/framework/src/play/classloading/ApplicationClassloader.java
index 035d645a2a..b8a83df17f 100644
--- a/framework/src/play/classloading/ApplicationClassloader.java
+++ b/framework/src/play/classloading/ApplicationClassloader.java
@@ -29,7 +29,8 @@
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
+
import play.Logger;
import play.Play;
import play.cache.Cache;
@@ -102,7 +103,7 @@ protected Class> loadClass(String name, boolean resolve) throws ClassNotFoundE
public Class> loadApplicationClass(String name) {
if (ApplicationClass.isClass(name)) {
- Class maybeAlreadyLoaded = findLoadedClass(name);
+ Class> maybeAlreadyLoaded = findLoadedClass(name);
if (maybeAlreadyLoaded != null) {
return maybeAlreadyLoaded;
}
@@ -405,9 +406,9 @@ private int computePathHash() {
*
* @return The list of well defined Class
*/
- public List getAllClasses() {
+ public List> getAllClasses() {
if (allClasses == null) {
- List result = new ArrayList<>();
+ List> result = new ArrayList<>();
if (Play.usePrecompiled) {
@@ -416,7 +417,7 @@ public List getAllClasses() {
Play.classes.clear();
for (ApplicationClass applicationClass : applicationClasses) {
Play.classes.add(applicationClass);
- Class clazz = loadApplicationClass(applicationClass.name);
+ Class> clazz = loadApplicationClass(applicationClass.name);
applicationClass.javaClass = clazz;
applicationClass.compiled = true;
result.add(clazz);
@@ -443,7 +444,7 @@ public List getAllClasses() {
}
for (ApplicationClass applicationClass : Play.classes.all()) {
- Class clazz = loadApplicationClass(applicationClass.name);
+ Class> clazz = loadApplicationClass(applicationClass.name);
if (clazz != null) {
result.add(clazz);
}
@@ -466,7 +467,7 @@ public List getAllClasses() {
return allClasses;
}
- private List allClasses;
+ private List> allClasses;
private Map allClassesByNormalizedName;
/**
@@ -501,7 +502,7 @@ public List getAssignableClasses(Class clazz) {
* The class name.
* @return a class
*/
- public Class getClassIgnoreCase(String name) {
+ public Class> getClassIgnoreCase(String name) {
getAllClasses();
String nameLowerCased = name.toLowerCase();
ApplicationClass c = allClassesByNormalizedName.get(nameLowerCased);
@@ -521,17 +522,17 @@ public Class getClassIgnoreCase(String name) {
* The annotation class.
* @return A list of class
*/
- public List getAnnotatedClasses(Class extends Annotation> clazz) {
+ public List> getAnnotatedClasses(Class extends Annotation> clazz) {
getAllClasses();
- List results = new ArrayList<>();
+ List> results = new ArrayList<>();
for (ApplicationClass c : Play.classes.getAnnotatedClasses(clazz)) {
results.add(c.javaClass);
}
return results;
}
- public List getAnnotatedClasses(Class[] clazz) {
- List results = new ArrayList<>();
+ public List> getAnnotatedClasses(Class extends Annotation>[] clazz) {
+ List> results = new ArrayList<>();
for (Class extends Annotation> cl : clazz) {
results.addAll(getAnnotatedClasses(cl));
}
diff --git a/framework/src/play/classloading/ApplicationCompiler.java b/framework/src/play/classloading/ApplicationCompiler.java
index f0ce32ef34..83d8276284 100644
--- a/framework/src/play/classloading/ApplicationCompiler.java
+++ b/framework/src/play/classloading/ApplicationCompiler.java
@@ -34,16 +34,19 @@
*/
public class ApplicationCompiler {
- private static final String JAVA_SOURCE_DEFAULT_VERSION = "11";
- static final Map compatibleJavaVersions = Map.of(
- "11", CompilerOptions.VERSION_11,
- "12", CompilerOptions.VERSION_12,
- "13", CompilerOptions.VERSION_13,
- "14", CompilerOptions.VERSION_14,
- "15", CompilerOptions.VERSION_15,
- "16", CompilerOptions.VERSION_16,
- "17", CompilerOptions.VERSION_17,
- "18", CompilerOptions.VERSION_18
+ private static final String JAVA_SOURCE_DEFAULT_VERSION = "17";
+ static final Map compatibleJavaVersions = Map.ofEntries(
+ Map.entry("11", CompilerOptions.VERSION_11),
+ Map.entry("12", CompilerOptions.VERSION_12),
+ Map.entry("13", CompilerOptions.VERSION_13),
+ Map.entry("14", CompilerOptions.VERSION_14),
+ Map.entry("15", CompilerOptions.VERSION_15),
+ Map.entry("16", CompilerOptions.VERSION_16),
+ Map.entry("17", CompilerOptions.VERSION_17),
+ Map.entry("18", CompilerOptions.VERSION_18),
+ Map.entry("19", CompilerOptions.VERSION_19),
+ Map.entry("20", CompilerOptions.VERSION_20),
+ Map.entry("21", CompilerOptions.VERSION_21)
);
final Map packagesCache = new HashMap<>();
diff --git a/framework/src/play/data/binding/AnnotationHelper.java b/framework/src/play/data/binding/AnnotationHelper.java
index 16ae1bb031..ec1f904124 100644
--- a/framework/src/play/data/binding/AnnotationHelper.java
+++ b/framework/src/play/data/binding/AnnotationHelper.java
@@ -6,7 +6,7 @@
import java.util.Date;
import java.util.Locale;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import play.data.binding.types.DateBinder;
import play.i18n.Lang;
diff --git a/framework/src/play/data/binding/Binder.java b/framework/src/play/data/binding/Binder.java
index e2a02b6143..3a8b775a19 100644
--- a/framework/src/play/data/binding/Binder.java
+++ b/framework/src/play/data/binding/Binder.java
@@ -1,6 +1,6 @@
package play.data.binding;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import play.Logger;
import play.Play;
@@ -435,11 +435,11 @@ private static Object bindEnum(Class> clazz, ParamNode paramNode) {
}
private static Object bindMap(Type type, ParamNode paramNode, BindingAnnotations bindingAnnotations) {
- Class keyClass = String.class;
- Class valueClass = String.class;
+ Class> keyClass = String.class;
+ Class> valueClass = String.class;
if (type instanceof ParameterizedType) {
- keyClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0];
- valueClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[1];
+ keyClass = (Class>) ((ParameterizedType) type).getActualTypeArguments()[0];
+ valueClass = (Class>) ((ParameterizedType) type).getActualTypeArguments()[1];
}
Map