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 91ccf0ce143fc2ab33cd3a0b88cfc1c7f5f6febc Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Wed May 13 11:21:27 2015 +0200 Add a RuntimeException class: SweInternalException --- .../scmwebeditor/api/ScmWebEditorConfig.java | 46 ++++++++++++++++++++++ .../scmwebeditor/api/SweInternalException.java | 37 +++++++++++++++++ .../uiweb/actions/AbstractScmWebEditorAction.java | 40 ------------------- .../scmwebeditor/uiweb/actions/BrowseAction.java | 6 +-- .../scmwebeditor/uiweb/actions/EditAction.java | 2 +- .../scmwebeditor/uiweb/actions/LogoutAction.java | 3 +- .../scmwebeditor/uiweb/actions/ResetAction.java | 3 +- .../uiweb/actions/ScmWebEditorCommitAction.java | 2 +- .../scmwebeditor/uiweb/actions/UploadAction.java | 3 +- 9 files changed, 94 insertions(+), 48 deletions(-) diff --git a/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/ScmWebEditorConfig.java b/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/ScmWebEditorConfig.java index cf92feb..0d85170 100644 --- a/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/ScmWebEditorConfig.java +++ b/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/ScmWebEditorConfig.java @@ -87,6 +87,52 @@ public class ScmWebEditorConfig { return providers; } + /** + * Gives an instance of the provider for the given SCM type + * @param scmType the type of SCM to use + * @return the provider for the given SCM + */ + public static ScmProvider getProvider(String scmType) { + + Map<String, String> providers = ScmWebEditorConfig.getProviders(); + String providerClassName = providers.get(scmType); + ScmProvider provider = null; + + if (providerClassName != null) { + try { + + Class<?> providerClass = Class.forName(providerClassName); + provider = (ScmProvider) providerClass.newInstance(); + + } catch (ClassNotFoundException e) { + + if (log.isErrorEnabled()) { + log.error("Can not find SCM '" + scmType + "'", e); + } + throw new SweInternalException("Can not find SCM '" + scmType + "'", e); + + } catch (InstantiationException e) { + + if (log.isErrorEnabled()) { + log.error("Can not instantiate class " + providerClassName, e); + } + throw new SweInternalException("Can not instantiate class '" + providerClassName + "'", e); + + } catch (IllegalAccessException e) { + + if (log.isErrorEnabled()) { + log.error("Can not access to class " + providerClassName, e); + } + throw new SweInternalException("Can not access to class " + providerClassName, e); + + } + } else { + throw new SweInternalException("Can not find the provider '" + scmType + "' in the configuration file"); + } + + return provider; + } + public static String getKey() { return getConfig().getOption(ScmWebEditorConfigOption.COOKIES_PRIVATE_KEY.getKey()); } diff --git a/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/SweInternalException.java b/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/SweInternalException.java new file mode 100644 index 0000000..ef31de6 --- /dev/null +++ b/swe-scm-api/src/main/java/org/nuiton/scmwebeditor/api/SweInternalException.java @@ -0,0 +1,37 @@ +/* + * #%L + * ScmWebEditor + * %% + * Copyright (C) 2009 - 2015 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.api; + +/** + * Exception thrown when the program encounters a problem independent from the user's input + */ +public class SweInternalException extends RuntimeException { + + public SweInternalException(String message) { + super(message); + } + + public SweInternalException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorAction.java index 577b601..15ff7ca 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/AbstractScmWebEditorAction.java @@ -31,9 +31,7 @@ import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.sax.BodyContentHandler; -import org.nuiton.scmwebeditor.api.ScmProvider; import org.nuiton.scmwebeditor.api.ScmSession; -import org.nuiton.scmwebeditor.api.ScmWebEditorConfig; import org.nuiton.web.struts2.BaseAction; import org.xml.sax.SAXException; @@ -350,44 +348,6 @@ public abstract class AbstractScmWebEditorAction extends BaseAction implements S return scmSession; } - /** - * Gives an instance of the provider for the given SCM type - * @param scmType the type of SCM to use - * @return the provider for the given SCM - */ - public ScmProvider getProvider(String scmType) { - - Map<String, String> providers = ScmWebEditorConfig.getProviders(); - String providerClassName = providers.get(scmType); - ScmProvider provider = null; - - if (providerClassName != null) { - try { - - Class<?> providerClass = Class.forName(providerClassName); - provider = (ScmProvider) providerClass.newInstance(); - - } catch (ClassNotFoundException e) { - - if (log.isErrorEnabled()) { - log.error("Can not find SCM " + scmType, e); - } - } catch (InstantiationException e) { - - if (log.isErrorEnabled()) { - log.error("Can not instantiate class " + providerClassName, e); - } - } catch (IllegalAccessException e) { - - if (log.isErrorEnabled()) { - log.error("Can not access to class " + providerClassName, e); - } - } - } - - return provider; - } - protected String[] getUsernamePwFromSession(String repositoryUUID, String username, String pw) { String[] usernamePw = new String[2]; 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 8cedd2d..a377db2 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 @@ -162,7 +162,7 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR HttpSession session = request.getSession(); String sessionId = session.getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); scmSupportsBranches = provider.supportsBranches(); @@ -291,7 +291,7 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR pw = "anonymous"; } - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); scmSupportsBranches = provider.supportsBranches(); @@ -312,7 +312,7 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR for (String scm : supportedScms) { - ScmProvider provider = getProvider(scm); + ScmProvider provider = ScmWebEditorConfig.getProvider(scm); if (provider.addressSeemsCompatible(address)) { detectedScm = scm; 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 cdab71f..6a26321 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 @@ -46,7 +46,7 @@ public class EditAction extends ScmWebEditorMainAction { HttpSession session = request.getSession(); String sessionId = session.getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); ScmConnection scmConn = provider.getConnection(address, sessionId); scmSupportsBranches = provider.supportsBranches(); 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 cee4d05..1c8e8f5 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 @@ -27,6 +27,7 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmProvider; +import org.nuiton.scmwebeditor.api.ScmWebEditorConfig; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -67,7 +68,7 @@ public class LogoutAction extends AbstractScmWebEditorAction implements ServletR String sessionId = request.getSession().getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); ScmConnection scmConn = provider.getConnection(address, sessionId); // getting the repository unique identifier if it is possible 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 e18c166..62b2182 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 @@ -26,6 +26,7 @@ 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.api.ScmWebEditorConfig; import javax.naming.AuthenticationException; import java.io.File; @@ -78,7 +79,7 @@ public class ResetAction extends AbstractScmWebEditorAction { String sessionId = request.getSession().getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); ScmConnection scmConn = provider.getConnection(address, sessionId); // getting the repository unique identifier if it is possible 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 9642dc5..ccfe6bc 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 @@ -252,7 +252,7 @@ public class ScmWebEditorCommitAction extends AbstractScmWebEditorAction impleme HttpSession session = request.getSession(); String sessionId = session.getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); ScmConnection scmConn = provider.getConnection(address, sessionId); // if the repository is not protected for writing, we get its UUID diff --git a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadAction.java b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadAction.java index 65366dc..8cb8b02 100644 --- a/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadAction.java +++ b/swe-ui-web/src/main/java/org/nuiton/scmwebeditor/uiweb/actions/UploadAction.java @@ -26,6 +26,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; import org.nuiton.scmwebeditor.api.ScmConnection; import org.nuiton.scmwebeditor.api.ScmProvider; +import org.nuiton.scmwebeditor.api.ScmWebEditorConfig; import org.nuiton.scmwebeditor.api.dto.UploadDto; import org.nuiton.scmwebeditor.api.dto.UploadResultDto; @@ -148,7 +149,7 @@ public class UploadAction extends AbstractScmWebEditorAction implements ServletR HttpSession session = request.getSession(); String sessionId = session.getId(); - ScmProvider provider = getProvider(scmType); + ScmProvider provider = ScmWebEditorConfig.getProvider(scmType); if (provider == null) { error = true; -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.