diff --git a/.gitignore b/.gitignore
index 7cef82ca7e..e0d09cd6ca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,9 @@
/build/
/*/build/
+target
+core/target
+servlet/target
/examples/geoserver-data/.updatepassword.lock
/examples/geoserver-data/controlflow.properties
@@ -20,3 +23,5 @@
/examples/geoserver-data/wps.xml
/CI.asc
+*~
+
diff --git a/Dockerfile b/Dockerfile
index 5064cfee81..ca7a7e22f9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,38 +1,47 @@
-FROM gradle:6.9-jdk11 AS builder
+#FROM maven:3.8.5-eclipse-temurin-11-alpine@sha256:b4083a13f534f6256179802b3deaeadccf4b8eb9bcb4c8a35b78919624b18448 AS builder
+FROM maven:3.8.5-eclipse-temurin-11-focal@sha256:a5a8b7b6ae4b7045c42ab9c21b72cdffe43db8eebf8bbf5a741f2660453c86ba AS base
RUN apt-get update && \
apt-get install --yes --no-install-recommends fonts-liberation gettext curl && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
- gradle --version
+ mvn --version
WORKDIR /src
-COPY gradle/ ./gradle/
-COPY gradle.properties build.gradle settings.gradle CI.asc ./
-COPY examples/build.gradle ./examples/
-COPY docs/build.gradle ./docs/
-COPY publish/build.gradle ./publish/
+COPY pom.xml ./
COPY core ./core
-COPY checkstyle_* ./
+COPY servlet ./servlet
+
+FROM base AS builder
+RUN mvn -B dependency:resolve -projects core
+
+FROM builder AS cachedbuiler
+
+# COPY checkstyle_* ./
+# COPY gradle.properties build.gradle settings.gradle CI.asc ./
+# COPY examples/build.gradle ./examples/
+# COPY docs/build.gradle ./docs/
+# COPY publish/build.gradle ./publish/
# '&& touch success || true' is a trick to be able to get out some artifacts
-RUN (gradle :core:build :core:explodedWar :core:libSourcesJar :core:libJavadocJar && touch success) || true
+#RUN (gradle :core:build :core:explodedWar :core:libSourcesJar :core:libJavadocJar && touch success) || true
+RUN mvn -B clean install
-ARG GIT_HEAD
-ENV GIT_HEAD=${GIT_HEAD}
+# ARG GIT_HEAD
+# ENV GIT_HEAD=${GIT_HEAD}
-COPY publish ./publish
+# COPY publish ./publish
-RUN ([ -e success ] && (gradle :publish:build && touch success-publish)) || true
+# RUN ([ -e success ] && (gradle :publish:build && touch success-publish)) || true
-COPY examples ./examples
-COPY docs ./docs
+# COPY examples ./examples
+# COPY docs ./docs
-RUN ([ -e success ] && (gradle :examples:build buildDocs && touch success-examples-docs)) || true
+# RUN ([ -e success ] && (gradle :examples:build buildDocs && touch success-examples-docs)) || true
-FROM builder AS test-builder
+# FROM builder AS test-builder
-RUN [ -e success ] && [ -e success-publish ] && [ -e success-examples-docs ]
+# RUN [ -e success ] && [ -e success-publish ] && [ -e success-examples-docs ]
-VOLUME [ "/src/core" ]
+# VOLUME [ "/src/core" ]
diff --git a/build.gradle b/build.gradle
index 107b562324..d5577679b2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -41,6 +41,7 @@ configurations.all {
apply plugin: 'org.owasp.dependencycheck'
configure(subprojects.findAll { ['core', 'examples'].contains(it.name) }) {
+ apply plugin: 'maven'
apply plugin: 'java'
apply plugin: 'com.github.spotbugs'
apply plugin: 'eclipse'
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 0000000000..80c4fc75c4
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,387 @@
+
+
+ 4.0.0
+
+ print-lib
+ jar
+
+
+ org.mapfish.print
+ mapfish-print
+ 3.29.0-SNAPSHOT
+
+
+
+
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-xml
+ 2.13.2
+
+
+
+ ar.com.fdvs
+ DynamicJasper
+
+
+
+ org.geotools
+ gt-epsg-hsql
+
+
+
+ org.geotools
+ gt-render
+
+
+
+ org.geotools
+ gt-coverage
+
+
+
+ org.geotools
+ gt-geojson
+
+
+
+ org.geotools
+ gt-geotiff
+
+
+
+ org.geotools
+ gt-wms
+
+
+
+ org.geotools
+ gt-svg
+
+
+
+ org.geotools
+ gt-cql
+
+
+
+ org.geotools.xsd
+ gt-xsd-gml3
+
+
+
+ com.github.spotbugs
+ spotbugs-annotations
+ compile
+
+
+
+ io.dropwizard.metrics
+ metrics-core
+
+
+
+ io.dropwizard.metrics
+ metrics-healthchecks
+
+
+
+ io.dropwizard.metrics
+ metrics-servlets
+
+
+
+ io.dropwizard.metrics
+ metrics-servlet
+
+
+
+ io.dropwizard.metrics
+ metrics-httpclient
+
+
+
+ io.dropwizard.metrics
+ metrics-jmx
+
+
+
+ io.dropwizard.metrics
+ metrics-logback
+
+
+
+ com.readytalk
+ metrics3-statsd
+
+
+
+ commons-collections
+ commons-collections
+
+
+
+ org.apache.commons
+ commons-collections4
+
+
+
+ net.sf.jasperreports
+ jasperreports
+
+
+
+ org.springframework
+ spring-context
+ compile
+
+
+
+ org.springframework
+ spring-web
+ compile
+
+
+
+ org.springframework
+ spring-webmvc
+ compile
+
+
+
+ org.springframework.security
+ spring-security-config
+ compile
+
+
+
+ org.springframework.security
+ spring-security-web
+ compile
+
+
+
+ com.thetransactioncompany
+ cors-filter
+ compile
+
+
+
+ org.hibernate
+ hibernate-core
+ compile
+
+
+
+ org.postgresql
+ postgresql
+ compile
+
+
+
+ com.vladmihalcea
+ hibernate-types-52
+ compile
+
+
+
+ com.mchange
+ c3p0
+ compile
+
+
+
+ org.springframework
+ spring-orm
+ compile
+
+
+
+ org.springframework
+ spring-jdbc
+ compile
+
+
+
+ org.springframework
+ spring-tx
+ compile
+
+
+
+ org.springframework
+ spring-test
+ compile
+
+
+
+ com.google.guava
+ guava
+ compile
+
+
+
+ org.slf4j
+ slf4j-api
+ compile
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+ compile
+
+
+
+ org.slf4j
+ jul-to-slf4j
+ compile
+
+
+
+ ch.qos.logback
+ logback-classic
+ compile
+
+
+
+ ch.qos.logback
+ logback-access
+ compile
+
+
+
+ org.json
+ json
+ compile
+
+
+
+ org.yaml
+ snakeyaml
+ compile
+
+
+
+ com.github.spullara.cli-parser
+ cli-parser
+ compile
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ compile
+
+
+
+ com.sun.mail
+ javax.mail
+ compile
+
+
+
+ com.amazonaws
+ aws-java-sdk-s3
+ compile
+
+
+
+ com.adobe.xmp
+ xmpcore
+ compile
+
+
+
+ io.sentry
+ sentry-logback
+ compile
+
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+ compile
+
+
+
+ org.apache.xmlgraphics
+ xmlgraphics-commons
+ compile
+
+
+
+ org.apache.xmlgraphics
+ batik-transcoder
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ org.apache.xmlgraphics
+ batik-bridge
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ org.apache.xmlgraphics
+ batik-codec
+ compile
+
+
+
+ org.apache.xmlgraphics
+ batik-svg-dom
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+ de.saly
+ javamail-mock2-fullmock
+ test
+
+
+
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000000..50ed2a4727
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,67 @@
+FROM mapfish_print_builder AS builder
+
+
+
+FROM tomcat:9.0-jdk17-openjdk-slim-bullseye AS runner
+LABEL maintainer="Camptocamp "
+
+RUN perl -0777 -i -pe 's/(]*>)//s' "${CATALINA_HOME}/conf/server.xml" && \
+ echo "tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*" >> "${CATALINA_HOME}/conf/catalina.properties" && \
+ echo "org.apache.catalina.startup.TldConfig.jarsToSkip=*" >> "${CATALINA_HOME}/conf/catalina.properties" && \
+ echo "tomcat.util.scan.DefaultJarScanner.jarsToSkip=*" >> "${CATALINA_HOME}/conf/catalina.properties" && \
+ perl -0777 -i -pe 's/<\/Context>/<\/Context>/' "${CATALINA_HOME}/conf/context.xml" && \
+ mkdir --parent /usr/local/tomcat/conf/Catalina /usr/local/tomcat/work/Catalina && \
+ chmod -R g+rwx /usr/local/tomcat/conf/Catalina /usr/local/tomcat/work && \
+ chgrp -R root /usr/local/tomcat/conf/Catalina /usr/local/tomcat/work && \
+ chmod g+r /usr/local/tomcat/conf/* && \
+ apt-get update && \
+ apt-get upgrade --assume-yes && \
+ apt-get install --assume-yes --no-install-recommends curl \
+ fonts-liberation fonts-dejavu fontconfig && \
+ apt-get clean && \
+ rm --recursive --force /var/lib/apt/lists/*
+
+#COPY --from=builder /src/core/build/webapp "${CATALINA_HOME}/webapps/ROOT/"
+#COPY --from=builder /src/examples/build/classes/java/test/org/mapfish/print/HumanAlphaSerie.class "${CATALINA_HOME}/webapps/ROOT/WEB-INF/classes/org/mapfish/print/"
+COPY docker /
+
+RUN mkdir -p "${CATALINA_HOME}/extlib/classes/org/mapfish/print" && \
+ cp -r "${CATALINA_HOME}/webapps/ROOT/WEB-INF/classes/org/mapfish/print/url" "${CATALINA_HOME}/extlib/classes/org/mapfish/print/" && \
+ perl -0777 -i -pe 's///s' "${CATALINA_HOME}/conf/server.xml" && \
+ chmod g+r -R /usr/local/tomcat/conf/ && \
+ chmod g+rw /usr/local/tomcat/temp/ /usr/local/tomcat/webapps/ROOT/WEB-INF/lib && \
+ chmod g+rw /usr/local/tomcat/webapps/ROOT/WEB-INF/classes /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/*.xml && \
+ adduser www-data root
+
+ENV LOG_LEVEL=INFO \
+ SPRING_LOG_LEVEL=WARN \
+ JASPER_LOG_LEVEL=WARN \
+ APACHE_LOG_LEVEL=WARN \
+ SQL_LOG_LEVEL=WARN \
+ CATALINA_OPTS= \
+ DEFAULT_LOG_LEVEL=INFO \
+ TOMCAT_LOG_LEVEL=INFO \
+ SENTRY_LOG_LEVEL=ERROR \
+ SENTRY_REPORTING_LOG_LEVEL=WARN \
+ TOMCAT_LOG_TYPE=classic \
+ EXTRA_JARS= \
+ PRINT_YAML_MAX_ALIASES=50 \
+ JAVA_OPTS=-Dsun.net.inetaddr.ttl=30 \
+ SENTRY_DSN=
+
+CMD ["/usr/local/tomcat/bin/docker-start-print"]
+
+#FROM runner AS tester
+
+#COPY jettyRunExtraFiles/mapfish-spring-application-context-override-acceptencetests.xml \
+# webapps/ROOT/WEB-INF/classes/mapfish-spring-application-context-override.xml
+
+#FROM runner AS watcher
+
+RUN apt-get update && \
+ apt-get install --yes --no-install-recommends python3-pip rsync python3-setuptools && \
+ apt-get clean && \
+ rm --recursive --force /var/lib/apt/lists/* && \
+ python3 -m pip --disable-pip-version-check --no-cache-dir install inotify
+
+FROM runner AS final
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000..dc385f2bbf
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,505 @@
+
+
+ 4.0.0
+ org.mapfish.print
+ mapfish-print
+ 3.29.0-SNAPSHOT
+ pom
+
+
+ 11
+ 11
+ UTF-8
+
+ 26.4
+ 5.3.20
+ 5.7.1
+ 1.14
+ 4.7.0
+ 4.2.9
+
+
+
+
+ osgeo-release
+ OSGeo Repository
+ https://repo.osgeo.org/repository/release/
+
+
+
+
+
+ false
+
+
+ true
+
+
+
+
+
+ readytalk
+ Spring Plugins
+ https://artifactory.georchestra.org/artifactory/bintray-readytalk-cache/
+
+ false
+
+
+ true
+
+
+
+
+
+
+
+
+ ar.com.fdvs
+ DynamicJasper
+ 5.3.4
+
+
+
+ net.sf.jasperreports
+ jasperreports-fonts
+ 6.19.1
+
+
+
+ net.sf.jasperreports
+ jasperreports-functions
+ 6.19.1
+
+
+
+ joda-time
+ joda-time
+ 2.10.14
+
+
+
+ org.geotools
+ gt-epsg-hsql
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-render
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-coverage
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-geojson
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-geotiff
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-wms
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-svg
+ ${geotools.version}
+
+
+
+ org.geotools
+ gt-cql
+ ${geotools.version}
+
+
+
+ org.geotools.xsd
+ gt-xsd-gml3
+ ${geotools.version}
+
+
+
+ com.github.spotbugs
+ spotbugs-annotations
+ ${spotbugsVersion}
+ compile
+
+
+
+ io.dropwizard.metrics
+ metrics-core
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-healthchecks
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-servlets
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-servlet
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-httpclient
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-jmx
+ ${dropvizard.version}
+
+
+
+ io.dropwizard.metrics
+ metrics-logback
+ ${dropvizard.version}
+
+
+
+ com.readytalk
+ metrics3-statsd
+ 4.2.0
+
+
+
+ commons-collections
+ commons-collections
+ 3.2.2
+
+
+
+ org.apache.commons
+ commons-collections4
+ 4.4
+
+
+
+ net.sf.jasperreports
+ jasperreports
+ 6.19.1
+
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+ compile
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+ compile
+
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+ compile
+
+
+
+ org.springframework.security
+ spring-security-config
+ ${spring-security.version}
+ compile
+
+
+
+ org.springframework.security
+ spring-security-web
+ ${spring-security.version}
+ compile
+
+
+
+ com.thetransactioncompany
+ cors-filter
+ 2.10
+ compile
+
+
+
+ org.hibernate
+ hibernate-core
+ 5.6.9.Final
+ compile
+
+
+
+ org.postgresql
+ postgresql
+ 42.3.6
+ compile
+
+
+
+ com.vladmihalcea
+ hibernate-types-52
+ 2.16.2
+ compile
+
+
+
+ com.mchange
+ c3p0
+ 0.9.5.5
+ compile
+
+
+
+ org.springframework
+ spring-orm
+ ${spring.version}
+ compile
+
+
+
+ org.springframework
+ spring-jdbc
+ ${spring.version}
+ compile
+
+
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+ compile
+
+
+
+ org.springframework
+ spring-test
+ ${spring.version}
+ compile
+
+
+
+ com.google.guava
+ guava
+ 30.1.1-jre
+ compile
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.36
+ compile
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+ 1.7.36
+ compile
+
+
+
+ org.slf4j
+ jul-to-slf4j
+ 1.7.36
+ compile
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.11
+ compile
+
+
+
+ ch.qos.logback
+ logback-access
+ 1.2.11
+ compile
+
+
+
+ org.json
+ json
+ 20220320
+ compile
+
+
+
+ org.yaml
+ snakeyaml
+ 1.30
+ compile
+
+
+
+ com.github.spullara.cli-parser
+ cli-parser
+ 1.1.6
+ compile
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.13
+ compile
+
+
+
+ com.sun.mail
+ javax.mail
+ 1.6.2
+ compile
+
+
+
+ com.amazonaws
+ aws-java-sdk-s3
+ 1.12.230
+ compile
+
+
+
+ com.adobe.xmp
+ xmpcore
+ 6.1.11
+ compile
+
+
+
+ io.sentry
+ sentry-logback
+ 5.7.4
+ compile
+
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+ 7.2
+ compile
+
+
+
+ org.apache.xmlgraphics
+ xmlgraphics-commons
+ 2.7
+ compile
+
+
+
+ org.apache.xmlgraphics
+ batik-transcoder
+ 1.14
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ org.apache.xmlgraphics
+ batik-bridge
+ 1.14
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ org.apache.xmlgraphics
+ batik-codec
+ 1.14
+ compile
+
+
+
+ org.apache.xmlgraphics
+ batik-svg-dom
+ 1.14
+ compile
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ org.mockito
+ mockito-core
+ 3.9.0
+ test
+
+
+
+ de.saly
+ javamail-mock2-fullmock
+ 0.5-beta4
+ test
+
+
+
+
+
+ core
+ servlet
+
+
+
+
diff --git a/servlet/pom.xml b/servlet/pom.xml
new file mode 100644
index 0000000000..fd7c377aff
--- /dev/null
+++ b/servlet/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ print-servlet
+ war
+
+
+ org.mapfish.print
+ mapfish-print
+ 3.29.0-SNAPSHOT
+
+
+
+
+ org.mapfish.print
+ print-lib
+ 3.29.0-SNAPSHOT
+
+
+
diff --git a/core/src/main/webapp/WEB-INF/classes/logback.xml b/servlet/src/main/webapp/WEB-INF/classes/logback.xml
similarity index 100%
rename from core/src/main/webapp/WEB-INF/classes/logback.xml
rename to servlet/src/main/webapp/WEB-INF/classes/logback.xml
diff --git a/core/src/main/webapp/WEB-INF/mapfish-print-printer-factory.xml b/servlet/src/main/webapp/WEB-INF/mapfish-print-printer-factory.xml
similarity index 100%
rename from core/src/main/webapp/WEB-INF/mapfish-print-printer-factory.xml
rename to servlet/src/main/webapp/WEB-INF/mapfish-print-printer-factory.xml
diff --git a/core/src/main/webapp/WEB-INF/mapfish-print-servlet.xml b/servlet/src/main/webapp/WEB-INF/mapfish-print-servlet.xml
similarity index 100%
rename from core/src/main/webapp/WEB-INF/mapfish-print-servlet.xml
rename to servlet/src/main/webapp/WEB-INF/mapfish-print-servlet.xml
diff --git a/core/src/main/webapp/WEB-INF/web.xml b/servlet/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from core/src/main/webapp/WEB-INF/web.xml
rename to servlet/src/main/webapp/WEB-INF/web.xml
diff --git a/core/src/main/webapp/favicon.ico b/servlet/src/main/webapp/favicon.ico
similarity index 100%
rename from core/src/main/webapp/favicon.ico
rename to servlet/src/main/webapp/favicon.ico
diff --git a/core/src/main/webapp/index.html b/servlet/src/main/webapp/index.html
similarity index 100%
rename from core/src/main/webapp/index.html
rename to servlet/src/main/webapp/index.html
diff --git a/core/src/main/webapp/mapfish_transparent.png b/servlet/src/main/webapp/mapfish_transparent.png
similarity index 100%
rename from core/src/main/webapp/mapfish_transparent.png
rename to servlet/src/main/webapp/mapfish_transparent.png