This is an automated email from the git hooks/post-receive script. New commit to branch feature/3879 in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git commit 412769c139ed3ba5574ff6286f5284bcdb358aa2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 14 19:29:11 2016 +0100 Application dans le module web + nettoyage de code --- .../org/nuiton/scmwebeditor/uiweb/ScmSession.java | 4 +- .../org/nuiton/scmwebeditor/uiweb/ScmUser.java | 4 + .../AbstractScmWebEditorWithAddressAction.java | 106 +++++----------- .../scmwebeditor/uiweb/actions/BrowseAction.java | 14 +-- .../uiweb/actions/CreateBranchAction.java | 59 +++++---- .../uiweb/actions/CreateDirectoryAction.java | 10 +- .../uiweb/actions/DetectScmAction.java | 1 + .../uiweb/actions/DownloadFileAction.java | 19 ++- .../scmwebeditor/uiweb/actions/EditAction.java | 113 ++++++++++------- .../scmwebeditor/uiweb/actions/GetImageAction.java | 16 ++- .../uiweb/actions/ListBranchesAction.java | 27 +++-- .../scmwebeditor/uiweb/actions/LogoutAction.java | 20 +-- .../scmwebeditor/uiweb/actions/MoveFileAction.java | 55 ++++++--- .../uiweb/actions/RemoveDirectoryAction.java | 38 +++--- .../uiweb/actions/RemoveFileAction.java | 35 ++++-- .../scmwebeditor/uiweb/actions/ResetAction.java | 23 ++-- .../uiweb/actions/ScmWebEditorCommitAction.java | 135 ++++++++++++++------- .../uiweb/actions/ScmWebEditorMainAction.java | 6 +- .../uiweb/actions/UploadFileAction.java | 35 +++--- .../uiweb/actions/ViewDiffsAction.java | 61 +++++----- .../uiweb/actions/ViewImageAction.java | 71 +++++------ .../uiweb/actions/ViewRevisionAction.java | 66 +++++----- 22 files changed, 502 insertions(+), 416 deletions(-) diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmSession.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmSession.java index e92d119..2f099d5 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmSession.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmSession.java @@ -21,7 +21,7 @@ */ package org.nuiton.scmwebeditor.uiweb; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import java.util.HashMap; import java.util.Map; @@ -55,7 +55,7 @@ public class ScmSession { scmUsers.put(address, new ScmUser(login, password)); } - public void addScmUser(String repositoryUUID, UsernamePasswordToken usernamePasswordToken) { + public void addScmUser(String repositoryUUID, ScmAuthentication usernamePasswordToken) { scmUsers.put(repositoryUUID, new ScmUser(usernamePasswordToken.getUsername(), new String(usernamePasswordToken.getPassword()))); } diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmUser.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmUser.java index 0f7629c..83a9edb 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmUser.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/ScmUser.java @@ -21,9 +21,13 @@ */ package org.nuiton.scmwebeditor.uiweb; +import org.nuiton.scmwebeditor.api.ScmAuthentication; + /** * The authentication information related to an user + * FIXME Use {@link ScmAuthentication}. */ +@Deprecated public class ScmUser { /** the user's username */ diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorWithAddressAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorWithAddressAction.java index 0cb136c..e717ee6 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorWithAddressAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorWithAddressAction.java @@ -2,9 +2,9 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.codec.Base64; import org.apache.shiro.crypto.BlowfishCipherService; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmFileManager; import org.nuiton.scmwebeditor.api.ScmProvider; @@ -28,6 +28,8 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA /** Logger. */ private static final Log log = LogFactory.getLog(AbstractScmWebEditorWithAddressAction.class); + protected static final Pattern AUTHENTICATED_URL_PATTERN = Pattern.compile("(http[s]://)([^:]+):([^@]+)@(.+)"); + /** the username to use to connect to the repository */ private String username; @@ -37,15 +39,13 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA /** the repository's address */ private String address; - private ScmAuthenticatedUrl authenticatedUrl; - private ScmProvider scmProvider; private String sessionId; private String pathToLocalRepos; - private ScmConnection scmConnection; + private ScmConnection scmConnection; private ScmFileManager scmFileManager; @@ -86,11 +86,13 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA address = address.substring(0, address.lastIndexOf('/')); } - authenticatedUrl = getAuthenticatedUrl(address, username, pw); + Matcher matcher = AUTHENTICATED_URL_PATTERN.matcher(address); + if (matcher.matches()) { - address = authenticatedUrl.getUrl(); - username = authenticatedUrl.getUsername(); - pw = authenticatedUrl.getPw(); + username = matcher.group(2); + pw = matcher.group(3); + address = matcher.group(1) + matcher.group(4); + } } @@ -130,9 +132,9 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA return scmConnection; } - protected Optional<UsernamePasswordToken> initAuthenticationInformations(String repositoryUUID, boolean readCookie, boolean saveCookie) { + protected Optional<ScmAuthentication> initAuthenticationInformations(String repositoryUUID, boolean readCookie, boolean saveCookie) { - UsernamePasswordToken token = null; + ScmAuthentication token = null; if (readCookie) { @@ -161,7 +163,7 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA if (usernameDecode != null) { String[] resCookie = usernameDecode.split(","); if (resCookie.length == 2) { - token = new UsernamePasswordToken(resCookie[0], resCookie[1]); + token = new ScmAuthentication(resCookie[0], resCookie[1].toCharArray()); } } @@ -170,26 +172,26 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA } - if (saveCookie && token !=null) { + if (saveCookie && token != null) { BlowfishCipherService bf = new BlowfishCipherService(); byte[] privateKey = Base64.decode(ScmWebEditorConfig.getKey()); - Cookie authCookie = null; + Cookie authCookie = null; - try { - authCookie = new Cookie(repositoryUUID, bf.encrypt((token.getUsername() + "," + new String(token.getPassword())).getBytes("UTF-8"), privateKey).toBase64()); - } catch (UnsupportedEncodingException e) { - if (log.isErrorEnabled()) { - log.error("Can not get bytes from UTF-8 encoding"); - } + try { + authCookie = new Cookie(repositoryUUID, bf.encrypt((token.getUsername() + "," + new String(token.getPassword())).getBytes("UTF-8"), privateKey).toBase64()); + } catch (UnsupportedEncodingException e) { + if (log.isErrorEnabled()) { + log.error("Can not get bytes from UTF-8 encoding"); } + } - if (authCookie != null) { - authCookie.setMaxAge(60 * 60 * 24 * 365); - response.addCookie(authCookie); - } + if (authCookie != null) { + authCookie.setMaxAge(60 * 60 * 24 * 365); + response.addCookie(authCookie); + } } @@ -228,6 +230,7 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA /** * Reads the information in the session to give the username and the password for a given repository if necessary + * * @param repositoryUUID the ID of the repository to connect to * @return the username to use at position [0] ; the password to use at position [1] */ @@ -270,62 +273,7 @@ public class AbstractScmWebEditorWithAddressAction extends AbstractScmWebEditorA protected void resetAuthentication() { username = null; - pw= null; - } - - protected static final Pattern AUTHENTICATED_URL_PATTERN = Pattern.compile("(http[s]://)([^:]+):([^@]+)@(.+)"); - - public static ScmAuthenticatedUrl getAuthenticatedUrl(String url, String username, String pw) { - - Matcher matcher = AUTHENTICATED_URL_PATTERN.matcher(url); - if (matcher.matches()) { - - username = matcher.group(2); - pw = matcher.group(3); - url = matcher.group(1) + matcher.group(4); - } else { - - if (username == null) { - username = "anonymous"; - } - if (pw == null) { - pw = "anonymous"; - } - - } - - return new ScmAuthenticatedUrl(url, username, pw); - } - - public static class ScmAuthenticatedUrl { - - private final String url; - private final String username; - private final String pw; - - - public ScmAuthenticatedUrl(String url, String username, String pw) { - this.url = url; - this.username = username; - this.pw = pw; - } - - public String getUrl() { - return url; - } - - public String getUsername() { - return username; - } - - public String getPw() { - return pw; - } - - public boolean isAuthenticated() { - return !username.equals("anonymous") && !username.equals("") && !pw.equals("anonymous") && !pw.equals(""); - } - + pw = null; } } diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/BrowseAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/BrowseAction.java index df692f2..bb986dc 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/BrowseAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/BrowseAction.java @@ -24,7 +24,7 @@ package org.nuiton.scmwebeditor.uiweb.actions; import com.jgeppert.struts2.jquery.tree.result.TreeNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.dto.BrowseDto; import org.nuiton.scmwebeditor.api.dto.result.BrowseResultDto; @@ -100,7 +100,7 @@ public class BrowseAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, true); + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, true); scmSupportsBranches = getScmProvider().supportsBranches(); @@ -112,13 +112,7 @@ public class BrowseAction extends AbstractScmWebEditorWithAddressAction { // putting all the parameters into a DTO BrowseDto dto = new BrowseDto(); dto.setAddress(getAddress()); - - boolean withAuthentication = optionalAuthentication.isPresent(); - if (withAuthentication) { - - dto.setUsername(optionalAuthentication.get().getUsername()); - dto.setPassword(new String(optionalAuthentication.get().getPassword())); - } + dto.setScmAuthentication(optionalAuthentication); dto.setId(id); dto.setSelectedBranch(selectedBranch); @@ -200,7 +194,7 @@ public class BrowseAction extends AbstractScmWebEditorWithAddressAction { // if the repository is not protected for writing, we get its UUID - if (withAuthentication) { + if (optionalAuthentication.isPresent()) { storeUsernamePasswordToCookie(repositoryUUID); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateBranchAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateBranchAction.java index 75ccc51..af72e7e 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateBranchAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateBranchAction.java @@ -21,11 +21,12 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; +import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.nuiton.scmwebeditor.api.OperationNotSupportedException; import org.nuiton.scmwebeditor.api.RepositoryNotFoundException; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmProvider; import org.nuiton.scmwebeditor.api.dto.CreateBranchDto; import org.nuiton.scmwebeditor.api.dto.result.AbstractResultDto; @@ -58,25 +59,45 @@ public class CreateBranchAction extends AbstractScmWebEditorWithAddressAction { /** the name of the new branch */ protected String newBranchName; - public boolean isBadLogin() { return badLogin; } + public boolean isBadLogin() { + return badLogin; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public boolean isError() { return error; } + public boolean isError() { + return error; + } - public void setError(boolean error) { this.error = error; } + public void setError(boolean error) { + this.error = error; + } - public List<String> getBranches() { return branches; } + public List<String> getBranches() { + return branches; + } - public void setBranches(List<String> branches) { this.branches = branches; } + public void setBranches(List<String> branches) { + this.branches = branches; + } - public String getSelectedBranch() { return selectedBranch; } + public String getSelectedBranch() { + return selectedBranch; + } - public void setSelectedBranch(String selectedBranch) { this.selectedBranch = selectedBranch; } + public void setSelectedBranch(String selectedBranch) { + this.selectedBranch = selectedBranch; + } - public String getNewBranchName() { return newBranchName; } + public String getNewBranchName() { + return newBranchName; + } - public void setNewBranchName(String newBranchName) { this.newBranchName = newBranchName; } + public void setNewBranchName(String newBranchName) { + this.newBranchName = newBranchName; + } @Override public String execute() { @@ -85,19 +106,17 @@ public class CreateBranchAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + //FIXME Need to have an authentication + Preconditions.checkState(optionalAuthentication.isPresent(), "Can't commit without authentication informations"); ScmProvider provider = getScmProvider(); String address = getAddress(); try { - branches = provider.listBranches(address, username, pw); + branches = provider.listBranches(address, optionalAuthentication); } catch (OperationNotSupportedException e) { if (log.isErrorEnabled()) { log.error("The SCM " + scmType + " does not support branches", e); @@ -115,10 +134,8 @@ public class CreateBranchAction extends AbstractScmWebEditorWithAddressAction { CreateBranchDto dto = new CreateBranchDto(); dto.setAddress(address); dto.setNewBranchName(newBranchName); - if (withAuthentication) { - dto.setUsername(username); - dto.setPassword(pw); - } + dto.setScmAuthentication(optionalAuthentication); + dto.setPathToLocalRepos(getPathToLocalRepos()); dto.setSelectedBranch(selectedBranch); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateDirectoryAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateDirectoryAction.java index 1ce08ed..ed19038 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateDirectoryAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/CreateDirectoryAction.java @@ -21,8 +21,8 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.struts2.interceptor.ServletRequestAware; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmFileManager; import org.nuiton.scmwebeditor.api.dto.CreateDirectoryDto; @@ -94,15 +94,12 @@ public class CreateDirectoryAction extends AbstractScmWebEditorWithAddressAction String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); boolean withAuthentication = optionalAuthentication.isPresent(); CreateDirectoryDto dto = new CreateDirectoryDto(); - if (withAuthentication) { - dto.setUsername(optionalAuthentication.get().getUsername()); - dto.setPassword(new String(optionalAuthentication.get().getPassword())); - } + dto.setScmAuthentication(optionalAuthentication); dto.setDirectoryName(directoryName); dto.setParentDirectory(parentDirectory); @@ -117,6 +114,7 @@ public class CreateDirectoryAction extends AbstractScmWebEditorWithAddressAction } if (withAuthentication) { + // FIXME Why do we reset action fields ? resetAuthentication(); } diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DetectScmAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DetectScmAction.java index b0978cc..c1bcb0f 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DetectScmAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DetectScmAction.java @@ -58,6 +58,7 @@ public class DetectScmAction extends AbstractScmWebEditorAction { */ public String execute() { + //FIXME Use a ServiceLoader List<String> supportedScms = Lists.newArrayList(ScmWebEditorConfig.getProviders().keySet()); for (String scm : supportedScms) { diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DownloadFileAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DownloadFileAction.java index 498cce9..4c7cbeb 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DownloadFileAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/DownloadFileAction.java @@ -23,7 +23,7 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import javax.servlet.ServletOutputStream; @@ -44,9 +44,13 @@ public class DownloadFileAction extends AbstractScmWebEditorWithAddressAction { /** the path to the root of the repository */ protected String repositoryRoot; - public String getRepositoryRoot() { return repositoryRoot; } + public String getRepositoryRoot() { + return repositoryRoot; + } - public void setRepositoryRoot(String repositoryRoot) { this.repositoryRoot = repositoryRoot; } + public void setRepositoryRoot(String repositoryRoot) { + this.repositoryRoot = repositoryRoot; + } @Override public String execute() { @@ -55,17 +59,12 @@ public class DownloadFileAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); ScmConnection scmConn = getScmConnection(); - // getting the path to use to download the file - String filePath = scmConn.getFilePath(getAddress(), repositoryRoot, username, pw); + String filePath = scmConn.getFilePath(getAddress(), repositoryRoot, optionalAuthentication); String filename = filePath.substring(filePath.lastIndexOf('/') + 1); File fileToDownload = new File(filePath); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/EditAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/EditAction.java index 84e441c..e5db311 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/EditAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/EditAction.java @@ -24,8 +24,8 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.nuiton.scmwebeditor.api.OperationNotSupportedException; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmProvider; import org.nuiton.scmwebeditor.api.ScmRevision; @@ -76,45 +76,83 @@ public class EditAction extends ScmWebEditorMainAction { protected boolean fileDirectlyAccessible; - public String getCodeMirrorVersion() { return ScmWebEditorConfig.getCodeMirrorVersion(); } - - public String getSelectedBranch() { return selectedBranch; } + public String getCodeMirrorVersion() { + return ScmWebEditorConfig.getCodeMirrorVersion(); + } - public void setSelectedBranch(String selectedBranch) { this.selectedBranch = selectedBranch; } + public String getSelectedBranch() { + return selectedBranch; + } - public boolean isScmSupportsBranches() { return scmSupportsBranches; } + public void setSelectedBranch(String selectedBranch) { + this.selectedBranch = selectedBranch; + } - public void setScmSupportsBranches(boolean scmSupportsBranches) { this.scmSupportsBranches = scmSupportsBranches; } + public boolean isScmSupportsBranches() { + return scmSupportsBranches; + } - public boolean isScmSupportsPush() { return scmSupportsPush; } + public void setScmSupportsBranches(boolean scmSupportsBranches) { + this.scmSupportsBranches = scmSupportsBranches; + } + + public boolean isScmSupportsPush() { + return scmSupportsPush; + } - public void setScmSupportsPush(boolean scmSupportsPush) { this.scmSupportsPush = scmSupportsPush; } + public void setScmSupportsPush(boolean scmSupportsPush) { + this.scmSupportsPush = scmSupportsPush; + } - public String getRepositoryRoot() { return repositoryRoot; } + public String getRepositoryRoot() { + return repositoryRoot; + } - public void setRepositoryRoot(String repositoryRoot) { this.repositoryRoot = repositoryRoot; } + public void setRepositoryRoot(String repositoryRoot) { + this.repositoryRoot = repositoryRoot; + } - public int getAutoSaveInterval() { return autoSaveInterval; } + public int getAutoSaveInterval() { + return autoSaveInterval; + } - public void setAutoSaveInterval(int autoSaveInterval) { this.autoSaveInterval = autoSaveInterval; } + public void setAutoSaveInterval(int autoSaveInterval) { + this.autoSaveInterval = autoSaveInterval; + } - public Map<ScmRevision, String> getRevisions() { return revisions; } + public Map<ScmRevision, String> getRevisions() { + return revisions; + } public void setRevisions( - Map<ScmRevision, String> revisions) { this.revisions = revisions; } + Map<ScmRevision, String> revisions) { + this.revisions = revisions; + } - public String getRevision1() { return revision1; } + public String getRevision1() { + return revision1; + } - public void setRevision1(String revision1) { this.revision1 = revision1; } + public void setRevision1(String revision1) { + this.revision1 = revision1; + } - public String getRevision2() { return revision2; } + public String getRevision2() { + return revision2; + } - public void setRevision2(String revision2) { this.revision2 = revision2; } + public void setRevision2(String revision2) { + this.revision2 = revision2; + } - public boolean isFileDirectlyAccessible() { return fileDirectlyAccessible; } + public boolean isFileDirectlyAccessible() { + return fileDirectlyAccessible; + } public void setFileDirectlyAccessible( - boolean fileDirectlyAccessible) { this.fileDirectlyAccessible = fileDirectlyAccessible; } + boolean fileDirectlyAccessible) { + this.fileDirectlyAccessible = fileDirectlyAccessible; + } @Override public String execute() { @@ -137,7 +175,7 @@ public class EditAction extends ScmWebEditorMainAction { if ("vm".equals(format)) { // Try to get extension before vm one - fileName = fileName.substring(0, fileName.length()-3); + fileName = fileName.substring(0, fileName.length() - 3); format = fileName.substring(fileName.lastIndexOf(".") + 1); } @@ -154,26 +192,7 @@ public class EditAction extends ScmWebEditorMainAction { repositoryRoot = address.substring(0, address.lastIndexOf('/')); } - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; - - if (log.isDebugEnabled()) { - log.debug("Login : " + username + " to repository: " + repositoryUUID); - } - - - String name = username; - String password = pw; - - if (name == null) { - name = "anonymous"; - } - if (password == null) { - password = "anonymous"; - } + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); String changeBranchError = null; @@ -187,7 +206,7 @@ public class EditAction extends ScmWebEditorMainAction { selectedBranch = provider.getDefaultBranchName(); } - changeBranchError = provider.changeBranch(selectedBranch, pathToLocalRepos, username, pw); + changeBranchError = provider.changeBranch(selectedBranch, pathToLocalRepos, optionalAuthentication); } catch (OperationNotSupportedException e) { if (log.isErrorEnabled()) { log.error("Can not change branch with SCM '" + scmType + "'"); @@ -204,7 +223,7 @@ public class EditAction extends ScmWebEditorMainAction { } try { - revisions = scmConn.getRevisions(address, username, pw); + revisions = scmConn.getRevisions(address, optionalAuthentication); } catch (AuthenticationException e) { if (log.isErrorEnabled()) { log.error("Can not get revisions for address " + address + " : authentication error", e); @@ -217,9 +236,9 @@ public class EditAction extends ScmWebEditorMainAction { */ try { - File originalFile = scmConn.getFileContent(address, name, password); + File originalFile = scmConn.getFileContent(address, optionalAuthentication); originalText = FileUtils.readFileToString(originalFile); - numRevision = scmConn.getHeadRevisionNumber(address, name, password); + numRevision = scmConn.getHeadRevisionNumber(address, optionalAuthentication); } catch (AuthenticationException e) { request.setAttribute(PARAMETER_ADDRESS, address); @@ -287,7 +306,7 @@ public class EditAction extends ScmWebEditorMainAction { if (log.isInfoEnabled()) { log.info("IP client : " + request.getRemoteAddr() + ", get file : " + address + ". File's mimetype : " - + mimeType); + + mimeType); } return EDIT_PAGE; diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/GetImageAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/GetImageAction.java index e64daaa..99d6101 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/GetImageAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/GetImageAction.java @@ -47,20 +47,26 @@ public class GetImageAction extends ScmWebEditorMainAction { /** the path to the image */ protected String imagePath; - public byte[] getImageInByte() { return imageInByte; } + public byte[] getImageInByte() { + return imageInByte; + } public void setImageInByte(byte[] imageInByte) { this.imageInByte = new byte[0]; - if (imageInByte != null){ + if (imageInByte != null) { this.imageInByte = Arrays.copyOf(imageInByte, imageInByte.length); } } - public String getImagePath() { return imagePath; } + public String getImagePath() { + return imagePath; + } - public void setImagePath(String imagePath) { this.imagePath = imagePath; } + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } @Override public String execute() { @@ -116,7 +122,7 @@ public class GetImageAction extends ScmWebEditorMainAction { public String getCustomContentType() { String type = "image/jpeg"; - String path = imagePath.toLowerCase(); + String path = imagePath.toLowerCase(); if (path.endsWith(".png")) { type = "image/png"; diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ListBranchesAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ListBranchesAction.java index e9e4540..18b3bdb 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ListBranchesAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ListBranchesAction.java @@ -23,8 +23,8 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.nuiton.scmwebeditor.api.OperationNotSupportedException; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmProvider; import java.util.List; @@ -43,13 +43,21 @@ public class ListBranchesAction extends AbstractScmWebEditorWithAddressAction { /** list of the existing branches on the repository */ protected List<String> branches; - public boolean isScmSupportsBranches() { return scmSupportsBranches; } + public boolean isScmSupportsBranches() { + return scmSupportsBranches; + } - public void setScmSupportsBranches(boolean scmSupportsBranches) { this.scmSupportsBranches = scmSupportsBranches; } + public void setScmSupportsBranches(boolean scmSupportsBranches) { + this.scmSupportsBranches = scmSupportsBranches; + } - public List<String> getBranches() { return branches; } + public List<String> getBranches() { + return branches; + } - public void setBranches(List<String> branches) { this.branches = branches; } + public void setBranches(List<String> branches) { + this.branches = branches; + } @Override public String execute() { @@ -58,17 +66,14 @@ public class ListBranchesAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); ScmProvider provider = getScmProvider(); scmSupportsBranches = provider.supportsBranches(); - + //FIXME Why do this call if we already know the result if provider does not support branches ? try { - branches = provider.listBranches(getAddress(), username, pw); + branches = provider.listBranches(getAddress(), optionalAuthentication); } catch (OperationNotSupportedException e) { if (log.isDebugEnabled()) { log.debug("The SCM " + scmType + " does not support branches", e); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/LogoutAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/LogoutAction.java index a4e1d40..a1e5d7a 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/LogoutAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/LogoutAction.java @@ -21,8 +21,6 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmProvider; import org.nuiton.scmwebeditor.uiweb.ScmWebEditorConfig; @@ -36,21 +34,27 @@ public class LogoutAction extends AbstractScmWebEditorAction { private static final long serialVersionUID = 6937086747942656369L; - private static final Log log = LogFactory.getLog(LogoutAction.class); - /** the repository's address */ protected String address; /** the URL to the repository's root */ protected String projectUrl; - public void setAddress(String address) { this.address = address; } + public void setAddress(String address) { + this.address = address; + } - public String getAddress() { return address; } + public String getAddress() { + return address; + } - public String getProjectUrl() { return projectUrl; } + public String getProjectUrl() { + return projectUrl; + } - public void setProjectUrl(String projectUrl) { this.projectUrl = projectUrl; } + public void setProjectUrl(String projectUrl) { + this.projectUrl = projectUrl; + } @Override public String execute() { diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/MoveFileAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/MoveFileAction.java index b2ff290..98e635b 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/MoveFileAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/MoveFileAction.java @@ -21,7 +21,7 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmFileManager; import org.nuiton.scmwebeditor.api.dto.MoveFileDto; @@ -71,28 +71,49 @@ public class MoveFileAction extends AbstractScmWebEditorWithAddressAction { return scmRoot; } - public void setScmRoot(String scmRoot) { this.scmRoot = scmRoot; } + public void setScmRoot(String scmRoot) { + this.scmRoot = scmRoot; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public void setError(boolean error) { this.error = error; } + public void setError(boolean error) { + this.error = error; + } - public String getScmPath() { return scmPath; } + public String getScmPath() { + return scmPath; + } - public void setScmPath(String scmPath) { this.scmPath = scmPath; } + public void setScmPath(String scmPath) { + this.scmPath = scmPath; + } - public String getFileRoot() { return fileRoot; } + public String getFileRoot() { + return fileRoot; + } - public void setFileRoot(String fileRoot) { this.fileRoot = fileRoot; } + public void setFileRoot(String fileRoot) { + this.fileRoot = fileRoot; + } - public String getFileToMove() { return fileToMove; } + public String getFileToMove() { + return fileToMove; + } - public void setFileToMove(String fileToMove) { this.fileToMove = fileToMove; } + public void setFileToMove(String fileToMove) { + this.fileToMove = fileToMove; + } - public String getDestinationDirectory() { return destinationDirectory; } + public String getDestinationDirectory() { + return destinationDirectory; + } - public void setDestinationDirectory( - String destinationDirectory) { this.destinationDirectory = destinationDirectory; } + public void setDestinationDirectory(String destinationDirectory) { + this.destinationDirectory = destinationDirectory; + } @Override public String execute() { @@ -101,14 +122,10 @@ public class MoveFileAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); MoveFileDto dto = new MoveFileDto(); - dto.setUsername(username); - dto.setPassword(pw); + dto.setScmAuthentication(optionalAuthentication); dto.setScmPath(scmPath); dto.setFileToMove(fileToMove); dto.setDestinationDirectory(destinationDirectory); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveDirectoryAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveDirectoryAction.java index 0c7ab44..e43941c 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveDirectoryAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveDirectoryAction.java @@ -21,7 +21,7 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmFileManager; import org.nuiton.scmwebeditor.api.dto.RemoveDirectoryDto; @@ -65,19 +65,33 @@ public class RemoveDirectoryAction extends AbstractScmWebEditorWithAddressAction return directoryToRemove; } - public void setDirectoryToRemove(String directoryToRemove) { this.directoryToRemove = directoryToRemove; } + public void setDirectoryToRemove(String directoryToRemove) { + this.directoryToRemove = directoryToRemove; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public void setError(boolean error) { this.error = error; } + public void setError(boolean error) { + this.error = error; + } - public String getFileRoot() { return fileRoot; } + public String getFileRoot() { + return fileRoot; + } - public void setFileRoot(String fileRoot) { this.fileRoot = fileRoot; } + public void setFileRoot(String fileRoot) { + this.fileRoot = fileRoot; + } - public String getScmRoot() { return scmRoot; } + public String getScmRoot() { + return scmRoot; + } - public void setScmRoot(String scmRoot) { this.scmRoot = scmRoot; } + public void setScmRoot(String scmRoot) { + this.scmRoot = scmRoot; + } @Override public String execute() { @@ -86,14 +100,10 @@ public class RemoveDirectoryAction extends AbstractScmWebEditorWithAddressAction String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); RemoveDirectoryDto dto = new RemoveDirectoryDto(); - dto.setUsername(username); - dto.setPassword(pw); + dto.setScmAuthentication(optionalAuthentication); dto.setDirectoryToRemove(directoryToRemove); ScmFileManager scmFileManager = getScmFileManager(); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveFileAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveFileAction.java index 08d4fef..74df353 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveFileAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/RemoveFileAction.java @@ -21,7 +21,7 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmFileManager; import org.nuiton.scmwebeditor.api.dto.RemoveFileDto; @@ -65,19 +65,33 @@ public class RemoveFileAction extends AbstractScmWebEditorWithAddressAction { return scmRoot; } - public void setScmRoot(String scmRoot) { this.scmRoot = scmRoot; } + public void setScmRoot(String scmRoot) { + this.scmRoot = scmRoot; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public void setError(boolean error) { this.error = error; } + public void setError(boolean error) { + this.error = error; + } - public String getScmPath() { return scmPath; } + public String getScmPath() { + return scmPath; + } - public void setScmPath(String scmPath) { this.scmPath = scmPath; } + public void setScmPath(String scmPath) { + this.scmPath = scmPath; + } - public String getFileRoot() { return fileRoot; } + public String getFileRoot() { + return fileRoot; + } - public void setFileRoot(String fileRoot) { this.fileRoot = fileRoot; } + public void setFileRoot(String fileRoot) { + this.fileRoot = fileRoot; + } @Override public String execute() { @@ -86,14 +100,13 @@ public class RemoveFileAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); boolean withAuthentication = optionalAuthentication.isPresent(); String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; RemoveFileDto dto = new RemoveFileDto(); - dto.setUsername(username); - dto.setPassword(pw); + dto.setScmAuthentication(optionalAuthentication); dto.setScmPath(scmPath); ScmFileManager scmFileManager = getScmFileManager(); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ResetAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ResetAction.java index 6f6fd5b..d9627ee 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ResetAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ResetAction.java @@ -24,7 +24,7 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import javax.naming.AuthenticationException; @@ -50,11 +50,17 @@ public class ResetAction extends AbstractScmWebEditorWithAddressAction { /** information about an error if one occurs */ protected String error; - public String getLastRevision() { return lastRevision; } + public String getLastRevision() { + return lastRevision; + } - public String getNumRevision() { return numRevision; } + public String getNumRevision() { + return numRevision; + } - public String getError() { return error; } + public String getError() { + return error; + } @Override public String execute() { @@ -63,18 +69,15 @@ public class ResetAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); ScmConnection scmConn = getScmConnection(); try { String address = getAddress(); - File originalFile = scmConn.getFileContent(address, username, pw); + File originalFile = scmConn.getFileContent(address, optionalAuthentication); lastRevision = FileUtils.readFileToString(originalFile); - numRevision = scmConn.getHeadRevisionNumber(address, username, pw); + numRevision = scmConn.getHeadRevisionNumber(address, optionalAuthentication); } catch (AuthenticationException e) { if (log.isErrorEnabled()) { log.error("AUTH FAIL"); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorCommitAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorCommitAction.java index 33de9c1..a987967 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorCommitAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorCommitAction.java @@ -23,10 +23,10 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.dom4j.Document; import org.nuiton.jrst.JRST; import org.nuiton.jrst.legacy.JRSTReader; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.dto.CommitDto; import org.nuiton.scmwebeditor.api.dto.result.CommitResultDto; @@ -87,66 +87,125 @@ public class ScmWebEditorCommitAction extends AbstractScmWebEditorWithAddressAct /** equals true if only a commit is requested, without a push */ protected boolean commitOnly; - public String getCommitMessage() { return commitMessage; } + public String getCommitMessage() { + return commitMessage; + } - public void setCommitMessage(String commitMessage) { this.commitMessage = commitMessage; } + public void setCommitMessage(String commitMessage) { + this.commitMessage = commitMessage; + } - public String getNewText() { return newText; } + public String getNewText() { + return newText; + } - public void setNewText(String newText) { this.newText = newText; } + public void setNewText(String newText) { + this.newText = newText; + } - public String getFormat() { return format; } + public String getFormat() { + return format; + } - public void setFormat(String format) { this.format = format; } + public void setFormat(String format) { + this.format = format; + } - public String getOrigText() { return origText; } + public String getOrigText() { + return origText; + } - public void setOrigText(String origText) { this.origText = origText; } + public void setOrigText(String origText) { + this.origText = origText; + } - public String getLastText() { return lastText; } + public String getLastText() { + return lastText; + } - public void setLastText(String lastText) { this.lastText = lastText; } + public void setLastText(String lastText) { + this.lastText = lastText; + } - public String getProjectUrl() { return projectUrl; } + public String getProjectUrl() { + return projectUrl; + } - public void setProjectUrl(String projectUrl) { this.projectUrl = projectUrl; } + public void setProjectUrl(String projectUrl) { + this.projectUrl = projectUrl; + } - public String getNumRevision() { return numRevision; } + public String getNumRevision() { + return numRevision; + } - public void setNumRevision(String numRevision) { this.numRevision = numRevision; } + public void setNumRevision(String numRevision) { + this.numRevision = numRevision; + } - public String getDiff() { return diff; } + public String getDiff() { + return diff; + } - public void setDiff(String diff) { this.diff = diff; } + public void setDiff(String diff) { + this.diff = diff; + } - public String getHeadCommiter() { return headCommiter; } + public String getHeadCommiter() { + return headCommiter; + } - public void setHeadCommiter(String headCommiter) { this.headCommiter = headCommiter; } + public void setHeadCommiter(String headCommiter) { + this.headCommiter = headCommiter; + } - public boolean isSaveCookie() { return saveCookie; } + public boolean isSaveCookie() { + return saveCookie; + } - public void setSaveCookie(boolean saveCookie) { this.saveCookie = saveCookie; } + public void setSaveCookie(boolean saveCookie) { + this.saveCookie = saveCookie; + } - public String getMimeType() { return mimeType; } + public String getMimeType() { + return mimeType; + } - public void setMimeType(String mimeType) { this.mimeType = mimeType; } + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } - public boolean getForce() { return force; } + public boolean getForce() { + return force; + } - public void setForce(boolean force) { this.force = force; } + public void setForce(boolean force) { + this.force = force; + } - public String getParameterAddress() { return PARAMETER_ADDRESS; } + public String getParameterAddress() { + return PARAMETER_ADDRESS; + } - public boolean isBadLogin() { return badLogin; } + public boolean isBadLogin() { + return badLogin; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public boolean isCommitOnly() { return commitOnly; } + public boolean isCommitOnly() { + return commitOnly; + } - public void setCommitOnly(boolean commitOnly) { this.commitOnly = commitOnly; } + public void setCommitOnly(boolean commitOnly) { + this.commitOnly = commitOnly; + } /** * Tells whether a RST file has a valid syntax + * * @param rstContent the text to check * @return true if the syntax is valid */ @@ -189,19 +248,10 @@ public class ScmWebEditorCommitAction extends AbstractScmWebEditorWithAddressAct // if the repository is not protected for writing, we get its UUID String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; - - if (log.isDebugEnabled()) { - log.debug("Login : " + username + " to repository: " + repositoryUUID); - } - + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); CommitDto dto = new CommitDto(); - dto.setUsername(username); - dto.setPassword(pw); + dto.setScmAuthentication(optionalAuthentication); dto.setNewText(newText); dto.setCommitMessage(commitMessage); dto.setForce(force); @@ -236,8 +286,7 @@ public class ScmWebEditorCommitAction extends AbstractScmWebEditorWithAddressAct } else if (error.equals(CommitResultDto.AUTH_ERROR)) { request.setAttribute(getParameterAddress(), getAddress()); getScmSession().delScmUser(scmConn.getRepositoryId()); - username = null; - pw = null; + resetAuthentication(); return LOGIN; } else if (error.equals(CommitResultDto.FILE_MODIFY)) { diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorMainAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorMainAction.java index 7943130..37b99d3 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorMainAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ScmWebEditorMainAction.java @@ -119,11 +119,7 @@ public class ScmWebEditorMainAction extends AbstractScmWebEditorWithAddressActio * @return true if the parameters are empty */ private boolean testParameters() { - if (Strings.isNullOrEmpty(getAddress())) { - return true; - } else { - return false; - } + return Strings.isNullOrEmpty(getAddress()); } @Override diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadFileAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadFileAction.java index 08ebc59..fa08a05 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadFileAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadFileAction.java @@ -21,7 +21,7 @@ */ package org.nuiton.scmwebeditor.uiweb.actions; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.dto.UploadFileDto; import org.nuiton.scmwebeditor.api.dto.result.UploadFileResultDto; @@ -62,7 +62,6 @@ public class UploadFileAction extends AbstractScmWebEditorWithAddressAction { /** equals true if an error occurs */ protected boolean error; - public File getUpload() { return upload; } @@ -103,17 +102,29 @@ public class UploadFileAction extends AbstractScmWebEditorWithAddressAction { return fileRoot; } - public void setScmRoot(String scmRoot) { this.scmRoot = scmRoot; } + public void setScmRoot(String scmRoot) { + this.scmRoot = scmRoot; + } - public void setFileRoot(String fileRoot) { this.fileRoot = fileRoot; } + public void setFileRoot(String fileRoot) { + this.fileRoot = fileRoot; + } - public void setBadLogin(boolean badLogin) { this.badLogin = badLogin; } + public void setBadLogin(boolean badLogin) { + this.badLogin = badLogin; + } - public void setError(boolean error) { this.error = error; } + public void setError(boolean error) { + this.error = error; + } - public void setScmPath(String scmPath) { this.scmPath = scmPath; } + public void setScmPath(String scmPath) { + this.scmPath = scmPath; + } - public String getScmPath() { return scmPath; } + public String getScmPath() { + return scmPath; + } @Override public String execute() { @@ -122,14 +133,10 @@ public class UploadFileAction extends AbstractScmWebEditorWithAddressAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, false, false); UploadFileDto dto = new UploadFileDto(); - dto.setUsername(username); - dto.setPassword(pw); + dto.setScmAuthentication(optionalAuthentication); dto.setUpload(upload); dto.setUploadFileName(uploadFileName); dto.setUploadContentType(uploadContentType); diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewDiffsAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewDiffsAction.java index 4ba180a..3f75140 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewDiffsAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewDiffsAction.java @@ -24,7 +24,7 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import javax.naming.AuthenticationException; @@ -52,21 +52,37 @@ public class ViewDiffsAction extends ScmWebEditorMainAction { protected String error; - public String getFileContent() { return fileContent; } + public String getFileContent() { + return fileContent; + } - public void setFileContent(String fileContent) { this.fileContent = fileContent; } + public void setFileContent(String fileContent) { + this.fileContent = fileContent; + } - public String getRevision1() { return revision1; } + public String getRevision1() { + return revision1; + } - public void setRevision1(String revision1) { this.revision1 = revision1; } + public void setRevision1(String revision1) { + this.revision1 = revision1; + } - public String getRevision2() { return revision2; } + public String getRevision2() { + return revision2; + } - public void setRevision2(String revision2) { this.revision2 = revision2; } + public void setRevision2(String revision2) { + this.revision2 = revision2; + } - public String getError() { return error; } + public String getError() { + return error; + } - public void setError(String error) { this.error = error; } + public void setError(String error) { + this.error = error; + } @Override public String execute() { @@ -75,26 +91,7 @@ public class ViewDiffsAction extends ScmWebEditorMainAction { String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; - - if (log.isDebugEnabled()) { - log.debug("Login : " + username + " to repository: " + repositoryUUID); - } - - initAuthenticationInformations(repositoryUUID, true, saveCookie); - - String name = username; - String password = pw; - - if (name == null) { - name = "anonymous"; - } - if (password == null) { - password = "anonymous"; - } + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); String address = getAddress(); @@ -105,7 +102,7 @@ public class ViewDiffsAction extends ScmWebEditorMainAction { try { ScmConnection scmConn = getScmConnection(); - File tempFile = scmConn.getDiffs(address, name, password, revision1, revision2); + File tempFile = scmConn.getDiffs(address, optionalAuthentication, revision1, revision2); if (tempFile != null) { fileContent = FileUtils.readFileToString(tempFile); @@ -121,10 +118,8 @@ public class ViewDiffsAction extends ScmWebEditorMainAction { log.debug("Auth Fail ", e); } - // deleting the cookies for this repository - removeRepositoryCookie(repositoryUUID); + removeRepositoryFromCache(repositoryUUID); - getScmSession().delScmUser(repositoryUUID); error = LOGIN; return LOGIN; } catch (IOException e) { diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewImageAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewImageAction.java index 8dbf5c7..ac97a57 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewImageAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewImageAction.java @@ -23,8 +23,8 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; import org.nuiton.scmwebeditor.api.OperationNotSupportedException; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmProvider; import org.nuiton.scmwebeditor.api.dto.result.AbstractResultDto; @@ -61,26 +61,46 @@ public class ViewImageAction extends ScmWebEditorMainAction { protected boolean filesDirectlyAccessible; - public String getSelectedBranch() { return selectedBranch; } + public String getSelectedBranch() { + return selectedBranch; + } - public void setSelectedBranch(String selectedBranch) { this.selectedBranch = selectedBranch; } + public void setSelectedBranch(String selectedBranch) { + this.selectedBranch = selectedBranch; + } - public boolean isScmSupportsBranches() { return scmSupportsBranches; } + public boolean isScmSupportsBranches() { + return scmSupportsBranches; + } - public void setScmSupportsBranches(boolean scmSupportsBranches) { this.scmSupportsBranches = scmSupportsBranches; } + public void setScmSupportsBranches(boolean scmSupportsBranches) { + this.scmSupportsBranches = scmSupportsBranches; + } - public String getRepositoryRoot() { return repositoryRoot; } + public String getRepositoryRoot() { + return repositoryRoot; + } - public void setRepositoryRoot(String repositoryRoot) { this.repositoryRoot = repositoryRoot; } + public void setRepositoryRoot(String repositoryRoot) { + this.repositoryRoot = repositoryRoot; + } - public String getImagePath() { return imagePath; } + public String getImagePath() { + return imagePath; + } - public void setImagePath(String imagePath) { this.imagePath = imagePath; } + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } - public boolean isFilesDirectlyAccessible() { return filesDirectlyAccessible; } + public boolean isFilesDirectlyAccessible() { + return filesDirectlyAccessible; + } public void setFilesDirectlyAccessible( - boolean filesDirectlyAccessible) { this.filesDirectlyAccessible = filesDirectlyAccessible; } + boolean filesDirectlyAccessible) { + this.filesDirectlyAccessible = filesDirectlyAccessible; + } @Override public String execute() { @@ -108,32 +128,14 @@ public class ViewImageAction extends ScmWebEditorMainAction { repositoryRoot = address.substring(0, address.lastIndexOf('/')); } - // authentication - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; - - if (log.isDebugEnabled()) { - log.debug("Login : " + username + " to " + repositoryUUID); - } - - String name = username; - String password = pw; - - if (name == null) { - name = "anonymous"; - } - if (password == null) { - password = "anonymous"; - } + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); String changeBranchError = null; if (scmSupportsBranches) { try { - changeBranchError = provider.changeBranch(selectedBranch, pathToLocalRepos, username, pw); + changeBranchError = provider.changeBranch(selectedBranch, pathToLocalRepos, optionalAuthentication); } catch (OperationNotSupportedException e) { if (log.isErrorEnabled()) { log.error("Can not change branch with SCM '" + scmType + "'"); @@ -157,7 +159,7 @@ public class ViewImageAction extends ScmWebEditorMainAction { ScmConnection scmConn = provider.getConnection(address, pathToLocalRepos); try { - numRevision = scmConn.getHeadRevisionNumber(address, name, password); + numRevision = scmConn.getHeadRevisionNumber(address, optionalAuthentication); } catch (AuthenticationException e) { request.setAttribute(PARAMETER_ADDRESS, address); @@ -177,11 +179,10 @@ public class ViewImageAction extends ScmWebEditorMainAction { return ERROR_PATH; } - imagePath = scmConn.getFilePath(address, repositoryRoot, username, pw); + imagePath = scmConn.getFilePath(address, repositoryRoot, optionalAuthentication); if (log.isInfoEnabled()) { - log.info("IP client : " + request.getRemoteAddr() + " , get file : " + address + ". File's mimetype : " - + mimeType); + log.info("IP client : " + request.getRemoteAddr() + " , get file : " + address + ". File's mimetype : " + mimeType); } return VIEW_IMAGE; diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewRevisionAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewRevisionAction.java index 1c19d6b..2fb29f4 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewRevisionAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/ViewRevisionAction.java @@ -24,7 +24,7 @@ package org.nuiton.scmwebeditor.uiweb.actions; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.shiro.authc.UsernamePasswordToken; +import org.nuiton.scmwebeditor.api.ScmAuthentication; import org.nuiton.scmwebeditor.api.ScmConnection; import javax.naming.AuthenticationException; @@ -54,26 +54,45 @@ public class ViewRevisionAction extends ScmWebEditorMainAction { /** equals 1 to view the revision1 and equals 2 to view the revision2 */ protected int rev; + public String getFileContent() { + return fileContent; + } - public String getFileContent() { return fileContent; } - - public void setFileContent(String fileContent) { this.fileContent = fileContent; } + public void setFileContent(String fileContent) { + this.fileContent = fileContent; + } - public String getRevision1() { return revision1; } + public String getRevision1() { + return revision1; + } - public void setRevision1(String revision1) { this.revision1 = revision1; } + public void setRevision1(String revision1) { + this.revision1 = revision1; + } - public String getRevision2() { return revision2; } + public String getRevision2() { + return revision2; + } - public void setRevision2(String revision2) { this.revision2 = revision2; } + public void setRevision2(String revision2) { + this.revision2 = revision2; + } - public int getRev() { return rev; } + public int getRev() { + return rev; + } - public void setRev(int rev) { this.rev = rev; } + public void setRev(int rev) { + this.rev = rev; + } - public String getError() { return error; } + public String getError() { + return error; + } - public void setError(String error) { this.error = error; } + public void setError(String error) { + this.error = error; + } @Override public String execute() { @@ -85,26 +104,7 @@ public class ViewRevisionAction extends ScmWebEditorMainAction { // if the repository is not protected, we get its UUID String repositoryUUID = getRepositoryUUID(); - Optional<UsernamePasswordToken> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); - boolean withAuthentication = optionalAuthentication.isPresent(); - String username = withAuthentication ? optionalAuthentication.get().getUsername() : null; - String pw = withAuthentication ? new String(optionalAuthentication.get().getPassword()) : null; - - if (log.isDebugEnabled()) { - log.debug("Login : " + username + " to repository: " + repositoryUUID); - } - - - String name = username; - String password = pw; - - if (name == null) { - name = "anonymous"; - } - if (password == null) { - password = "anonymous"; - } - + Optional<ScmAuthentication> optionalAuthentication = initAuthenticationInformations(repositoryUUID, true, saveCookie); /* * Getting the file's revision @@ -118,7 +118,7 @@ public class ViewRevisionAction extends ScmWebEditorMainAction { revision = revision2; } - File tempFile = scmConn.getFileContentAtRevision(address, name, password, revision); + File tempFile = scmConn.getFileContentAtRevision(address, optionalAuthentication, revision); if (tempFile != null) { fileContent = FileUtils.readFileToString(tempFile); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.