Skip to content
Merged
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
750231f
🐛 Fixed bug in ReplacingInputStream when used with ByteArrayInputStream
rmcdouga Oct 30, 2025
631cff8
🚧 Work in progress: Everything converted to use WebMVC, tests failing
rmcdouga Nov 14, 2025
1f6354d
🐛 Fixed AemProxyAfSubmission test failures
rmcdouga Nov 15, 2025
b3ab6dc
⚰️ Remove JerseyClientFactory from main autoconfig
rmcdouga Nov 15, 2025
f548ef7
🐛 Remove transfer-encoding=chunked header from response.
rmcdouga Nov 16, 2025
cdafee4
✅ Updated WireMock mappings to match the response from AEM.
rmcdouga Nov 16, 2025
0c66a05
⚰️ Removed remaining references to Jersey from main autoconfigure proj
rmcdouga Nov 17, 2025
a789585
✨ Marked springRestClientFactory as @Fallback
rmcdouga Nov 17, 2025
12e320c
✨ Initial import of Jersey implementation classes.
rmcdouga Nov 17, 2025
adb7402
🚚 Move JerseyConfig logic into proxy autoconfiguration code.
rmcdouga Nov 17, 2025
c1a7ecb
✨ SpringMVC aem proxy implementation optional based on more criteria
rmcdouga Nov 18, 2025
b487384
♻️ Converted AemProxyAfSubmission to use constructor injection.
rmcdouga Nov 20, 2025
3fc7dc6
✨ Separate Jersey Autoconfiguration project now passes all tests.
rmcdouga Nov 20, 2025
edc89ba
✨ Create FluentForms Jersey Spring Boot Starter project
rmcdouga Nov 20, 2025
4c4e5c6
✨ Updated pom.xml to use fluentforms-jersey-spring-boot-starter
rmcdouga Nov 21, 2025
6cf29df
⬆️ Update starters to Spring 3.5.7 (from 3.5.5)
rmcdouga Nov 21, 2025
48ae08c
👷 Updated CI to handle new jersey projects.
rmcdouga Nov 21, 2025
d840f6a
✨ Created overarching maven pom.xml file for spring projects.
rmcdouga Nov 21, 2025
c0d5d59
🚨 Fix warnings in pom.xml
rmcdouga Nov 22, 2025
30af93f
✨ Created over-arching pom.xml file that builds the entire project
rmcdouga Nov 23, 2025
a0477e0
✨ Prevent installation and deployment of sample artifacts
rmcdouga Nov 23, 2025
c7e222c
🔀 Merge branch 'master' into 20251026_Replace_Jersey_With_WebMVC
rmcdouga Nov 27, 2025
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
51 changes: 51 additions & 0 deletions .github/workflows/spring-boot-jersey-starter-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Spring Boot Jersey Starter CI

on:
push:
paths:
- 'spring/fluentforms-jersey-spring-boot-**'
- '.github/workflows/spring-boot-jersey-starter-ci.yml'
workflow_dispatch:

jobs:
build:
name: Java ${{ matrix.java }} build
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: true
matrix:
java: [ 21 ]
experimental: [false]
include:
- java: 25
experimental: true

steps:
- uses: actions/checkout@v6
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v5
with:
distribution: 'oracle'
java-version: ${{ matrix.java }}
cache: 'maven'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file

- name: Build AutoConfigure with Maven
run: mvn -B install -s $GITHUB_WORKSPACE/settings.xml --file spring/fluentforms-jersey-spring-boot-autoconfigure
env:
GITHUB_TOKEN: ${{ github.token }}

