Browse Source

#472 improve error messages

Shinsuke Sugaya 9 years ago
parent
commit
4fe742be6c
25 changed files with 213 additions and 102 deletions
  1. 39 18
      src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java
  2. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/boostdoc/AdminBoostdocAction.java
  3. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java
  4. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java
  5. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/dict/synonym/AdminDictSynonymAction.java
  6. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/duplicatehost/AdminDuplicatehostAction.java
  7. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java
  8. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/fileauth/AdminFileauthAction.java
  9. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java
  10. 28 21
      src/main/java/org/codelibs/fess/app/web/admin/group/AdminGroupAction.java
  11. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/keymatch/AdminKeymatchAction.java
  12. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/labeltype/AdminLabeltypeAction.java
  13. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/pathmap/AdminPathmapAction.java
  14. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/reqheader/AdminReqheaderAction.java
  15. 12 10
      src/main/java/org/codelibs/fess/app/web/admin/role/AdminRoleAction.java
  16. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/roletype/AdminRoletypeAction.java
  17. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/scheduler/AdminSchedulerAction.java
  18. 39 30
      src/main/java/org/codelibs/fess/app/web/admin/user/AdminUserAction.java
  19. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/webauth/AdminWebauthAction.java
  20. 1 1
      src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java
  21. 10 1
      src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java
  22. 57 3
      src/main/java/org/codelibs/fess/mylasta/action/FessMessages.java
  23. 4 1
      src/main/resources/fess_message.properties
  24. 4 1
      src/main/resources/fess_message_en.properties
  25. 4 1
      src/main/resources/fess_message_ja.properties

+ 39 - 18
src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java

