@OnClassLoadEvent(classNameRegexp = "org.jboss.resteasy.plugins.server.servlet.FilterDispatcher") public static void patchFilterDispatcher(CtClass ctClass, ClassPool classPool) throws NotFoundException, CannotCompileException { CtClass fltCfgClass = classPool.get("javax.servlet.FilterConfig"); CtField configField = new CtField(fltCfgClass, FIELD_NAME, ctClass); ctClass.addField(configField); CtClass setClass = classPool.get(java.util.Set.class.getName()); CtField paramsField = new CtField(setClass, PARAMETER_FIELD_NAME, ctClass); ctClass.addField(paramsField); CtMethod methInit = ctClass.getDeclaredMethod("init"); methInit.insertBefore( "{" + " if(this." + PARAMETER_FIELD_NAME + " == null) {" + PluginManagerInvoker.buildInitializePlugin(ResteasyPlugin.class) + PluginManagerInvoker.buildCallPluginMethod( ResteasyPlugin.class, "registerDispatcher", "this", "java.lang.Object") + " }" + " this." + FIELD_NAME + " = $1;" + " this." + PARAMETER_FIELD_NAME + " = " + ResteasyContextParams.class.getName() + ".init($1.getServletContext(), this." + PARAMETER_FIELD_NAME + "); " + "}"); }