Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ff34095
Upgrade to Java 17, Derby 10.16.1.1, and fix SLF4J bridge
mraible Aug 11, 2026
68e4af4
Remove OAuth 1.0a, OpenID 2.0 filter, and unused dependencies
mraible Aug 11, 2026
a1c7377
Fork XmlRpcServlet and AtomServlet into Roller codebase
mraible Aug 11, 2026
44e81c8
Migrate to Jakarta EE 10, Spring 7, Struts 7, and EclipseLink 5
mraible Aug 11, 2026
01086d6
Upgrade Jetty Maven plugin to 12, Tomcat to 10.1, and PostgreSQL to 16
mraible Aug 11, 2026
96f4e79
Update CI matrix to require Java 17 minimum
mraible Aug 11, 2026
ecb194d
Fix it-selenium module for Jakarta EE 10 migration
mraible Aug 11, 2026
33fe72e
Fix Struts DTD reference: struts-7.0.dtd does not exist
mraible Aug 11, 2026
6621c85
Rename fileUpload interceptor to actionFileUpload for Struts 7
mraible Aug 11, 2026
2738254
Fix Struts 7 parameter binding, OGNL allowlist, and static content path
mraible Aug 11, 2026
191ff81
Fix mvn jetty:run for the Jetty 12 plugin
mraible Aug 11, 2026
7867dc1
Permit unmatched requests explicitly under Spring Security 7
mraible Aug 11, 2026
2a39596
Serve WebJar assets from META-INF/resources instead of the webjars se…
mraible Aug 11, 2026
b9dff98
Restore the bootstrap form theme via the Jakarta struts2-bootstrap-pl…
mraible Aug 11, 2026
d12aa22
Fix the it-selenium jetty harness for the Jetty 12 plugin
mraible Aug 11, 2026
e62111e
Deliver uploaded files via Struts 7's UploadedFilesAware interface
mraible Aug 12, 2026
47a8cdd
Test against JDK 25 and upgrade Mockito so it can mock there
mraible Aug 12, 2026
dd2b283
Fix AtomPub basic authentication checking the wrong user's password
mraible Aug 12, 2026
14937ad
Run CI on pull requests that target feature branches so stacked PRs g…
mraible Aug 12, 2026
a908293
Restore null path info handling in the forked Atom adapter and stop r…
mraible Aug 13, 2026
b58edfd
Target Jakarta EE 11 so Spring Framework 7 runs on its supported base…
mraible Aug 13, 2026
aec70d0
Refuse stale AtomPub auth schemes and answer missing Content-Type wit…
mraible Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ on:
push:
branches: [master]
pull_request:
branches: [master]
branches: [master, 'feature/**']

jobs:
build-test:
Expand All @@ -32,7 +32,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java: [ '11', '17', '21', '23' ]
java: [ '17', '21', '25' ]

steps:
- name: Set up JDK ${{ matrix.java }}
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:

# only on integration and only once in this matrix
- name: Upload Dev Build on Integration
if: ${{ (matrix.java == '11') && (github.event_name == 'push') }}
if: ${{ (matrix.java == '17') && (github.event_name == 'push') }}
uses: actions/upload-artifact@v4
with:
name: dev-build
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ docker/postgresql-data
docker/roller-data
assembly-release/release.sh
it-selenium/overlays/
logs/
12 changes: 7 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

# STAGE 1 - BUILD ------------------------------------------------

FROM maven:3-openjdk-17-slim as builder
FROM maven:3-eclipse-temurin-17 AS builder

COPY ./docker /project/docker

Expand All @@ -38,7 +38,7 @@ mvn -Duser.home=/builder/home -DskipTests=true -B clean install

# STAGE 2 - PACKAGE ------------------------------------------------

FROM tomcat:9-jdk17-openjdk-slim
FROM tomcat:11.0-jdk17-temurin

# Remove existing Tomcat webapps

Expand Down Expand Up @@ -70,9 +70,11 @@ RUN mkdir -p data/mediafiles data/searchindex

