Merge pull request #297 from jflute/lastaflute

Lastaflute: migrating AdminDesignAtion
This commit is contained in:
Shinsuke Sugaya 2015-07-25 22:29:51 +09:00
commit 2e08f731e1
19 changed files with 427 additions and 1673 deletions

View file

@ -17,5 +17,43 @@ body {
</style>
</head>
<body>
/error/ :: ErrorAction <br>
/login/ :: LoginAction <br>
/ :: RootAction <br>
/admin/design/ :: AdminDesignAction <br>
/boost/document/rule/ :: BoostDocumentRuleAction <br>
/crawl/ :: CrawlAction <br>
/crawling/session/ :: CrawlingSessionAction <br>
/data/ :: DataAction <br>
/data/config/ :: DataConfigAction <br>
/dict/ :: DictAction <br>
/document/ :: DocumentAction <br>
/failure/url/ :: FailureUrlAction <br>
/file/authentication/ :: FileAuthenticationAction <br>
/file/config/ :: FileConfigAction <br>
/index/ :: IndexAction <br>
/job/log/ :: JobLogAction <br>
/key/match/ :: KeyMatchAction <br>
/label/type/ :: LabelTypeAction <br>
/log/ :: LogAction <br>
/overlapping/host/ :: OverlappingHostAction <br>
/path/mapping/ :: PathMappingAction <br>
/request/header/ :: RequestHeaderAction <br>
/role/type/ :: RoleTypeAction <br>
/scheduled/job/ :: ScheduledJobAction <br>
/search/list/ :: SearchListAction <br>
/suggest/bad/word/ :: SuggestBadWordAction <br>
/suggest/elevate/word/ :: SuggestElevateWordAction <br>
/system/ :: SystemAction <br>
/system/info/ :: SystemInfoAction <br>
/web/authentication/ :: WebAuthenticationAction <br>
/web/config/ :: WebConfigAction <br>
/wizard/ :: WizardAction <br>
/synonym/ :: SynonymAction <br>
/user/dict/ :: UserDictAction <br>
/abstract/login/ :: AbstractLoginAction <br>
/fess/admin/ :: FessAdminAction <br>
/fess/base/ :: FessBaseAction <br>
/fess/search/ :: FessSearchAction <br>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -115,7 +115,7 @@ public class RootAction {
//@ActionForm
@Resource
protected IndexForm indexForm;
protected RootForm indexForm;
@Resource
protected FessEsClient fessEsClient;

View file

@ -22,7 +22,7 @@ import org.codelibs.fess.entity.FacetInfo;
import org.codelibs.fess.entity.GeoInfo;
import org.codelibs.fess.util.SearchParamMap;
public class IndexForm implements Serializable {
public class RootForm implements Serializable {
private static final long serialVersionUID = 1L;

View file

@ -0,0 +1,326 @@
/*
* Copyright 2009-2015 the CodeLibs Project and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.codelibs.fess.app.web.admin;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import org.apache.commons.io.FileUtils;
import org.codelibs.core.io.FileUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.annotation.Token;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.helper.SystemHelper;
import org.lastaflute.di.util.LdiFileUtil;
import org.lastaflute.web.Execute;
import org.lastaflute.web.callback.ActionRuntime;
import org.lastaflute.web.response.ActionResponse;
import org.lastaflute.web.response.HtmlResponse;
import org.lastaflute.web.response.StreamResponse;
import org.lastaflute.web.servlet.request.ResponseManager;
import org.lastaflute.web.util.LaServletContextUtil;
import org.lastaflute.web.validation.VaErrorHook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author codelibs
* @author jflute
*/
public class AdminDesignAction extends FessAdminAction implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(AdminDesignAction.class);
// ===================================================================================
// Attribute
// =========
@Resource
private ResponseManager responseManager;
@Resource
private DynamicProperties crawlerProperties;
@Resource
private SystemHelper systemHelper;
// ===================================================================================
// Execute
// =======
@Token(save = true, validate = false)
@Execute
public HtmlResponse index() {
return asHtml(path_AdminDesign_AdminDesignJsp).useForm(AdminDesignForm.class);
}
@Token(save = true, validate = false)
@Execute
public HtmlResponse back() {
return asHtml(path_AdminDesign_AdminDesignJsp).useForm(AdminDesignForm.class);
}
@Execute
public HtmlResponse upload(AdminDesignForm form) {
validate(form, messages -> {}, toMainHtml());
final String uploadedFileName = form.designFile.getFileName();
String fileName = form.designFileName;
if (StringUtil.isBlank(fileName)) {
fileName = uploadedFileName;
try {
int pos = fileName.indexOf('/');
if (pos >= 0) {
fileName = fileName.substring(pos + 1);
}
pos = fileName.indexOf('\\');
if (pos >= 0) {
fileName = fileName.substring(pos + 1);
}
} catch (final Exception e) {
throwValidationError(messages -> messages.addErrorsDesignFileNameIsInvalid(GLOBAL), toMainHtml());
}
}
if (StringUtil.isBlank(fileName)) {
throwValidationError(messages -> messages.addErrorsDesignFileNameIsNotFound(GLOBAL), toMainHtml());
}
String baseDir = null;
// normalize filename
if (checkFileType(fileName, systemHelper.getSupportedUploadedMediaExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedMediaExtentions())) {
baseDir = "/images/";
} else if (checkFileType(fileName, systemHelper.getSupportedUploadedCssExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedCssExtentions())) {
baseDir = "/css/";
} else if (checkFileType(fileName, systemHelper.getSupportedUploadedJSExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedJSExtentions())) {
baseDir = "/js/";
} else {
throwValidationError(messages -> messages.addErrorsDesignFileIsUnsupportedType(GLOBAL), toMainHtml());
}
final File uploadFile = new File(getServletContext().getRealPath(baseDir + fileName));
final File parentFile = uploadFile.getParentFile();
if (!parentFile.exists() && !parentFile.mkdirs()) {
logger.warn("Could not create " + parentFile.getAbsolutePath());
}
try {
LdiFileUtil.write(uploadFile.getAbsolutePath(), form.designFile.getFileData());
SAStrutsUtil.addSessionMessage("success.upload_design_file", fileName);
} catch (final Exception e) {
logger.error("Failed to write an image file: {}", fileName, e);
throwValidationError(messages -> messages.addErrorsFailedToWriteDesignImageFile(GLOBAL), toMainHtml());
}
return redirect(getClass());
}
private boolean checkFileType(final String fileName, final String[] exts) {
if (fileName == null) {
return false;
}
final String lFileName = fileName.toLowerCase(Locale.ENGLISH);
for (final String ext : exts) {
if (lFileName.endsWith("." + ext)) {
return true;
}
}
return false;
}
@Token(save = true, validate = false)
@Execute
public HtmlResponse edit(AdminDesignForm form) {
final String jspType = "view";
final File jspFile = getJspFile(form, jspType);
try {
form.content = new String(FileUtil.readBytes(jspFile), Constants.UTF_8);
} catch (final UnsupportedEncodingException e) {
throw new FessSystemException("Invalid encoding", e);
}
return asHtml(path_AdminDesign_AdminDesignEditJsp);
}
@Token(save = true, validate = false)
@Execute
public HtmlResponse editAsUseDefault(AdminDesignForm form) {
final String jspType = "orig/view";
final File jspFile = getJspFile(form, jspType);
try {
form.content = new String(FileUtil.readBytes(jspFile), Constants.UTF_8);
} catch (final UnsupportedEncodingException e) {
throw new FessSystemException("Invalid encoding", e);
}
return asHtml(path_AdminDesign_AdminDesignEditJsp);
}
@Token(save = false, validate = true)
@Execute
public HtmlResponse update(AdminDesignForm form) {
final String jspType = "view";
final File jspFile = getJspFile(form, jspType);
if (form.content == null) {
form.content = StringUtil.EMPTY;
}
try {
LdiFileUtil.write(jspFile.getAbsolutePath(), form.content.getBytes(Constants.UTF_8));
SAStrutsUtil.addSessionMessage("success.update_design_jsp_file", systemHelper.getDesignJspFileName(form.fileName));
} catch (final Exception e) {
logger.error("Failed to update {}", form.fileName, e);
throwValidationError(messages -> messages.addErrorsFailedToUpdateJspFile(GLOBAL), toMainHtml());
}
return redirect(getClass());
}
@Execute
public StreamResponse download(AdminDesignForm form) {
final File file = getTargetFile(form);
if (file == null) {
throwValidationError(messages -> messages.addErrorsTargetFileDoesNotExist(GLOBAL, form.fileName), toMainHtml());
}
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (final FileNotFoundException e) {
logger.error("Not found the file: {}", file.getAbsolutePath(), e);
throwValidationError(messages -> messages.addErrorsFailedToDownloadFile(GLOBAL, form.fileName), toMainHtml());
}
return asStream(file.getName()).stream(fis);
}
@Token(save = false, validate = true)
@Execute
public HtmlResponse delete(AdminDesignForm form) {
final File file = getTargetFile(form);
if (file == null) {
throwValidationError(messages -> messages.addErrorsTargetFileDoesNotExist(GLOBAL, form.fileName), toMainHtml());
}
if (!file.delete()) {
logger.error("Failed to delete {}", file.getAbsolutePath());
throwValidationError(messages -> messages.addErrorsFailedToDeleteFile(GLOBAL, form.fileName), toMainHtml());
}
SAStrutsUtil.addSessionMessage("success.delete_file", form.fileName);
return redirect(getClass());
}
// ===================================================================================
// Hook
// ======
@Override
public ActionResponse hookBefore(ActionRuntime runtime) {
checkEditorStatus(runtime);
return super.hookBefore(runtime);
}
private void checkEditorStatus(ActionRuntime runtime) {
if (cannotEdit()) {
throwValidationError(messages -> messages.addErrorsDesignEditorDisabled(GLOBAL), toMainHtml());
}
}
@Override
public void hookFinally(ActionRuntime runtime) {
super.hookFinally(runtime);
if (runtime.isForwardToHtml()) {
runtime.registerData("fileNameItems", loadFileNameItems());
runtime.registerData("editable", cannotEdit());
}
}
private List<String> loadFileNameItems() {
final File baseDir = new File(getServletContext().getRealPath("/"));
final List<String> fileNameItems = new ArrayList<String>();
final List<File> fileList = getAccessibleFileList(baseDir);
final int length = baseDir.getAbsolutePath().length();
for (final File file : fileList) {
fileNameItems.add(file.getAbsolutePath().substring(length));
}
return fileNameItems;
}
// ===================================================================================
// Assist Logic
// ============
private File getTargetFile(AdminDesignForm form) {
final File baseDir = new File(getServletContext().getRealPath("/"));
final File targetFile = new File(getServletContext().getRealPath(form.fileName));
final List<File> fileList = getAccessibleFileList(baseDir);
boolean exist = false;
for (final File file : fileList) {
if (targetFile.equals(file)) {
exist = true;
break;
}
}
if (exist) {
return targetFile;
}
return null;
}
private List<File> getAccessibleFileList(final File baseDir) {
final List<File> fileList = new ArrayList<File>();
fileList.addAll(FileUtils.listFiles(new File(baseDir, "images"), systemHelper.getSupportedUploadedMediaExtentions(), true));
fileList.addAll(FileUtils.listFiles(new File(baseDir, "css"), systemHelper.getSupportedUploadedCssExtentions(), true));
fileList.addAll(FileUtils.listFiles(new File(baseDir, "js"), systemHelper.getSupportedUploadedJSExtentions(), true));
return fileList;
}
private File getJspFile(final AdminDesignForm form, final String jspType) {
final String jspFileName = systemHelper.getDesignJspFileName(form.fileName);
if (jspFileName == null) {
throwValidationError(messages -> messages.addErrorsInvalidDesignJspFileName(GLOBAL), toMainHtml());
}
final File jspFile = new File(getServletContext().getRealPath("/WEB-INF/" + jspType + "/" + jspFileName));
if (jspFile == null || !jspFile.exists()) {
throwValidationError(messages -> messages.addErrorsDesignJspFileDoesNotExist(GLOBAL), toMainHtml());
}
return jspFile;
}
private VaErrorHook toMainHtml() {
return () -> {
return asHtml(path_AdminDesign_AdminDesignJsp);
};
}
private boolean cannotEdit() {
return Constants.FALSE.equals(crawlerProperties.getProperty(Constants.WEB_DESIGN_EDITOR_PROPERTY, Constants.TRUE));
}
private ServletContext getServletContext() {
return LaServletContextUtil.getServletContext();
}
// TODO fess needed? public? by jflute (2015/07/25)
public String getHelpLink() {
return systemHelper.getHelpLink("design");
}
}

View file

@ -18,15 +18,18 @@ package org.codelibs.fess.app.web.admin;
import java.io.Serializable;
public class DesignForm implements Serializable {
import org.lastaflute.web.ruts.multipart.MultipartFormFile;
public class AdminDesignForm implements Serializable {
private static final long serialVersionUID = 1L;
//@Required(target = "upload")
//public FormFile designFile;
public MultipartFormFile designFile;
public String designFileName;
// TODO jflute unneeded? no validator at the method (2015/07/25)
//@Required(target = "edit,editAsUseDefault,download,delete")
public String fileName;

View file

@ -1,301 +0,0 @@
/*
* Copyright 2009-2015 the CodeLibs Project and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.codelibs.fess.app.web.admin;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.io.FileUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.annotation.Token;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.exception.SSCActionMessagesException;
import org.codelibs.fess.helper.SystemHelper;
import org.lastaflute.web.util.LaResponseUtil;
import org.lastaflute.web.util.LaServletContextUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DesignAction implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(DesignAction.class);
//@ActionForm
@Resource
protected DesignForm designForm;
@Resource
protected DynamicProperties crawlerProperties;
public boolean editable = true;
@Resource
protected SystemHelper systemHelper;
public List<String> fileNameItems;
public String getHelpLink() {
return systemHelper.getHelpLink("design");
}
@Token(save = true, validate = false)
//@Execute(validator = false, input = "index")
public String index() {
checkEditorStatus();
loadFileNameItems();
return "index.jsp";
}
@Token(save = true, validate = false)
//@Execute(validator = false)
public String back() {
checkEditorStatus();
loadFileNameItems();
return "index.jsp";
}
private boolean checkFileType(final String fileName, final String[] exts) {
if (fileName == null) {
return false;
}
final String lFileName = fileName.toLowerCase(Locale.ENGLISH);
for (final String ext : exts) {
if (lFileName.endsWith("." + ext)) {
return true;
}
}
return false;
}
//@Execute(validator = true, input = "index")
public String upload() {
checkEditorStatus();
final String uploadedFileName = designForm.designFile.getFileName();
String fileName = designForm.designFileName;
if (StringUtil.isBlank(fileName)) {
fileName = uploadedFileName;
try {
int pos = fileName.indexOf('/');
if (pos >= 0) {
fileName = fileName.substring(pos + 1);
}
pos = fileName.indexOf('\\');
if (pos >= 0) {
fileName = fileName.substring(pos + 1);
}
} catch (final Exception e) {
throw new SSCActionMessagesException(e, "errors.design_file_name_is_invalid");
}
}
if (StringUtil.isBlank(fileName)) {
throw new SSCActionMessagesException("errors.design_file_name_is_not_found");
}
String baseDir = null;
// normalize filename
if (checkFileType(fileName, systemHelper.getSupportedUploadedMediaExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedMediaExtentions())) {
baseDir = "/images/";
} else if (checkFileType(fileName, systemHelper.getSupportedUploadedCssExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedCssExtentions())) {
baseDir = "/css/";
} else if (checkFileType(fileName, systemHelper.getSupportedUploadedJSExtentions())
&& checkFileType(uploadedFileName, systemHelper.getSupportedUploadedJSExtentions())) {
baseDir = "/js/";
} else {
throw new SSCActionMessagesException("errors.design_file_is_unsupported_type");
}
final File uploadFile = new File(LaServletContextUtil.getServletContext().getRealPath(baseDir + fileName));
final File parentFile = uploadFile.getParentFile();
if (!parentFile.exists() && !parentFile.mkdirs()) {
logger.warn("Could not create " + parentFile.getAbsolutePath());
}
try {
FileUtil.write(uploadFile.getAbsolutePath(), designForm.designFile.getFileData());
SAStrutsUtil.addSessionMessage("success.upload_design_file", fileName);
return "index?redirect=true";
} catch (final Exception e) {
logger.error("Failed to write an image file.", e);
throw new SSCActionMessagesException(e, "errors.failed_to_write_design_image_file");
}
}
@Token(save = true, validate = false)
//@Execute(validator = false, input = "index")
public String edit() {
checkEditorStatus();
final String jspType = "view";
final File jspFile = getJspFile(jspType);
try {
designForm.content = new String(FileUtil.readBytes(jspFile), Constants.UTF_8);
} catch (final UnsupportedEncodingException e) {
throw new FessSystemException("Invalid encoding", e);
}
return "edit.jsp";
}
@Token(save = true, validate = false)
//@Execute(validator = false, input = "index")
public String editAsUseDefault() {
checkEditorStatus();
final String jspType = "orig/view";
final File jspFile = getJspFile(jspType);
try {
designForm.content = new String(FileUtil.readBytes(jspFile), Constants.UTF_8);
} catch (final UnsupportedEncodingException e) {
throw new FessSystemException("Invalid encoding", e);
}
return "edit.jsp";
}
@Token(save = false, validate = true)
//@Execute(validator = false, input = "index")
public String update() {
checkEditorStatus();
final String jspType = "view";
final File jspFile = getJspFile(jspType);
if (designForm.content == null) {
designForm.content = StringUtil.EMPTY;
}
try {
FileUtil.write(jspFile.getAbsolutePath(), designForm.content.getBytes(Constants.UTF_8));
SAStrutsUtil.addSessionMessage("success.update_design_jsp_file", systemHelper.getDesignJspFileName(designForm.fileName));
return "index?redirect=true";
} catch (final Exception e) {
logger.error("Failed to update " + designForm.fileName, e);
throw new SSCActionMessagesException(e, "errors.failed_to_update_jsp_file");
}
}
//@Execute(validator = false, input = "index")
public String download() {
checkEditorStatus();
final File file = getTargetFile();
if (file == null) {
throw new SSCActionMessagesException("errors.target_file_does_not_exist", designForm.fileName);
}
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
LaResponseUtil.download(file.getName(), bis);
} catch (final Exception e) {
logger.error("Failed to download " + file.getAbsolutePath(), e);
throw new SSCActionMessagesException(e, "errors.failed_to_download_file", designForm.fileName);
} finally {
IOUtils.closeQuietly(bis);
}
return null;
}
@Token(save = false, validate = true)
//@Execute(validator = false, input = "index")
public String delete() {
checkEditorStatus();
final File file = getTargetFile();
if (file == null) {
throw new SSCActionMessagesException("errors.target_file_does_not_exist", designForm.fileName);
}
if (file.delete()) {
SAStrutsUtil.addSessionMessage("success.delete_file", designForm.fileName);
return "index?redirect=true";
} else {
logger.error("Failed to delete " + file.getAbsolutePath());
throw new SSCActionMessagesException("errors.failed_to_delete_file", designForm.fileName);
}
}
private File getJspFile(final String jspType) {
final String jspFileName = systemHelper.getDesignJspFileName(designForm.fileName);
if (jspFileName == null) {
throw new SSCActionMessagesException("errors.invalid_design_jsp_file_name");
}
final File jspFile = new File(ServletContextUtil.getServletContext().getRealPath("/WEB-INF/" + jspType + "/" + jspFileName));
if (jspFile == null || !jspFile.exists()) {
throw new SSCActionMessagesException("errors.design_jsp_file_does_not_exist");
}
return jspFile;
}
private void checkEditorStatus() {
if (Constants.FALSE.equals(crawlerProperties.getProperty(Constants.WEB_DESIGN_EDITOR_PROPERTY, Constants.TRUE))) {
editable = false;
throw new SSCActionMessagesException("errors.design_editor_disabled");
}
}
private void loadFileNameItems() {
final File baseDir = new File(LaServletContextUtil.getServletContext().getRealPath("/"));
fileNameItems = new ArrayList<String>();
final List<File> fileList = getAccessibleFileList(baseDir);
final int length = baseDir.getAbsolutePath().length();
for (final File file : fileList) {
fileNameItems.add(file.getAbsolutePath().substring(length));
}
}
private List<File> getAccessibleFileList(final File baseDir) {
final List<File> fileList = new ArrayList<File>();
fileList.addAll(FileUtils.listFiles(new File(baseDir, "images"), systemHelper.getSupportedUploadedMediaExtentions(), true));
fileList.addAll(FileUtils.listFiles(new File(baseDir, "css"), systemHelper.getSupportedUploadedCssExtentions(), true));
fileList.addAll(FileUtils.listFiles(new File(baseDir, "js"), systemHelper.getSupportedUploadedJSExtentions(), true));
return fileList;
}
private File getTargetFile() {
final File baseDir = new File(LaServletContextUtil.getServletContext().getRealPath("/"));
final File targetFile = new File(LaServletContextUtil.getServletContext().getRealPath(designForm.fileName));
final List<File> fileList = getAccessibleFileList(baseDir);
boolean exist = false;
for (final File file : fileList) {
if (targetFile.equals(file)) {
exist = true;
break;
}
}
if (exist) {
return targetFile;
}
return null;
}
}

View file

@ -47,11 +47,11 @@ public interface FessHtmlPath {
/** The path of the HTML: /admin/dataConfig/index.jsp */
HtmlNext path_AdminDataConfig_IndexJsp = new HtmlNext("/admin/dataConfig/index.jsp");
/** The path of the HTML: /admin/design/edit.jsp */
HtmlNext path_AdminDesign_EditJsp = new HtmlNext("/admin/design/edit.jsp");
/** The path of the HTML: /admin/design/admin_design.jsp */
HtmlNext path_AdminDesign_AdminDesignJsp = new HtmlNext("/admin/design/admin_design.jsp");
/** The path of the HTML: /admin/design/index.jsp */
HtmlNext path_AdminDesign_IndexJsp = new HtmlNext("/admin/design/index.jsp");
/** The path of the HTML: /admin/design/admin_design_edit.jsp */
HtmlNext path_AdminDesign_AdminDesignEditJsp = new HtmlNext("/admin/design/admin_design_edit.jsp");
/** The path of the HTML: /admin/dict/error.jsp */
HtmlNext path_AdminDict_ErrorJsp = new HtmlNext("/admin/dict/error.jsp");

View file

@ -2490,8 +2490,7 @@ public class FessLabels extends ActionMessages {
public static final String LABELS_system_info_bug_report_title = "{labels.system_info_bug_report_title}";
/** The key of the message: crawler.properties does not exist. Default values are applied. */
public static final String LABELS_system_info_crawler_properties_does_not_exist =
"{labels.system_info_crawler_properties_does_not_exist}";
public static final String LABELS_system_info_crawler_properties_does_not_exist = "{labels.system_info_crawler_properties_does_not_exist}";
/** The key of the message: File Authentication */
public static final String LABELS_file_authentication_configuration = "{labels.file_authentication_configuration}";
@ -2530,8 +2529,7 @@ public class FessLabels extends ActionMessages {
public static final String LABELS_file_authentication_list_hostname = "{labels.file_authentication_list_hostname}";
/** The key of the message: Config Name */
public static final String LABELS_file_authentication_list_file_crawling_config =
"{labels.file_authentication_list_file_crawling_config}";
public static final String LABELS_file_authentication_list_file_crawling_config = "{labels.file_authentication_list_file_crawling_config}";
/** The key of the message: Any */
public static final String LABELS_file_authentication_any = "{labels.file_authentication_any}";

View file

@ -1,5 +1,6 @@
package org.codelibs.fess.mylasta.action;
import org.codelibs.fess.mylasta.action.FessLabels;
import org.lastaflute.web.ruts.message.ActionMessage;
/**
@ -123,8 +124,7 @@ public class FessMessages extends FessLabels {
public static final String ERRORS_failed_to_delete_solr_index = "{errors.failed_to_delete_solr_index}";
/** The key of the message: Failed to start a process because of running solr process. */
public static final String ERRORS_failed_to_start_solr_process_because_of_running =
"{errors.failed_to_start_solr_process_because_of_running}";
public static final String ERRORS_failed_to_start_solr_process_because_of_running = "{errors.failed_to_start_solr_process_because_of_running}";
/** The key of the message: Failed to restore data. */
public static final String ERRORS_failed_to_import_data = "{errors.failed_to_import_data}";

View file

@ -1,5 +1,6 @@
package org.codelibs.fess.mylasta.direction;
import org.codelibs.fess.mylasta.direction.FessEnv;
import org.lastaflute.core.direction.exception.ConfigPropertyNotFoundException;
/**

View file

@ -102,7 +102,7 @@ public interface FessEnv {
/**
* Get the value for the key 'time.adjust.time.millis'. <br>
* The value is, e.g. 0 <br>
* comment: The milliseconds for (relative or absolute) adjust time (set only when test) //@LongType *dynamic in development
* comment: The milliseconds for (relative or absolute) adjust time (set only when test) @LongType *dynamic in development
* @return The value of found property. (NotNull: if not found, exception but basically no way)
*/
String getTimeAdjustTimeMillis();
@ -110,7 +110,7 @@ public interface FessEnv {
/**
* Get the value for the key 'time.adjust.time.millis' as {@link Long}. <br>
* The value is, e.g. 0 <br>
* comment: The milliseconds for (relative or absolute) adjust time (set only when test) //@LongType *dynamic in development
* comment: The milliseconds for (relative or absolute) adjust time (set only when test) @LongType *dynamic in development
* @return The value of found property. (NotNull: if not found, exception but basically no way)
* @throws NumberFormatException When the property is not long.
*/

View file

@ -24,6 +24,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Tomcat7ConfigServlet extends HttpServlet {
private static final Logger logger = LoggerFactory.getLogger(Tomcat7ConfigServlet.class);
private static final long serialVersionUID = 1L;
@ -39,13 +40,12 @@ public class Tomcat7ConfigServlet extends HttpServlet {
private void shutdownCommonsHttpClient() {
try {
final Class<?> clazz = Class.forName("org.apache.commons.httpclient.MultiThreadedHttpConnectionManager");
final Method method = clazz.getMethod("shutdownAll", null);
method.invoke(null, null);
final Method method = clazz.getMethod("shutdownAll", (Class<?>[]) null);
method.invoke(null, (Object[]) null);
} catch (final ClassNotFoundException e) {
// ignore
} catch (final Exception e) {
logger.warn("Could not shutdown Commons HttpClient.", e);
}
}
}

View file

@ -2,5 +2,6 @@
<!DOCTYPE components PUBLIC "-//DBFLUTE//DTD LastaDi 1.0//EN"
"http://dbflute.org/meta/lastadi10.dtd">
<components>
<include path="convention.xml"/>
<component name="pagerCreator" class="org.codelibs.fess.crud.creator.PagerCreator"/>
</components>

View file

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- ======================================== Form Bean Definitions -->
<form-beans>
</form-beans>
<!-- ================================= Global Exception Definitions -->
<global-exceptions>
</global-exceptions>
<!-- =================================== Global Forward Definitions -->
<global-forwards>
</global-forwards>
<!-- =================================== Action Mapping Definitions -->
<action-mappings>
</action-mappings>
<!-- ===================================== Controller Configuration -->
<controller
maxFileSize="10M"
bufferSize="1024"
processorClass="org.codelibs.fess.struts.action.FessRequestProcessor"
multipartClass="org.dbflute.saflute.web.action.processor.ActionMultipartRequestHandler"/>
<!-- ================================ Message Resources Definitions -->
<message-resources parameter="application"
factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory">
<!--
factory="org.dbflute.saflute.web.action.message.PropertiesMessageResourcesFactory">
-->
</message-resources>
<!-- ======================================= Plug Ins Configuration -->
<plug-in className="org.seasar.struts.validator.S2ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml"/>
</plug-in>
</struts-config>

View file

@ -1,11 +1,7 @@
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--
--%><%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><%--
--%><%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
--%><%@taglib prefix="html" uri="http://struts.codelibs.org/tags-html"%><%--
--%><%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%><%--
--%><%@taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %><%--
--%><%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%><%--
--%><%@taglib prefix="s" uri="http://sastruts.seasar.org" %><%--
--%><%@taglib prefix="f" uri="http://sastruts.seasar.org/functions" %><%--
--%><%@taglib prefix="la" uri="http://lastaflute.org/latags" %><%--
--%><%@taglib prefix="f" uri="http://lastaflute.org/functions" %><%--
--%><%@taglib prefix="fe" uri="http://fess.codelibs.org/functions" %><%--
--%><c:set var="contextPath" value="${request.contextPath}"/>

View file

@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
* Copyright 2004-2006 the Seasar Foundation and the Others.
* Copyright 2009-2015 the CodeLibs Project and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,17 +14,15 @@
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
-->
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>sastruts.VIEW_PREFIX</param-name>
<param-value>/WEB-INF/view</param-value>
</context-param>
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- ================================================================================= -->
<!-- Servlet Filter -->
<!-- ============== -->
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>org.codelibs.fess.filter.FessEncodingFilter</filter-class>
@ -38,16 +36,6 @@
</init-param>
</filter>
<filter>
<filter-name>s2filter</filter-name>
<filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
</filter>
<filter>
<filter-name>hotdeployfilter</filter-name>
<filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
</filter>
<filter>
<filter-name>authenticationFilter</filter-name>
<filter-class>org.codelibs.fess.filter.AdminAuthFilter</filter-class>
@ -71,20 +59,8 @@
</filter>
<filter>
<filter-name>routingfilter</filter-name>
<filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
<!--
<filter-class>org.dbflute.saflute.web.servlet.filter.RequestRoutingFilter</filter-class>
-->
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter>
<filter-name>requestLoggingFilter</filter-name>
<filter-class>org.dbflute.saflute.web.servlet.filter.RequestLoggingFilter</filter-class>
<filter-name>lastaFilter</filter-name>
<filter-class>org.lastaflute.web.LastaFilter</filter-class>
</filter>
<!--
@ -169,6 +145,9 @@
</filter>
-->
<!-- ================================================================================= -->
<!-- Filter Mapping -->
<!-- ============== -->
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
@ -176,32 +155,6 @@
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>s2filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>hotdeployfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<!--
basically you should set original filters after Seasar's basic filters
because request and session might be filtered by the filters
(e.g. session attributes are wrapped in holder when hot-deploy)
-->
<filter-mapping>
<filter-name>requestLoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>authenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
@ -214,9 +167,8 @@
</filter-mapping>
<filter-mapping>
<filter-name>routingfilter</filter-name>
<filter-name>lastaFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!--
@ -232,71 +184,46 @@
</filter-mapping>
-->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.codelibs.fess.struts.servlet.SSCActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>configFactory</param-name>
<param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- BEGIN: H2 -->
<servlet>
<servlet-name>h2ConfigServlet</servlet-name>
<servlet-class>org.codelibs.fess.servlet.H2ConfigServlet</servlet-class>
<init-param>
<param-name>tcpPort</param-name>
<param-value>19092</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- END: H2 -->
<!-- ================================================================================= -->
<!-- Servlet -->
<!-- ======= -->
<servlet>
<servlet-name>tomcat7ConfigServlet</servlet-name>
<servlet-class>org.codelibs.fess.servlet.Tomcat7ConfigServlet</servlet-class>
<load-on-startup>3</load-on-startup>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>s2container</servlet-name>
<servlet-class>org.dbflute.saflute.web.servlet.ContainerManagementServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!--
<servlet-mapping>
<servlet-name>s2container</servlet-name>
<url-pattern>/s2container</url-pattern>
</servlet-mapping>
-->
<!-- ================================================================================= -->
<!-- Servlet Mapping -->
<!-- =============== -->
<!-- ================================================================================= -->
<!-- Servlet Listener -->
<!-- ================ -->
<listener>
<listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class>
</listener>
<!-- ================================================================================= -->
<!-- Session Config -->
<!-- ============== -->
<!--
<session-config>
<session-timeout>1</session-timeout>
</session-config>
-->
<!-- ================================================================================= -->
<!-- Welcome File -->
<!-- ============ -->
<!--
<welcome-file-list>
</welcome-file-list>
-->
<!-- ================================================================================= -->
<!-- JSP Config -->
<!-- ========== -->
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
@ -307,6 +234,9 @@
</jsp-property-group>
</jsp-config>
<!-- ================================================================================= -->
<!-- Security -->
<!-- ======== -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Fess Authentication</web-resource-name>
@ -332,6 +262,9 @@
</form-login-config>
</login-config>
<!-- ================================================================================= -->
<!-- Error Page -->
<!-- ========== -->
<error-page>
<error-code>400</error-code>
<location>/WEB-INF/view/error/redirect.jsp?type=badRequest</location>
@ -352,5 +285,4 @@
<error-code>500</error-code>
<location>/WEB-INF/view/error/redirect.jsp?type=systemError</location>
</error-page>
</web-app>