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