WORKDIR /usr/local/tomcat/lib
RUN apt-get update && apt-get install -y wget
RUN wget -O postgresql.jar https://jdbc.postgresql.org/download/postgresql-42.3.1.jar
RUN wget https://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar
#RUN wget https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar
RUN wget -O postgresql.jar https://jdbc.postgresql.org/download/postgresql-42.7.4.jar
RUN wget https://repo1.maven.org/maven2/org/eclipse/angus/angus-mail/2.0.3/angus-mail-2.0.3.jar
RUN wget https://repo1.maven.org/maven2/jakarta/mail/jakarta.mail-api/2.1.3/jakarta.mail-api-2.1.3.jar
RUN wget https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/2.1.3/jakarta.activation-api-2.1.3.jar
RUN wget https://repo1.maven.org/maven2/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.jar

# Add Roller entry-point and go!

Expand Down
155 changes: 73 additions & 82 deletions app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@ limitations under the License.
<packaging>war</packaging>

<properties>
<servlet.version>4.0.1</servlet.version>
<jsp-api.version>2.2</jsp-api.version>
<java-activation.version>1.2.0</java-activation.version>
<jstl.version>1.2</jstl.version>
<servlet.version>6.1.0</servlet.version>
<jsp-api.version>4.0.0</jsp-api.version>
<jstl.version>3.0.1</jstl.version>
<angular.version>1.7.8</angular.version>
<ant.version>1.10.15</ant.version>
<asm.version>9.7.1</asm.version>
Expand All @@ -46,21 +45,20 @@ limitations under the License.
<commons-codec.version>1.18.0</commons-codec.version>
<commons-text.version>1.13.0</commons-text.version>
<commons-lang3.version>3.17.0</commons-lang3.version>
<eclipse-link.version>4.0.5</eclipse-link.version>
<eclipse-link.version>5.0.1</eclipse-link.version>
<guice.version>7.0.0</guice.version>
<log4j2.version>2.24.3</log4j2.version>
<lucene.version>9.12.1</lucene.version> <!-- lucene 10 requires JDK 21 -->
<oauth-core.version>20100527</oauth-core.version>
<maven-war.version>3.4.0</maven-war.version>
<maven-war.version>3.4.0</maven-war.version>
<maven-surefire.version>3.5.2</maven-surefire.version>
<maven-antrun.version>1.0b3</maven-antrun.version>
<rome.version>1.19.0</rome.version> <!-- locked in place since next version removes popono -->
<slf4j.version>2.0.16</slf4j.version>
<spring.version>5.3.39</spring.version>
<spring.security.version>5.8.14</spring.security.version>
<struts.version>2.5.29</struts.version> <!-- .30+ breaks selenium tests -->
<spring.version>7.0.8</spring.version>
<spring.security.version>7.0.6</spring.security.version>
Comment thread
mraible marked this conversation as resolved.
<struts.version>7.1.1</struts.version>
<struts-bootstrap.version>6.1.0</struts-bootstrap.version>
<velocity.version>2.4.1</velocity.version>
<webjars.version>1.6</webjars.version>
<ws-commons-util.version>1.0.2</ws-commons-util.version>
<xmlrpc-version>3.1.3</xmlrpc-version>
</properties>
Expand All @@ -70,55 +68,58 @@ limitations under the License.
<!-- Java EE deps -->

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>${jstl.version}</version>
</dependency>

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${java-mail.version}</version>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.angus</groupId>
<artifactId>angus-mail</artifactId>
<version>2.0.3</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>${java-activation.version}</version>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.1.3</version>
</dependency>

<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.version}</version>
<exclusions>
<exclusion>
<!--api is already in the javax.activation artifact-->
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
</exclusion>
</exclusions>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>4.0.5</version>
</dependency>

<!-- Eclipselink JPA is the default JPA implementation used by
Expand Down Expand Up @@ -246,12 +247,16 @@ limitations under the License.
</dependency>

<!-- note: update head.jsp on webjar version change -->
<!-- Supplies the "bootstrap" form theme templates the JSPs render with.
Maintained at github.com/struts-community-plugins/struts2-bootstrap. -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-servlet-2.x</artifactId>
<version>${webjars.version}</version>
<groupId>com.jgeppert.struts2.bootstrap</groupId>
<artifactId>struts2-bootstrap-plugin</artifactId>
<version>${struts-bootstrap.version}</version>
</dependency>

