upgrade to java 11 + upgrade libraries

This commit is contained in:
bgamard 2021-01-25 22:40:58 +01:00
parent 1fef4c3d2e
commit 6fcd8771a5
17 changed files with 66 additions and 115 deletions

View File

@ -63,7 +63,7 @@ A preconfigured Docker image is available, including OCR and media conversion to
**The default admin password is "admin". Don't forget to change it before going to production.**
- Master branch, can be unstable. Not recommended for production use: `sismics/docs:latest`
- Latest stable version: `sismics/docs:v1.8`
- Latest stable version: `sismics/docs:v1.9`
The data directory is `/data`. Don't forget to mount a volume on it.
@ -106,7 +106,7 @@ version: '3'
services:
# Teedy Application
teedy-server:
image: sismics/docs:v1.8
image: sismics/docs:v1.9
restart: unless-stopped
ports:
# Map internal port to host
@ -129,7 +129,7 @@ version: '3'
services:
# Teedy Application
teedy-server:
image: sismics/docs:v1.8
image: sismics/docs:v1.9
restart: unless-stopped
ports:
# Map internal port to host
@ -185,7 +185,7 @@ Manual installation
#### Requirements
- Java 8 with the [Java Cryptography Extension](http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)
- Java 11
- Tesseract 3 or 4 for OCR
- ffmpeg for video thumbnails
- mediainfo for video metadata extraction
@ -199,7 +199,7 @@ The latest release is downloadable here: <https://github.com/sismics/docs/releas
How to build Teedy from the sources
----------------------------------
Prerequisites: JDK 8 with JCE, Maven 3, NPM, Grunt, Tesseract 3 or 4
Prerequisites: JDK 11, Maven 3, NPM, Grunt, Tesseract 3 or 4
Teedy is organized in several Maven modules:

View File

@ -95,7 +95,6 @@
<dependency>
<groupId>at.favre.lib</groupId>
<artifactId>bcrypt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>

View File

