From 768b3ca49dc772511def4e6e2e984137b540fc0c Mon Sep 17 00:00:00 2001 From: ReaJason Date: Sat, 8 Aug 2026 19:05:35 +0800 Subject: [PATCH] feat: support tongweb 7 embedded shell --- .../processors/ValveBuilderModifier.java | 8 ++++++-- .../TongWebContextValveAgentInjector.java | 3 ++- .../TongWebFilterChainAgentInjector.java | 3 ++- .../tongweb/TongWebFilterInjector.java | 18 +++++++++++++----- .../injector/tongweb/TongWebValveInjector.java | 9 +++++++-- .../javaweb/memshell/server/TongWeb.java | 3 +++ 6 files changed, 33 insertions(+), 11 deletions(-) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/processors/ValveBuilderModifier.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/processors/ValveBuilderModifier.java index 9cfd51c7..31ac9fda 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/processors/ValveBuilderModifier.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/processors/ValveBuilderModifier.java @@ -45,6 +45,7 @@ public class ValveBuilderModifier implements Processor> { public static final String TONGWEB6_VALVE_PACKAGE = "com.tongweb.web.thor"; public static final String TONGWEB7_VALVE_PACKAGE = "com.tongweb.catalina"; public static final String TONGWEB8_VALVE_PACKAGE = "com.tongweb.server"; + public static final String TONGWEB_EMBEDDED_VALVE_PACKAGE = "com.tongweb.container"; public static DynamicType.Builder modifier(DynamicType.Builder builder, AbstractServer shell, String serverVersion) { String packageName = null; @@ -53,7 +54,7 @@ public class ValveBuilderModifier implements Processor> { } if (shell instanceof TongWeb) { if (serverVersion == null) { - throw new GenerationException("serverVersion is needed for TongWeb Valve, please use one of ['6', '7', '8'] for shellConfig.serverVersion"); + throw new GenerationException("serverVersion is needed for TongWeb Valve, please use one of ['6', '7', '8', '7.E'] for shellConfig.serverVersion"); } switch (serverVersion) { case "6": @@ -65,8 +66,11 @@ public class ValveBuilderModifier implements Processor> { case "8": packageName = TONGWEB8_VALVE_PACKAGE; break; + case "7.E": + packageName = TONGWEB_EMBEDDED_VALVE_PACKAGE; + break; default: - throw new GenerationException("TongWeb Valve unknow serverVersion: [" + serverVersion + "], please use one of ['6', '7', '8'] for shellConfig.serverVersion"); + throw new GenerationException("TongWeb Valve unknow serverVersion: [" + serverVersion + "], please use one of ['6', '7', '8', '7.E'] for shellConfig.serverVersion"); } } if (StringUtils.isNotBlank(packageName)) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebContextValveAgentInjector.java b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebContextValveAgentInjector.java index 801edca6..bda6e8ee 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebContextValveAgentInjector.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebContextValveAgentInjector.java @@ -17,7 +17,8 @@ public class TongWebContextValveAgentInjector implements ClassFileTransformer { private static final String[] TARGET_CLASSES = new String[]{ "com/tongweb/web/thor/core/StandardContextValve", "com/tongweb/catalina/core/StandardContextValve", - "com/tongweb/server/core/StandardContextValve" + "com/tongweb/server/core/StandardContextValve", + "com/tongweb/container/core/StandardContextValve" }; private static final String TARGET_METHOD_NAME = "invoke"; diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterChainAgentInjector.java b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterChainAgentInjector.java index 9b3140a4..7945abe3 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterChainAgentInjector.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterChainAgentInjector.java @@ -17,7 +17,8 @@ public class TongWebFilterChainAgentInjector implements ClassFileTransformer { private static final String[] TARGET_CLASSES = new String[]{ "com/tongweb/web/thor/core/ApplicationFilterChain", "com/tongweb/catalina/core/ApplicationFilterChain", - "com/tongweb/server/core/ApplicationFilterChain" + "com/tongweb/server/core/ApplicationFilterChain", + "com/tongweb/container/core/ApplicationFilterChain" }; private static final String TARGET_METHOD_NAME = "doFilter"; diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterInjector.java b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterInjector.java index 52443cfa..3e6a5eab 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterInjector.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebFilterInjector.java @@ -167,11 +167,19 @@ public class TongWebFilterInjector { filterMapClass = contextClassLoader.loadClass("com.tongweb.web.thor.deploy.FilterMap"); filterMap = filterMapClass.newInstance(); } catch (Exception e) { - // tongweb 8 - constructor = contextClassLoader.loadClass("com.tongweb.server.core.ApplicationFilterConfig").getDeclaredConstructors()[0]; - filterDef = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterDef").newInstance(); - filterMapClass = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterMap"); - filterMap = filterMapClass.newInstance(); + try { + // tongweb 8 + constructor = contextClassLoader.loadClass("com.tongweb.server.core.ApplicationFilterConfig").getDeclaredConstructors()[0]; + filterDef = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterDef").newInstance(); + filterMapClass = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterMap"); + filterMap = filterMapClass.newInstance(); + } catch (Exception e1) { + // tongweb embedded (spring boot) + constructor = contextClassLoader.loadClass("com.tongweb.container.core.ApplicationFilterConfig").getDeclaredConstructors()[0]; + filterDef = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterDef").newInstance(); + filterMapClass = contextClassLoader.loadClass("com.tongweb.web.util.descriptor.web.FilterMap"); + filterMap = filterMapClass.newInstance(); + } } } invokeMethod(filterDef, "setFilterName", new Class[]{String.class}, new Object[]{filterClassName}); diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebValveInjector.java b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebValveInjector.java index 7562ba40..47779166 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebValveInjector.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/injector/tongweb/TongWebValveInjector.java @@ -141,8 +141,13 @@ public class TongWebValveInjector { // tongweb6 valveClass = contextClassLoader.loadClass("com.tongweb.web.thor.Valve"); } catch (ClassNotFoundException e1) { - // tongweb8 - valveClass = contextClassLoader.loadClass("com.tongweb.server.Valve"); + try { + // tongweb8 + valveClass = contextClassLoader.loadClass("com.tongweb.server.Valve"); + } catch (ClassNotFoundException e2) { + // tongweb embedded (spring boot) + valveClass = contextClassLoader.loadClass("com.tongweb.container.Valve"); + } } } invokeMethod(pipeline, "addValve", new Class[]{valveClass}, new Object[]{valve}); diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb.java index ee18c7c7..7e0441cd 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb.java @@ -19,8 +19,11 @@ public class TongWeb extends AbstractServer { public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(LISTENER, TongWebListenerInjector.class) + .addInjector(JAKARTA_LISTENER, TongWebListenerInjector.class) .addInjector(FILTER, TongWebFilterInjector.class) + .addInjector(JAKARTA_FILTER, TongWebFilterInjector.class) .addInjector(VALVE, TongWebValveInjector.class) + .addInjector(JAKARTA_VALVE, TongWebValveInjector.class) .addInjector(AGENT_FILTER_CHAIN, TongWebFilterChainAgentInjector.class) .addInjector(CATALINA_AGENT_CONTEXT_VALVE, TongWebContextValveAgentInjector.class) .build();