<!-- WebJar assets live under META-INF/resources, which Servlet 3.0+
containers serve from the docroot, so no webjars servlet is needed -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
Expand Down Expand Up @@ -309,6 +314,12 @@ limitations under the License.
<version>${lucene.version}</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<!-- slf4j implementing the apache commons-logging interfaces -->
<!-- note: commons-logging needs to be excluded in all dependencies transitive depending on it.
See 2006 RFE https://issues.apache.org/jira/browse/MNG-1977 for maven's missing feature of global exclusions -->
Expand All @@ -328,7 +339,7 @@ limitations under the License.
<!-- the actual logging impl below slf4j: log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>

Expand Down Expand Up @@ -387,6 +398,12 @@ limitations under the License.
<version>${xmlrpc-version}</version>
</dependency>

<!-- Still needed: RollerXmlRpcServlet/RollerXmlRpcServletServer use
server-side classes (PropertyHandlerMapping, XmlRpcHttpServer, etc.)
that live in this artifact. The servlet classes themselves have been
forked into Roller so their javax.servlet imports can be migrated
to jakarta.servlet in Phase 2. TODO ROL-2183: evaluate whether
these server classes can also be forked to fully drop this dep. -->
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-server</artifactId>
Expand Down Expand Up @@ -450,22 +467,6 @@ limitations under the License.
<version>${spring.security.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-openid</artifactId>
<version>${spring.security.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</exclusion>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
Expand Down Expand Up @@ -503,12 +504,6 @@ limitations under the License.
</exclusions>
</dependency>

<dependency>
<groupId>com.jgeppert.struts2.bootstrap</groupId>
<artifactId>struts2-bootstrap-plugin</artifactId>
<version>4.0.0</version>
</dependency>

<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
Expand Down Expand Up @@ -536,13 +531,6 @@ limitations under the License.
</exclusions>
</dependency>

<dependency>
<groupId>net.oauth.core</groupId>
<artifactId>oauth-provider</artifactId>
<scope>compile</scope>
<version>${oauth-core.version}</version>
</dependency>

<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
Expand Down Expand Up @@ -581,7 +569,7 @@ limitations under the License.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.15.2</version>
<version>5.23.0</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -610,13 +598,15 @@ limitations under the License.
</plugin>

<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<groupId>org.eclipse.jetty.ee11</groupId>
<artifactId>jetty-ee11-maven-plugin</artifactId>
<configuration>
<webApp>
<contextPath>/roller</contextPath>
</webApp>
<jettyXmls>src/test/resources/jetty.xml</jettyXmls>
<jettyXmls>
<jettyXml>src/test/resources/jetty.xml</jettyXml>
</jettyXmls>
<systemProperties>
<roller.custom.config>
${project.build.directory}/test-classes/roller-jettyrun.properties
Expand All @@ -630,9 +620,9 @@ limitations under the License.
<version>6.1.5</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
Expand All @@ -645,9 +635,9 @@ limitations under the License.
<version>${derby.version}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${java-mail.version}</version>
<groupId>org.eclipse.angus</groupId>
<artifactId>angus-mail</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
</plugin>
Expand Down Expand Up @@ -732,6 +722,7 @@ limitations under the License.
</property>
</systemProperties>
<trimStackTrace>false</trimStackTrace>
<argLine>-Djavax.xml.accessExternalSchema=all</argLine>
</configuration>
</plugin>

Expand Down
16 changes: 8 additions & 8 deletions app/src/main/java/org/apache/roller/planet/util/MailUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Address;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.SendFailedException;
import jakarta.mail.Session;
import jakarta.mail.Transport;
import jakarta.mail.Address;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;

import org.apache.commons.lang3.StringUtils;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
package org.apache.roller.weblogger.business;

import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import jakarta.mail.MessagingException;
import jakarta.mail.Session;
import jakarta.mail.Transport;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
Expand Down
Loading
Loading