@ -86,7 +86,7 @@ public class WebhookAsyncListener {
}
});
RequestBody body = RequestBody.create(JSON, "{\"event\": \"" + event.name() + "\", \"id\": \"" + id + "\"}");
RequestBody body = RequestBody.create("{\"event\": \"" + event.name() + "\", \"id\": \"" + id + "\"}", JSON);
for (String webhookUrl : webhookUrlList) {
Request request = new Request.Builder()

View File

@ -80,7 +80,7 @@ public class AppContext {
List<Class<? extends IndexingHandler>> indexingHandlerList = Lists.newArrayList(
new ClasspathScanner<IndexingHandler>().findClasses(IndexingHandler.class, "com.sismics.docs.core.util.indexing"));
for (Class<? extends IndexingHandler> handlerClass : indexingHandlerList) {
IndexingHandler handler = handlerClass.newInstance();
IndexingHandler handler = handlerClass.getDeclaredConstructor().newInstance();
if (handler.accept()) {
indexingHandler = handler;
break;

View File

@ -20,7 +20,7 @@ public class AuthenticationUtil {
.map(clazz -> {
try {
return clazz.newInstance();
return clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}

View File

@ -8,7 +8,6 @@ import com.sismics.docs.core.model.jpa.Config;
import com.sismics.docs.core.model.jpa.User;
import com.sismics.docs.core.util.ConfigUtil;
import com.sismics.util.ClasspathScanner;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.directory.api.ldap.model.cursor.EntryCursor;
import org.apache.directory.api.ldap.model.entry.Attribute;
import org.apache.directory.api.ldap.model.entry.Entry;
@ -71,10 +70,7 @@ public class LdapAuthenticationHandler implements AuthenticationHandler {
config.setCredentials(ConfigUtil.getConfigStringValue(ConfigType.LDAP_ADMIN_PASSWORD));
DefaultLdapConnectionFactory factory = new DefaultLdapConnectionFactory(config);
GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
poolConfig.maxWait = 500;
pool = new LdapConnectionPool(new ValidatingPoolableLdapConnectionFactory(factory), poolConfig);
pool = new LdapConnectionPool(new ValidatingPoolableLdapConnectionFactory(factory), null);
}
@Override
@ -114,7 +110,7 @@ public class LdapAuthenticationHandler implements AuthenticationHandler {
if (mailAttribute == null || mailAttribute.get() == null) {
user.setEmail(ConfigUtil.getConfigStringValue(ConfigType.LDAP_DEFAULT_EMAIL));
} else {
Value<?> value = mailAttribute.get();
Value value = mailAttribute.get();
user.setEmail(value.getString());
}
user.setStorageQuota(ConfigUtil.getConfigLongValue(ConfigType.LDAP_DEFAULT_STORAGE));

View File

@ -3,6 +3,7 @@ package com.sismics.docs.core.util.format;
import com.google.common.collect.Lists;
import com.sismics.util.ClasspathScanner;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
/**
@ -26,12 +27,12 @@ public class FormatHandlerUtil {
public static FormatHandler find(String mimeType) {
try {
for (Class<? extends FormatHandler> formatHandlerClass : FORMAT_HANDLERS) {
FormatHandler formatHandler = formatHandlerClass.newInstance();
FormatHandler formatHandler = formatHandlerClass.getDeclaredConstructor().newInstance();
if (formatHandler.accept(mimeType)) {
return formatHandler;
}
}
} catch (InstantiationException | IllegalAccessException e) {
} catch (Exception e) {
return null;
}

View File

@ -9,7 +9,7 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.sl.extractor.SlideShowExtractor;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
@ -50,7 +50,7 @@ public class PptxFormatHandler implements FormatHandler {
@Override
public String extractContent(String language, Path file) throws Exception {
XMLSlideShow pptx = loadPPtxFile(file);
return new XSLFPowerPointExtractor(pptx).getText();
return new SlideShowExtractor<>(pptx).getText();
}
@Override

View File

@ -37,9 +37,9 @@ import org.apache.lucene.search.spell.LuceneDictionary;
import org.apache.lucene.search.suggest.Lookup;
import org.apache.lucene.search.suggest.analyzing.FuzzySuggester;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.NIOFSDirectory;
import org.apache.lucene.store.NoLockFactory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -116,7 +116,7 @@ public class LuceneIndexingHandler implements IndexingHandler {
} else if (luceneStorage.equals("FILE")) {
Path luceneDirectory = DirectoryUtil.getLuceneDirectory();
log.info("Using file Lucene storage: {}", luceneDirectory);
directory = new SimpleFSDirectory(luceneDirectory, NoLockFactory.INSTANCE);
directory = new NIOFSDirectory(luceneDirectory, NoLockFactory.INSTANCE);
}
// Create an index writer

View File

@ -1,6 +1,6 @@
package com.sismics.util;
import org.jsoup.helper.StringUtil;
import org.jsoup.internal.StringUtil;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
@ -28,7 +28,7 @@ public class HtmlToPlainText {
}
// the formatting rules, implemented in a breadth-first DOM traverse
private class FormattingVisitor implements NodeVisitor {
static private class FormattingVisitor implements NodeVisitor {
private static final int maxWidth = 80;
private int width = 0;
private StringBuilder accum = new StringBuilder(); // holds the accumulated text
@ -64,7 +64,7 @@ public class HtmlToPlainText {
return; // don't accumulate long runs of empty spaces
if (text.length() + width > maxWidth) { // won't fit, needs to wrap
String words[] = text.split("\\s+");
String[] words = text.split("\\s+");
for (int i = 0; i < words.length; i++) {
String word = words[i];
boolean last = i == words.length - 1;

View File

@ -2,7 +2,6 @@ package com.sismics.util.jpa;
import com.sismics.docs.core.util.DirectoryUtil;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Environment;
import org.hibernate.internal.util.config.ConfigurationHelper;
import org.hibernate.service.ServiceRegistry;
import org.slf4j.Logger;
@ -34,7 +33,6 @@ public final class EMF {
try {
properties = getEntityManagerProperties();
Environment.verifyProperties(properties);
ConfigurationHelper.resolvePlaceHolders(properties);
ServiceRegistry reg = new StandardServiceRegistryBuilder().applySettings(properties).build();

View File

@ -137,7 +137,6 @@ public class TestFileUtil {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfUtil.convertToPdf(documentDto, Lists.newArrayList(file0, file1, file2, file3, file4, file5), true, true, 10, outputStream);
Assert.assertTrue(outputStream.toByteArray().length > 0);
com.google.common.io.Files.write(outputStream.toByteArray(), new java.io.File("C:\\Users\\Jendib\\Downloads\\test.pdf"));
}
}
}

View File

@ -209,54 +209,6 @@
</build>
</profile>
<!-- Stress profile -->
<profile>
<id>stress</id>
<activation>
<property>
<name>env</name>
<value>stress</value>
</property>
</activation>
<build>
<resources>
<resource>
<directory>src/stress/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/config.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/stress/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/config.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<systemProperties>
<systemProperty>
<name>application.mode</name>
<value>dev</value>
</systemProperty>
</systemProperties>
<webApp>
<contextPath>/docs-web</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Production profile -->
<profile>
<id>prod</id>

View File

@ -8,8 +8,10 @@ import com.sismics.security.UserPrincipal;
import com.sismics.util.filter.SecurityFilter;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.security.Principal;
import java.util.List;
import java.util.Set;
@ -19,6 +21,7 @@ import java.util.Set;
*
* @author jtremeaux
*/
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public abstract class BaseResource {
/**
* @apiDefine admin Admin

View File

@ -8,4 +8,5 @@ log4j.appender.MEMORY.size=1000
log4j.logger.com.sismics=INFO
log4j.logger.org.apache.pdfbox=ERROR
log4j.logger.org.glassfish.jersey.servlet.WebComponent=ERROR
log4j.logger.org.apache.directory=ERROR
log4j.logger.org.apache.directory=ERROR
log4j.logger.org.odftoolkit=ERROR

View File

@ -10,4 +10,6 @@ log4j.logger.com.sismics.util.jpa=ERROR
log4j.logger.org.hibernate=ERROR
log4j.logger.org.apache.pdfbox=INFO
log4j.logger.com.mchange=ERROR
log4j.logger.org.apache.directory=ERROR
log4j.logger.org.apache.directory=ERROR
log4j.logger.org.glassfish.grizzly=ERROR
log4j.logger.org.odftoolkit=ERROR

76
pom.xml
View File

@ -11,8 +11,8 @@
<name>Docs Parent</name>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Dependencies version (external) -->
@ -20,48 +20,48 @@
<commons-lang.commons-lang.version>2.6</commons-lang.commons-lang.version>
<commons-io.commons-io.version>2.6</commons-io.commons-io.version>
<org.apache.commons.commons-email.version>1.5</org.apache.commons.commons-email.version>
<org.freemarker.freemarker.version>2.3.28</org.freemarker.freemarker.version>
<org.freemarker.freemarker.version>2.3.30</org.freemarker.freemarker.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<com.google.guava.guava.version>28.2-jre</com.google.guava.guava.version>
<log4j.log4j.version>1.2.16</log4j.log4j.version>
<org.slf4j.version>1.6.4</org.slf4j.version>
<org.slf4j.jcl-over-slf4j.version>1.6.6</org.slf4j.jcl-over-slf4j.version>
<org.slf4j.jul-to-slf4j.version>1.6.6</org.slf4j.jul-to-slf4j.version>
<junit.junit.version>4.12</junit.junit.version>
<com.h2database.h2.version>1.4.197</com.h2database.h2.version>
<org.glassfish.jersey.version>2.27</org.glassfish.jersey.version>
<org.glassfish.javax.json.version>1.1.3</org.glassfish.javax.json.version>
<org.mindrot.jbcrypt>0.3m</org.mindrot.jbcrypt>
<org.apache.lucene.version>7.5.0</org.apache.lucene.version>
<com.google.guava.guava.version>30.1-jre</com.google.guava.guava.version>
<log4j.log4j.version>1.2.17</log4j.log4j.version>
<org.slf4j.version>1.7.30</org.slf4j.version>
<org.slf4j.jcl-over-slf4j.version>1.7.30</org.slf4j.jcl-over-slf4j.version>
<org.slf4j.jul-to-slf4j.version>1.7.30</org.slf4j.jul-to-slf4j.version>
<junit.junit.version>4.13.1</junit.junit.version>
<com.h2database.h2.version>1.4.200</com.h2database.h2.version>
<org.glassfish.jersey.version>2.33</org.glassfish.jersey.version>
<org.glassfish.javax.json.version>1.1.4</org.glassfish.javax.json.version>
<at.favre.lib.bcrypt.version>0.9.0</at.favre.lib.bcrypt.version>
<org.apache.lucene.version>8.7.0</org.apache.lucene.version>
<org.imgscalr.imgscalr-lib.version>4.2</org.imgscalr.imgscalr-lib.version>
<org.apache.pdfbox.pdfbox.version>2.0.12</org.apache.pdfbox.pdfbox.version>
<org.bouncycastle.bcprov-jdk15on.version>1.61</org.bouncycastle.bcprov-jdk15on.version>
<joda-time.joda-time.version>2.10</joda-time.joda-time.version>
<org.hibernate.hibernate.version>5.3.7.Final</org.hibernate.hibernate.version>
<org.apache.pdfbox.pdfbox.version>2.0.22</org.apache.pdfbox.pdfbox.version>
<org.bouncycastle.bcprov-jdk15on.version>1.68</org.bouncycastle.bcprov-jdk15on.version>
<joda-time.joda-time.version>2.10.9</joda-time.joda-time.version>
<org.hibernate.hibernate.version>5.4.27.Final</org.hibernate.hibernate.version>
<javax.servlet.javax.servlet-api.version>4.0.1</javax.servlet.javax.servlet-api.version>
<fr.opensagres.xdocreport.version>2.0.1</fr.opensagres.xdocreport.version>
<net.java.dev.jna.jna.version>4.2.1</net.java.dev.jna.jna.version>
<com.twelvemonkeys.imageio.version>3.3.2</com.twelvemonkeys.imageio.version>
<com.levigo.jbig2.levigo-jbig2-imageio.version>1.6.5</com.levigo.jbig2.levigo-jbig2-imageio.version>
<com.github.jai-imageio.jai-imageio-jpeg2000.version>1.3.0</com.github.jai-imageio.jai-imageio-jpeg2000.version>
<org.postgresql.postgresql.version>42.2.5</org.postgresql.postgresql.version>
<fr.opensagres.xdocreport.version>2.0.2</fr.opensagres.xdocreport.version>
<net.java.dev.jna.jna.version>5.6.0</net.java.dev.jna.jna.version>
<com.twelvemonkeys.imageio.version>3.6.2</com.twelvemonkeys.imageio.version>
<com.levigo.jbig2.levigo-jbig2-imageio.version>2.0</com.levigo.jbig2.levigo-jbig2-imageio.version>
<com.github.jai-imageio.jai-imageio-jpeg2000.version>1.4.0</com.github.jai-imageio.jai-imageio-jpeg2000.version>
<org.postgresql.postgresql.version>42.2.18</org.postgresql.postgresql.version>
<org.subethamail.subethasmtp-wiser.version>1.2</org.subethamail.subethasmtp-wiser.version>
<com.icegreen.greenmail.version>1.5.8</com.icegreen.greenmail.version>
<com.sun.mail.javax.mail.version>1.6.2</com.sun.mail.javax.mail.version>
<org.jsoup.jsoup.version>1.11.3</org.jsoup.jsoup.version>
<com.squareup.okhttp3.okhttp.version>3.11.0</com.squareup.okhttp3.okhttp.version>
<org.apache.directory.api.api-all.version>1.0.0</org.apache.directory.api.api-all.version>
<org.jsoup.jsoup.version>1.13.1</org.jsoup.jsoup.version>
<com.squareup.okhttp3.okhttp.version>4.9.0</com.squareup.okhttp3.okhttp.version>
<org.apache.directory.api.api-all.version>2.0.1</org.apache.directory.api.api-all.version>
<org.eclipse.jetty.jetty-server.version>9.4.17.v20190418</org.eclipse.jetty.jetty-server.version>
<org.eclipse.jetty.jetty-webapp.version>9.4.17.v20190418</org.eclipse.jetty.jetty-webapp.version>
<org.eclipse.jetty.jetty-servlet.version>9.4.17.v20190418</org.eclipse.jetty.jetty-servlet.version>
<org.eclipse.jetty.jetty-server.version>9.4.36.v20210114</org.eclipse.jetty.jetty-server.version>
<org.eclipse.jetty.jetty-webapp.version>9.4.36.v20210114</org.eclipse.jetty.jetty-webapp.version>
<org.eclipse.jetty.jetty-servlet.version>9.4.36.v20210114</org.eclipse.jetty.jetty-servlet.version>
<!-- Plugins version -->
<org.apache.maven.plugins.maven-antrun-plugin.version>1.8</org.apache.maven.plugins.maven-antrun-plugin.version>
<org.apache.maven.plugins.maven-jar-plugin.version>3.1.0</org.apache.maven.plugins.maven-jar-plugin.version>
<org.apache.maven.plugins.maven-war-plugin.version>3.2.2</org.apache.maven.plugins.maven-war-plugin.version>
<org.apache.maven.plugins.maven-surefire-plugin.version>2.22.1</org.apache.maven.plugins.maven-surefire-plugin.version>
<org.eclipse.jetty.jetty-maven-plugin.version>9.4.17.v20190418</org.eclipse.jetty.jetty-maven-plugin.version>
<org.apache.maven.plugins.maven-antrun-plugin.version>3.0.0</org.apache.maven.plugins.maven-antrun-plugin.version>
<org.apache.maven.plugins.maven-jar-plugin.version>3.2.0</org.apache.maven.plugins.maven-jar-plugin.version>
<org.apache.maven.plugins.maven-war-plugin.version>3.3.1</org.apache.maven.plugins.maven-war-plugin.version>
<org.apache.maven.plugins.maven-surefire-plugin.version>3.0.0-M5</org.apache.maven.plugins.maven-surefire-plugin.version>
<org.eclipse.jetty.jetty-maven-plugin.version>9.4.36.v20210114</org.eclipse.jetty.jetty-maven-plugin.version>
</properties>
<scm>
@ -256,9 +256,9 @@
</dependency>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>${org.mindrot.jbcrypt}</version>
<groupId>at.favre.lib</groupId>
<artifactId>bcrypt</artifactId>
<version>${at.favre.lib.bcrypt.version}</version>
</dependency>
<dependency>