This is an automated email from the git hooks/post-receive script. New commit to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git commit 95bd40cdb801208ee8017b5a6bf6eb0c7ff5b385 Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Thu Apr 30 17:01:48 2015 +0200 Made ScmWebEditorBaseAction abstract, added a new action class for the edit page (EditAction) --- .../org/nuiton/scmwebeditor/GitConnection.java | 18 +- .../org/nuiton/scmwebeditor/ScmConnection.java | 12 +- .../org/nuiton/scmwebeditor/SvnConnection.java | 20 +-- .../AbstractScmWebEditorAction.java} | 7 +- .../{SearchAction.java => BrowseAction.java} | 14 +- ...ScmWebEditorMainAction.java => EditAction.java} | 189 +-------------------- .../nuiton/scmwebeditor/actions/LogoutAction.java | 3 +- .../nuiton/scmwebeditor/actions/PreviewAction.java | 3 +- .../nuiton/scmwebeditor/actions/ResetAction.java | 3 +- .../actions/ScmWebEditorCommitAction.java | 4 +- .../actions/ScmWebEditorMainAction.java | 178 +------------------ .../nuiton/scmwebeditor/actions/UploadAction.java | 3 +- src/main/resources/struts.xml | 15 +- .../WEB-INF/content/{search.jsp => browse.jsp} | 4 +- .../content/{loginSearch.jsp => loginBrowse.jsp} | 0 src/main/webapp/WEB-INF/content/outConnection.jsp | 4 +- src/main/webapp/WEB-INF/content/uploadForm.jsp | 2 +- .../org/nuiton/scmwebeditor/BaseActionTest.java | 14 +- 18 files changed, 74 insertions(+), 419 deletions(-) diff --git a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java index 6369c42..feab836 100644 --- a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java @@ -40,8 +40,8 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.treewalk.TreeWalk; +import org.nuiton.scmwebeditor.actions.BrowseAction; import org.nuiton.scmwebeditor.actions.ScmWebEditorCommitAction; -import org.nuiton.scmwebeditor.actions.SearchAction; import org.nuiton.scmwebeditor.actions.UploadAction; import javax.naming.AuthenticationException; @@ -107,7 +107,7 @@ public class GitConnection implements ScmConnection { @Override - public String search(SearchAction action) { + public String browse(BrowseAction action) { try { cloneRepository(action.getUsername(), action.getPw()); @@ -145,7 +145,7 @@ public class GitConnection implements ScmConnection { log.error("Error while getting the head branch name", e); } action.setError(true); - return SearchAction.ROOT; + return BrowseAction.ROOT; } action.setHeadBranchName(headBranchName); @@ -184,7 +184,7 @@ public class GitConnection implements ScmConnection { log.error("Can't access to the repository", e); } action.setError(true); - return SearchAction.ROOT; + return BrowseAction.ROOT; } String id = action.getId(); @@ -192,7 +192,7 @@ public class GitConnection implements ScmConnection { // if the id parameter is not given, we look for the root if (id.equals("")) { - return SearchAction.ROOT; + return BrowseAction.ROOT; } else if (id.equals("0")) { url = address; } else { @@ -206,7 +206,7 @@ public class GitConnection implements ScmConnection { if (!gitRepo.getObjectDatabase().exists()) { action.setError(true); - return SearchAction.ROOT; + return BrowseAction.ROOT; } RevCommit commit = null; @@ -221,7 +221,7 @@ public class GitConnection implements ScmConnection { } action.setError(true); - return SearchAction.ROOT; + return BrowseAction.ROOT; } RevTree tree = commit.getTree(); @@ -264,7 +264,7 @@ public class GitConnection implements ScmConnection { log.error("Can't access to the repository", e); } action.setError(true); - return SearchAction.ROOT; + return BrowseAction.ROOT; } action.setError(false); @@ -294,7 +294,7 @@ public class GitConnection implements ScmConnection { } } - return SearchAction.SUCCESS; + return BrowseAction.SUCCESS; } diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmConnection.java b/src/main/java/org/nuiton/scmwebeditor/ScmConnection.java index f7fce5b..f56d97e 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/ScmConnection.java @@ -1,7 +1,7 @@ package org.nuiton.scmwebeditor; import org.nuiton.scmwebeditor.actions.ScmWebEditorCommitAction; -import org.nuiton.scmwebeditor.actions.SearchAction; +import org.nuiton.scmwebeditor.actions.BrowseAction; import org.nuiton.scmwebeditor.actions.UploadAction; import javax.naming.AuthenticationException; @@ -13,13 +13,13 @@ public interface ScmConnection { /** * Searches the repository's files to make a list of them - * @param action the SearchAction which contains the parameters (repository's address, username, password...) + * @param action the BrowseAction which contains the parameters (repository's address, username, password...) * and which will contain the result (a list of TreeNode for example) - * @return SearchAction.AUTH_ERROR if there has been a problem during the authentication - * SearchAction.ROOT if the result is the root of the repository - * SearchAction.SUCCESS otherwise + * @return BrowseAction.AUTH_ERROR if there has been a problem during the authentication + * BrowseAction.ROOT if the result is the root of the repository + * BrowseAction.SUCCESS otherwise */ - public String search(SearchAction action); + public String browse(BrowseAction action); /** diff --git a/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java b/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java index 90eb314..6932f94 100644 --- a/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java @@ -25,8 +25,8 @@ import com.jgeppert.struts2.jquery.tree.result.TreeNode; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.scmwebeditor.actions.BrowseAction; import org.nuiton.scmwebeditor.actions.ScmWebEditorCommitAction; -import org.nuiton.scmwebeditor.actions.SearchAction; import org.nuiton.scmwebeditor.actions.UploadAction; import org.nuiton.util.FileUtil; import org.tmatesoft.svn.core.*; @@ -100,7 +100,7 @@ public class SvnConnection implements ScmConnection { @Override - public String search(SearchAction action) { + public String browse(BrowseAction action) { String url; @@ -130,7 +130,7 @@ public class SvnConnection implements ScmConnection { if (log.isErrorEnabled()) { log.error("Can't access to the repository : Auth Problem", e); } - return SearchAction.AUTH_ERROR; + return BrowseAction.AUTH_ERROR; } catch (SVNException e) { if (log.isErrorEnabled()) { log.error("Can't access to the repository", e); @@ -138,7 +138,7 @@ public class SvnConnection implements ScmConnection { action.setError(true); } - return SearchAction.ROOT; + return BrowseAction.ROOT; } else if (action.getId().equals("0")) { url = action.getAddress(); } else { @@ -164,7 +164,7 @@ public class SvnConnection implements ScmConnection { log.warn("There is no entry at '" + url + "'."); } action.setError(true); - return SearchAction.SUCCESS; + return BrowseAction.SUCCESS; } else if (nodeKind == SVNNodeKind.FILE) { if (log.isDebugEnabled()) { log.debug("The entry at '" + url + "' is a file."); @@ -175,7 +175,7 @@ public class SvnConnection implements ScmConnection { node.setState(TreeNode.NODE_STATE_LEAF); node.setIcon("ui-icon-document"); action.getNodes().add(node); - return SearchAction.SUCCESS; + return BrowseAction.SUCCESS; } action.setNumberOfFile(0); listEntries(repository, "", action); @@ -188,7 +188,7 @@ public class SvnConnection implements ScmConnection { if (log.isErrorEnabled()) { log.error("Can't access to the repository : Auth Problem"); } - return SearchAction.AUTH_ERROR; + return BrowseAction.AUTH_ERROR; } catch (SVNException svne) { if (log.isErrorEnabled()) { log.error("Can't access to the repository"); @@ -226,7 +226,7 @@ public class SvnConnection implements ScmConnection { } } - return SearchAction.SUCCESS; + return BrowseAction.SUCCESS; } @@ -253,7 +253,7 @@ public class SvnConnection implements ScmConnection { try { checkout(checkoutdir); } catch (SVNAuthenticationException authexep) { - action.getRequest().setAttribute(action.PARAMETER_ADDRESS, action.getAddress()); + action.getRequest().setAttribute(action.getParameterAddress(), action.getAddress()); // if svn authentication failed user is redirected on login page if (log.isDebugEnabled()) { @@ -879,7 +879,7 @@ public class SvnConnection implements ScmConnection { - public static void listEntries(SVNRepository repository, String path, SearchAction action) { + public static void listEntries(SVNRepository repository, String path, BrowseAction action) { action.setFiles(new LinkedList<String>()); action.setDirectories(new HashMap<String, String>()); diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java similarity index 97% rename from src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java rename to src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java index 60618ec..b835376 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * #L% */ -package org.nuiton.scmwebeditor; +package org.nuiton.scmwebeditor.actions; import com.opensymphony.xwork2.ActionContext; import info.monitorenter.cpdetector.io.*; @@ -31,6 +31,7 @@ import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.sax.BodyContentHandler; +import org.nuiton.scmwebeditor.ScmSession; import org.nuiton.web.struts2.BaseAction; import org.xml.sax.SAXException; @@ -46,7 +47,7 @@ import java.util.Properties; * Date: 24 nov. 2009 * Time: 21:24:39 */ -public class ScmWebEditorBaseAction extends BaseAction implements ServletRequestAware { +public abstract class AbstractScmWebEditorAction extends BaseAction implements ServletRequestAware { public static final String AUTH_ERROR = "authError"; @@ -62,7 +63,7 @@ public class ScmWebEditorBaseAction extends BaseAction implements ServletRequest final static protected String CONTEXT_ACTION_KEY = "action"; - private static final Log log = LogFactory.getLog(ScmWebEditorBaseAction.class); + private static final Log log = LogFactory.getLog(AbstractScmWebEditorAction.class); //TODO-TC200924 : uniformize all this different parameter and attribute, this is a bit messy... protected static final String PARAMETER_ADDRESS = "address"; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java similarity index 94% rename from src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java rename to src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java index 47c7bb0..dd8b298 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java @@ -32,11 +32,11 @@ import java.util.List; import java.util.Map; -public class SearchAction extends ScmWebEditorBaseAction { +public class BrowseAction extends AbstractScmWebEditorAction { private static final long serialVersionUID = 4432027215087932750L; - private static final Log log = LogFactory.getLog(SearchAction.class); + private static final Log log = LogFactory.getLog(BrowseAction.class); public static final String ROOT = "root"; @@ -114,10 +114,10 @@ public class SearchAction extends ScmWebEditorBaseAction { public void setHeadBranchName(String headBranchName) { this.headBranchName = headBranchName; } - public String search() { + public String browse() { if (log.isDebugEnabled()) { - log.debug("Enter in search action"); + log.debug("Enter in browse action"); } if (address.endsWith("/")) { @@ -154,12 +154,12 @@ public class SearchAction extends ScmWebEditorBaseAction { return ROOT; } - returnCode = scmConn.search(this); + returnCode = scmConn.browse(this); /* BrowseDto totto = new BrowseDto(); totto.setUrl(address); - returnCode = scmConn.search(totto); + returnCode = scmConn.browse(totto); */ if (files == null && directories == null) { @@ -203,7 +203,7 @@ public class SearchAction extends ScmWebEditorBaseAction { public String getJSON() { - return search(); + return browse(); } public List<TreeNode> getNodes() { diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java similarity index 58% copy from src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java copy to src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java index 6d346b6..8959d53 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java @@ -1,190 +1,26 @@ -/* - * #%L - * ScmWebEditor - * %% - * Copyright (C) 2009 - 2011 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ package org.nuiton.scmwebeditor.actions; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.shiro.codec.Base64; import org.apache.shiro.crypto.BlowfishCipherService; -import org.apache.struts2.interceptor.ServletResponseAware; -import org.nuiton.scmwebeditor.*; +import org.nuiton.scmwebeditor.ScmConnection; +import org.nuiton.scmwebeditor.ScmConnectionFactory; +import org.nuiton.scmwebeditor.ScmNotFoundException; +import org.nuiton.scmwebeditor.ScmWebEditorConfig; import javax.naming.AuthenticationException; import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.LinkedList; -import java.util.List; - - -public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements ServletResponseAware { - - - private static final long serialVersionUID = 8361035067228171624L; - - private static final Log log = LogFactory.getLog(ScmWebEditorMainAction.class); - - public static final String NO_PARAMETER = "noParameter"; - - public static final String EDIT_PAGE = "editPage"; - - protected String address; - - protected String projectUrl; - - protected String format; - - protected String origText; - - protected String mimeType; - - protected boolean saveCookie = true; - - protected boolean badLogin; - - protected String numRevision; - - protected String username; - - protected String pw; - - protected transient HttpServletResponse response; - - protected String repositoryId; - - protected boolean fromLoginPage; - - public String getMimeType() { - return mimeType; - } - - public String getRepositoryId() { - return repositoryId; - } - - public void setRepositoryId(String repositoryId) { - this.repositoryId = repositoryId; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPw() { - return pw; - } - - public void setPw(String pw) { - this.pw = pw; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public String getOrigText() { - return origText; - } - - public String getProjectUrl() { - return projectUrl; - } - - public String getNumRevision() { - return numRevision; - } - - public void setProjectUrl(String projectUrl) { - this.projectUrl = projectUrl; - } - - public void setFromLoginPage(boolean fromLoginPage) { - this.fromLoginPage = fromLoginPage; - } - - public boolean isBadLogin() { - return badLogin; - } - - public List<String> getSupportedScms() { return ScmWebEditorConfig.getSupportedScms(); } - - /** - * We check whether the parameters are empty - * - * @return - */ - private boolean testParameters() { - if (address == null || address.length() == 0) { - return true; - } else { - return false; - } - } - - /** - * Main method of the class - * - * @return - */ - @Override - public String execute() { - - if (log.isDebugEnabled()) { - log.debug("Connection to SCMWebEditor\n"); - } - - - if (!fromLoginPage && projectUrl == null) { - projectUrl = request.getHeader("referer"); - } - - - if (log.isDebugEnabled()) { - log.debug("ProjectUrl= " + projectUrl); - } - - // if there is no parameter, the user is redirected to the search page - if (testParameters()) { - return NO_PARAMETER; - } +public class EditAction extends ScmWebEditorMainAction { + private static final Log log = LogFactory.getLog(EditAction.class); + public String edit() { HttpSession session = request.getSession(); String sessionId = session.getId(); @@ -359,14 +195,5 @@ public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements Se } return EDIT_PAGE; - } - - - @Override - public void setServletResponse(HttpServletResponse response) { - this.response = response; - } - - } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java index dd5dd80..b9d9450 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java @@ -28,13 +28,12 @@ import org.apache.struts2.interceptor.ServletResponseAware; import org.nuiton.scmwebeditor.ScmConnection; import org.nuiton.scmwebeditor.ScmConnectionFactory; import org.nuiton.scmwebeditor.ScmNotFoundException; -import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public class LogoutAction extends ScmWebEditorBaseAction implements ServletRequestAware, ServletResponseAware { +public class LogoutAction extends AbstractScmWebEditorAction implements ServletRequestAware, ServletResponseAware { private static final long serialVersionUID = 6937086747942656369L; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/PreviewAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/PreviewAction.java index 853ec7e..1298d66 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/PreviewAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/PreviewAction.java @@ -27,12 +27,11 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.dom4j.Document; import org.nuiton.jrst.JRST; import org.nuiton.jrst.legacy.JRSTReader; -import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.servlet.http.HttpServletRequest; import java.io.StringReader; -public class PreviewAction extends ScmWebEditorBaseAction implements ServletRequestAware { +public class PreviewAction extends AbstractScmWebEditorAction implements ServletRequestAware { /** serialVersionUID. */ private static final long serialVersionUID = -2388759298175611718L; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java index 080d1e9..455d99d 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java @@ -26,11 +26,10 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.scmwebeditor.ScmConnection; import org.nuiton.scmwebeditor.ScmConnectionFactory; import org.nuiton.scmwebeditor.ScmNotFoundException; -import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.naming.AuthenticationException; -public class ResetAction extends ScmWebEditorBaseAction { +public class ResetAction extends AbstractScmWebEditorAction { private static final long serialVersionUID = -1154924826535371319L; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java index be11be5..37409e1 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java @@ -39,7 +39,7 @@ import javax.servlet.http.HttpSession; import java.io.StringReader; -public class ScmWebEditorCommitAction extends ScmWebEditorBaseAction implements ServletRequestAware, ServletResponseAware { +public class ScmWebEditorCommitAction extends AbstractScmWebEditorAction implements ServletRequestAware, ServletResponseAware { private static final long serialVersionUID = 6374273568146287730L; @@ -203,6 +203,8 @@ public class ScmWebEditorCommitAction extends ScmWebEditorBaseAction implements public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public String getParameterAddress() { return PARAMETER_ADDRESS; } + public boolean isBadLogin() { return badLogin; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java index 6d346b6..8eebc14 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java @@ -37,7 +37,7 @@ import java.util.LinkedList; import java.util.List; -public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements ServletResponseAware { +public class ScmWebEditorMainAction extends AbstractScmWebEditorAction implements ServletResponseAware { private static final long serialVersionUID = 8361035067228171624L; @@ -179,187 +179,13 @@ public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements Se log.debug("ProjectUrl= " + projectUrl); } - // if there is no parameter, the user is redirected to the search page + // if there is no parameter, the user is redirected to the browse page if (testParameters()) { return NO_PARAMETER; - } - - - HttpSession session = request.getSession(); - String sessionId = session.getId(); - - ScmConnection scmConn = null; - try { - scmConn = ScmConnectionFactory.createScmConnection(address, scmType, sessionId); - } catch (ScmNotFoundException e) { - if (log.isErrorEnabled()) { - log.error("Can not create a connection to the SCM", e); - } - } - - format = scmConn.getFileName().substring(scmConn.getFileName().lastIndexOf(".") + 1); - - String originalText = ""; - - // if the repository is not protected, we get its UUID - String repositoryUUID = scmConn.getRepositoryId(); - if (repositoryUUID == null) { - repositoryUUID = address; - } - - if (log.isDebugEnabled()) { - log.debug("Login : " + username); - } - - - /* - * Reading the cookie - */ - - - String usernamepwCookie = null; - // read the cookies - - BlowfishCipherService bf = new BlowfishCipherService(); - - byte[] privateKey = Base64.decode(ScmWebEditorConfig.getKey()); - - if (request.getCookies() != null) { - for (Cookie c : request.getCookies()) { - if (c.getName().equals(repositoryUUID)) { - usernamepwCookie = c.getValue(); - } - } - } - - if (usernamepwCookie != null) { - - String usernameDecode = new String(bf.decrypt(Base64.decode(usernamepwCookie), privateKey).getBytes()); - - String[] resCookie = usernameDecode.split(","); - if (resCookie.length == 2) { - username = resCookie[0]; - pw = resCookie[1]; - } - } - - if (saveCookie) { - if (username != null && pw != null) { - - Cookie authCookie = new Cookie(repositoryUUID, bf.encrypt((username + "," + pw).getBytes(), privateKey).toBase64()); - authCookie.setMaxAge(60 * 60 * 24 * 365); - response.addCookie(authCookie); - } - - } - - - /* - * Getting the information in session - */ - if (username == null && pw == null) { - if (getScmSession().getUsername(repositoryUUID) != null && getScmSession().getPassword(repositoryUUID) != null) { - //On recupère les identifiants en session - username = getScmSession().getUsername(repositoryUUID); - pw = getScmSession().getPassword(repositoryUUID); - } else { - username = null; - pw = null; - } } else { - getScmSession().addScmUser(repositoryUUID, username, pw); - } - - String name = username; - String password = pw; - - if (name == null) { - name = "anonymous"; - } - if (password == null) { - password = "anonymous"; - } - - - /* - * Getting the file and its revision - */ - - try { - originalText = scmConn.getFileContent(address, name, password); - numRevision = scmConn.getHeadRevisionNumber(address, name, password); - } catch (AuthenticationException e) { - request.setAttribute(PARAMETER_ADDRESS, address); - - // if scm authentication failed user is redirected on login page - if (log.isDebugEnabled()) { - log.debug("Auth Fail ", e); - } - - // deleting the cookies for this repository - for (Cookie c : request.getCookies()) { - if (c.getName().equals(repositoryUUID)) { - c.setMaxAge(0);//On supprime le cookie - response.addCookie(c); - if (log.isDebugEnabled()) { - log.debug("Cookie supprimĂ©"); - } - } - } - - getScmSession().delScmUser(repositoryUUID); - //redirect to a login page - return LOGIN; - } - - mimeType = null; - - try { - mimeType = getMimeType(originalText, scmConn.getFileName()); - } catch (IOException e) { - if (log.isErrorEnabled()) { - log.error("Can't get MimeType, problem when reading file", e); - } - } - - - LinkedList<String> editableFiles = new LinkedList<String>(); - - editableFiles.add("text"); - editableFiles.add("xml"); - editableFiles.add("x-java"); - - editableFiles.addAll(ScmWebEditorConfig.getEditableFiles()); - - - boolean editable = false; - if (mimeType != null) { - for (String fileType : editableFiles) { - if (mimeType.matches(".*" + fileType + ".*")) { - editable = true; - } - } - } - - - // if the file is not of text type, we can't edit it - if (mimeType == null || !editable) { - - if (log.isErrorEnabled()) { - log.error("Can't edit this file, mimetype : " + mimeType); - } return ERROR_PATH; } - origText = originalText; - - - if (log.isInfoEnabled()) { - log.info("IP client : " + request.getRemoteAddr() + " , get file : " + address + ". File's mimetype : " + mimeType); - } - - return EDIT_PAGE; - } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java index fdb58f7..ad8f889 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java @@ -27,13 +27,12 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.nuiton.scmwebeditor.ScmConnection; import org.nuiton.scmwebeditor.ScmConnectionFactory; import org.nuiton.scmwebeditor.ScmNotFoundException; -import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.File; -public class UploadAction extends ScmWebEditorBaseAction implements ServletRequestAware { +public class UploadAction extends AbstractScmWebEditorAction implements ServletRequestAware { private static final long serialVersionUID = 4244339447567114412L; diff --git a/src/main/resources/struts.xml b/src/main/resources/struts.xml index a6e9051..a0ef2f3 100644 --- a/src/main/resources/struts.xml +++ b/src/main/resources/struts.xml @@ -65,8 +65,11 @@ <default-interceptor-ref name="scmwebeditorDefaultStack"/> <action name="checkout" class="org.nuiton.scmwebeditor.actions.ScmWebEditorMainAction" method="execute"> - - + <result name="noParameter" >/WEB-INF/content/outConnection.jsp</result> + <result name="errorPath" >/WEB-INF/content/badFileRedirect.jsp</result> + </action> + + <action name="edit" class="org.nuiton.scmwebeditor.actions.EditAction" method="edit"> <result name="noParameter" >/WEB-INF/content/outConnection.jsp</result> <result name="login" >/WEB-INF/content/privateSvnRedirect.jsp</result> <result name="errorPath" >/WEB-INF/content/badFileRedirect.jsp</result> @@ -114,16 +117,16 @@ </action> - <action name="search" class="org.nuiton.scmwebeditor.actions.SearchAction" method="search"> + <action name="browse" class="org.nuiton.scmwebeditor.actions.BrowseAction" method="browse"> <param name="address"/> - <result name="root">/WEB-INF/content/search.jsp</result> + <result name="root">/WEB-INF/content/browse.jsp</result> <result name="success" type="json"> <param name="root">nodes</param> </result> - <result name="authError" >/WEB-INF/content/loginSearch.jsp</result> + <result name="authError" >/WEB-INF/content/loginBrowse.jsp</result> </action> - <action name="getBranches" class="org.nuiton.scmwebeditor.actions.SearchAction" method="getBranchesJSON"> + <action name="getBranches" class="org.nuiton.scmwebeditor.actions.BrowseAction" method="getBranchesJSON"> <param name="address"/> <result name="*" type="json"> <param name="branches">branches</param> diff --git a/src/main/webapp/WEB-INF/content/search.jsp b/src/main/webapp/WEB-INF/content/browse.jsp similarity index 95% rename from src/main/webapp/WEB-INF/content/search.jsp rename to src/main/webapp/WEB-INF/content/browse.jsp index f1f0187..3b4a082 100644 --- a/src/main/webapp/WEB-INF/content/search.jsp +++ b/src/main/webapp/WEB-INF/content/browse.jsp @@ -34,7 +34,7 @@ if (item.text().indexOf("/") == -1) { var scmType = $("#scmType").val(); - document.location.href = ("checkout.action?address=" + item.attr("id") + "&scmType=" + scmType); + document.location.href = ("edit.action?address=" + item.attr("id") + "&scmType=" + scmType); } }); @@ -89,7 +89,7 @@ <s:url id="searchTreeUrl" - action="search?address=%{address}&username=%{username}&pw=%{pw}&selectedBranch=%{selectedBranch}&scmType=%{scmType}"/> + action="browse?address=%{address}&username=%{username}&pw=%{pw}&selectedBranch=%{selectedBranch}&scmType=%{scmType}"/> <sjt:tree id="scmTree" htmlTitles="true" jstreetheme="classic" diff --git a/src/main/webapp/WEB-INF/content/loginSearch.jsp b/src/main/webapp/WEB-INF/content/loginBrowse.jsp similarity index 100% rename from src/main/webapp/WEB-INF/content/loginSearch.jsp rename to src/main/webapp/WEB-INF/content/loginBrowse.jsp diff --git a/src/main/webapp/WEB-INF/content/outConnection.jsp b/src/main/webapp/WEB-INF/content/outConnection.jsp index edb5ee3..56783f6 100644 --- a/src/main/webapp/WEB-INF/content/outConnection.jsp +++ b/src/main/webapp/WEB-INF/content/outConnection.jsp @@ -101,7 +101,7 @@ <s:hidden id="selectedBranch" name="selectedBranch" value=""/> - <s:url id="ajaxSearch" value="search.action"/> + <s:url id="ajaxSearch" value="browse.action"/> <s:set id="search"> <s:text name="scm.outConnection.search"/> @@ -154,7 +154,7 @@ --> </div> </div> -<p align="right">©2004-2014 CodeLutin</p> +<p align="right">©2004-2015 CodeLutin</p> </body> </html> diff --git a/src/main/webapp/WEB-INF/content/uploadForm.jsp b/src/main/webapp/WEB-INF/content/uploadForm.jsp index d6048db..b21882f 100644 --- a/src/main/webapp/WEB-INF/content/uploadForm.jsp +++ b/src/main/webapp/WEB-INF/content/uploadForm.jsp @@ -88,7 +88,7 @@ <div id="searchTree"> <s:url id="searchTreeUrl" - action="search?address=%{scmRoot}&username=%{username}&pw=%{pw}&selectedBranch=%{selectedBranch}&scmType=%{scmType}"/> + action="browse?address=%{scmRoot}&username=%{username}&pw=%{pw}&selectedBranch=%{selectedBranch}&scmType=%{scmType}"/> <sjt:tree id="scmTree" htmlTitles="true" jstreetheme="classic" diff --git a/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java b/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java index 788932f..a6c2edd 100644 --- a/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java +++ b/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java @@ -27,7 +27,8 @@ import org.apache.commons.logging.LogFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.nuiton.scmwebeditor.actions.SearchAction; +import org.nuiton.scmwebeditor.actions.BrowseAction; +import org.nuiton.scmwebeditor.actions.AbstractScmWebEditorAction; import org.nuiton.util.FileUtil; import org.tmatesoft.svn.core.SVNDepth; import org.tmatesoft.svn.core.SVNException; @@ -114,8 +115,7 @@ public class BaseActionTest { SvnConnection svnSess = new SvnConnection(tgtURL.toString()+"/testFile"); checkoutdirTest = FileUtil.createTempDirectory("scmCheckOutTest_", ""); - - ScmWebEditorBaseAction baseAction = new ScmWebEditorBaseAction(); + svnSess.checkout(checkoutdirTest); } catch (SVNException e) { @@ -134,14 +134,14 @@ public class BaseActionTest { @Test public void testSearch() { - SearchAction searchAction = new SearchAction(); + BrowseAction browseAction = new BrowseAction(); LinkedList<String> files = null; try { SVNRepository repository = SVNRepositoryFactory.create(tgtURL); - searchAction.setAddress(""); - SvnConnection.listEntries(repository , "", searchAction); + browseAction.setAddress(""); + SvnConnection.listEntries(repository , "", browseAction); files = new LinkedList<String>(); - files.addAll(searchAction.getFiles()); + files.addAll(browseAction.getFiles()); } catch (SVNException e) { log.error("Erreur SVN in test",e); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.