@@ -219,12 +219,18 @@ public class AdminBadwordAction extends FessAdminAction {
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getBadWord(form).ifPresent(entity -> {
-            badWordService.store(entity);
-            suggestHelper.addBadWord(entity.getSuggestWord());
-            saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+        getBadWord(form).ifPresent(
+                entity -> {
+                    try {
+                        badWordService.store(entity);
+                        suggestHelper.addBadWord(entity.getSuggestWord());
+                        saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
+                    } catch (Exception e) {
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
@@ -234,11 +240,17 @@ public class AdminBadwordAction extends FessAdminAction {
         verifyCrudMode(form.crudMode, CrudMode.EDIT);
         verifyCrudMode(form.crudMode, CrudMode.EDIT);
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getBadWord(form).ifPresent(entity -> {
-            badWordService.store(entity);
-            suggestHelper.storeAllBadWords();
-            saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
-        }).orElse(() -> {
+        getBadWord(form).ifPresent(
+                entity -> {
+                    try {
+                        badWordService.store(entity);
+                        suggestHelper.storeAllBadWords();
+                        saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
+                    } catch (Exception e) {
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToUpdateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
             throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
             throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
@@ -250,13 +262,22 @@ public class AdminBadwordAction extends FessAdminAction {
         validate(form, messages -> {}, () -> asDetailsHtml());
         validate(form, messages -> {}, () -> asDetailsHtml());
         verifyToken(() -> asDetailsHtml());
         verifyToken(() -> asDetailsHtml());
         final String id = form.id;
         final String id = form.id;
-        badWordService.getBadWord(id).ifPresent(entity -> {
-            badWordService.delete(entity);
-            suggestHelper.deleteBadWord(entity.getSuggestWord());
-            saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
-        });
+        badWordService
+                .getBadWord(id)
+                .ifPresent(
+                        entity -> {
+                            try {
+                                badWordService.delete(entity);
+                                suggestHelper.deleteBadWord(entity.getSuggestWord());
+                                saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
+                            } catch (Exception e) {
+                                throwValidationError(
+                                        messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                        () -> asDetailsHtml());
+                            }
+                        }).orElse(() -> {
+                    throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
+                });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
 
 

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/boostdoc/AdminBoostdocAction.java

@@ -166,7 +166,7 @@ public class AdminBoostdocAction extends FessAdminAction {
             boostDocumentRuleService.store(entity);
             boostDocumentRuleService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java

@@ -181,7 +181,7 @@ public class AdminDataconfigAction extends FessAdminAction {
             dataConfigService.store(entity);
             dataConfigService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java

@@ -274,7 +274,7 @@ public class AdminDictKuromojiAction extends FessAdminAction {
             kuromojiService.store(form.dictId, entity);
             kuromojiService.store(form.dictId, entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId));
         return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId));
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/dict/synonym/AdminDictSynonymAction.java

@@ -278,7 +278,7 @@ public class AdminDictSynonymAction extends FessAdminAction {
             synonymService.store(form.dictId, entity);
             synonymService.store(form.dictId, entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId));
         return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId));
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/duplicatehost/AdminDuplicatehostAction.java

@@ -167,7 +167,7 @@ public class AdminDuplicatehostAction extends FessAdminAction {
             duplicateHostService.store(entity);
             duplicateHostService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/elevateword/AdminElevatewordAction.java

@@ -233,7 +233,7 @@ public class AdminElevatewordAction extends FessAdminAction {
                             entity.getTargetRole(), entity.getBoost());
                             entity.getTargetRole(), entity.getBoost());
                     saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
                     saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
                 }).orElse(() -> {
                 }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/fileauth/AdminFileauthAction.java

@@ -184,7 +184,7 @@ public class AdminFileauthAction extends FessAdminAction {
             fileAuthenticationService.store(entity);
             fileAuthenticationService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java

@@ -177,7 +177,7 @@ public class AdminFileconfigAction extends FessAdminAction {
             fileConfigService.store(entity);
             fileConfigService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 28 - 21
src/main/java/org/codelibs/fess/app/web/admin/group/AdminGroupAction.java

@@ -149,16 +149,18 @@ public class AdminGroupAction extends FessAdminAction {
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getGroup(form).ifPresent(entity -> {
-            try {
-                groupService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to add " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+        getGroup(form).ifPresent(
+                entity -> {
+                    try {
+                        groupService.store(entity);
+                        saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
+                    } catch (final Exception e) {
+                        logger.error("Failed to add " + entity, e);
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
@@ -169,17 +171,22 @@ public class AdminGroupAction extends FessAdminAction {
         validate(form, messages -> {}, () -> asDetailsHtml());
         validate(form, messages -> {}, () -> asDetailsHtml());
         verifyToken(() -> asDetailsHtml());
         verifyToken(() -> asDetailsHtml());
         final String id = form.id;
         final String id = form.id;
-        groupService.getGroup(id).ifPresent(entity -> {
-            try {
-                groupService.delete(entity);
-                saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to delete " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
-        });
+        groupService
+                .getGroup(id)
+                .ifPresent(
+                        entity -> {
+                            try {
+                                groupService.delete(entity);
+                                saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
+                            } catch (final Exception e) {
+                                logger.error("Failed to delete " + entity, e);
+                                throwValidationError(
+                                        messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                        () -> asDetailsHtml());
+                            }
+                        }).orElse(() -> {
+                    throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
+                });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
 
 

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/keymatch/AdminKeymatchAction.java

@@ -169,7 +169,7 @@ public class AdminKeymatchAction extends FessAdminAction {
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             ComponentUtil.getKeyMatchHelper().update();
             ComponentUtil.getKeyMatchHelper().update();
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/labeltype/AdminLabeltypeAction.java

@@ -175,7 +175,7 @@ public class AdminLabeltypeAction extends FessAdminAction {
             labelTypeService.store(entity);
             labelTypeService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/pathmap/AdminPathmapAction.java

@@ -168,7 +168,7 @@ public class AdminPathmapAction extends FessAdminAction {
             pathMappingService.store(entity);
             pathMappingService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/reqheader/AdminReqheaderAction.java

@@ -184,7 +184,7 @@ public class AdminReqheaderAction extends FessAdminAction {
             requestHeaderService.store(entity);
             requestHeaderService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 12 - 10
src/main/java/org/codelibs/fess/app/web/admin/role/AdminRoleAction.java

@@ -149,16 +149,18 @@ public class AdminRoleAction extends FessAdminAction {
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         verifyCrudMode(form.crudMode, CrudMode.CREATE);
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getRole(form).ifPresent(entity -> {
-            try {
-                roleService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to add " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+        getRole(form).ifPresent(
+                entity -> {
+                    try {
+                        roleService.store(entity);
+                        saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
+                    } catch (final Exception e) {
+                        logger.error("Failed to add " + entity, e);
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/roletype/AdminRoletypeAction.java

@@ -170,7 +170,7 @@ public class AdminRoletypeAction extends FessAdminAction {
             roleTypeService.store(entity);
             roleTypeService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/scheduler/AdminSchedulerAction.java

@@ -204,7 +204,7 @@ public class AdminSchedulerAction extends FessAdminAction {
             scheduledJobService.store(entity);
             scheduledJobService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 39 - 30
src/main/java/org/codelibs/fess/app/web/admin/user/AdminUserAction.java

@@ -191,16 +191,18 @@ public class AdminUserAction extends FessAdminAction {
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyPassword(form, () -> asEditHtml());
         verifyPassword(form, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getUser(form).ifPresent(entity -> {
-            try {
-                userService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to add " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+        getUser(form).ifPresent(
+                entity -> {
+                    try {
+                        userService.store(entity);
+                        saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
+                    } catch (final Exception e) {
+                        logger.error("Failed to add " + entity, e);
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
@@ -211,15 +213,17 @@ public class AdminUserAction extends FessAdminAction {
         validate(form, messages -> {}, () -> asEditHtml());
         validate(form, messages -> {}, () -> asEditHtml());
         verifyPassword(form, () -> asEditHtml());
         verifyPassword(form, () -> asEditHtml());
         verifyToken(() -> asEditHtml());
         verifyToken(() -> asEditHtml());
-        getUser(form).ifPresent(entity -> {
-            try {
-                userService.store(entity);
-                saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to update " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
-            }
-        }).orElse(() -> {
+        getUser(form).ifPresent(
+                entity -> {
+                    try {
+                        userService.store(entity);
+                        saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
+                    } catch (final Exception e) {
+                        logger.error("Failed to update " + entity, e);
+                        throwValidationError(messages -> messages.addErrorsCrudFailedToUpdateCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                () -> asEditHtml());
+                    }
+                }).orElse(() -> {
             throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
             throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
@@ -230,17 +234,22 @@ public class AdminUserAction extends FessAdminAction {
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);
         verifyCrudMode(form.crudMode, CrudMode.DETAILS);
         validate(form, messages -> {}, () -> asDetailsHtml());
         validate(form, messages -> {}, () -> asDetailsHtml());
         final String id = form.id;
         final String id = form.id;
-        userService.getUser(id).ifPresent(entity -> {
-            try {
-                userService.delete(entity);
-                saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
-            } catch (final Exception e) {
-                logger.error("Failed to delete " + entity, e);
-                throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
-            }
-        }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
-        });
+        userService
+                .getUser(id)
+                .ifPresent(
+                        entity -> {
+                            try {
+                                userService.delete(entity);
+                                saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
+                            } catch (final Exception e) {
+                                logger.error("Failed to delete " + entity, e);
+                                throwValidationError(
+                                        messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)),
+                                        () -> asDetailsHtml());
+                            }
+                        }).orElse(() -> {
+                    throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
+                });
         return redirect(getClass());
         return redirect(getClass());
     }
     }
 
 

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/webauth/AdminWebauthAction.java

@@ -182,7 +182,7 @@ public class AdminWebauthAction extends FessAdminAction {
             webAuthenticationService.store(entity);
             webAuthenticationService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java

@@ -177,7 +177,7 @@ public class AdminWebconfigAction extends FessAdminAction {
             webConfigService.store(entity);
             webConfigService.store(entity);
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
             saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
         }).orElse(() -> {
         }).orElse(() -> {
-            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml());
+            throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
         });
         });
         return redirect(getClass());
         return redirect(getClass());
     }
     }

+ 10 - 1
src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java

@@ -66,6 +66,16 @@ public abstract class FessAdminAction extends FessBaseAction {
         return LaServletContextUtil.getServletContext();
         return LaServletContextUtil.getServletContext();
     }
     }
 
 
+    protected String buildThrowableMessage(Throwable t) {
+        StringBuilder buf = new StringBuilder(100);
+        Throwable current = t;
+        while (current != null) {
+            buf.append(current.getLocalizedMessage()).append(' ');
+            current = current.getCause();
+        }
+        return buf.toString();
+    }
+
     // ===================================================================================
     // ===================================================================================
     //                                                                            Document
     //                                                                            Document
     //                                                                            ========
     //                                                                            ========
@@ -107,7 +117,6 @@ public abstract class FessAdminAction extends FessBaseAction {
 
 
     @Override
     @Override
     public ActionResponse hookBefore(final ActionRuntime runtime) {
     public ActionResponse hookBefore(final ActionRuntime runtime) {
-        final String username = getUserBean().map(u -> u.getUserId()).orElse("-");
         final String requestPath = runtime.getRequestPath();
         final String requestPath = runtime.getRequestPath();
         final String executeName = runtime.getExecuteMethod().getName();
         final String executeName = runtime.getExecuteMethod().getName();
         activityHelper.access(getUserBean(), requestPath, executeName);
         activityHelper.access(getUserBean(), requestPath, executeName);

+ 57 - 3
src/main/java/org/codelibs/fess/mylasta/action/FessMessages.java

@@ -300,8 +300,17 @@ public class FessMessages extends FessLabels {
     public static final String ERRORS_crud_invalid_mode = "{errors.crud_invalid_mode}";
     public static final String ERRORS_crud_invalid_mode = "{errors.crud_invalid_mode}";
 
 
     /** The key of the message: Failed to create a new data. */
     /** The key of the message: Failed to create a new data. */
+    public static final String ERRORS_crud_failed_to_create_instance = "{errors.crud_failed_to_create_instance}";
+
+    /** The key of the message: Failed to create a new data. ({0}) */
     public static final String ERRORS_crud_failed_to_create_crud_table = "{errors.crud_failed_to_create_crud_table}";
     public static final String ERRORS_crud_failed_to_create_crud_table = "{errors.crud_failed_to_create_crud_table}";
 
 
+    /** The key of the message: Failed to update the data. ({0}) */
+    public static final String ERRORS_crud_failed_to_update_crud_table = "{errors.crud_failed_to_update_crud_table}";
+
+    /** The key of the message: Failed to delete the data. ({0}) */
+    public static final String ERRORS_crud_failed_to_delete_crud_table = "{errors.crud_failed_to_delete_crud_table}";
+
     /** The key of the message: Could not find the data({0}). */
     /** The key of the message: Could not find the data({0}). */
     public static final String ERRORS_crud_could_not_find_crud_table = "{errors.crud_could_not_find_crud_table}";
     public static final String ERRORS_crud_could_not_find_crud_table = "{errors.crud_could_not_find_crud_table}";
 
 
@@ -1716,16 +1725,61 @@ public class FessMessages extends FessLabels {
     }
     }
 
 
     /**
     /**
-     * Add the created action message for the key 'errors.crud_failed_to_create_crud_table' with parameters.
+     * Add the created action message for the key 'errors.crud_failed_to_create_instance' with parameters.
      * <pre>
      * <pre>
      * message: Failed to create a new data.
      * message: Failed to create a new data.
      * </pre>
      * </pre>
      * @param property The property name for the message. (NotNull)
      * @param property The property name for the message. (NotNull)
      * @return this. (NotNull)
      * @return this. (NotNull)
      */
      */
-    public FessMessages addErrorsCrudFailedToCreateCrudTable(String property) {
+    public FessMessages addErrorsCrudFailedToCreateInstance(String property) {
+        assertPropertyNotNull(property);
+        add(property, new ActionMessage(ERRORS_crud_failed_to_create_instance));
+        return this;
+    }
+
+    /**
+     * Add the created action message for the key 'errors.crud_failed_to_create_crud_table' with parameters.
+     * <pre>
+     * message: Failed to create a new data. ({0})
+     * </pre>
+     * @param property The property name for the message. (NotNull)
+     * @param arg0 The parameter arg0 for message. (NotNull)
+     * @return this. (NotNull)
+     */
+    public FessMessages addErrorsCrudFailedToCreateCrudTable(String property, String arg0) {
+        assertPropertyNotNull(property);
+        add(property, new ActionMessage(ERRORS_crud_failed_to_create_crud_table, arg0));
+        return this;
+    }
+
+    /**
+     * Add the created action message for the key 'errors.crud_failed_to_update_crud_table' with parameters.
+     * <pre>
+     * message: Failed to update the data. ({0})
+     * </pre>
+     * @param property The property name for the message. (NotNull)
+     * @param arg0 The parameter arg0 for message. (NotNull)
+     * @return this. (NotNull)
+     */
+    public FessMessages addErrorsCrudFailedToUpdateCrudTable(String property, String arg0) {
+        assertPropertyNotNull(property);
+        add(property, new ActionMessage(ERRORS_crud_failed_to_update_crud_table, arg0));
+        return this;
+    }
+
+    /**
+     * Add the created action message for the key 'errors.crud_failed_to_delete_crud_table' with parameters.
+     * <pre>
+     * message: Failed to delete the data. ({0})
+     * </pre>
+     * @param property The property name for the message. (NotNull)
+     * @param arg0 The parameter arg0 for message. (NotNull)
+     * @return this. (NotNull)
+     */
+    public FessMessages addErrorsCrudFailedToDeleteCrudTable(String property, String arg0) {
         assertPropertyNotNull(property);
         assertPropertyNotNull(property);
-        add(property, new ActionMessage(ERRORS_crud_failed_to_create_crud_table));
+        add(property, new ActionMessage(ERRORS_crud_failed_to_delete_crud_table, arg0));
         return this;
         return this;
     }
     }
 
 

+ 4 - 1
src/main/resources/fess_message.properties

@@ -123,7 +123,10 @@ errors.invalid_query_unsupported_sort_field=The given sort ({0}) is not supporte
 errors.invalid_query_unsupported_sort_order=The given sort order ({0}) is not supported.
 errors.invalid_query_unsupported_sort_order=The given sort order ({0}) is not supported.
 
 
 errors.crud_invalid_mode=Invalid mode(expected value is {0}, but it's {1}).
 errors.crud_invalid_mode=Invalid mode(expected value is {0}, but it's {1}).
-errors.crud_failed_to_create_crud_table=Failed to create a new data.
+errors.crud_failed_to_create_instance=Failed to create a new data.
+errors.crud_failed_to_create_crud_table=Failed to create a new data. ({0})
+errors.crud_failed_to_update_crud_table=Failed to update the data. ({0})
+errors.crud_failed_to_delete_crud_table=Failed to delete the data. ({0})
 errors.crud_could_not_find_crud_table=Could not find the data({0}).
 errors.crud_could_not_find_crud_table=Could not find the data({0}).
 
 
 success.update_crawler_params=Updated parameters.
 success.update_crawler_params=Updated parameters.

+ 4 - 1
src/main/resources/fess_message_en.properties

@@ -123,7 +123,10 @@ errors.invalid_query_unsupported_sort_field=The given sort ({0}) is not supporte
 errors.invalid_query_unsupported_sort_order=The given sort order ({0}) is not supported.
 errors.invalid_query_unsupported_sort_order=The given sort order ({0}) is not supported.
 
 
 errors.crud_invalid_mode=Invalid mode(expected value is {0}, but it's {1}).
 errors.crud_invalid_mode=Invalid mode(expected value is {0}, but it's {1}).
-errors.crud_failed_to_create_crud_table=Failed to create a new data.
+errors.crud_failed_to_create_instance=Failed to create a new data.
+errors.crud_failed_to_create_crud_table=Failed to create a new data. ({0})
+errors.crud_failed_to_update_crud_table=Failed to update the data. ({0})
+errors.crud_failed_to_delete_crud_table=Failed to delete the data. ({0})
 errors.crud_could_not_find_crud_table=Could not find the data({0}).
 errors.crud_could_not_find_crud_table=Could not find the data({0}).
 
 
 success.update_crawler_params=Updated parameters.
 success.update_crawler_params=Updated parameters.

+ 4 - 1
src/main/resources/fess_message_ja.properties

@@ -114,7 +114,10 @@ errors.invalid_query_sort_value = \u6307\u5b9a\u3055\u308c\u305f\u30bd\u30fc\u30
 errors.invalid_query_unsupported_sort_field = \u6307\u5b9a\u3055\u308c\u305f\u30bd\u30fc\u30c8 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
 errors.invalid_query_unsupported_sort_field = \u6307\u5b9a\u3055\u308c\u305f\u30bd\u30fc\u30c8 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
 errors.invalid_query_unsupported_sort_order = \u6307\u5b9a\u3055\u308c\u305f\u30bd\u30fc\u30c8\u9806 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
 errors.invalid_query_unsupported_sort_order = \u6307\u5b9a\u3055\u308c\u305f\u30bd\u30fc\u30c8\u9806 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
 errors.crud_invalid_mode = \u30e2\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002({0} \u3067\u306a\u304f\u3001{1} \u3067\u3059)
 errors.crud_invalid_mode = \u30e2\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002({0} \u3067\u306a\u304f\u3001{1} \u3067\u3059)
-errors.crud_failed_to_create_crud_table = \u65b0\u3057\u3044\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+errors.crud_failed_to_create_instance = \u65b0\u3057\u3044\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+errors.crud_failed_to_create_crud_table = \u65b0\u3057\u3044\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002({0})
+errors.crud_failed_to_update_crud_table=\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002({0})
+errors.crud_failed_to_delete_crud_table=\u30c7\u30fc\u30bf\u306e\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002({0})
 errors.crud_could_not_find_crud_table = \u30c7\u30fc\u30bf {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
 errors.crud_could_not_find_crud_table = \u30c7\u30fc\u30bf {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
 errors.could_not_find_backup_index=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
 errors.could_not_find_backup_index=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
 errors.no_user_for_changing_password=\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
 errors.no_user_for_changing_password=\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002