r206 - in trunk/src: main/java/org/nuiton/scmwebeditor main/java/org/nuiton/scmwebeditor/actions main/resources main/resources/i18n main/webapp/WEB-INF/content test/java/org/nuiton/scmwebeditor
Author: kcardineaud Date: 2011-08-08 16:13:39 +0200 (Mon, 08 Aug 2011) New Revision: 206 Url: http://nuiton.org/repositories/revision/scmwebeditor/206 Log: Save authentification in session for main en commit action Added: trunk/src/main/java/org/nuiton/scmwebeditor/ScmSession.java trunk/src/main/java/org/nuiton/scmwebeditor/ScmUser.java trunk/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java Removed: trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java trunk/src/main/resources/i18n/scmwebeditor_fr_FR.properties trunk/src/main/resources/struts.xml trunk/src/main/webapp/WEB-INF/content/modificationViewer.jsp trunk/src/main/webapp/WEB-INF/content/reset.jsp trunk/src/main/webapp/WEB-INF/content/uploadForm.jsp trunk/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java Added: trunk/src/main/java/org/nuiton/scmwebeditor/ScmSession.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/ScmSession.java (rev 0) +++ trunk/src/main/java/org/nuiton/scmwebeditor/ScmSession.java 2011-08-08 14:13:39 UTC (rev 206) @@ -0,0 +1,43 @@ +package org.nuiton.scmwebeditor; + +import java.util.HashMap; +import java.util.Map; + +public class ScmSession { + + protected Map<String, ScmUser> scmUsers; + + + public ScmSession() { + scmUsers = new HashMap<String,ScmUser>(); + } + + public Map<String, ScmUser> getScmUsers() { + return scmUsers; + } + + public void addScmUser(String address , String login, String password) { + scmUsers.put(address, new ScmUser(login,password)); + } + + public String getUsername(String url) { + if(scmUsers.containsKey(url)) { + return scmUsers.get(url).getUsername(); + } + else { + return null; + } + + } + + public String getPassword(String url) { + if(scmUsers.containsKey(url)) { + return scmUsers.get(url).getPassword(); + } + else { + return null; + } + } + + +} Added: trunk/src/main/java/org/nuiton/scmwebeditor/ScmUser.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/ScmUser.java (rev 0) +++ trunk/src/main/java/org/nuiton/scmwebeditor/ScmUser.java 2011-08-08 14:13:39 UTC (rev 206) @@ -0,0 +1,28 @@ +package org.nuiton.scmwebeditor; + +public class ScmUser { + + protected String username; + protected String password; + + public ScmUser(String username, String password) { + this.setUsername(username); + this.setPassword(password); + } + + public void setUsername(String username) { + this.username = username; + } + + public String getUsername() { + return username; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPassword() { + return password; + } +} Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -40,12 +40,14 @@ import org.tmatesoft.svn.core.wc.SVNUpdateClient; import org.xml.sax.SAXException; +import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.HttpSession; import java.io.*; import java.net.MalformedURLException; import java.nio.charset.Charset; +import java.util.Map; import java.util.Properties; /** @@ -53,8 +55,11 @@ * Date: 24 nov. 2009 * Time: 21:24:39 */ -public class ScmWebEditorBaseAction extends ActionSupport { +public class ScmWebEditorBaseAction extends ActionSupport { + + protected Map<String, Object> session; + private static final long serialVersionUID = 1L; final static protected String CONTEXT_ACTION_KEY = "action"; @@ -186,7 +191,7 @@ } - public void checkout(SvnSession svnSess, File checkoutdir) throws SVNException { + public void checkout(SvnConnection svnSess, File checkoutdir) throws SVNException { SVNUpdateClient upclient = new SVNUpdateClient(svnSess.getManager(), svnSess.getSvnOption()); @@ -210,12 +215,12 @@ } - protected SvnSession getSvnSession(HttpSession httpSession) { - SvnSession svnSess = (SvnSession) httpSession.getAttribute(ATTRIBUTE_SVN_SESSION); + protected SvnConnection getSvnSession(HttpSession httpSession) { + SvnConnection svnSess = (SvnConnection) httpSession.getAttribute(ATTRIBUTE_SVN_SESSION); return svnSess; } - protected void setSvnSession(HttpSession httpSession, SvnSession svnSess) { + protected void setSvnSession(HttpSession httpSession, SvnConnection svnSess) { httpSession.setAttribute(ATTRIBUTE_SVN_SESSION, svnSess); } @@ -324,6 +329,33 @@ } } + + public ScmSession getScmSession() { + session = ActionContext.getContext().getSession(); + Object obj = session.get("ScmSession"); + + ScmSession scmSession = null; + if(obj==null) { + scmSession = new ScmSession(); + session.put("ScmSession", scmSession); + } + else { + scmSession = (ScmSession) obj; + } + return scmSession; + } + public String getUsername(String url) { + return getScmSession().getUsername(url); + } + + public String getPassword(String url) { + return getScmSession().getPassword(url); + } + + + + + } Added: trunk/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java (rev 0) +++ trunk/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java 2011-08-08 14:13:39 UTC (rev 206) @@ -0,0 +1,175 @@ +/* + * #%L + * Nuiton-ScmWebEditor + * + * $Id: SvnSession.java 199 2011-08-03 15:54:19Z kcardineaud $ + * $HeadURL: http://svn.nuiton.org/svn/scmwebeditor/trunk/src/main/java/org/nuiton/scmweb... $ + * %% + * Copyright (C) 2009 - 2010 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; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.FileUtil; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNProperty; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; +import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNWCUtil; + +import java.io.File; +import java.io.IOException; + +public class SvnConnection { + + + private static final Log log = LogFactory.getLog(SvnConnection.class); + /** + * svn path without fileName + */ + protected String svnPath; + /** + * fileName of modif file + */ + protected String fileName; + /** + * Temp directory for checkout + */ + protected File checkoutdir; + /** + * url of svn path + */ + protected SVNURL remoteUrl; + /** + * AuthenticationManager with login and password + */ + protected ISVNAuthenticationManager authManager; + /** + * svn default option + */ + protected DefaultSVNOptions svnOption; + /** + * + */ + protected SVNClientManager manager; + + + protected String repositoryId; + + + + public SvnConnection ( + String address) throws StringIndexOutOfBoundsException { + + this.svnPath = address.substring(0,address.lastIndexOf("/")); + + this.fileName = address.substring(address.lastIndexOf("/")+1); + + try { + this.remoteUrl = SVNURL.parseURIEncoded(svnPath); + } catch (SVNException e) { + if(log.isErrorEnabled()) { + log.error("Can't parse svnPath", e); + } + } + + this.authManager = SVNWCUtil.createDefaultAuthenticationManager(); + this.svnOption = SVNWCUtil.createDefaultOptions(false); + this.svnOption.setPropertyValue(SVNProperty.EOL_STYLE, SVNProperty.EOL_STYLE_LF); + this.manager = SVNClientManager.newInstance(this.svnOption, this.authManager); + } + + public void updateAuthentication(String login, String password) { + setAuthManager(SVNWCUtil.createDefaultAuthenticationManager(login, password)); + setManager(SVNClientManager.newInstance(getSvnOption(), getAuthManager())); + } + + public ISVNAuthenticationManager getAuthManager() { + return authManager; + } + + public void setAuthManager(ISVNAuthenticationManager authManager) { + this.authManager = authManager; + } + + public File getCheckoutdir() { + return checkoutdir; + } + + public void createCheckoutdir() throws IOException { + this.checkoutdir = FileUtil.createTempDirectory("scm_", ""); + } + + public void setCheckoutdir(File checkoutdir) { + this.checkoutdir = checkoutdir; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public SVNClientManager getManager() { + return manager; + } + + public void setManager(SVNClientManager manager) { + this.manager = manager; + } + + public SVNURL getRemoteUrl() { + return remoteUrl; + } + + public void setRemoteUrl(SVNURL remoteUrl) { + this.remoteUrl = remoteUrl; + } + + public DefaultSVNOptions getSvnOption() { + return svnOption; + } + + public void setSvnOption(DefaultSVNOptions svnOption) { + this.svnOption = svnOption; + } + + public String getSvnPath() { + return svnPath; + } + + public void setSvnPath(String svnPath) { + this.svnPath = svnPath; + } + + public String getRepositoryId() { + return repositoryId; + } + + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } + + + +} Deleted: trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java 2011-08-08 14:13:39 UTC (rev 206) @@ -1,161 +0,0 @@ -/* - * #%L - * Nuiton-ScmWebEditor - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2010 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; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.util.FileUtil; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNProperty; -import org.tmatesoft.svn.core.SVNURL; -import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; -import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions; -import org.tmatesoft.svn.core.wc.SVNClientManager; -import org.tmatesoft.svn.core.wc.SVNWCUtil; - -import java.io.File; -import java.io.IOException; - -public class SvnSession { - - - private static final Log log = LogFactory.getLog(SvnSession.class); - /** - * svn path without fileName - */ - protected String svnPath; - /** - * fileName of modif file - */ - protected String fileName; - /** - * Temp directory for checkout - */ - protected File checkoutdir; - /** - * url of svn path - */ - protected SVNURL remoteUrl; - /** - * AuthenticationManager with login and password - */ - protected ISVNAuthenticationManager authManager; - /** - * svn default option - */ - protected DefaultSVNOptions svnOption; - /** - * - */ - protected SVNClientManager manager; - - - public SvnSession ( - String address) throws StringIndexOutOfBoundsException { - - this.svnPath = address.substring(0,address.lastIndexOf("/")); - - this.fileName = address.substring(address.lastIndexOf("/")+1); - - - try { - this.remoteUrl = SVNURL.parseURIEncoded(svnPath); - } catch (SVNException e) { - log.debug("SVNSESS NULL"); - } - this.authManager = SVNWCUtil.createDefaultAuthenticationManager(); - this.svnOption = SVNWCUtil.createDefaultOptions(false); - this.svnOption.setPropertyValue(SVNProperty.EOL_STYLE, SVNProperty.EOL_STYLE_LF); - this.manager = SVNClientManager.newInstance(this.svnOption, this.authManager); - } - - public void updateAuthentication(String login, String password) { - setAuthManager(SVNWCUtil.createDefaultAuthenticationManager(login, password)); - setManager(SVNClientManager.newInstance(getSvnOption(), getAuthManager())); - } - - public ISVNAuthenticationManager getAuthManager() { - return authManager; - } - - public void setAuthManager(ISVNAuthenticationManager authManager) { - this.authManager = authManager; - } - - public File getCheckoutdir() { - return checkoutdir; - } - - public void createCheckoutdir() throws IOException { - this.checkoutdir = FileUtil.createTempDirectory("scm_", ""); - } - - public void setCheckoutdir(File checkoutdir) { - this.checkoutdir = checkoutdir; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public SVNClientManager getManager() { - return manager; - } - - public void setManager(SVNClientManager manager) { - this.manager = manager; - } - - public SVNURL getRemoteUrl() { - return remoteUrl; - } - - public void setRemoteUrl(SVNURL remoteUrl) { - this.remoteUrl = remoteUrl; - } - - public DefaultSVNOptions getSvnOption() { - return svnOption; - } - - public void setSvnOption(DefaultSVNOptions svnOption) { - this.svnOption = svnOption; - } - - public String getSvnPath() { - return svnPath; - } - - public void setSvnPath(String svnPath) { - this.svnPath = svnPath; - } - - - -} Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -5,7 +5,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; -import org.nuiton.scmwebeditor.SvnSession; +import org.nuiton.scmwebeditor.SvnConnection; +import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.SVNURL; @@ -30,6 +31,8 @@ protected String username; protected String pw; + + protected String error; public String getLastRevision() { @@ -47,19 +50,24 @@ public void setPw(String pw) { this.pw = pw; } + + public void getErreur(String error) { + this.error = error; + } public String execute() { - SvnSession svnSess = null; + SvnConnection svnSess = null; try { - svnSess = new SvnSession(address); + svnSess = new SvnConnection(address); } catch (StringIndexOutOfBoundsException e) { if(log.isErrorEnabled()) { log.error("Can't reach the svn repository"); } + error = "errorPath"; return "errorPath"; } @@ -103,10 +111,18 @@ } + catch (SVNAuthenticationException authexep) { + if(log.isErrorEnabled()) { + log.error("AUTH FAIL"); + } + error = "authError"; + return "authError"; + } catch (SVNException e) { if(log.isErrorEnabled()) { log.error("Can't reach the svn repository"); } + error = "errorPath"; return "errorPath"; } Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorCommitAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -5,7 +5,6 @@ import java.io.IOException; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringEscapeUtils; @@ -14,7 +13,7 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.nuiton.jrst.JRST; import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; -import org.nuiton.scmwebeditor.SvnSession; +import org.nuiton.scmwebeditor.SvnConnection; import org.nuiton.util.FileUtil; import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNDepth; @@ -145,19 +144,18 @@ if(fileType.equals("rst")) { if(!testRstParsing(newText)) { - return "errorRst"; + return "error"; } } - HttpSession httpSession = request.getSession(true); - SvnSession svnSess = null; + SvnConnection svnSess = null; log.info("ADDRESS : "+address); try { - svnSess = new SvnSession(address); + svnSess = new SvnConnection(address); } catch (StringIndexOutOfBoundsException e) { if(log.isDebugEnabled()) { log.debug("Parameter is not valid ",e); @@ -165,8 +163,27 @@ return "error"; } + + String login = this.getUsername(); + String password = this.getPw(); + + if(login==null && password==null) { + if(getScmSession().getUsername(address)!=null && getScmSession().getPassword(address)!=null) { + //On recupère les identifiants en session + login = getScmSession().getUsername(address); + password = getScmSession().getPassword(address); + } + else { + login = "anonymous"; + password = "anonymous"; + } + } + else { + getScmSession().addScmUser(address, login , password); + } + - svnSess.updateAuthentication( username, pw); + svnSess.updateAuthentication( login, password); File checkoutdir = null; try { @@ -211,8 +228,6 @@ request.setAttribute("lastText", lastText); request.setAttribute(ATTRIBUTE_ORIG_TEXT, StringEscapeUtils.escapeHtml(originalText)); - request.setAttribute(ATTRIBUTE_INVALIDATE_MAX_TIME, (httpSession.getMaxInactiveInterval() / 60)); - request.setAttribute(ATTRIBUTE_SCM_EDITOR_URI, request.getRequestURI()); // End on first part @@ -267,9 +282,7 @@ request.setAttribute("address", address); request.setAttribute(ATTRIBUTE_ORIG_TEXT, StringEscapeUtils.escapeHtml(newText)); - request.setAttribute(ATTRIBUTE_INVALIDATE_MAX_TIME, (httpSession.getMaxInactiveInterval() / 60)); - request.setAttribute(ATTRIBUTE_SCM_EDITOR_URI, request.getRequestURI()); - request.setAttribute(ATTRIBUTE_PREVIEW_SERVLET_URL, request.getContextPath() + "/previewservlet"); + request.setAttribute(ATTRIBUTE_BAD_LOGIN, true); //Suppression du repertoire temporaire Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -18,7 +18,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; -import org.nuiton.scmwebeditor.SvnSession; +import org.nuiton.scmwebeditor.SvnConnection; import org.nuiton.scmwebeditor.urlResolver.ScmUrlResolverEngine; import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNException; @@ -27,15 +27,13 @@ import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; -import org.tmatesoft.svn.core.wc.SVNWCUtil; +import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.Action; +public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements ServletRequestAware { -public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements ServletRequestAware { - private static final long serialVersionUID = 8361035067228171624L; private static final Log log = LogFactory.getLog(ScmWebEditorMainAction.class); @@ -44,12 +42,39 @@ protected String projectUrl; protected String format; + protected String addressSvn; + + public String getAddressSvn() { + return addressSvn; + } + + + public void setAddressSvn(String addressSvn) { + this.addressSvn = addressSvn; + } + + protected String username; protected String pw; protected HttpServletRequest request; + + protected String repositoryId; + + + + public String getRepositoryId() { + return repositoryId; + } + + + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } + + public String getUsername() { return username; } @@ -183,11 +208,11 @@ } - SvnSession svnSess = null; + SvnConnection svnConn = null; try { - svnSess = new SvnSession(address); + svnConn = new SvnConnection(address); } catch (StringIndexOutOfBoundsException e) { if(log.isDebugEnabled()) { @@ -197,26 +222,40 @@ } - format = svnSess.getFileName().substring(svnSess.getFileName().lastIndexOf(".")+1); + format = svnConn.getFileName().substring(svnConn.getFileName().lastIndexOf(".")+1); String originalText = ""; String login = this.getUsername(); - String pw = this.getPw(); - String url = svnSess.getSvnPath(); - String file = svnSess.getFileName(); + String password = this.getPw(); + String url = svnConn.getSvnPath(); + String file = svnConn.getFileName(); - if(login==null && pw==null) { - login = "anonymous"; - pw = "anonymous"; + + log.info("login : "+login+" password : "+password); + + if(login==null && password==null) { + if(getScmSession().getUsername(address)!=null && getScmSession().getPassword(address)!=null) { + //On recupère les identifiants en session + login = getScmSession().getUsername(address); + password = getScmSession().getPassword(address); + } + else { + login = "anonymous"; + password = "anonymous"; + } } + else { + getScmSession().addScmUser(address, login , password); + } + + svnConn.updateAuthentication(login, password); - SVNRepository repository = null; try { repository = SVNRepositoryFactory.create( SVNURL.parseURIEncoded( url ) ); - ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager( login , pw ); + ISVNAuthenticationManager authManager = svnConn.getAuthManager(); repository.setAuthenticationManager( authManager ); SVNNodeKind nodeKind = repository.checkPath( file , -1 ); @@ -257,7 +296,7 @@ // if svn authentication failed user is redirected on login page if(log.isDebugEnabled()) { - log.debug("Private SCM on reading " + svnSess.getRemoteUrl()); + log.debug("Private SCM on reading " + svnConn.getRemoteUrl()); } //redirect to a login page return Action.LOGIN; @@ -283,7 +322,7 @@ String mimeType =null; try { - mimeType = getMimeType(originalText, svnSess.getFileName()); + mimeType = getMimeType(originalText, svnConn.getFileName()); } catch (IOException e) { if(log.isErrorEnabled()) { log.error("Can't get MimeType, problem when reading file",e); @@ -294,7 +333,7 @@ /* String[] mimeTypes =null; try { - mimeTypes = getMimeTypes(originalText, svnSess.getFileName()); + mimeTypes = getMimeTypes(originalText, svnConn.getFileName()); log.info("size : "+mimeTypes.length); @@ -362,6 +401,8 @@ log.info("IP client : "+request.getRemoteAddr() + " , get file : "+address+ ". File's mimetype : "+mimeType); } + + return "editPage"; @@ -372,6 +413,9 @@ public void setServletRequest(HttpServletRequest request) { this.request = request; } + + + Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -201,8 +201,8 @@ repository.setAuthenticationManager( authManager ); if(log.isDebugEnabled()) { - log.debug( "Repository Root: " + repository.getRepositoryRoot( true ) ); - log.debug( "Repository UUID: " + repository.getRepositoryUUID( true ) ); + log.debug( "Repository Root: " + repository.getRepositoryRoot( true ) ); + log.debug( "Repository UUID: " + repository.getRepositoryUUID( true ) ); } SVNNodeKind nodeKind = repository.checkPath( "" , -1 ); Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java 2011-08-08 14:13:39 UTC (rev 206) @@ -5,14 +5,13 @@ import java.io.IOException; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; -import org.nuiton.scmwebeditor.SvnSession; +import org.nuiton.scmwebeditor.SvnConnection; import org.nuiton.util.FileUtil; import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNDepth; @@ -107,10 +106,10 @@ } - SvnSession svnSess = null; + SvnConnection svnSess = null; try { - svnSess = new SvnSession(address); + svnSess = new SvnConnection(address); } catch (StringIndexOutOfBoundsException e) { if(log.isErrorEnabled()) { Modified: trunk/src/main/resources/i18n/scmwebeditor_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/scmwebeditor_fr_FR.properties 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/resources/i18n/scmwebeditor_fr_FR.properties 2011-08-08 14:13:39 UTC (rev 206) @@ -13,8 +13,8 @@ scm.info.ProblemWithRst=Si vous rencontrez des problemes avec RestruturedText, visitez le scm.info.rstWebsite=site de la documentation RST scm.language=Langage -scm.logAs=Connecte en tant que -scm.loginButton=Connection +scm.logAs=Connecte en tant que \: +scm.loginButton=Connexion scm.modificationViewer.betterUseJavascript= scm.modificationViewer.noJavascript=Javascript est desactive. Vous pouvais seulement utiliser les boutons sauvegarder et quitter, quitter ou upload. scm.mustBeLog=Vous devez vous identifier pour parcourir ce depot. Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/resources/struts.xml 2011-08-08 14:13:39 UTC (rev 206) @@ -30,6 +30,8 @@ <action name="reset" class="org.nuiton.scmwebeditor.actions.ResetAction" > <result>/WEB-INF/content/reset.jsp</result> + <result name="authError">/WEB-INF/content/reset.jsp</result> + <result name="errorPath">/WEB-INF/content/reset.jsp</result> </action> <action name="doUpload" class="org.nuiton.scmwebeditor.actions.UploadAction" > Modified: trunk/src/main/webapp/WEB-INF/content/modificationViewer.jsp =================================================================== --- trunk/src/main/webapp/WEB-INF/content/modificationViewer.jsp 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/webapp/WEB-INF/content/modificationViewer.jsp 2011-08-08 14:13:39 UTC (rev 206) @@ -1,5 +1,8 @@ <%-- Document : ModificationViewer Created on : 10 sept. 2009, 13:43:11 Author : glorieux --%> <%@page import="org.apache.commons.lang.StringEscapeUtils"%> + <%@page import="java.util.Map"%> + <%@page import="org.nuiton.scmwebeditor.ScmSession"%> + <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> @@ -127,7 +130,6 @@ - <script src="js/gereSession.js" type="text/javascript"></script> <script src="js/cancelRedirect.js" type="text/javascript"></script> <script src="js/pictureUpload.js" type="text/javascript"></script> <noscript><h4><s:text name="scm.modificationViewer.noJavascript"/></h4></noscript> @@ -157,24 +159,89 @@ <p> - <s:set id="scm.username"> - <s:text name="scm.username"/> - </s:set> - <s:set id="scm.usernameTitle"> - <s:text name="scm.usernameTitle"/> - </s:set> - <s:set id="scm.password"> - <s:text name="scm.password"/> - </s:set> - <s:set id="scm.passwordTitle"> - <s:text name="scm.passwordTitle"/> - </s:set> - <div id="loginDiv"> - <s:textfield accesskey="U" size="12" label="%{scm.username}" name="username" title="%{scm.usernameTitle}" /> - <s:password accesskey="P" size="12" label="%{scm.password}" name="pw" title="%{scm.passwordTitle}" /> - </div> +<% +Object obj = session.getAttribute("ScmSession"); +String usernameSvn = null; +String passwordSvn = null; +if(obj!=null) { + ScmSession scmSession = (ScmSession) obj; + if(request.getAttribute("address")!=null) { + String address = request.getAttribute("address").toString(); + usernameSvn = scmSession.getUsername(address); + passwordSvn = scmSession.getPassword(address); + } +} +%> +<% + if (usernameSvn==null || passwordSvn==null) { +%> + <s:set id="scm.username"> + <s:text name="scm.username"/> + </s:set> + <s:set id="scm.usernameTitle"> + <s:text name="scm.usernameTitle"/> + </s:set> + <s:set id="scm.password"> + <s:text name="scm.password"/> + </s:set> + <s:set id="scm.passwordTitle"> + <s:text name="scm.passwordTitle"/> + </s:set> + <div id="loginDiv"> + <s:textfield accesskey="U" size="12" label="%{scm.username}" name="username" title="%{scm.usernameTitle}" /> + <s:password accesskey="P" size="12" label="%{scm.password}" name="pw" title="%{scm.passwordTitle}" /> + </div> + <% + } else { +%> + <s:text name="scm.logAs" /> <%=usernameSvn%> <br/> + + <input type="hidden" value="<%=usernameSvn%>" name="username" /> + <input type="hidden" value="<%=passwordSvn%>" name="pw" /> +<% } %> + + +<%-- <s:set name="addressSvn"> --%> +<%-- <s:property value="address" /> --%> +<%-- </s:set> --%> +<%-- <s:set name="usernameSvn"> --%> +<%-- <s:property value="#session.ScmSession"/> --%> +<%-- </s:set> --%> +<%-- <s:set name="passwordSvn"> --%> +<%-- <s:property value="#session.ScmSession"/> --%> +<%-- </s:set> --%> + +<%-- <h1><s:property value="%{usernameSvn}" /></h1> --%> +<%-- <h1><s:property value="%{passwordSvn}" /></h1> --%> + +<%-- <s:if test="%{username}==null"> --%> +<%-- <s:set id="scm.username"> --%> +<%-- <s:text name="scm.username"/> --%> +<%-- </s:set> --%> +<%-- <s:set id="scm.usernameTitle"> --%> +<%-- <s:text name="scm.usernameTitle"/> --%> +<%-- </s:set> --%> +<%-- <s:set id="scm.password"> --%> +<%-- <s:text name="scm.password"/> --%> +<%-- </s:set> --%> +<%-- <s:set id="scm.passwordTitle"> --%> +<%-- <s:text name="scm.passwordTitle"/> --%> +<%-- </s:set> --%> +<!-- <div id="loginDiv"> --> +<%-- <s:textfield accesskey="U" size="12" label="%{scm.username}" name="username" title="%{scm.usernameTitle}" /> --%> +<%-- <s:password accesskey="P" size="12" label="%{scm.password}" name="pw" title="%{scm.passwordTitle}" /> --%> +<!-- </div> --> +<%-- </s:if> --%> +<%-- <s:else> --%> +<%-- Login as : <s:property value="%{username}" /><br/> --%> + +<%-- <s:hidden value="%{username}" label="%{scm.username}" name="username" /> --%> +<%-- <s:hidden value="%{tototo}" label="%{scm.password}" name="pw" /> --%> +<%-- </s:else> --%> + + <input type="hidden" name="address" value="<%=request.getAttribute("address")%>"/> <input type="hidden" id="origText" name="origText" value="<%=request.getAttribute("OrigText")%>"/> <% if(request.getAttribute("lastText")!=null) { %> @@ -286,9 +353,8 @@ <s:text name="scm.uploadTitle"/> </s:set> - <s:set name="address"> - <s:property value="address"/> + <s:property value="address" /> </s:set> <s:hidden id="fileaddress" value="%{address}" /> <center> Modified: trunk/src/main/webapp/WEB-INF/content/reset.jsp =================================================================== --- trunk/src/main/webapp/WEB-INF/content/reset.jsp 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/webapp/WEB-INF/content/reset.jsp 2011-08-08 14:13:39 UTC (rev 206) @@ -5,8 +5,16 @@ </s:set> <s:hidden id="valueOfLastRevision" value="%{lastRevision}" /> - <script type="text/javascript"> - - editor.mirror.setValue(document.getElementById('valueOfLastRevision').value); - - </script> \ No newline at end of file + <s:if test="error=='authError'"> + <p><font color="red"><s:text name="scm.badUsernameOrPassword"/></font></p> + </s:if> + <s:elseif test="error=='errorPath'"> + <p><font color="red"><s:text name="scm.erreurRepo"/></font></p> + </s:elseif> + <s:else> + <script type="text/javascript"> + + editor.mirror.setValue(document.getElementById('valueOfLastRevision').value); + + </script> + </s:else> \ No newline at end of file Modified: trunk/src/main/webapp/WEB-INF/content/uploadForm.jsp =================================================================== --- trunk/src/main/webapp/WEB-INF/content/uploadForm.jsp 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/main/webapp/WEB-INF/content/uploadForm.jsp 2011-08-08 14:13:39 UTC (rev 206) @@ -1,5 +1,6 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + <%@page import="org.nuiton.scmwebeditor.ScmSession"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> @@ -9,20 +10,45 @@ </head> <body> - <form method="POST" id="uploadForm" action="doUpload.action" enctype="multipart/form-data"> - <label><s:text name="scm.uploadFile" /> : <input type="file" name="upload"/></label><br/> - <label><s:text name="scm.uploadPath" /> : <input type="text" name="svnPath" /></label><br/> - <label><s:text name="scm.username" /> : <input type="text" name="username" /></label><br/> - <label><s:text name="scm.password" /> : <input type="password" name="pw" /></label><br/> - <input type="hidden" name="address" value="<%=request.getParameter("address") %>" /> + <form method="POST" id="uploadForm" action="doUpload.action" enctype="multipart/form-data"> + <label><s:text name="scm.uploadFile" /> : <input type="file" name="upload"/></label><br/> + <label><s:text name="scm.uploadPath" /> : <input type="text" name="svnPath" /></label><br/> + + <% + Object obj = session.getAttribute("ScmSession"); + String usernameSvn = null; + String passwordSvn = null; + if(obj!=null) { + ScmSession scmSession = (ScmSession) obj; + if(request.getParameter("address")!=null) { + String address = request.getParameter("address").toString(); + usernameSvn = scmSession.getUsername(address); + passwordSvn = scmSession.getPassword(address); + } + } + + if (usernameSvn==null || passwordSvn==null) { + %> + <label><s:text name="scm.username" /> : <input type="text" name="username" /></label><br/> + <label><s:text name="scm.password" /> : <input type="password" name="pw" /></label><br/> + <% + } else { + %> + <s:text name="scm.logAs" /> <%=usernameSvn%> <br/> + <input type="hidden" value="<%=usernameSvn%>" name="username" /> + <input type="hidden" value="<%=passwordSvn%>" name="pw" /> + <% } %> + + + <input type="hidden" name="address" value="<%=request.getParameter("address") %>" /> <s:if test="badLogin"> <p><font color="red"><s:text name="scm.badUsernameOrPassword"/></font></p> </s:if> <s:elseif test="error"> <p><font color="red"><s:text name="scm.erreurRepo"/></font></p> </s:elseif> - <input type="submit"/> - </form> + <input type="submit"/> + </form> </body> </html> \ No newline at end of file Modified: trunk/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java =================================================================== --- trunk/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java 2011-08-04 12:17:49 UTC (rev 205) +++ trunk/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java 2011-08-08 14:13:39 UTC (rev 206) @@ -94,7 +94,7 @@ public void testCheckout() { File checkoutdirTest = null; try { - SvnSession svnSess = new SvnSession(tgtURL.toString()+"/testFile"); + SvnConnection svnSess = new SvnConnection(tgtURL.toString()+"/testFile"); checkoutdirTest = FileUtil.createTempDirectory("scmCheckOutTest_", "");
participants (1)
-
kcardineaud@users.nuiton.org