1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-21 13:41:37 +00:00

Closes #668: upgrade jetty/servlet-api/jersey

This commit is contained in:
bgamard
2023-04-09 21:31:53 +02:00
parent dae9e137f7
commit b20577026e
123 changed files with 537 additions and 490 deletions

View File

@@ -2,9 +2,9 @@ package com.sismics.util.filter;
import com.sismics.util.EnvironmentUtil;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**

View File

@@ -4,8 +4,8 @@ import com.google.common.base.Strings;
import com.sismics.docs.core.dao.UserDao;
import com.sismics.docs.core.model.jpa.User;
import javax.servlet.FilterConfig;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.http.HttpServletRequest;
/**
* A header-based security filter that authenticates an user using the "X-Authenticated-User" request header as the user ID.

View File

@@ -6,6 +6,9 @@ import com.sismics.docs.core.util.TransactionUtil;
import com.sismics.util.EnvironmentUtil;
import com.sismics.util.context.ThreadLocalContext;
import com.sismics.util.jpa.EMF;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.core.HttpHeaders;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
@@ -13,11 +16,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.HttpHeaders;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import java.io.IOException;
import java.text.MessageFormat;

View File

@@ -13,8 +13,8 @@ import org.joda.time.DateTimeZone;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;

View File

@@ -5,8 +5,8 @@ import com.sismics.docs.core.dao.UserDao;
import com.sismics.docs.core.model.jpa.AuthenticationToken;
import com.sismics.docs.core.model.jpa.User;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import java.text.MessageFormat;
import java.util.Date;

View File

@@ -0,0 +1,78 @@
package com.sismics.util.listener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.imageio.ImageIO;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.ServiceRegistry;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
/**
* Takes care of registering and de-registering local ImageIO plugins (service providers) for the servlet context.
* <p>
* Registers all available plugins on {@code contextInitialized} event, using {@code ImageIO.scanForPlugins()}, to make
* sure they are available to the current servlet context.
* De-registers all plugins which have the {@link Thread#getContextClassLoader() current thread's context class loader}
* as its class loader on {@code contextDestroyed} event, to avoid class/resource leak.
* </p>
* Copied from: <a href="https://github.com/haraldk/TwelveMonkeys/blob/master/servlet/src/main/java/com/twelvemonkeys/servlet/image/IIOProviderContextListener.java">https://github.com/haraldk/TwelveMonkeys</a>
*
* @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a>
* @author last modified by $Author: haraldk$
* @version $Id: IIOProviderContextListener.java,v 1.0 14.02.12 21:53 haraldk Exp$
* @see ImageIO#scanForPlugins()
*/
public final class IIOProviderContextListener implements ServletContextListener {
public void contextInitialized(final ServletContextEvent event) {
event.getServletContext().log("Scanning for locally installed ImageIO plugin providers");
// Registers all locally available IIO plugins.
ImageIO.scanForPlugins();
}
public void contextDestroyed(final ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
// De-register any locally registered IIO plugins. Relies on each web app having its own context class loader.
LocalFilter localFilter = new LocalFilter(Thread.currentThread().getContextClassLoader()); // scanForPlugins uses context class loader
IIORegistry registry = IIORegistry.getDefaultInstance();
Iterator<Class<?>> categories = registry.getCategories();
while (categories.hasNext()) {
deregisterLocalProvidersForCategory(registry, localFilter, categories.next(), servletContext);
}
}
private static <T> void deregisterLocalProvidersForCategory(IIORegistry registry, LocalFilter localFilter, Class<T> category, ServletContext context) {
Iterator<T> providers = registry.getServiceProviders(category, localFilter, false);
// Copy the providers, as de-registering while iterating over providers will lead to ConcurrentModificationExceptions.
List<T> providersCopy = new ArrayList<>();
while (providers.hasNext()) {
providersCopy.add(providers.next());
}
for (T provider : providersCopy) {
registry.deregisterServiceProvider(provider, category);
context.log(String.format("Unregistered locally installed provider class: %s", provider.getClass()));
}
}
static class LocalFilter implements ServiceRegistry.Filter {
private final ClassLoader loader;
public LocalFilter(ClassLoader loader) {
this.loader = loader;
}
public boolean filter(Object provider) {
return provider.getClass().getClassLoader() == loader;
}
}
}