- name: Build AutoConfigure with Maven
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/tags/*') && !matrix.experimental # Only run on main branch or tags and non-experimental
run: mvn -B deploy -s $GITHUB_WORKSPACE/settings.xml --file spring/fluentforms-jersey-spring-boot-autoconfigure
env:
GITHUB_TOKEN: ${{ github.token }}

- name: Publish Starter to GitHub Packages Apache Maven
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/tags/*') && !matrix.experimental # Only run on main branch or tags and non-experimental
run: mvn -B deploy -s $GITHUB_WORKSPACE/settings.xml --file spring/fluentforms-jersey-spring-boot-starter
env:
GITHUB_TOKEN: ${{ github.token }}

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Spring Boot Starter CI
name: Spring Boot WebMVC Starter CI

on:
push:
paths:
- 'spring/fluentforms-spring-boot-**'
- '.github/workflows/spring-boot-starter-ci.yml'
- '.github/workflows/spring-boot-webmvc-starter-ci.yml'
workflow_dispatch:

jobs:
Expand All @@ -22,7 +22,7 @@ jobs:
experimental: true

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v5
with:
Expand Down
19 changes: 19 additions & 0 deletions fluentforms/examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,25 @@
<name>FluentForms Examples</name>
<description>Various examples of using the Fluent Forms APIs.</description>

<build>
<!-- This project is an example project, so we don't need to install or deploy it. -->
<plugins>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.osgi</groupId>
Expand Down
36 changes: 36 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com._4point.aem.fluentforms</groupId>
<artifactId>fluentforms</artifactId>
<packaging>pom</packaging>
<version>0.0.4-SNAPSHOT</version>
<description>Fluent Forms Spring Boot Starter Projects</description>

<modules>
<!-- Top Level projects -->
<module>fluentforms</module>
<module>rest-services</module>
<module>spring</module>
</modules>

<build>
<!-- This project is a compositing project, so we don't need to install or deploy it. -->
<plugins>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
19 changes: 19 additions & 0 deletions rest-services/it.tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,25 @@
<maven.compiler.release>17</maven.compiler.release>
</properties>

<build>
<!-- This project is just integration tests, so we don't need to isntall or deploy it. -->
<plugins>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<!-- <dependency>
<groupId>org.glassfish.jersey.core</groupId>
Expand Down
3 changes: 3 additions & 0 deletions spring/ConfigurationProperties.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ be set to `/clientApp` (as in `fluentforms.rproxy.clientPrefix=/clientApp`).

`fluentforms.rproxy.afBaseLocation` - TBD - This needs to be documented.

`fluentforms.rproxy.type` - This is used to set the mechanism used to reverse-proxy secondary resources to AEM. If the value is `springmvc`, then Spring MVC is used to implement the reverse proxy. If it is `jersey`, then JAX-RS Jersey is used. This property is optional and, if omitted, then the autoconfiguration will choose `springmvc` if no other type is available. It will typically use a different implementation if it is available (e.g. if `fluentforms-jersey-spring-starter` is on the class path). This means that under normal circumstances, this setting should not have to be set and is only intended to be used to override the autoconfiguration mechanisms.


### Rest Client Properties

Fluent Forms can be configured to use one of two different REST client libraries. It can use either the Jersey client libraries or the Spring RestClient libraries. it was originally developed to use the Jersey client libraries however this some drawbacks - firstly, the Spring requires special configuration when you combine it with libraries that use the built in Spring Web Mechanisms (e.g. Spring MVC, Spring Boot Activator, etc. - see [https://docs.spring.io/spring-boot/how-to/jersey.html](https://docs.spring.io/spring-boot/how-to/jersey.html)). Secondly, Spring Jersey is an extra dependency that duplicates functionality that is already available in the Spring Framework, so it causes some jar bloat.
Expand Down
164 changes: 164 additions & 0 deletions spring/fluentforms-jersey-spring-boot-autoconfigure/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.7</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com._4point.aem.fluentforms</groupId>
<artifactId>fluentforms-jersey-spring-boot-autoconfigure</artifactId>
<version>0.0.4-SNAPSHOT</version>
<name>FluentForms Jersey AutoConfigure Project</name>

<properties>
<java.version>17</java.version>
<jasypt.spring.boot.version>3.0.5</jasypt.spring.boot.version>
<jasypt.maven.plugin.version>3.0.5</jasypt.maven.plugin.version>
<fluentforms.version>0.0.4-SNAPSHOT</fluentforms.version>
<fluentforms-autoconfigure.version>0.0.4-SNAPSHOT</fluentforms-autoconfigure.version>

<!-- Testing Dependencies -->
<fp.hamcrest.matchers.version>0.0.4-SNAPSHOT</fp.hamcrest.matchers.version>
<wiremock.version>4.0.0-beta.16</wiremock.version>
<pitest.maven.plugin.version>1.20.2</pitest.maven.plugin.version>
<pitest.junit5.maven.plugin.version>1.2.3</pitest.junit5.maven.plugin.version>
</properties>

<distributionManagement>
<repository>
<id>github</id>
<name>4Point Solutions FluentFormsAPI Apache Maven Packages</name>
<url>https://maven.pkg.github.com/4PointSolutions/FluentFormsAPI</url>
</repository>
</distributionManagement>

<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/4PointSolutions/*</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>


<dependencies>
<!-- Project Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<optional>true</optional>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com._4point.aem.fluentforms</groupId>
<artifactId>fluentforms-spring-boot-autoconfigure</artifactId>
<version>${fluentforms-autoconfigure.version}</version>
</dependency>
<dependency>
<groupId>com._4point.aem</groupId>
<artifactId>fluentforms.core</artifactId>
<version>${fluentforms.version}</version>
</dependency>
<dependency>
<groupId>com._4point.aem.docservices</groupId>
<artifactId>rest-services.client</artifactId>
<version>${fluentforms.version}</version>
</dependency>
<dependency>
<groupId>com._4point.aem.docservices.rest-services</groupId>
<artifactId>rest-services.jersey-client</artifactId>
<version>${fluentforms.version}</version>
</dependency>
<!-- Testing Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.4point.testing</groupId>
<artifactId>4point-hamcrest-matchers</artifactId>
<version>${fp.hamcrest.matchers.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock-standalone</artifactId>
<version>${wiremock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>${pitest.junit5.maven.plugin.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Useful in case you want to change the password or secret key
for the jasypt data -->
<!-- To change password or key
- Navigate to directory where
this pom resides
- In command line execute:
mvn
jasypt:encrypt-value -Djasypt.encryptor.password=SECRET_KEY
-Djasypt.plugin.value=VALUE_TO_BE_ENCRYPTED
- SECRET_KEY is the
value that is used to encrypt/decrypt
- Alternatively you can
download the plugin jar an execute the command from the location
where the plugin jar reside
-->
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>${jasypt.maven.plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude/>
</excludes>
</configuration>
</plugin>
<plugin>
<!-- PiTest Mutation Testing plugin -->
<!-- Run with goals 'test-compile' and 'org.pitest:pitest-maven:mutationCoverage' -->
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${pitest.maven.plugin.version}</version>
</plugin>
</plugins>
</build>

</project>
Loading
Loading