branch feature/GIT updated (40513dc -> e8d7430)
This is an automated email from the git hooks/post-receive script. New change to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git from 40513dc Use of providers which give information about the SCMs features new e8d7430 Use of the providers for the UI to make it more modular The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit e8d74308a6d1432c2f1cb99dfd806206b7ca5efd Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Tue May 5 16:05:22 2015 +0200 Use of the providers for the UI to make it more modular Summary of changes: .../java/org/nuiton/scmwebeditor/GitProvider.java | 10 +++++ .../java/org/nuiton/scmwebeditor/ScmProvider.java | 8 ++++ .../ScmWebEditorApplicationListener.java | 5 --- .../java/org/nuiton/scmwebeditor/SvnProvider.java | 19 ++++++++ .../nuiton/scmwebeditor/actions/BrowseAction.java | 52 +++++++++++++++------- .../impl/ScmUrlResolverMavenDocImpl.java | 10 ++--- .../impl/ScmUrlResolverMavenSiteXmlImpl.java | 4 +- src/main/resources/struts.xml | 11 ++--- src/main/webapp/WEB-INF/content/browse.jsp | 3 +- src/main/webapp/WEB-INF/content/error.jsp | 2 +- .../webapp/WEB-INF/content/modificationViewer.jsp | 2 +- src/main/webapp/WEB-INF/content/outConnection.jsp | 2 +- src/main/webapp/js/branches.js | 34 +++++++++----- src/main/webapp/js/scmDetector.js | 29 +++--------- 14 files changed, 117 insertions(+), 74 deletions(-) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git commit e8d74308a6d1432c2f1cb99dfd806206b7ca5efd Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Tue May 5 16:05:22 2015 +0200 Use of the providers for the UI to make it more modular --- .../java/org/nuiton/scmwebeditor/GitProvider.java | 10 +++++ .../java/org/nuiton/scmwebeditor/ScmProvider.java | 8 ++++ .../ScmWebEditorApplicationListener.java | 5 --- .../java/org/nuiton/scmwebeditor/SvnProvider.java | 19 ++++++++ .../nuiton/scmwebeditor/actions/BrowseAction.java | 52 +++++++++++++++------- .../impl/ScmUrlResolverMavenDocImpl.java | 10 ++--- .../impl/ScmUrlResolverMavenSiteXmlImpl.java | 4 +- src/main/resources/struts.xml | 11 ++--- src/main/webapp/WEB-INF/content/browse.jsp | 3 +- src/main/webapp/WEB-INF/content/error.jsp | 2 +- .../webapp/WEB-INF/content/modificationViewer.jsp | 2 +- src/main/webapp/WEB-INF/content/outConnection.jsp | 2 +- src/main/webapp/js/branches.js | 34 +++++++++----- src/main/webapp/js/scmDetector.js | 29 +++--------- 14 files changed, 117 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/nuiton/scmwebeditor/GitProvider.java b/src/main/java/org/nuiton/scmwebeditor/GitProvider.java index e3a8278..7dd9f1d 100644 --- a/src/main/java/org/nuiton/scmwebeditor/GitProvider.java +++ b/src/main/java/org/nuiton/scmwebeditor/GitProvider.java @@ -74,4 +74,14 @@ public class GitProvider implements ScmProvider { return gitConn; } + + @Override + public boolean addressSeemsCompatible(String address) { + + if (address.contains(".git") || address.startsWith("git://") || address.contains("git.")) { + return true; + } else { + return false; + } + } } diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmProvider.java b/src/main/java/org/nuiton/scmwebeditor/ScmProvider.java index 9da89d5..ed43021 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmProvider.java +++ b/src/main/java/org/nuiton/scmwebeditor/ScmProvider.java @@ -27,4 +27,12 @@ public interface ScmProvider { * @return the connection to the SCM */ ScmConnection getConnection(String address, String sessionId); + + + /** + * Tells whether the given address seems compatible with the SCM + * @param address the repository's address + * @return true if the repository seems to be compatible with the SCM + */ + boolean addressSeemsCompatible(String address); } diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorApplicationListener.java b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorApplicationListener.java index b47d526..660ea05 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorApplicationListener.java +++ b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorApplicationListener.java @@ -24,8 +24,6 @@ package org.nuiton.scmwebeditor; import org.nuiton.i18n.I18n; import org.nuiton.i18n.init.DefaultI18nInitializer; import org.nuiton.i18n.init.I18nInitializer; -import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; -import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @@ -35,9 +33,6 @@ public class ScmWebEditorApplicationListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { - SVNRepositoryFactoryImpl.setup(); - DAVRepositoryFactory.setup(); - // init I18n I18nInitializer i18nInitializer = new DefaultI18nInitializer("scmwebeditor-i18n"); diff --git a/src/main/java/org/nuiton/scmwebeditor/SvnProvider.java b/src/main/java/org/nuiton/scmwebeditor/SvnProvider.java index 82ff0f4..a16220d 100644 --- a/src/main/java/org/nuiton/scmwebeditor/SvnProvider.java +++ b/src/main/java/org/nuiton/scmwebeditor/SvnProvider.java @@ -3,6 +3,8 @@ package org.nuiton.scmwebeditor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; import java.util.List; @@ -10,6 +12,13 @@ public class SvnProvider implements ScmProvider { private static final Log log = LogFactory.getLog(SvnProvider.class); + + public SvnProvider() { + + SVNRepositoryFactoryImpl.setup(); + DAVRepositoryFactory.setup(); + } + @Override public boolean supportsBranches() { return false; @@ -35,4 +44,14 @@ public class SvnProvider implements ScmProvider { return svnConn; } + + @Override + public boolean addressSeemsCompatible(String address) { + + if (address.startsWith("svn://") || address.contains("svn.") || address.contains("subversion.")) { + return true; + } else { + return false; + } + } } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java index 50cdd2a..c2277c7 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java @@ -21,6 +21,7 @@ */ package org.nuiton.scmwebeditor.actions; +import com.google.common.collect.Lists; import com.jgeppert.struts2.jquery.tree.result.TreeNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -40,6 +41,7 @@ import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; public class BrowseAction extends AbstractScmWebEditorAction implements ServletResponseAware { @@ -78,6 +80,10 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR protected String headBranchName; + protected boolean scmSupportsBranches; + + protected String detectedScm; + protected transient HttpServletResponse response; public boolean getError() { return error; } @@ -126,6 +132,16 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR public void setHeadBranchName(String headBranchName) { this.headBranchName = headBranchName; } + public boolean isScmSupportsBranches() { return scmSupportsBranches; } + + public void setScmSupportsBranches(boolean scmSupportsBranches) { this.scmSupportsBranches = scmSupportsBranches; } + + public String getDetectedScm() { return detectedScm; } + + public void setDetectedScm(String detectedScm) { + this.detectedScm = detectedScm; + } + public String browse() { if (log.isDebugEnabled()) { @@ -149,6 +165,8 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR ScmProvider provider = getProvider(scmType); + scmSupportsBranches = provider.supportsBranches(); + if (provider == null) { error = true; return ROOT; @@ -248,7 +266,7 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR return SUCCESS; } - public String getBranchesJSON() { + public String listBranchesJSON() { if (username == null) { username = "anonymous"; @@ -259,6 +277,8 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR ScmProvider provider = getProvider(scmType); + scmSupportsBranches = provider.supportsBranches(); + try { branches = provider.listBranches(address, username, pw); } catch (OperationNotSupportedException e) { @@ -267,29 +287,27 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR } } - // generating the JSON data - String json = ""; + return SUCCESS; + } - if (branches.size() > 0) { - // creating the JSON String - json = "{\"branches\":["; + public String detectScm() { - for (String branch : branches) { - json += "{\"name\":\"" + branch + "\"},"; - } + List<String> supportedScms = Lists.newArrayList(ScmWebEditorConfig.getProviders().keySet()); - // we don't take the last coma - json = json.substring(0, json.length() - 2); + for (String scm : supportedScms) { - json += "]}"; - } + ScmProvider provider = getProvider(scm); - return json; - } + if (provider.addressSeemsCompatible(address)) { + detectedScm = scm; + return SUCCESS; + } + } - public String getJSON() { - return browse(); + detectedScm = null; + + return SUCCESS; } public List<TreeNode> getNodes() { diff --git a/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenDocImpl.java b/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenDocImpl.java index db2b201..7af4dea 100644 --- a/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenDocImpl.java +++ b/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenDocImpl.java @@ -32,15 +32,15 @@ public class ScmUrlResolverMavenDocImpl implements ScmUrlResolver { public static final String MAVEN_SITE_DOCUMENT_NAME = "maven-site-document"; - public static final String PARAMETER_DEFAULT_LOCALE = "svndefaultLocale"; + public static final String PARAMETER_DEFAULT_LOCALE = "scmdefaultLocale"; - public static final String PARAMETER_LOCALE = "svnlocale"; + public static final String PARAMETER_LOCALE = "scmlocale"; - public static final String PARAMETER_SVN_ROOT = "svnroot"; + public static final String PARAMETER_SVN_ROOT = "scmroot"; - public static final String PARAMETER_SVN_FILE = "svnfile"; + public static final String PARAMETER_SVN_FILE = "scmfile"; - public static final String PARAMETER_FILE_FORMAT = "svnformat"; + public static final String PARAMETER_FILE_FORMAT = "scmformat"; @Override diff --git a/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenSiteXmlImpl.java b/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenSiteXmlImpl.java index 53726d4..d69e909 100644 --- a/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenSiteXmlImpl.java +++ b/src/main/java/org/nuiton/scmwebeditor/urlResolver/impl/ScmUrlResolverMavenSiteXmlImpl.java @@ -32,9 +32,9 @@ public class ScmUrlResolverMavenSiteXmlImpl implements ScmUrlResolver { public static final String MAVEN_SITE_XML_NAME = "maven-site.xml"; - public static final String PARAMETER_LOCALE = "svnlocale"; + public static final String PARAMETER_LOCALE = "scmlocale"; - public static final String PARAMETER_SVN_ROOT = "svnroot"; + public static final String PARAMETER_SVN_ROOT = "scmroot"; @Override diff --git a/src/main/resources/struts.xml b/src/main/resources/struts.xml index d052f4c..ca64bec 100644 --- a/src/main/resources/struts.xml +++ b/src/main/resources/struts.xml @@ -126,11 +126,12 @@ <result name="authError" >/WEB-INF/content/loginBrowse.jsp</result> </action> - <action name="getBranches" class="org.nuiton.scmwebeditor.actions.BrowseAction" method="getBranchesJSON"> - <param name="address"/> - <result name="*" type="json"> - <param name="branches">branches</param> - </result> + <action name="getBranches" class="org.nuiton.scmwebeditor.actions.BrowseAction" method="listBranchesJSON"> + <result name="success" type="json"/> + </action> + + <action name="detectScm" class="org.nuiton.scmwebeditor.actions.BrowseAction" method="detectScm"> + <result name="success" type="json"/> </action> </package> diff --git a/src/main/webapp/WEB-INF/content/browse.jsp b/src/main/webapp/WEB-INF/content/browse.jsp index 929b99b..0ec28f5 100644 --- a/src/main/webapp/WEB-INF/content/browse.jsp +++ b/src/main/webapp/WEB-INF/content/browse.jsp @@ -61,8 +61,7 @@ <script src="js/pictureUpload.js" type="text/javascript"></script> -<!-- FIXME dépendant de Git --> -<s:if test="scmType.equals('Git') && !error"> +<s:if test="scmSupportsBranches && !error"> <s:text name="scm.outConnection.headBranch"/> <s:if test="selectedBranch != null"> <s:if test="!selectedBranch.equals('')"> diff --git a/src/main/webapp/WEB-INF/content/error.jsp b/src/main/webapp/WEB-INF/content/error.jsp index c87f120..323ddc6 100644 --- a/src/main/webapp/WEB-INF/content/error.jsp +++ b/src/main/webapp/WEB-INF/content/error.jsp @@ -38,7 +38,7 @@ glorieux --%> <% } else { %> <meta http-equiv="Refresh" content="3;URL=checkout.action"> <% } %> - <%--%=request.getAttribute("scmEditorUrl")%>?adresse=<%=request.getAttribute("Svnpath_url")%>&file_name=<%=request.getAttribute("Filename_url")%>&project_url=<%=request.getAttribute("Redirection_url")%>&lang=<%=request.getAttribute("Lang")%>&format=<%=request.getAttribute("Format")%>"--%> + <%--%=request.getAttribute("scmEditorUrl")%>?adresse=<%=request.getAttribute("Scmpath_url")%>&file_name=<%=request.getAttribute("Filename_url")%>&project_url=<%=request.getAttribute("Redirection_url")%>&lang=<%=request.getAttribute("Lang")%>&format=<%=request.getAttribute("Format")%>"--%> </head> <body> <a target="_blank" href="http://maven-site.nuiton.org/scmwebeditor/"><img diff --git a/src/main/webapp/WEB-INF/content/modificationViewer.jsp b/src/main/webapp/WEB-INF/content/modificationViewer.jsp index a414601..c174c96 100644 --- a/src/main/webapp/WEB-INF/content/modificationViewer.jsp +++ b/src/main/webapp/WEB-INF/content/modificationViewer.jsp @@ -449,7 +449,7 @@ <label>Upload a picture : <input type="file" name="upload"/></label><br/> - <label>Path on svn : <input type="text" name="svnPath" /></label><br/> + <label>Path on scm : <input type="text" name="scmPath" /></label><br/> <label>username : <input type="text" name="username" /></label><br/> <label>password : <input type="password" name="pw" /></label><br/> diff --git a/src/main/webapp/WEB-INF/content/outConnection.jsp b/src/main/webapp/WEB-INF/content/outConnection.jsp index 6f3de64..bc16e89 100644 --- a/src/main/webapp/WEB-INF/content/outConnection.jsp +++ b/src/main/webapp/WEB-INF/content/outConnection.jsp @@ -141,7 +141,7 @@ <!-- <div id="searchTree"> - <s:url id="searchTreeUrl" action="search?address=http://localhost/scmsvn"/> + <s:url id="searchTreeUrl" action="search?address=http://localhost/scm"/> <sjt:tree id="scmTree" jstreetheme="classic" diff --git a/src/main/webapp/js/branches.js b/src/main/webapp/js/branches.js index 03f1b4e..3ac9df7 100644 --- a/src/main/webapp/js/branches.js +++ b/src/main/webapp/js/branches.js @@ -8,21 +8,31 @@ $(document).ready(function() { var username = $("#username").val(); var pw = $("#pw").val(); - if (scmType == "Git") { + var branchesSupported = false; + var branches; + + $.getJSON("getBranches.action?address=" + address + "&scmType=" + scmType + + "&username=" + username + "&pw=" + pw, function(result) { + + branchesSupported = result.scmSupportsBranches; + branches = result.branches; + + if (branchesSupported) { + + listSelect.find("option:gt(0)").remove(); + + $.each(branches, function(i, field) { + listSelect.append("<option>" + field + "</option>"); + }); + + listDiv.show(); + } else { + listDiv.hide(); + } + }); - listSelect.find("option:gt(0)").remove(); - $.getJSON("getBranches.action?address=" + address + "&scmType=" + scmType + - "&username=" + username + "&pw=" + pw, function(result) { - $.each(result.branches, function(i, field) { - listSelect.append("<option>" + field + "</option>"); - }); - }); - listDiv.show(); - } else { - listDiv.hide(); - } }); $("#branchesList").on("change", function() { diff --git a/src/main/webapp/js/scmDetector.js b/src/main/webapp/js/scmDetector.js index 7e31f18..76f3a1a 100644 --- a/src/main/webapp/js/scmDetector.js +++ b/src/main/webapp/js/scmDetector.js @@ -3,31 +3,14 @@ $(document).ready(function() { $("#addressInput").on("input", function() { var address = $("#addressInput").val(); - if (scmsListContains("Git")) { - if (address.contains(".git") || address.startsWith("git://")) { - $("#scmType").val("Git"); - } - } - - if (scmsListContains("SVN")) { - if (address.startsWith("svn://")) { - $("#scmType").val("SVN"); - } - } - - }); - + $.getJSON("detectScm.action?address=" + address, function(result) { - function scmsListContains(scm) { + console.log(result.detectedScm); - var $children = $("#scmType").children(); - - for (var i = 0 ; i < $children.length ; i++) { - if ($children[i].value == scm) { - return true; + if (result.detectedScm != null) { + $("#scmType").val(result.detectedScm); } - } + }); - return false; - } + }); }); \ No newline at end of file -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm