From ed4588b7cc25ef512906ebf5ae9b43e21e5e5180 Mon Sep 17 00:00:00 2001
From: Shinsuke Sugaya
Date: Sat, 26 Sep 2026 09:43:50 +0900
Subject: [PATCH] chore: drop the design-JSP mappings from the systemHelper
override
Fess 15.9 removes the JSP search pages and the per-virtual-host JSP
copies, so fess.xml no longer registers design JSP names on
systemHelper and SystemHelper.addDesignJspFileName() is gone. The
override repeated those 19 calls, which now name a method that does
not exist: initializing the component fails with
BeanMethodNotFoundException, as the plugin's own tests show.
The override now declares no postConstruct, like the core definition.
The README and the CustomSystemHelper javadoc say what to keep in step
with, and the requirement moves to Fess 15.9.
---
README.md | 20 ++--
.../example/helper/CustomSystemHelper.java | 2 +-
src/main/resources/fess+systemHelper.xml | 92 ++-----------------
3 files changed, 15 insertions(+), 99 deletions(-)
diff --git a/README.md b/README.md
index 2889e3f..bc60608 100644
--- a/README.md
+++ b/README.md
@@ -73,22 +73,16 @@ a parse failure and set a `fess.webapp.plugin` marker property.
-
- "index"
- "index.jsp"
-
-
```
> **Maintenance cost (read before overriding):** because a redefine replaces the
-> *whole* definition, the override must repeat **every** `postConstruct` the core
-> `systemHelper` performs — the full set of design-JSP name mappings. These
-> are copied verbatim from Fess core's `fess.xml`, and the referenced `*.jsp`
-> files are provided by Fess itself (this plugin ships none of them). You must
-> keep that list in sync with each Fess release, or design pages (e.g.
-> `chat` / `busy` / `newpassword`) will stop resolving. This is exactly why
-> Pattern 1 is preferred whenever you do not truly need to replace core behavior.
+> *whole* definition, the override must repeat **every** property and
+> `postConstruct` that Fess core declares for the component in `fess.xml`. Fess
+> 15.9 declares none for `systemHelper`; earlier releases registered the
+> design-JSP pages here, which 15.9 removed. Check `fess.xml` for each Fess
+> release you support. This is exactly why Pattern 1 is preferred whenever you do
+> not truly need to replace core behavior.
## The `Fess-WebAppJar` manifest
@@ -114,7 +108,7 @@ application's classloader. This is set in [`pom.xml`](pom.xml) via the
- Java 21 or later
- Maven 3.8 or later
-- Fess 15.8 or later
+- Fess 15.9 or later
## Project structure
diff --git a/src/main/java/org/codelibs/fess/webapp/example/helper/CustomSystemHelper.java b/src/main/java/org/codelibs/fess/webapp/example/helper/CustomSystemHelper.java
index 6424587..2a0b14c 100644
--- a/src/main/java/org/codelibs/fess/webapp/example/helper/CustomSystemHelper.java
+++ b/src/main/java/org/codelibs/fess/webapp/example/helper/CustomSystemHelper.java
@@ -32,7 +32,7 @@
* {@code fess+systemHelper.xml}) tells LastaDi to register THIS class in place
* of the core {@link SystemHelper}. Because a redefine REPLACES the whole
* component definition, the override XML must repeat every {@code postConstruct}
- * the core definition performs (the design-JSP name mappings) — see
+ * the core definition performs (Fess 15.9 declares none) — see
* {@code fess+systemHelper.xml} for the details and the maintenance cost this
* implies.
*
diff --git a/src/main/resources/fess+systemHelper.xml b/src/main/resources/fess+systemHelper.xml
index 0b488cf..43148f1 100644
--- a/src/main/resources/fess+systemHelper.xml
+++ b/src/main/resources/fess+systemHelper.xml
@@ -11,94 +11,16 @@
below. Contrast this with the additive "app++.xml" in this plugin, which ADDS
a brand-new component instead of replacing an existing one.
- IMPORTANT: a redefine replaces the ENTIRE component definition, so this file
- must repeat every postConstruct that Fess core performs on systemHelper -
- namely the design-JSP name mappings below. They are copied verbatim from Fess
- core's fess.xml (the referenced *.jsp files are provided by Fess itself, not
- by this plugin). If you override a core component, keep this list in sync with
- each Fess release; otherwise design pages (e.g. chat / busy / newpassword)
- will stop resolving. That maintenance cost is the main reason to prefer adding
- a new component (app++.xml) whenever you do not truly need to replace core
- behavior.
+ IMPORTANT: a redefine replaces the ENTIRE component definition, so it must
+ repeat every property and postConstruct that Fess core declares for the
+ component. Fess 15.9 declares none for systemHelper, so this override has
+ none either. Check fess.xml of the Fess release you build against and keep
+ this file in step with it. That maintenance cost is the main reason to prefer
+ adding a new component (app++.xml) whenever you do not truly need to replace
+ core behavior.
-->
-
- "index"
- "index.jsp"
-
-
- "header"
- "header.jsp"
-
-
- "footer"
- "footer.jsp"
-
-
- "search"
- "search.jsp"
-
-
- "searchResults"
- "searchResults.jsp"
-
-
- "searchNoResult"
- "searchNoResult.jsp"
-
-
- "searchOptions"
- "searchOptions.jsp"
-
-
- "advance"
- "advance.jsp"
-
-
- "help"
- "help.jsp"
-
-
- "error"
- "error/error.jsp"
-
-
- "errorNotFound"
- "error/notFound.jsp"
-
-
- "errorSystem"
- "error/system.jsp"
-
-
- "errorBadRequest"
- "error/badRequest.jsp"
-
-
- "errorBusy"
- "error/busy.jsp"
-
-
- "cache"
- "cache.hbs"
-
-
- "login"
- "login/index.jsp"
-
-
- "newpassword"
- "login/newpassword.jsp"
-
-
- "profile"
- "profile/index.jsp"
-
-
- "chat"
- "chat/chat.jsp"
-