diff --git a/pom.xml b/pom.xml
index 3295e732db..5c6abbbf87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -402,24 +402,24 @@
-
- com.github.legman
- legman-maven-plugin
- ${legman.version}
-
- true
-
-
-
- process-classes
-
-
- guava-migration-check
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.apache.maven.plugins
@@ -725,7 +725,7 @@
1.8.15-scm1
- 16.0.1
+ 26.0-jre
2.2.3
diff --git a/scm-core/src/main/java/sonia/scm/AlreadyExistsException.java b/scm-core/src/main/java/sonia/scm/AlreadyExistsException.java
new file mode 100644
index 0000000000..36052d99e9
--- /dev/null
+++ b/scm-core/src/main/java/sonia/scm/AlreadyExistsException.java
@@ -0,0 +1,4 @@
+package sonia.scm;
+
+public class AlreadyExistsException extends Exception {
+}
diff --git a/scm-core/src/main/java/sonia/scm/BasicPropertiesAware.java b/scm-core/src/main/java/sonia/scm/BasicPropertiesAware.java
index f0b7772a77..cfd4284fae 100644
--- a/scm-core/src/main/java/sonia/scm/BasicPropertiesAware.java
+++ b/scm-core/src/main/java/sonia/scm/BasicPropertiesAware.java
@@ -37,18 +37,15 @@ package sonia.scm;
import com.google.common.base.Objects;
import com.google.common.collect.Maps;
-
import sonia.scm.xml.XmlMapStringAdapter;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.Map;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.io.Serializable;
+import java.util.Map;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Default implementation of {@link PropertiesAware} interface.
diff --git a/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java b/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java
new file mode 100644
index 0000000000..f0340a6a59
--- /dev/null
+++ b/scm-core/src/main/java/sonia/scm/ConcurrentModificationException.java
@@ -0,0 +1,4 @@
+package sonia.scm;
+
+public class ConcurrentModificationException extends Exception {
+}
diff --git a/scm-core/src/main/java/sonia/scm/Handler.java b/scm-core/src/main/java/sonia/scm/Handler.java
index 67ec039fba..a4e927ed7b 100644
--- a/scm-core/src/main/java/sonia/scm/Handler.java
+++ b/scm-core/src/main/java/sonia/scm/Handler.java
@@ -39,11 +39,8 @@ package sonia.scm;
* @author Sebastian Sdorra
*
* @param a typed object
- * @param
*/
-public interface Handler
- extends HandlerBase
-{
+public interface Handler extends HandlerBase {
/**
* Returns the type object of the handler.
@@ -51,7 +48,7 @@ public interface Handler
*
* @return type object of the handler
*/
- public Type getType();
+ Type getType();
/**
* Returns true if the hanlder is configured.
@@ -59,5 +56,5 @@ public interface Handler
*
* @return true if the hanlder is configured
*/
- public boolean isConfigured();
+ boolean isConfigured();
}
diff --git a/scm-core/src/main/java/sonia/scm/HandlerBase.java b/scm-core/src/main/java/sonia/scm/HandlerBase.java
index 6ce7d9a6a6..bbe78c8cf7 100644
--- a/scm-core/src/main/java/sonia/scm/HandlerBase.java
+++ b/scm-core/src/main/java/sonia/scm/HandlerBase.java
@@ -44,9 +44,8 @@ import java.io.IOException;
* @author Sebastian Sdorra
*
* @param type object of the handler
- * @param exception type of the handler
*/
-public interface HandlerBase
+public interface HandlerBase
extends Initable, Closeable
{
@@ -55,7 +54,7 @@ public interface HandlerBase
*
* @return The persisted object.
*/
- public T create(T object) throws E;
+ T create(T object) throws AlreadyExistsException;
/**
* Removes a persistent object.
@@ -63,10 +62,9 @@ public interface HandlerBase
*
* @param object to delete
*
- * @throws E
* @throws IOException
*/
- public void delete(T object) throws E;
+ void delete(T object) throws NotFoundException;
/**
* Modifies a persistent object.
@@ -74,8 +72,7 @@ public interface HandlerBase
*
* @param object to modify
*
- * @throws E
* @throws IOException
*/
- public void modify(T object) throws E;
+ void modify(T object) throws NotFoundException;
}
diff --git a/scm-core/src/main/java/sonia/scm/Manager.java b/scm-core/src/main/java/sonia/scm/Manager.java
index c0d074520a..2925b5b6b4 100644
--- a/scm-core/src/main/java/sonia/scm/Manager.java
+++ b/scm-core/src/main/java/sonia/scm/Manager.java
@@ -42,10 +42,9 @@ import java.util.Comparator;
* @author Sebastian Sdorra
*
* @param type of the model object
- * @param type of the exception
*/
-public interface Manager
- extends HandlerBase, LastModifiedAware
+public interface Manager
+ extends HandlerBase, LastModifiedAware
{
/**
@@ -54,9 +53,9 @@ public interface Manager
*
* @param object to refresh
*
- * @throws E
+ * @throws NotFoundException
*/
- void refresh(T object) throws E;
+ void refresh(T object) throws NotFoundException;
//~--- get methods ----------------------------------------------------------
diff --git a/scm-core/src/main/java/sonia/scm/ManagerDecorator.java b/scm-core/src/main/java/sonia/scm/ManagerDecorator.java
index 3b90002d13..7b3f03ee8c 100644
--- a/scm-core/src/main/java/sonia/scm/ManagerDecorator.java
+++ b/scm-core/src/main/java/sonia/scm/ManagerDecorator.java
@@ -45,11 +45,8 @@ import java.util.Comparator;
* @since 1.23
*
* @param model type
- * @param exception type
*/
-public class ManagerDecorator
- implements Manager
-{
+public class ManagerDecorator implements Manager {
/**
* Constructs a new ManagerDecorator.
@@ -57,125 +54,78 @@ public class ManagerDecorator
*
* @param decorated manager implementation
*/
- public ManagerDecorator(Manager decorated)
+ public ManagerDecorator(Manager decorated)
{
this.decorated = decorated;
}
- //~--- methods --------------------------------------------------------------
-
- /**
- * {@inheritDoc}
- */
@Override
public void close() throws IOException
{
decorated.close();
}
- /**
- * {@inheritDoc}
- */
@Override
- public T create(T object) throws E
- {
+ public T create(T object) throws AlreadyExistsException {
return decorated.create(object);
}
- /**
- * {@inheritDoc}
- */
@Override
- public void delete(T object) throws E
- {
+ public void delete(T object) throws NotFoundException {
decorated.delete(object);
}
- /**
- * {@inheritDoc}
- */
@Override
public void init(SCMContextProvider context)
{
decorated.init(context);
}
- /**
- * {@inheritDoc}
- */
@Override
- public void modify(T object) throws E
- {
+ public void modify(T object) throws NotFoundException {
decorated.modify(object);
}
- /**
- * {@inheritDoc}
- */
@Override
- public void refresh(T object) throws E
- {
+ public void refresh(T object) throws NotFoundException {
decorated.refresh(object);
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * {@inheritDoc}
- */
@Override
public T get(String id)
{
return decorated.get(id);
}
- /**
- * {@inheritDoc}
- */
@Override
public Collection getAll()
{
return decorated.getAll();
}
- /**
- * {@inheritDoc}
- */
@Override
public Collection getAll(Comparator comparator)
{
return decorated.getAll(comparator);
}
- /**
- * {@inheritDoc}
- */
@Override
public Collection getAll(int start, int limit)
{
return decorated.getAll(start, limit);
}
- /**
- * {@inheritDoc}
- */
@Override
public Collection getAll(Comparator comparator, int start, int limit)
{
return decorated.getAll(comparator, start, limit);
}
- /**
- * {@inheritDoc}
- */
@Override
public Long getLastModified()
{
return decorated.getLastModified();
}
- //~--- fields ---------------------------------------------------------------
-
- /** manager implementation */
- private Manager decorated;
+ private Manager decorated;
}
diff --git a/scm-core/src/main/java/sonia/scm/NotFoundException.java b/scm-core/src/main/java/sonia/scm/NotFoundException.java
new file mode 100644
index 0000000000..8a7ae642bd
--- /dev/null
+++ b/scm-core/src/main/java/sonia/scm/NotFoundException.java
@@ -0,0 +1,10 @@
+package sonia.scm;
+
+public class NotFoundException extends Exception {
+ public NotFoundException(String type, String id) {
+ super(type + " with id '" + id + "' not found");
+ }
+
+ public NotFoundException() {
+ }
+}
diff --git a/scm-core/src/main/java/sonia/scm/TypeManager.java b/scm-core/src/main/java/sonia/scm/TypeManager.java
index 52a43e5593..6f13cb82d8 100644
--- a/scm-core/src/main/java/sonia/scm/TypeManager.java
+++ b/scm-core/src/main/java/sonia/scm/TypeManager.java
@@ -44,10 +44,8 @@ import java.util.Collection;
*
* @param type of the model object
* @param type of the handler
- * @param type of the exception
*/
-public interface TypeManager,
- E extends Exception> extends Manager
+public interface TypeManager> extends Manager
{
/**
@@ -58,7 +56,7 @@ public interface TypeManager,
*
* @return the handler for given type
*/
- public H getHandler(String type);
+ H getHandler(String type);
/**
* Returns a {@link java.util.Collection} of all
@@ -66,5 +64,5 @@ public interface TypeManager,
*
* @return all available types
*/
- public Collection getTypes();
+ Collection getTypes();
}
diff --git a/scm-core/src/main/java/sonia/scm/cache/CacheStatistics.java b/scm-core/src/main/java/sonia/scm/cache/CacheStatistics.java
index 067e623e6d..cc791ff91f 100644
--- a/scm-core/src/main/java/sonia/scm/cache/CacheStatistics.java
+++ b/scm-core/src/main/java/sonia/scm/cache/CacheStatistics.java
@@ -33,6 +33,7 @@ package sonia.scm.cache;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
/**
@@ -101,7 +102,7 @@ public final class CacheStatistics
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("hitCount", hitCount)
.add("missCount", missCount)
diff --git a/scm-core/src/main/java/sonia/scm/event/AbstractHandlerEvent.java b/scm-core/src/main/java/sonia/scm/event/AbstractHandlerEvent.java
index 5efbf118ba..1582247f35 100644
--- a/scm-core/src/main/java/sonia/scm/event/AbstractHandlerEvent.java
+++ b/scm-core/src/main/java/sonia/scm/event/AbstractHandlerEvent.java
@@ -33,8 +33,8 @@ package sonia.scm.event;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.HandlerEventType;
/**
@@ -127,7 +127,7 @@ public class AbstractHandlerEvent implements HandlerEvent
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("eventType", eventType)
.add("item", item)
.add("oldItem", oldItem)
diff --git a/scm-core/src/main/java/sonia/scm/group/Group.java b/scm-core/src/main/java/sonia/scm/group/Group.java
index 5341024203..98d9dcc7a3 100644
--- a/scm-core/src/main/java/sonia/scm/group/Group.java
+++ b/scm-core/src/main/java/sonia/scm/group/Group.java
@@ -37,6 +37,7 @@ package sonia.scm.group;
import com.github.sdorra.ssp.PermissionObject;
import com.github.sdorra.ssp.StaticPermissions;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import sonia.scm.BasicPropertiesAware;
@@ -259,7 +260,7 @@ public class Group extends BasicPropertiesAware
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("description", description)
.add("members", members)
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupAlreadyExistsException.java b/scm-core/src/main/java/sonia/scm/group/GroupAlreadyExistsException.java
deleted file mode 100644
index 2b3c73535e..0000000000
--- a/scm-core/src/main/java/sonia/scm/group/GroupAlreadyExistsException.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.group;
-
-/**
- * This {@link Exception} is thrown when trying to create a group
- * that already exists.
- *
- * @author Sebastian Sdorra
- */
-public class GroupAlreadyExistsException extends GroupException
-{
-
- private static final long serialVersionUID = 4042878550219750430L;
-
- public GroupAlreadyExistsException(Group group) {
- super(group.getName() + " group already exists");
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupException.java b/scm-core/src/main/java/sonia/scm/group/GroupException.java
deleted file mode 100644
index e0dc799e92..0000000000
--- a/scm-core/src/main/java/sonia/scm/group/GroupException.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.group;
-
-/**
- * General {@link Exception} for group errors.
- *
- * @author Sebastian Sdorra
- */
-public class GroupException extends Exception
-{
-
- /** Field description */
- private static final long serialVersionUID = 5191341492098994225L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs a {@link GroupException} object.
- *
- */
- public GroupException()
- {
- super();
- }
-
- /**
- * Constructs a {@link GroupException} object.
- *
- *
- * @param message for the exception
- */
- public GroupException(String message)
- {
- super(message);
- }
-
- /**
- * Constructs a {@link GroupException} object.
- *
- *
- * @param cause of the exception
- */
- public GroupException(Throwable cause)
- {
- super(cause);
- }
-
- /**
- * Constructs a {@link GroupException} object.
- *
- *
- * @param message of the exception
- * @param cause of the exception
- */
- public GroupException(String message, Throwable cause)
- {
- super(message, cause);
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupManager.java b/scm-core/src/main/java/sonia/scm/group/GroupManager.java
index 428559edef..288196894d 100644
--- a/scm-core/src/main/java/sonia/scm/group/GroupManager.java
+++ b/scm-core/src/main/java/sonia/scm/group/GroupManager.java
@@ -38,10 +38,10 @@ package sonia.scm.group;
import sonia.scm.Manager;
import sonia.scm.search.Searchable;
-//~--- JDK imports ------------------------------------------------------------
-
import java.util.Collection;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The central class for managing {@link Group}s.
* This class is a singleton and is available via injection.
@@ -49,7 +49,7 @@ import java.util.Collection;
* @author Sebastian Sdorra
*/
public interface GroupManager
- extends Manager, Searchable
+ extends Manager, Searchable
{
/**
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupManagerDecorator.java b/scm-core/src/main/java/sonia/scm/group/GroupManagerDecorator.java
index 955e218b43..e2367d863c 100644
--- a/scm-core/src/main/java/sonia/scm/group/GroupManagerDecorator.java
+++ b/scm-core/src/main/java/sonia/scm/group/GroupManagerDecorator.java
@@ -38,10 +38,10 @@ package sonia.scm.group;
import sonia.scm.ManagerDecorator;
import sonia.scm.search.SearchRequest;
-//~--- JDK imports ------------------------------------------------------------
-
import java.util.Collection;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Decorator for {@link GroupManager}.
*
@@ -49,7 +49,7 @@ import java.util.Collection;
* @since 1.23
*/
public class GroupManagerDecorator
- extends ManagerDecorator implements GroupManager
+ extends ManagerDecorator implements GroupManager
{
/**
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupNames.java b/scm-core/src/main/java/sonia/scm/group/GroupNames.java
index 43ca462d32..24d32972b6 100644
--- a/scm-core/src/main/java/sonia/scm/group/GroupNames.java
+++ b/scm-core/src/main/java/sonia/scm/group/GroupNames.java
@@ -39,14 +39,13 @@ import com.google.common.base.Joiner;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.Serializable;
-
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* This class represents all associated groups for a user.
*
diff --git a/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java b/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java
deleted file mode 100644
index 2ea5d16cf0..0000000000
--- a/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-package sonia.scm.group;
-
-/**
- * The GroupNotFoundException is thrown e.g. from the
- * modify method of the {@link GroupManager}, if the group does not exists.
- *
- * @author Sebastian Sdorra
- *
- * @since 1.28
- */
-public class GroupNotFoundException extends GroupException
-{
-
- /** Field description */
- private static final long serialVersionUID = -1617037899954718001L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs a new GroupNotFoundException.
- *
- */
- public GroupNotFoundException(Group group) {
- super("group " + group.getName() + " does not exist");
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/i18n/I18nMessages.java b/scm-core/src/main/java/sonia/scm/i18n/I18nMessages.java
index 9c4a9353be..0af1cef895 100644
--- a/scm-core/src/main/java/sonia/scm/i18n/I18nMessages.java
+++ b/scm-core/src/main/java/sonia/scm/i18n/I18nMessages.java
@@ -36,16 +36,13 @@ package sonia.scm.i18n;
import com.google.common.base.Objects;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-
import sonia.scm.util.ClassLoaders;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
-
import java.util.Locale;
-import javax.servlet.http.HttpServletRequest;
+//~--- JDK imports ------------------------------------------------------------
/**
* The I18nMessages class instantiates a class and initializes all {@link String}
diff --git a/scm-core/src/main/java/sonia/scm/plugin/ClassElement.java b/scm-core/src/main/java/sonia/scm/plugin/ClassElement.java
index 8f931e5599..813a5a850f 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/ClassElement.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/ClassElement.java
@@ -33,12 +33,13 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -117,7 +118,7 @@ public final class ClassElement
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("clazz", clazz)
.add("description", description)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/plugin/ExtensionPointElement.java b/scm-core/src/main/java/sonia/scm/plugin/ExtensionPointElement.java
index 25b8fe303a..7f6f1efe07 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/ExtensionPointElement.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/ExtensionPointElement.java
@@ -33,15 +33,16 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -129,7 +130,7 @@ public final class ExtensionPointElement
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("class", clazz)
.add("description", description)
.add("multiple", multiple)
diff --git a/scm-core/src/main/java/sonia/scm/plugin/Plugin.java b/scm-core/src/main/java/sonia/scm/plugin/Plugin.java
index d55555e747..e8fd166e78 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/Plugin.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/Plugin.java
@@ -35,18 +35,18 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableSet;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.Set;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.util.Set;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -142,7 +142,7 @@ public final class Plugin extends ScmModule
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("scmVersion", scmVersion)
.add("condition", condition)
.add("information", information)
diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginCondition.java b/scm-core/src/main/java/sonia/scm/plugin/PluginCondition.java
index ad6ba84875..e70821d0df 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/PluginCondition.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/PluginCondition.java
@@ -35,27 +35,25 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.PlatformType;
import sonia.scm.SCMContext;
import sonia.scm.util.SystemUtil;
import sonia.scm.util.Util;
import sonia.scm.version.Version;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -164,7 +162,7 @@ public class PluginCondition implements Cloneable, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("arch", arch)
.add("minVersion", minVersion)
.add("os", os)
diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginInformation.java b/scm-core/src/main/java/sonia/scm/plugin/PluginInformation.java
index 1cf23fd3d9..3ae359ceb7 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/PluginInformation.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/PluginInformation.java
@@ -37,24 +37,21 @@ package sonia.scm.plugin;
import com.github.sdorra.ssp.PermissionObject;
import com.github.sdorra.ssp.StaticPermissions;
-
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.Validateable;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.ArrayList;
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -180,7 +177,7 @@ public class PluginInformation
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("artifactId", artifactId)
.add("author", author)
.add("category", category)
diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginRepository.java b/scm-core/src/main/java/sonia/scm/plugin/PluginRepository.java
index c546788d09..1d4cc07338 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/PluginRepository.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/PluginRepository.java
@@ -35,12 +35,13 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -121,7 +122,7 @@ public class PluginRepository implements Serializable
@Override
public String toString()
{
- return Objects.toStringHelper(this).add("id", id).add("url",
+ return MoreObjects.toStringHelper(this).add("id", id).add("url",
url).toString();
}
diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginResources.java b/scm-core/src/main/java/sonia/scm/plugin/PluginResources.java
index b039c291f5..07e35e0e4f 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/PluginResources.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/PluginResources.java
@@ -35,15 +35,15 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.Set;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
+import java.util.Set;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -124,7 +124,7 @@ public class PluginResources
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("scriptResources", scriptResources)
.add("stylesheetResources", stylesheetResources)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/plugin/SubscriberElement.java b/scm-core/src/main/java/sonia/scm/plugin/SubscriberElement.java
index 44c3d6edd2..5cc98d0bf9 100644
--- a/scm-core/src/main/java/sonia/scm/plugin/SubscriberElement.java
+++ b/scm-core/src/main/java/sonia/scm/plugin/SubscriberElement.java
@@ -33,15 +33,16 @@ package sonia.scm.plugin;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -126,7 +127,7 @@ public final class SubscriberElement
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("eventClass", eventClass)
.add("subscriberClass", subscriberClass)
.add("description", description)
diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstactImportHandler.java b/scm-core/src/main/java/sonia/scm/repository/AbstactImportHandler.java
index 6e0827af4a..2195e87730 100644
--- a/scm-core/src/main/java/sonia/scm/repository/AbstactImportHandler.java
+++ b/scm-core/src/main/java/sonia/scm/repository/AbstactImportHandler.java
@@ -35,9 +35,9 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
-import com.google.common.base.Throwables;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.repository.ImportResult.Builder;
import java.io.File;
@@ -86,9 +86,7 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
* {@inheritDoc}
*/
@Override
- public List importRepositories(RepositoryManager manager)
- throws IOException, RepositoryException
- {
+ public List importRepositories(RepositoryManager manager) throws IOException {
return doRepositoryImport(manager, true).getImportedDirectories();
}
@@ -98,22 +96,7 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
@Override
public ImportResult importRepositoriesFromDirectory(RepositoryManager manager)
{
- try
- {
- return doRepositoryImport(manager, false);
- }
- catch (IOException ex)
- {
-
- // should never happen
- throw Throwables.propagate(ex);
- }
- catch (RepositoryException ex)
- {
-
- // should never happen
- throw Throwables.propagate(ex);
- }
+ return doRepositoryImport(manager, false);
}
/**
@@ -126,12 +109,8 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
* @return repository
*
* @throws IOException
- * @throws RepositoryException
*/
- protected Repository createRepository(File repositoryDirectory,
- String repositoryName)
- throws IOException, RepositoryException
- {
+ protected Repository createRepository(File repositoryDirectory, String repositoryName) throws IOException {
Repository repository = new Repository();
repository.setName(repositoryName);
@@ -151,12 +130,8 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
* @return import result
*
* @throws IOException
- * @throws RepositoryException
*/
- private ImportResult doRepositoryImport(RepositoryManager manager,
- boolean throwExceptions)
- throws IOException, RepositoryException
- {
+ private ImportResult doRepositoryImport(RepositoryManager manager, boolean throwExceptions) {
Builder builder = ImportResult.builder();
logger.trace("search for repositories to import");
@@ -215,11 +190,10 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
* @param directoryName
*
* @throws IOException
- * @throws RepositoryException
*/
private void importRepository(RepositoryManager manager, Builder builder,
boolean throwExceptions, String directoryName)
- throws IOException, RepositoryException
+ throws IOException
{
logger.trace("check repository {} for import", directoryName);
@@ -266,12 +240,10 @@ public abstract class AbstactImportHandler implements AdvancedImportHandler
*
* @return
* @throws IOException
- * @throws RepositoryException
*/
private void importRepository(RepositoryManager manager,
String repositoryName)
- throws IOException, RepositoryException
- {
+ throws IOException, AlreadyExistsException {
Repository repository =
createRepository(getRepositoryDirectory(repositoryName), repositoryName);
diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java
index 536b7bd9e9..a717cdf05b 100644
--- a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java
+++ b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java
@@ -38,6 +38,7 @@ import com.google.common.base.Throwables;
import com.google.common.io.Resources;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.ConfigurationException;
import sonia.scm.io.CommandResult;
import sonia.scm.io.ExtendedCommand;
@@ -80,12 +81,11 @@ public abstract class AbstractSimpleRepositoryHandler
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("total", total)
.add("blameLines", blameLines)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/Branch.java b/scm-core/src/main/java/sonia/scm/repository/Branch.java
index 3e610812ff..ce1d43c82b 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Branch.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Branch.java
@@ -35,15 +35,15 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Represents a branch in a repository.
@@ -132,7 +132,7 @@ public final class Branch implements Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("revision", revision)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/BranchNotFoundException.java b/scm-core/src/main/java/sonia/scm/repository/BranchNotFoundException.java
new file mode 100644
index 0000000000..a4a1c66d67
--- /dev/null
+++ b/scm-core/src/main/java/sonia/scm/repository/BranchNotFoundException.java
@@ -0,0 +1,9 @@
+package sonia.scm.repository;
+
+import sonia.scm.NotFoundException;
+
+public class BranchNotFoundException extends NotFoundException {
+ public BranchNotFoundException(String branch) {
+ super("branch", branch);
+ }
+}
diff --git a/scm-core/src/main/java/sonia/scm/repository/Branches.java b/scm-core/src/main/java/sonia/scm/repository/Branches.java
index f2f7de1a2a..1eb679908e 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Branches.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Branches.java
@@ -34,17 +34,18 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.Iterator;
-import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.util.Iterator;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Represents all branches of a repository.
@@ -148,7 +149,7 @@ public final class Branches implements Iterable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("branches", branches)
.toString();
//J+
diff --git a/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java b/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java
index 7880b58f11..212ce45f81 100644
--- a/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java
+++ b/scm-core/src/main/java/sonia/scm/repository/BrowserResult.java
@@ -35,20 +35,19 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.Iterator;
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -161,7 +160,7 @@ public class BrowserResult implements Iterable, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("revision", revision)
.add("tag", tag)
.add("branch", branch)
diff --git a/scm-core/src/main/java/sonia/scm/repository/Changeset.java b/scm-core/src/main/java/sonia/scm/repository/Changeset.java
index fecfd74cc9..422611e4e8 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Changeset.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Changeset.java
@@ -36,24 +36,21 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Objects;
-
import sonia.scm.BasicPropertiesAware;
import sonia.scm.Validateable;
import sonia.scm.util.Util;
import sonia.scm.util.ValidationUtil;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Represents a changeset/commit of a repository.
diff --git a/scm-core/src/main/java/sonia/scm/repository/ChangesetPagingResult.java b/scm-core/src/main/java/sonia/scm/repository/ChangesetPagingResult.java
index 0712ed40af..59a705e36a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/ChangesetPagingResult.java
+++ b/scm-core/src/main/java/sonia/scm/repository/ChangesetPagingResult.java
@@ -35,20 +35,19 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.Iterator;
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* The changeset paging result is used to do a paging over the
@@ -156,7 +155,7 @@ public class ChangesetPagingResult implements Iterable, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("changesets", changesets)
.add("total", total)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObject.java b/scm-core/src/main/java/sonia/scm/repository/FileObject.java
index c5c4366a0e..5279921257 100644
--- a/scm-core/src/main/java/sonia/scm/repository/FileObject.java
+++ b/scm-core/src/main/java/sonia/scm/repository/FileObject.java
@@ -35,18 +35,17 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.LastModifiedAware;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* The FileObject represents a file or a directory in a repository.
@@ -110,7 +109,7 @@ public class FileObject implements LastModifiedAware, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("path", path)
.add("directory", directory)
diff --git a/scm-core/src/main/java/sonia/scm/repository/HealthCheckFailure.java b/scm-core/src/main/java/sonia/scm/repository/HealthCheckFailure.java
index 8bac16de8d..55f1abbaa6 100644
--- a/scm-core/src/main/java/sonia/scm/repository/HealthCheckFailure.java
+++ b/scm-core/src/main/java/sonia/scm/repository/HealthCheckFailure.java
@@ -33,14 +33,15 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Single failure of a {@link HealthCheck}.
*
@@ -132,7 +133,7 @@ public final class HealthCheckFailure
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("id", id)
.add("summary", summary)
.add("url", url)
diff --git a/scm-core/src/main/java/sonia/scm/repository/HealthCheckResult.java b/scm-core/src/main/java/sonia/scm/repository/HealthCheckResult.java
index f5cb690533..9ff902e3cd 100644
--- a/scm-core/src/main/java/sonia/scm/repository/HealthCheckResult.java
+++ b/scm-core/src/main/java/sonia/scm/repository/HealthCheckResult.java
@@ -33,13 +33,14 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableSet;
-//~--- JDK imports ------------------------------------------------------------
-
import java.util.Set;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Result of {@link HealthCheck}.
*
@@ -182,7 +183,7 @@ public final class HealthCheckResult
@Override
public String toString()
{
- return Objects.toStringHelper(this).add("failures", failures).toString();
+ return MoreObjects.toStringHelper(this).add("failures", failures).toString();
}
//~--- get methods ----------------------------------------------------------
diff --git a/scm-core/src/main/java/sonia/scm/repository/ImportHandler.java b/scm-core/src/main/java/sonia/scm/repository/ImportHandler.java
index a3c567c930..cee142b48e 100644
--- a/scm-core/src/main/java/sonia/scm/repository/ImportHandler.java
+++ b/scm-core/src/main/java/sonia/scm/repository/ImportHandler.java
@@ -35,7 +35,6 @@ package sonia.scm.repository;
//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.List;
/**
@@ -56,8 +55,6 @@ public interface ImportHandler
*
* @return a {@link List} names of imported repositories
* @throws IOException
- * @throws RepositoryException
*/
- public List importRepositories(RepositoryManager manager)
- throws IOException, RepositoryException;
+ public List importRepositories(RepositoryManager manager) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/ImportResult.java b/scm-core/src/main/java/sonia/scm/repository/ImportResult.java
index a7d242abc4..e834a7ec6c 100644
--- a/scm-core/src/main/java/sonia/scm/repository/ImportResult.java
+++ b/scm-core/src/main/java/sonia/scm/repository/ImportResult.java
@@ -33,18 +33,19 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import static com.google.common.base.Preconditions.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Import result of the {@link AdvancedImportHandler}.
@@ -130,7 +131,7 @@ public final class ImportResult
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("importedDirectories", importedDirectories)
.add("failedDirectories", failedDirectories)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/InternalRepositoryException.java b/scm-core/src/main/java/sonia/scm/repository/InternalRepositoryException.java
new file mode 100644
index 0000000000..d397028d7e
--- /dev/null
+++ b/scm-core/src/main/java/sonia/scm/repository/InternalRepositoryException.java
@@ -0,0 +1,15 @@
+package sonia.scm.repository;
+
+public class InternalRepositoryException extends RuntimeException {
+ public InternalRepositoryException(Throwable ex) {
+ super(ex);
+ }
+
+ public InternalRepositoryException(String msg, Exception ex) {
+ super(msg, ex);
+ }
+
+ public InternalRepositoryException(String message) {
+ super(message);
+ }
+}
diff --git a/scm-core/src/main/java/sonia/scm/repository/Modifications.java b/scm-core/src/main/java/sonia/scm/repository/Modifications.java
index 26804c91a6..4079d8f574 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Modifications.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Modifications.java
@@ -37,20 +37,17 @@ package sonia.scm.repository;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
-
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
diff --git a/scm-core/src/main/java/sonia/scm/repository/PathNotFoundException.java b/scm-core/src/main/java/sonia/scm/repository/PathNotFoundException.java
index 7048dc2cf7..ed62a5967c 100644
--- a/scm-core/src/main/java/sonia/scm/repository/PathNotFoundException.java
+++ b/scm-core/src/main/java/sonia/scm/repository/PathNotFoundException.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import sonia.scm.NotFoundException;
import sonia.scm.util.Util;
/**
@@ -42,7 +43,7 @@ import sonia.scm.util.Util;
*
* @author Sebastian Sdorra
*/
-public class PathNotFoundException extends RepositoryException
+public class PathNotFoundException extends NotFoundException
{
/** Field description */
@@ -59,7 +60,7 @@ public class PathNotFoundException extends RepositoryException
*/
public PathNotFoundException(String path)
{
- super("path \"".concat(Util.nonNull(path)).concat("\" not found"));
+ super("path", Util.nonNull(path));
this.path = Util.nonNull(path);
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/Permission.java b/scm-core/src/main/java/sonia/scm/repository/Permission.java
index b5de810f75..8b42d68a1f 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Permission.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Permission.java
@@ -35,17 +35,16 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.security.PermissionObject;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Permissions controls the access to {@link Repository}.
@@ -136,7 +135,7 @@ public class Permission implements PermissionObject, Serializable
final Permission other = (Permission) obj;
- return Objects.equal(name, other.name)
+ return Objects.equal(name, other.name)
&& Objects.equal(type, other.type)
&& Objects.equal(groupPermission, other.groupPermission);
}
@@ -163,7 +162,7 @@ public class Permission implements PermissionObject, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("type", type)
.add("groupPermission", groupPermission)
diff --git a/scm-core/src/main/java/sonia/scm/repository/Person.java b/scm-core/src/main/java/sonia/scm/repository/Person.java
index b3bf15c49a..d5674e7ad0 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Person.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Person.java
@@ -36,18 +36,16 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Objects;
-
import sonia.scm.Validateable;
import sonia.scm.util.Util;
import sonia.scm.util.ValidationUtil;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* The {@link Person} (author) of a changeset.
diff --git a/scm-core/src/main/java/sonia/scm/repository/Repository.java b/scm-core/src/main/java/sonia/scm/repository/Repository.java
index 44841893e7..adec211c1d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Repository.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Repository.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
import com.github.sdorra.ssp.PermissionObject;
import com.github.sdorra.ssp.StaticPermissions;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import sonia.scm.BasicPropertiesAware;
@@ -401,7 +402,7 @@ public class Repository extends BasicPropertiesAware implements ModelObject, Per
@Override
public String toString() {
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("id", id)
.add("namespace", namespace)
.add("name", name)
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryAlreadyExistsException.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryAlreadyExistsException.java
deleted file mode 100644
index c439b2d0f4..0000000000
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryAlreadyExistsException.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository;
-
-/**
- * This {@link Exception} is thrown when trying to create a repository with
- * the same name and type already exists.
- *
- * @author Sebastian Sdorra
- */
-public class RepositoryAlreadyExistsException extends RepositoryException
-{
- private static final long serialVersionUID = -774929917214137675L;
-
- /**
- * Creates a new instance.
- *
- * @param message exception message
- */
- public RepositoryAlreadyExistsException(String message) {
- super(message);
- }
-
- /**
- * Creates a new {@link RepositoryAlreadyExistsException} with an appropriate message.
- *
- * @param repository repository that already exists
- *
- * @return new exception with appropriate message
- */
- public static RepositoryAlreadyExistsException create(Repository repository){
- StringBuilder buffer = new StringBuilder("repository with name ");
- buffer.append(repository.getName()).append(" of type ");
- buffer.append(repository.getType()).append("already exists");
- return new RepositoryAlreadyExistsException(buffer.toString());
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryException.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryException.java
deleted file mode 100644
index 63538d08e3..0000000000
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryException.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository;
-
-/**
- * Base class for all repository exceptions.
- *
- * @author Sebastian Sdorra
- */
-public class RepositoryException extends Exception
-{
-
- /** Field description */
- private static final long serialVersionUID = -4939196278070910058L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs a new {@link RepositoryException} with null as its
- * error detail message.
- *
- */
- public RepositoryException()
- {
- super();
- }
-
- /**
- * Constructs a new {@link RepositoryException} with the specified
- * detail message.
- *
- *
- * @param message detail message
- */
- public RepositoryException(String message)
- {
- super(message);
- }
-
- /**
- * Constructs a new {@link RepositoryException} with the specified
- * detail message and cause.
- *
- *
- * @param cause the cause for the exception
- */
- public RepositoryException(Throwable cause)
- {
- super(cause);
- }
-
- /**
- * Constructs a new {@link RepositoryException} with the specified
- * detail message and cause.
- *
- *
- * @param message detail message
- * @param cause the cause for the exception
- */
- public RepositoryException(String message, Throwable cause)
- {
- super(message, cause);
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java
index 739d0d0177..445fc22ab8 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java
@@ -47,7 +47,7 @@ import sonia.scm.plugin.ExtensionPoint;
*/
@ExtensionPoint
public interface RepositoryHandler
- extends Handler
+ extends Handler
{
/**
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandlerNotFoundException.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryHandlerNotFoundException.java
deleted file mode 100644
index 4583902ef8..0000000000
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandlerNotFoundException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public class RepositoryHandlerNotFoundException extends RepositoryException
-{
-
- /** Field description */
- private static final long serialVersionUID = 5270463060802850944L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- */
- public RepositoryHandlerNotFoundException() {}
-
- /**
- * Constructs ...
- *
- *
- * @param message
- */
- public RepositoryHandlerNotFoundException(String message)
- {
- super(message);
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryIsNotArchivedException.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryIsNotArchivedException.java
index 3742512622..a427050633 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryIsNotArchivedException.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryIsNotArchivedException.java
@@ -38,7 +38,7 @@ package sonia.scm.repository;
*
* @since 1.14
*/
-public class RepositoryIsNotArchivedException extends RepositoryException {
+public class RepositoryIsNotArchivedException extends RuntimeException {
private static final long serialVersionUID = 7728748133123987511L;
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java
index 4fc9db5c32..2c4d958d8d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import sonia.scm.AlreadyExistsException;
import sonia.scm.TypeManager;
import javax.servlet.http.HttpServletRequest;
@@ -52,7 +53,7 @@ import java.util.Collection;
* @apiviz.uses sonia.scm.repository.RepositoryHandler
*/
public interface RepositoryManager
- extends TypeManager
+ extends TypeManager
{
/**
@@ -72,10 +73,8 @@ public interface RepositoryManager
* @param repository {@link Repository} to import
*
* @throws IOException
- * @throws RepositoryException
*/
- public void importRepository(Repository repository)
- throws IOException, RepositoryException;
+ public void importRepository(Repository repository) throws IOException, AlreadyExistsException;
//~--- get methods ----------------------------------------------------------
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java
index b504359bc0..aa4117af34 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManagerDecorator.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import sonia.scm.AlreadyExistsException;
import sonia.scm.ManagerDecorator;
import sonia.scm.Type;
@@ -51,7 +52,7 @@ import java.util.Collection;
* @since 1.23
*/
public class RepositoryManagerDecorator
- extends ManagerDecorator
+ extends ManagerDecorator
implements RepositoryManager
{
@@ -82,9 +83,7 @@ public class RepositoryManagerDecorator
* {@inheritDoc}
*/
@Override
- public void importRepository(Repository repository)
- throws IOException, RepositoryException
- {
+ public void importRepository(Repository repository) throws IOException, AlreadyExistsException {
decorated.importRepository(repository);
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryNotFoundException.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryNotFoundException.java
index 11f1a98bfd..070221117a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryNotFoundException.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryNotFoundException.java
@@ -33,13 +33,15 @@
package sonia.scm.repository;
+import sonia.scm.NotFoundException;
+
/**
* Signals that the specified {@link Repository} could be found.
*
* @author Sebastian Sdorra
* @since 1.6
*/
-public class RepositoryNotFoundException extends RepositoryException
+public class RepositoryNotFoundException extends NotFoundException
{
/** Field description */
@@ -53,10 +55,10 @@ public class RepositoryNotFoundException extends RepositoryException
*
*/
public RepositoryNotFoundException(Repository repository) {
- super("repository " + repository.getName() + "/" + repository.getNamespace() + " does not exist");
+ super("repository", repository.getName() + "/" + repository.getNamespace());
}
public RepositoryNotFoundException(String repositoryId) {
- super("repository with id " + repositoryId + " does not exist");
+ super("repository", repositoryId);
}
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryRequestListener.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryRequestListener.java
index 219aa9cee2..409052fe19 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RepositoryRequestListener.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryRequestListener.java
@@ -37,12 +37,11 @@ package sonia.scm.repository;
import sonia.scm.plugin.ExtensionPoint;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Listener before a repository request is executed. Repository request are
@@ -68,10 +67,6 @@ public interface RepositoryRequestListener
*
* @return false to abort the request
* @throws IOException
- * @throws RepositoryException
*/
- public boolean handleRequest(HttpServletRequest request,
- HttpServletResponse response,
- Repository repository)
- throws IOException, RepositoryException;
+ boolean handleRequest(HttpServletRequest request, HttpServletResponse response, Repository repository) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/RevisionNotFoundException.java b/scm-core/src/main/java/sonia/scm/repository/RevisionNotFoundException.java
index a0fbd3f6a4..4185e3223d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/RevisionNotFoundException.java
+++ b/scm-core/src/main/java/sonia/scm/repository/RevisionNotFoundException.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import sonia.scm.NotFoundException;
import sonia.scm.util.Util;
/**
@@ -42,8 +43,7 @@ import sonia.scm.util.Util;
*
* @author Sebastian Sdorra
*/
-public class RevisionNotFoundException extends RepositoryException
-{
+public class RevisionNotFoundException extends NotFoundException {
/** Field description */
private static final long serialVersionUID = -5594008535358811998L;
@@ -59,7 +59,7 @@ public class RevisionNotFoundException extends RepositoryException
*/
public RevisionNotFoundException(String revision)
{
- super("revision \"".concat(Util.nonNull(revision)).concat("\" not found"));
+ super("revision", revision);
this.revision = Util.nonNull(revision);
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/SubRepository.java b/scm-core/src/main/java/sonia/scm/repository/SubRepository.java
index 3c8acc4831..55ff0e2269 100644
--- a/scm-core/src/main/java/sonia/scm/repository/SubRepository.java
+++ b/scm-core/src/main/java/sonia/scm/repository/SubRepository.java
@@ -35,16 +35,16 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* @since 1.10
@@ -157,7 +157,7 @@ public class SubRepository implements Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("repositoryUrl", repositoryUrl)
.add("browserUrl", browserUrl)
.add("revision", revision)
diff --git a/scm-core/src/main/java/sonia/scm/repository/Tag.java b/scm-core/src/main/java/sonia/scm/repository/Tag.java
index 4fc246e0c5..ae436c1a7a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Tag.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Tag.java
@@ -34,14 +34,15 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Represents a tag in a repository.
*
@@ -124,7 +125,7 @@ public final class Tag
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("revision", revision)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/Tags.java b/scm-core/src/main/java/sonia/scm/repository/Tags.java
index fd38b421a5..e89ed314ea 100644
--- a/scm-core/src/main/java/sonia/scm/repository/Tags.java
+++ b/scm-core/src/main/java/sonia/scm/repository/Tags.java
@@ -34,18 +34,18 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.Iterator;
-import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.util.Iterator;
+import java.util.List;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Represents all tags of a repository.
@@ -138,7 +138,7 @@ public final class Tags implements Iterable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("tags", tags)
.toString();
//J+
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/AbstractBundleOrUnbundleCommandResponse.java b/scm-core/src/main/java/sonia/scm/repository/api/AbstractBundleOrUnbundleCommandResponse.java
index 36ae6f89ad..d1d7ef5045 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/AbstractBundleOrUnbundleCommandResponse.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/AbstractBundleOrUnbundleCommandResponse.java
@@ -33,8 +33,8 @@ package sonia.scm.repository.api;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
/**
* Abstract class for bundle or unbundle command.
*
@@ -95,7 +95,7 @@ public abstract class AbstractBundleOrUnbundleCommandResponse
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("changesetCount", changesetCount)
.toString();
//J+
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java
index 203a01b331..5a34345dce 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/BlameCommandBuilder.java
@@ -38,25 +38,22 @@ package sonia.scm.repository.api;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager;
import sonia.scm.repository.BlameResult;
import sonia.scm.repository.PreProcessorUtil;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryCacheKey;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.BlameCommand;
import sonia.scm.repository.spi.BlameCommandRequest;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Shows changeset information by line for a given file.
* Blame is also known as annotate in some SCM systems.
@@ -138,10 +135,9 @@ public final class BlameCommandBuilder
* @throws IllegalArgumentException if the path is null or empty
*
* @throws IOException
- * @throws RepositoryException
*/
public BlameResult getBlameResult(String path)
- throws IOException, RepositoryException
+ throws IOException
{
Preconditions.checkArgument(!Strings.isNullOrEmpty(path),
"path is required");
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java
index 5a456de936..968f9ba39d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/BranchesCommandBuilder.java
@@ -40,8 +40,6 @@ import sonia.scm.repository.Branch;
import sonia.scm.repository.Branches;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryCacheKey;
-import sonia.scm.repository.RepositoryException;
-import sonia.scm.repository.spi.BlameCommand;
import sonia.scm.repository.spi.BranchesCommand;
import java.io.IOException;
@@ -80,10 +78,8 @@ public final class BranchesCommandBuilder
* only be called from the {@link RepositoryService}.
*
* @param cacheManager cache manager
- * @param blameCommand implementation of the {@link BlameCommand}
- * @param branchesCommand
+ * @param branchesCommand implementation of the {@link BranchesCommand}
* @param repository repository to query
- * @param preProcessorUtil
*/
BranchesCommandBuilder(CacheManager cacheManager,
BranchesCommand branchesCommand, Repository repository)
@@ -102,9 +98,8 @@ public final class BranchesCommandBuilder
* @return branches from the repository
*
* @throws IOException
- * @throws RepositoryException
*/
- public Branches getBranches() throws RepositoryException, IOException
+ public Branches getBranches() throws IOException
{
Branches branches;
@@ -173,10 +168,9 @@ public final class BranchesCommandBuilder
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
private Branches getBranchesFromCommand()
- throws RepositoryException, IOException
+ throws IOException
{
return new Branches(branchesCommand.getBranches());
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java
index 655b7d4816..eeae45b893 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/BrowseCommandBuilder.java
@@ -36,10 +36,8 @@ package sonia.scm.repository.api;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Objects;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager;
import sonia.scm.repository.BrowserResult;
@@ -48,18 +46,17 @@ import sonia.scm.repository.FileObjectNameComparator;
import sonia.scm.repository.PreProcessorUtil;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryCacheKey;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.spi.BrowseCommand;
import sonia.scm.repository.spi.BrowseCommandRequest;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.io.Serializable;
-
import java.util.Collections;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* BrowseCommandBuilder is able to browse the files of a {@link Repository}.
*
@@ -100,7 +97,7 @@ public final class BrowseCommandBuilder
* only be called from the {@link RepositoryService}.
*
* @param cacheManager cache manager
- * @param logCommand implementation of the {@link LogCommand}
+ * @param browseCommand implementation of the {@link BrowseCommand}
* @param browseCommand
* @param repository repository to query
* @param preProcessorUtil
@@ -140,11 +137,8 @@ public final class BrowseCommandBuilder
* @return files for the given parameters
*
* @throws IOException
- * @throws RepositoryException
*/
- public BrowserResult getBrowserResult()
- throws IOException, RepositoryException
- {
+ public BrowserResult getBrowserResult() throws IOException, RevisionNotFoundException {
BrowserResult result = null;
if (disableCache)
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/BundleCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/BundleCommandBuilder.java
index 4a25c0df50..4fed0a7b60 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/BundleCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/BundleCommandBuilder.java
@@ -37,23 +37,21 @@ package sonia.scm.repository.api;
import com.google.common.io.ByteSink;
import com.google.common.io.Files;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.BundleCommand;
import sonia.scm.repository.spi.BundleCommandRequest;
-import static com.google.common.base.Preconditions.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The bundle command dumps a repository to a byte source such as a file. The
* created bundle can be restored to an empty repository with the
@@ -94,11 +92,8 @@ public final class BundleCommandBuilder
* @return bundle response
*
* @throws IOException
- * @throws RepositoryException
*/
- public BundleResponse bundle(File outputFile)
- throws IOException, RepositoryException
- {
+ public BundleResponse bundle(File outputFile) throws IOException {
checkArgument((outputFile != null) &&!outputFile.exists(),
"file is null or exists already");
@@ -120,10 +115,9 @@ public final class BundleCommandBuilder
* @return bundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public BundleResponse bundle(OutputStream outputStream)
- throws IOException, RepositoryException
+ throws IOException
{
checkNotNull(outputStream, "output stream is required");
@@ -141,10 +135,9 @@ public final class BundleCommandBuilder
* @return bundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public BundleResponse bundle(ByteSink sink)
- throws IOException, RepositoryException
+ throws IOException
{
checkNotNull(sink, "byte sink is required");
logger.info("bundle {} to byte sink");
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/CatCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/CatCommandBuilder.java
index 270b996635..bf896efed8 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/CatCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/CatCommandBuilder.java
@@ -37,8 +37,9 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.repository.PathNotFoundException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.spi.CatCommand;
import sonia.scm.repository.spi.CatCommandRequest;
import sonia.scm.util.IOUtil;
@@ -106,7 +107,7 @@ public final class CatCommandBuilder
* @param outputStream output stream for the content
* @param path file path
*/
- public void retriveContent(OutputStream outputStream, String path) throws IOException, RepositoryException {
+ public void retriveContent(OutputStream outputStream, String path) throws IOException, PathNotFoundException, RevisionNotFoundException {
getCatResult(outputStream, path);
}
@@ -115,7 +116,7 @@ public final class CatCommandBuilder
*
* @param path file path
*/
- public InputStream getStream(String path) throws IOException, RepositoryException {
+ public InputStream getStream(String path) throws IOException, PathNotFoundException, RevisionNotFoundException {
Preconditions.checkArgument(!Strings.isNullOrEmpty(path),
"path is required");
@@ -137,10 +138,8 @@ public final class CatCommandBuilder
* @return content of the file
*
* @throws IOException
- * @throws RepositoryException
*/
- public String getContent(String path) throws IOException, RepositoryException
- {
+ public String getContent(String path) throws IOException, PathNotFoundException, RevisionNotFoundException {
String content = null;
ByteArrayOutputStream baos = null;
@@ -185,11 +184,9 @@ public final class CatCommandBuilder
* @param path path of the file
*
* @throws IOException
- * @throws RepositoryException
*/
private void getCatResult(OutputStream outputStream, String path)
- throws IOException, RepositoryException
- {
+ throws IOException, PathNotFoundException, RevisionNotFoundException {
Preconditions.checkNotNull(outputStream, "OutputStream is required");
Preconditions.checkArgument(!Strings.isNullOrEmpty(path),
"path is required");
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/DiffCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/DiffCommandBuilder.java
index e1d7ba5f1a..c0e9e3f622 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/DiffCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/DiffCommandBuilder.java
@@ -36,21 +36,19 @@ package sonia.scm.repository.api;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Preconditions;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.spi.DiffCommand;
import sonia.scm.repository.spi.DiffCommandRequest;
import sonia.scm.util.IOUtil;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Shows differences between revisions for a specified file or
* the entire revision.
@@ -87,9 +85,7 @@ public final class DiffCommandBuilder
* Constructs a new {@link DiffCommandBuilder}, this constructor should
* only be called from the {@link RepositoryService}.
*
- * @param implementation of {@link DiffCommand}
- *
- * @param diffCommand
+ * @param diffCommand implementation of {@link DiffCommand}
*/
DiffCommandBuilder(DiffCommand diffCommand)
{
@@ -107,11 +103,8 @@ public final class DiffCommandBuilder
* @return {@code this}
*
* @throws IOException
- * @throws RepositoryException
*/
- public DiffCommandBuilder retriveContent(OutputStream outputStream)
- throws IOException, RepositoryException
- {
+ public DiffCommandBuilder retriveContent(OutputStream outputStream) throws IOException, RevisionNotFoundException {
getDiffResult(outputStream);
return this;
@@ -125,10 +118,8 @@ public final class DiffCommandBuilder
* @return content of the difference
*
* @throws IOException
- * @throws RepositoryException
*/
- public String getContent() throws IOException, RepositoryException
- {
+ public String getContent() throws IOException, RevisionNotFoundException {
String content = null;
ByteArrayOutputStream baos = null;
@@ -205,14 +196,10 @@ public final class DiffCommandBuilder
*
*
* @param outputStream
- * @param path
*
* @throws IOException
- * @throws RepositoryException
*/
- private void getDiffResult(OutputStream outputStream)
- throws IOException, RepositoryException
- {
+ private void getDiffResult(OutputStream outputStream) throws IOException, RevisionNotFoundException {
Preconditions.checkNotNull(outputStream, "OutputStream is required");
Preconditions.checkArgument(request.isValid(),
"path and/or revision is required");
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/IncomingCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/IncomingCommandBuilder.java
index 747cb837a0..6c7c620fa4 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/IncomingCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/IncomingCommandBuilder.java
@@ -36,22 +36,20 @@ package sonia.scm.repository.api;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
-
import sonia.scm.cache.CacheManager;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.PreProcessorUtil;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.IncomingCommand;
import sonia.scm.repository.spi.IncomingCommandRequest;
import sonia.scm.security.RepositoryPermission;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The incoming command shows new {@link Changeset}s found in a different
* repository location.
@@ -66,8 +64,6 @@ public final class IncomingCommandBuilder
* Constructs a new {@link IncomingCommandBuilder}, this constructor should
* only be called from the {@link RepositoryService}.
*
- * @param cacheManager cache manager
- *
* @param cacheManger
* @param command implementation of the {@link IncomingCommand}
* @param repository repository to query
@@ -91,11 +87,10 @@ public final class IncomingCommandBuilder
* @return incoming changesets
*
* @throws IOException
- * @throws RepositoryException
*/
public ChangesetPagingResult getIncomingChangesets(
Repository remoteRepository)
- throws IOException, RepositoryException
+ throws IOException
{
Subject subject = SecurityUtils.getSubject();
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LogCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LogCommandBuilder.java
index de5e2b1b9f..1450cf687a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/LogCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/LogCommandBuilder.java
@@ -37,10 +37,8 @@ package sonia.scm.repository.api;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager;
import sonia.scm.repository.Changeset;
@@ -48,15 +46,15 @@ import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.PreProcessorUtil;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryCacheKey;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.spi.LogCommand;
import sonia.scm.repository.spi.LogCommandRequest;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* LogCommandBuilder is able to show the history of a file in a
* {@link Repository} or the entire history of a {@link Repository}.
@@ -166,11 +164,8 @@ public final class LogCommandBuilder
* @return the {@link Changeset} with the given id or null
*
* @throws IOException
- * @throws RepositoryException
*/
- public Changeset getChangeset(String id)
- throws IOException, RepositoryException
- {
+ public Changeset getChangeset(String id) throws IOException, RevisionNotFoundException {
Changeset changeset;
if (disableCache)
@@ -228,11 +223,8 @@ public final class LogCommandBuilder
* @return all changesets with the given parameters
*
* @throws IOException
- * @throws RepositoryException
*/
- public ChangesetPagingResult getChangesets()
- throws IOException, RepositoryException
- {
+ public ChangesetPagingResult getChangesets() throws IOException, RevisionNotFoundException {
ChangesetPagingResult cpr;
if (disableCache)
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/OutgoingCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/OutgoingCommandBuilder.java
index def8c3ae7f..2753128eac 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/OutgoingCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/OutgoingCommandBuilder.java
@@ -30,7 +30,6 @@
*/
package sonia.scm.repository.api;
-import java.io.IOException;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import sonia.scm.cache.CacheManager;
@@ -38,11 +37,12 @@ import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.PreProcessorUtil;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.OutgoingCommand;
import sonia.scm.repository.spi.OutgoingCommandRequest;
import sonia.scm.security.RepositoryPermission;
+import java.io.IOException;
+
/**
* Show changesets not found in a remote repository.
*
@@ -62,7 +62,7 @@ public final class OutgoingCommandBuilder
* @param repository repository to query
* @param preProcessorUtil pre processor util
*/
- OutgoingCommandBuilder(CacheManager cacheManger, OutgoingCommand command,
+ OutgoingCommandBuilder(CacheManager cacheManager, OutgoingCommand command,
Repository repository, PreProcessorUtil preProcessorUtil)
{
this.command = command;
@@ -80,7 +80,7 @@ public final class OutgoingCommandBuilder
* @return outgoing changesets
*/
public ChangesetPagingResult getOutgoingChangesets(
- Repository remoteRepository) throws IOException, RepositoryException
+ Repository remoteRepository) throws IOException
{
Subject subject = SecurityUtils.getSubject();
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/PullCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/PullCommandBuilder.java
index 528c93eef9..a0f5ff4115 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/PullCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/PullCommandBuilder.java
@@ -36,22 +36,19 @@ package sonia.scm.repository.api;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.PullCommand;
import sonia.scm.repository.spi.PullCommandRequest;
import sonia.scm.security.RepositoryPermission;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.net.URL;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The pull command pull changes from a other repository.
*
@@ -93,13 +90,10 @@ public final class PullCommandBuilder
* @return informations over the executed pull command
*
* @throws IOException
- * @throws RepositoryException
- *
+ *
* @since 1.43
*/
- public PullResponse pull(String url)
- throws IOException, RepositoryException
- {
+ public PullResponse pull(String url) throws IOException {
Subject subject = SecurityUtils.getSubject();
//J-
subject.checkPermission(
@@ -125,11 +119,8 @@ public final class PullCommandBuilder
* @return informations over the executed pull command
*
* @throws IOException
- * @throws RepositoryException
*/
- public PullResponse pull(Repository remoteRepository)
- throws IOException, RepositoryException
- {
+ public PullResponse pull(Repository remoteRepository) throws IOException {
Subject subject = SecurityUtils.getSubject();
//J-
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java
index fabe938ff7..7b318e49ec 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/PushCommandBuilder.java
@@ -37,23 +37,19 @@ package sonia.scm.repository.api;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.PushCommand;
import sonia.scm.repository.spi.PushCommandRequest;
import sonia.scm.security.RepositoryPermission;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.net.URL;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The push command push changes to a other repository.
*
@@ -91,11 +87,8 @@ public final class PushCommandBuilder
* @return informations of the executed push command
*
* @throws IOException
- * @throws RepositoryException
*/
- public PushResponse push(Repository remoteRepository)
- throws IOException, RepositoryException
- {
+ public PushResponse push(Repository remoteRepository) throws IOException {
Subject subject = SecurityUtils.getSubject();
//J-
@@ -120,12 +113,10 @@ public final class PushCommandBuilder
* @return informations of the executed push command
*
* @throws IOException
- * @throws RepositoryException
*
* @since 1.43
*/
- public PushResponse push(String url) throws IOException, RepositoryException
- {
+ public PushResponse push(String url) throws IOException {
URL remoteUrl = new URL(url);
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java
index 2e4ff644f4..627e57a797 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java
@@ -167,9 +167,7 @@ public final class RepositoryServiceFactory
* @throws ScmSecurityException if current user has not read permissions
* for that repository
*/
- public RepositoryService create(String repositoryId)
- throws RepositoryNotFoundException
- {
+ public RepositoryService create(String repositoryId) throws RepositoryNotFoundException {
Preconditions.checkArgument(!Strings.isNullOrEmpty(repositoryId),
"a non empty repositoryId is required");
@@ -328,7 +326,6 @@ public final class RepositoryServiceFactory
/**
* Clear caches on repository delete event.
*
- * @param repository changed repository
* @param event repository event
*/
@Subscribe(referenceType = ReferenceType.STRONG)
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/TagsCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/TagsCommandBuilder.java
index 65ceef0828..3a6ea16b10 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/TagsCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/TagsCommandBuilder.java
@@ -36,25 +36,21 @@ package sonia.scm.repository.api;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Objects;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryCacheKey;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.Tag;
import sonia.scm.repository.Tags;
import sonia.scm.repository.spi.TagsCommand;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The tags command list all repository tags.
*
@@ -88,8 +84,7 @@ public final class TagsCommandBuilder
* only be called from the {@link RepositoryService}.
*
* @param cacheManager cache manager
- * @param logCommand implementation of the {@link TagsCommand}
- * @param command
+ * @param command implementation of the {@link TagsCommand}
* @param repository repository
*/
TagsCommandBuilder(CacheManager cacheManager, TagsCommand command,
@@ -109,10 +104,8 @@ public final class TagsCommandBuilder
* @return tags from the repository
*
* @throws IOException
- * @throws RepositoryException
*/
- public Tags getTags() throws RepositoryException, IOException
- {
+ public Tags getTags() throws IOException {
Tags tags;
if (disableCache)
@@ -183,9 +176,8 @@ public final class TagsCommandBuilder
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- private Tags getTagsFromCommand() throws RepositoryException, IOException
+ private Tags getTagsFromCommand() throws IOException
{
List tagList = command.getTags();
diff --git a/scm-core/src/main/java/sonia/scm/repository/api/UnbundleCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/UnbundleCommandBuilder.java
index ff28e5c668..bfb998c6fe 100644
--- a/scm-core/src/main/java/sonia/scm/repository/api/UnbundleCommandBuilder.java
+++ b/scm-core/src/main/java/sonia/scm/repository/api/UnbundleCommandBuilder.java
@@ -37,25 +37,22 @@ package sonia.scm.repository.api;
import com.google.common.io.ByteSource;
import com.google.common.io.Files;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.UnbundleCommand;
import sonia.scm.repository.spi.UnbundleCommandRequest;
-import static com.google.common.base.Preconditions.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-
import java.util.zip.GZIPInputStream;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
* The unbundle command can restore an empty repository from a bundle. The
* bundle can be created with the {@link BundleCommandBuilder}.
@@ -97,10 +94,9 @@ public final class UnbundleCommandBuilder
* @return unbundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public UnbundleResponse unbundle(File inputFile)
- throws IOException, RepositoryException
+ throws IOException
{
checkArgument((inputFile != null) && inputFile.exists(),
"existing file is required");
@@ -122,10 +118,9 @@ public final class UnbundleCommandBuilder
* @return unbundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public UnbundleResponse unbundle(InputStream inputStream)
- throws IOException, RepositoryException
+ throws IOException
{
checkNotNull(inputStream, "input stream is required");
logger.info("unbundle archive from stream");
@@ -142,10 +137,9 @@ public final class UnbundleCommandBuilder
* @return unbundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public UnbundleResponse unbundle(ByteSource byteSource)
- throws IOException, RepositoryException
+ throws IOException
{
checkNotNull(byteSource, "byte source is required");
logger.info("unbundle from byte source");
@@ -186,7 +180,7 @@ public final class UnbundleCommandBuilder
{
@Override
- public InputStream openStream() throws IOException
+ public InputStream openStream()
{
return inputStream;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BlameCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/BlameCommand.java
index 80c155a534..9953746fd1 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/BlameCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/BlameCommand.java
@@ -36,12 +36,11 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.BlameResult;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -59,8 +58,6 @@ public interface BlameCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public BlameResult getBlameResult(BlameCommandRequest request)
- throws IOException, RepositoryException;
+ BlameResult getBlameResult(BlameCommandRequest request) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BranchesCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/BranchesCommand.java
index a5659a8ffc..ba512ed4d2 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/BranchesCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/BranchesCommand.java
@@ -35,14 +35,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.Branch;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -58,7 +56,6 @@ public interface BranchesCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public List getBranches() throws RepositoryException, IOException;
+ List getBranches() throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java
index 4afc02b125..2c9fff589c 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommand.java
@@ -36,12 +36,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.BrowserResult;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -59,8 +59,5 @@ public interface BrowseCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public BrowserResult getBrowserResult(BrowseCommandRequest request)
- throws IOException, RepositoryException;
-}
+ BrowserResult getBrowserResult(BrowseCommandRequest request) throws IOException, RevisionNotFoundException;}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommandRequest.java
index 2f7c007959..39da9a9ace 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommandRequest.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/BrowseCommandRequest.java
@@ -35,8 +35,8 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
/**
*
* @author Sebastian Sdorra
@@ -127,7 +127,7 @@ public final class BrowseCommandRequest extends FileBaseCommandRequest
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("path", getPath())
.add("revision", getRevision())
.add("recursive", recursive)
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/BundleCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/BundleCommand.java
index 8a0f21a714..7b6404c556 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/BundleCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/BundleCommand.java
@@ -35,13 +35,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.BundleResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Service provider implementation for the bundle command.
*
@@ -60,8 +59,7 @@ public interface BundleCommand
* @return bundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public BundleResponse bundle(BundleCommandRequest request)
- throws IOException, RepositoryException;
+ throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/CatCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/CatCommand.java
index e0e336f2ff..06f242783b 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/CatCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/CatCommand.java
@@ -33,7 +33,8 @@
package sonia.scm.repository.spi;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.PathNotFoundException;
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -46,7 +47,7 @@ import java.io.OutputStream;
*/
public interface CatCommand {
- void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, RepositoryException;
+ void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, RevisionNotFoundException, PathNotFoundException;
- InputStream getCatResultStream(CatCommandRequest request) throws IOException, RepositoryException;
+ InputStream getCatResultStream(CatCommandRequest request) throws IOException, RevisionNotFoundException, PathNotFoundException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/DiffCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/DiffCommand.java
index a4d0c24444..105f4e48e1 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/DiffCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/DiffCommand.java
@@ -33,11 +33,7 @@
package sonia.scm.repository.spi;
-//~--- non-JDK imports --------------------------------------------------------
-
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
@@ -59,8 +55,6 @@ public interface DiffCommand
*
* @throws IOException
* @throws RuntimeException
- * @throws RepositoryException
*/
- public void getDiffResult(DiffCommandRequest request, OutputStream output)
- throws IOException, RepositoryException;
+ public void getDiffResult(DiffCommandRequest request, OutputStream output) throws IOException, RevisionNotFoundException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java
index aec2b7087a..9f563345fd 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/FileBaseCommandRequest.java
@@ -35,12 +35,13 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -115,7 +116,7 @@ public abstract class FileBaseCommandRequest
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("path", path)
.add("revision", revision)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/HookEventFacade.java b/scm-core/src/main/java/sonia/scm/repository/spi/HookEventFacade.java
index 93ed5f1111..52ef68f272 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/HookEventFacade.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/HookEventFacade.java
@@ -37,7 +37,6 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import sonia.scm.repository.NamespaceAndName;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryHookEvent;
import sonia.scm.repository.RepositoryHookType;
import sonia.scm.repository.RepositoryManager;
@@ -72,19 +71,18 @@ public final class HookEventFacade
//~--- methods --------------------------------------------------------------
- public HookEventHandler handle(String id) throws RepositoryException {
+ public HookEventHandler handle(String id) throws RepositoryNotFoundException {
return handle(repositoryManagerProvider.get().get(id));
}
- public HookEventHandler handle(NamespaceAndName namespaceAndName) throws RepositoryException {
+ public HookEventHandler handle(NamespaceAndName namespaceAndName) throws RepositoryNotFoundException {
return handle(repositoryManagerProvider.get().get(namespaceAndName));
}
- public HookEventHandler handle(Repository repository) throws RepositoryException
- {
+ public HookEventHandler handle(Repository repository) throws RepositoryNotFoundException {
if (repository == null)
{
- throw new RepositoryNotFoundException("could not find repository");
+ throw new RepositoryNotFoundException(repository);
}
return new HookEventHandler(repositoryManagerProvider.get(),
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/IncomingCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/IncomingCommand.java
index 8b3341f77b..669f307acd 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/IncomingCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/IncomingCommand.java
@@ -35,12 +35,11 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.ChangesetPagingResult;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -49,18 +48,5 @@ import java.io.IOException;
public interface IncomingCommand
{
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- public ChangesetPagingResult getIncomingChangesets(
- IncomingCommandRequest request)
- throws IOException, RepositoryException;
+ ChangesetPagingResult getIncomingChangesets(IncomingCommandRequest request) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LogCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/LogCommand.java
index 168c279c19..e4a7f3437b 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/LogCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/LogCommand.java
@@ -37,45 +37,20 @@ package sonia.scm.repository.spi;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
* @since 1.17
*/
-public interface LogCommand
-{
+public interface LogCommand {
- /**
- * Method description
- *
- *
- * @param id
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- public Changeset getChangeset(String id)
- throws IOException, RepositoryException;
+ Changeset getChangeset(String id) throws IOException, RevisionNotFoundException;
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- public ChangesetPagingResult getChangesets(LogCommandRequest request)
- throws IOException, RepositoryException;
+ ChangesetPagingResult getChangesets(LogCommandRequest request) throws IOException, RevisionNotFoundException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LogCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/LogCommandRequest.java
index 1637a92c16..9356bb212a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/LogCommandRequest.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/LogCommandRequest.java
@@ -35,12 +35,13 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -125,7 +126,7 @@ public final class LogCommandRequest implements Serializable, Resetable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("startChangeset", startChangeset)
.add("endChangeset", endChangeset)
.add("pagingStart", pagingStart)
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/OutgoingCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/OutgoingCommand.java
index 9e5509e945..c37950abe2 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/OutgoingCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/OutgoingCommand.java
@@ -35,12 +35,11 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.repository.ChangesetPagingResult;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -58,9 +57,6 @@ public interface OutgoingCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public ChangesetPagingResult getOutgoingChangesets(
- OutgoingCommandRequest request)
- throws IOException, RepositoryException;
+ ChangesetPagingResult getOutgoingChangesets(OutgoingCommandRequest request) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/PagedRemoteCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/PagedRemoteCommandRequest.java
index c07ddb54ef..b6545bdc4d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/PagedRemoteCommandRequest.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/PagedRemoteCommandRequest.java
@@ -34,8 +34,8 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
/**
*
* @author Sebastian Sdorra
@@ -84,7 +84,7 @@ public abstract class PagedRemoteCommandRequest extends RemoteCommandRequest
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("remoteURL", remoteRepository)
.add("pagingStart", pagingStart)
.add("pagingLimit", pagingLimit)
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/PullCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/PullCommand.java
index 533f8e1351..e7aa044353 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/PullCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/PullCommand.java
@@ -34,13 +34,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PullResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -58,8 +57,6 @@ public interface PullCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public PullResponse pull(PullCommandRequest request)
- throws IOException, RepositoryException;
+ PullResponse pull(PullCommandRequest request) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/PushCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/PushCommand.java
index c77947937a..9530add4f8 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/PushCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/PushCommand.java
@@ -34,13 +34,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PushResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -58,8 +57,6 @@ public interface PushCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public PushResponse push(PushCommandRequest request)
- throws IOException, RepositoryException;
+ PushResponse push(PushCommandRequest request) throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/RemoteCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/RemoteCommandRequest.java
index 0f3cd909d9..bbc902cd2a 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/RemoteCommandRequest.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/RemoteCommandRequest.java
@@ -35,14 +35,14 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.repository.Repository;
-//~--- JDK imports ------------------------------------------------------------
-
import java.net.URL;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -101,7 +101,7 @@ public abstract class RemoteCommandRequest implements Resetable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("remoteRepository", remoteRepository)
.add("remoteUrl", remoteUrl)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/TagsCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/TagsCommand.java
index 5de358d94f..c2e6c9092d 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/TagsCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/TagsCommand.java
@@ -34,15 +34,13 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.Tag;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -57,7 +55,6 @@ public interface TagsCommand
* @return
*
* @throws IOException
- * @throws RepositoryException
*/
- public List getTags() throws RepositoryException, IOException;
+ public List getTags() throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/UnbundleCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/UnbundleCommand.java
index 4777e0c11b..07e35e2715 100644
--- a/scm-core/src/main/java/sonia/scm/repository/spi/UnbundleCommand.java
+++ b/scm-core/src/main/java/sonia/scm/repository/spi/UnbundleCommand.java
@@ -35,13 +35,12 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.UnbundleResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Service provider implementation for the unbundle command.
*
@@ -60,8 +59,7 @@ public interface UnbundleCommand
* @return unbundle response
*
* @throws IOException
- * @throws RepositoryException
*/
public UnbundleResponse unbundle(UnbundleCommandRequest request)
- throws IOException, RepositoryException;
+ throws IOException;
}
diff --git a/scm-core/src/main/java/sonia/scm/security/AssignedPermission.java b/scm-core/src/main/java/sonia/scm/security/AssignedPermission.java
index fc9083d13a..56b8d04a41 100644
--- a/scm-core/src/main/java/sonia/scm/security/AssignedPermission.java
+++ b/scm-core/src/main/java/sonia/scm/security/AssignedPermission.java
@@ -34,16 +34,16 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Permission object which is assigned to a specific user or group.
@@ -150,7 +150,7 @@ public class AssignedPermission implements PermissionObject, Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("groupPermisison", groupPermission)
.add("permission", permission)
diff --git a/scm-core/src/main/java/sonia/scm/security/DAORealmHelper.java b/scm-core/src/main/java/sonia/scm/security/DAORealmHelper.java
index 87ccfaf4cc..3fcab8762c 100644
--- a/scm-core/src/main/java/sonia/scm/security/DAORealmHelper.java
+++ b/scm-core/src/main/java/sonia/scm/security/DAORealmHelper.java
@@ -33,11 +33,10 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
-
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
@@ -47,10 +46,8 @@ import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.CredentialsMatcher;
import org.apache.shiro.subject.SimplePrincipalCollection;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.group.Group;
import sonia.scm.group.GroupDAO;
import sonia.scm.group.GroupNames;
@@ -161,7 +158,7 @@ public final class DAORealmHelper
collection.add(principal, realm);
collection.add(user, realm);
collection.add(collectGroups(principal), realm);
- collection.add(Objects.firstNonNull(scope, Scope.empty()), realm);
+ collection.add(MoreObjects.firstNonNull(scope, Scope.empty()), realm);
String creds = credentials;
diff --git a/scm-core/src/main/java/sonia/scm/security/PermissionDescriptor.java b/scm-core/src/main/java/sonia/scm/security/PermissionDescriptor.java
index 5cd5520d61..20d95958a1 100644
--- a/scm-core/src/main/java/sonia/scm/security/PermissionDescriptor.java
+++ b/scm-core/src/main/java/sonia/scm/security/PermissionDescriptor.java
@@ -34,16 +34,16 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Descriptor for available permission objects.
@@ -125,7 +125,7 @@ public class PermissionDescriptor implements Serializable
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("displayName", displayName)
.add("description", description)
.add("value", value)
diff --git a/scm-core/src/main/java/sonia/scm/security/RepositoryPermission.java b/scm-core/src/main/java/sonia/scm/security/RepositoryPermission.java
index f697e82dfd..1b0229d6f5 100644
--- a/scm-core/src/main/java/sonia/scm/security/RepositoryPermission.java
+++ b/scm-core/src/main/java/sonia/scm/security/RepositoryPermission.java
@@ -35,17 +35,16 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import org.apache.shiro.authz.Permission;
-
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.Serializable;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* This class represents the permission to a repository of a user.
*
@@ -174,7 +173,7 @@ public final class RepositoryPermission
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("repositoryId", repositoryId)
.add("permissionType", permissionType)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/security/StoredAssignedPermissionEvent.java b/scm-core/src/main/java/sonia/scm/security/StoredAssignedPermissionEvent.java
index acd7d62052..ad93bf25a9 100644
--- a/scm-core/src/main/java/sonia/scm/security/StoredAssignedPermissionEvent.java
+++ b/scm-core/src/main/java/sonia/scm/security/StoredAssignedPermissionEvent.java
@@ -34,14 +34,14 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.HandlerEventType;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.event.Event;
import java.io.Serializable;
-import sonia.scm.event.Event;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Event which is fired after a {@link StoredAssignedPermission} was added,
@@ -114,7 +114,7 @@ public final class StoredAssignedPermissionEvent implements Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("type", type)
.add("permission", permission)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java b/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java
index 9e0c97f234..0e3c06e32d 100644
--- a/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java
+++ b/scm-core/src/main/java/sonia/scm/security/SyncingRealmHelper.java
@@ -30,17 +30,18 @@ package sonia.scm.security;
import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
-import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.subject.SimplePrincipalCollection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sonia.scm.AlreadyExistsException;
+import sonia.scm.NotFoundException;
import sonia.scm.group.Group;
-import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.group.GroupNames;
import sonia.scm.plugin.Extension;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.security.AdministrationContext;
@@ -56,6 +57,8 @@ import java.util.Collection;
@Extension
public final class SyncingRealmHelper {
+ private static final Logger LOG = LoggerFactory.getLogger(SyncingRealmHelper.class);
+
private final AdministrationContext ctx;
private final GroupManager groupManager;
@@ -121,17 +124,19 @@ public final class SyncingRealmHelper {
*/
public void store(final Group group) {
ctx.runAsAdmin(() -> {
- try {
- if (groupManager.get(group.getId()) != null) {
+ if (groupManager.get(group.getId()) != null) {
+ try {
groupManager.modify(group);
+ } catch (NotFoundException e) {
+ throw new IllegalStateException("got NotFoundException though group " + group.getName() + " could be loaded", e);
}
- else {
+ } else {
+ try {
groupManager.create(group);
+ } catch (AlreadyExistsException e) {
+ throw new IllegalStateException("got AlreadyExistsException though group " + group.getName() + " could not be loaded", e);
}
}
- catch (GroupException ex) {
- throw new AuthenticationException("could not store group", ex);
- }
});
}
@@ -142,17 +147,20 @@ public final class SyncingRealmHelper {
*/
public void store(final User user) {
ctx.runAsAdmin(() -> {
- try {
- if (userManager.contains(user.getName())) {
+ if (userManager.contains(user.getName())) {
+ try {
userManager.modify(user);
+ } catch (NotFoundException e) {
+ throw new IllegalStateException("got NotFoundException though user " + user.getName() + " could be loaded", e);
}
- else {
+ } else {
+ try {
userManager.create(user);
+ } catch (AlreadyExistsException e) {
+ throw new IllegalStateException("got AlreadyExistsException though user " + user.getName() + " could not be loaded", e);
+
}
}
- catch (UserException ex) {
- throw new AuthenticationException("could not store user", ex);
- }
- });
+ });
+ }
}
-}
diff --git a/scm-core/src/main/java/sonia/scm/template/Viewable.java b/scm-core/src/main/java/sonia/scm/template/Viewable.java
index 8344d2820e..47fd8af57b 100644
--- a/scm-core/src/main/java/sonia/scm/template/Viewable.java
+++ b/scm-core/src/main/java/sonia/scm/template/Viewable.java
@@ -30,9 +30,9 @@
*/
package sonia.scm.template;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
/**
* A viewable holds the path to a template and the context object which is used to render the template. Viewables can
* be used as return type of jax-rs resources.
@@ -81,7 +81,7 @@ public final class Viewable {
@Override
public String toString() {
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("path", path)
.add("context", context)
.toString();
diff --git a/scm-core/src/main/java/sonia/scm/user/User.java b/scm-core/src/main/java/sonia/scm/user/User.java
index 69c5a5732f..778e573c14 100644
--- a/scm-core/src/main/java/sonia/scm/user/User.java
+++ b/scm-core/src/main/java/sonia/scm/user/User.java
@@ -37,20 +37,19 @@ package sonia.scm.user;
import com.github.sdorra.ssp.PermissionObject;
import com.github.sdorra.ssp.StaticPermissions;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.BasicPropertiesAware;
import sonia.scm.ModelObject;
import sonia.scm.util.Util;
import sonia.scm.util.ValidationUtil;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.security.Principal;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.security.Principal;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -59,7 +58,8 @@ import javax.xml.bind.annotation.XmlRootElement;
@StaticPermissions("user")
@XmlRootElement(name = "users")
@XmlAccessorType(XmlAccessType.FIELD)
-public class User extends BasicPropertiesAware implements Principal, ModelObject, PermissionObject
+public class
+User extends BasicPropertiesAware implements Principal, ModelObject, PermissionObject
{
/** Field description */
@@ -259,7 +259,7 @@ public class User extends BasicPropertiesAware implements Principal, ModelObject
: "(not set)";
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("displayName",displayName)
.add("mail", mail)
diff --git a/scm-core/src/main/java/sonia/scm/user/UserAlreadyExistsException.java b/scm-core/src/main/java/sonia/scm/user/UserAlreadyExistsException.java
deleted file mode 100644
index 1c77cb4f86..0000000000
--- a/scm-core/src/main/java/sonia/scm/user/UserAlreadyExistsException.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.user;
-
-/**
- * This {@link Exception} is thrown when trying to create a user that already exists.
- *
- * @author Sebastian Sdorra
- */
-public class UserAlreadyExistsException extends UserException
-{
-
- private static final long serialVersionUID = 9182294539718090814L;
-
- //~--- constructors ---------------------------------------------------------
-
- public UserAlreadyExistsException(User user) {
- super(user.getName() + " user already exists");
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/user/UserException.java b/scm-core/src/main/java/sonia/scm/user/UserException.java
deleted file mode 100644
index b8587d5299..0000000000
--- a/scm-core/src/main/java/sonia/scm/user/UserException.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.user;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public class UserException extends Exception
-{
-
- /** Field description */
- private static final long serialVersionUID = 4147943028529739021L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- */
- public UserException() {}
-
- /**
- * Constructs ...
- *
- *
- * @param message
- */
- public UserException(String message)
- {
- super(message);
- }
-
- /**
- * Constructs ...
- *
- *
- * @param throwable
- */
- public UserException(Throwable throwable)
- {
- super(throwable);
- }
-
- /**
- * Constructs ...
- *
- *
- * @param message
- * @param throwable
- */
- public UserException(String message, Throwable throwable)
- {
- super(message, throwable);
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/user/UserManager.java b/scm-core/src/main/java/sonia/scm/user/UserManager.java
index e21eb761dc..0a705c8d60 100644
--- a/scm-core/src/main/java/sonia/scm/user/UserManager.java
+++ b/scm-core/src/main/java/sonia/scm/user/UserManager.java
@@ -45,7 +45,7 @@ import sonia.scm.search.Searchable;
* @author Sebastian Sdorra
*/
public interface UserManager
- extends Manager, Searchable
+ extends Manager, Searchable
{
/**
diff --git a/scm-core/src/main/java/sonia/scm/user/UserManagerDecorator.java b/scm-core/src/main/java/sonia/scm/user/UserManagerDecorator.java
index 5ea14ca14e..225681f9e6 100644
--- a/scm-core/src/main/java/sonia/scm/user/UserManagerDecorator.java
+++ b/scm-core/src/main/java/sonia/scm/user/UserManagerDecorator.java
@@ -38,17 +38,17 @@ package sonia.scm.user;
import sonia.scm.ManagerDecorator;
import sonia.scm.search.SearchRequest;
-//~--- JDK imports ------------------------------------------------------------
-
import java.util.Collection;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Decorator for {@link UserManager}.
*
* @author Sebastian Sdorra
* @since 1.23
*/
-public class UserManagerDecorator extends ManagerDecorator
+public class UserManagerDecorator extends ManagerDecorator
implements UserManager
{
diff --git a/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java b/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java
deleted file mode 100644
index 82b1c2abb8..0000000000
--- a/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-package sonia.scm.user;
-
-/**
- * The UserNotFoundException is thrown e.g. from the
- * modify method of the {@link UserManager}, if the user does not exists.
- *
- * @author Sebastian Sdorra
- * @since 1.28
- */
-public class UserNotFoundException extends UserException
-{
-
- /** Field description */
- private static final long serialVersionUID = 2560311805598995047L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs a new UserNotFoundException.
- *
- */
- public UserNotFoundException(User user) {
- super("user " + user.getName() + " does not exist");
- }
-}
diff --git a/scm-core/src/main/java/sonia/scm/util/HttpUtil.java b/scm-core/src/main/java/sonia/scm/util/HttpUtil.java
index 30995a0b3c..bc3f4e74cd 100644
--- a/scm-core/src/main/java/sonia/scm/util/HttpUtil.java
+++ b/scm-core/src/main/java/sonia/scm/util/HttpUtil.java
@@ -37,7 +37,7 @@ package sonia.scm.util;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.CharMatcher;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -700,7 +700,7 @@ public final class HttpUtil
{
String value = request.getHeader(header);
- return Objects.firstNonNull(value, defaultValue);
+ return MoreObjects.firstNonNull(value, defaultValue);
}
/**
diff --git a/scm-core/src/main/java/sonia/scm/version/Version.java b/scm-core/src/main/java/sonia/scm/version/Version.java
index 96f7a9ff07..cdc1a222c0 100644
--- a/scm-core/src/main/java/sonia/scm/version/Version.java
+++ b/scm-core/src/main/java/sonia/scm/version/Version.java
@@ -39,10 +39,10 @@ import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ComparisonChain;
-//~--- JDK imports ------------------------------------------------------------
-
import java.util.Locale;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Version object for comparing and parsing versions.
*
diff --git a/scm-core/src/main/java/sonia/scm/web/UserAgent.java b/scm-core/src/main/java/sonia/scm/web/UserAgent.java
index 7efd1bd1c2..e501ac8bdf 100644
--- a/scm-core/src/main/java/sonia/scm/web/UserAgent.java
+++ b/scm-core/src/main/java/sonia/scm/web/UserAgent.java
@@ -36,14 +36,15 @@ package sonia.scm.web;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Charsets;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-import static com.google.common.base.Preconditions.*;
+import java.nio.charset.Charset;
+
+import static com.google.common.base.Preconditions.checkNotNull;
//~--- JDK imports ------------------------------------------------------------
-import java.nio.charset.Charset;
-
/**
* The software agent that is acting on behalf of a user. The user agent
* represents a browser or one of the repository client (svn, git or hg).
@@ -124,7 +125,7 @@ public final class UserAgent
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("browser", browser)
.add("basicAuthenticationCharset", basicAuthenticationCharset)
diff --git a/scm-core/src/main/java/sonia/scm/web/proxy/ProxyConfiguration.java b/scm-core/src/main/java/sonia/scm/web/proxy/ProxyConfiguration.java
index 71e39e13dd..bc30142052 100644
--- a/scm-core/src/main/java/sonia/scm/web/proxy/ProxyConfiguration.java
+++ b/scm-core/src/main/java/sonia/scm/web/proxy/ProxyConfiguration.java
@@ -34,20 +34,19 @@ package sonia.scm.web.proxy;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.net.URL;
-
-import java.util.Collections;
-import java.util.Set;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Set;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -144,7 +143,7 @@ public class ProxyConfiguration
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("url", url)
.add("copyRequestHeaders", copyRequestHeaders)
.add("requestHeaderExcludes", requestHeaderExcludes)
diff --git a/scm-core/src/test/java/sonia/scm/io/DeepCopyTest.java b/scm-core/src/test/java/sonia/scm/io/DeepCopyTest.java
index 31a6185182..0f42e87b0c 100644
--- a/scm-core/src/test/java/sonia/scm/io/DeepCopyTest.java
+++ b/scm-core/src/test/java/sonia/scm/io/DeepCopyTest.java
@@ -34,16 +34,16 @@ package sonia.scm.io;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Objects;
-
import org.junit.Test;
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.io.Serializable;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Unit tests for {@link DeepCopy}.
*
diff --git a/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java b/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java
index 3679a1870b..27ca923902 100644
--- a/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java
+++ b/scm-core/src/test/java/sonia/scm/security/SyncingRealmHelperTest.java
@@ -36,37 +36,35 @@ package sonia.scm.security;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Throwables;
-
-import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
-
+import sonia.scm.AlreadyExistsException;
+import sonia.scm.NotFoundException;
import sonia.scm.group.Group;
-import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.group.GroupNames;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.security.AdministrationContext;
import sonia.scm.web.security.PrivilegedAction;
-import static org.hamcrest.Matchers.*;
+import java.io.IOException;
-import static org.junit.Assert.*;
-
-import static org.mockito.Mockito.*;
+import static org.hamcrest.Matchers.hasItem;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
* Unit tests for {@link SyncingRealmHelper}.
*
@@ -131,11 +129,10 @@ public class SyncingRealmHelperTest {
/**
* Tests {@link SyncingRealmHelper#store(Group)}.
*
- * @throws GroupException
* @throws IOException
*/
@Test
- public void testStoreGroupCreate() throws GroupException, IOException {
+ public void testStoreGroupCreate() throws AlreadyExistsException {
Group group = new Group("unit-test", "heartOfGold");
helper.store(group);
@@ -143,27 +140,21 @@ public class SyncingRealmHelperTest {
}
/**
- * Tests {@link SyncingRealmHelper#store(Group)} with thrown {@link GroupException}.
- *
- * @throws GroupException
- * @throws IOException
+ * Tests {@link SyncingRealmHelper#store(Group)}.
*/
- @Test(expected = AuthenticationException.class)
- public void testStoreGroupFailure() throws GroupException, IOException {
+ @Test(expected = IllegalStateException.class)
+ public void testStoreGroupFailure() throws AlreadyExistsException {
Group group = new Group("unit-test", "heartOfGold");
- doThrow(GroupException.class).when(groupManager).create(group);
+ doThrow(AlreadyExistsException.class).when(groupManager).create(group);
helper.store(group);
}
/**
* Tests {@link SyncingRealmHelper#store(Group)} with an existing group.
- *
- * @throws GroupException
- * @throws IOException
*/
@Test
- public void testStoreGroupModify() throws GroupException, IOException {
+ public void testStoreGroupModify() throws NotFoundException {
Group group = new Group("unit-test", "heartOfGold");
when(groupManager.get("heartOfGold")).thenReturn(group);
@@ -175,11 +166,10 @@ public class SyncingRealmHelperTest {
/**
* Tests {@link SyncingRealmHelper#store(User)}.
*
- * @throws UserException
* @throws IOException
*/
@Test
- public void testStoreUserCreate() throws UserException, IOException {
+ public void testStoreUserCreate() throws AlreadyExistsException {
User user = new User("tricia");
helper.store(user);
@@ -187,27 +177,21 @@ public class SyncingRealmHelperTest {
}
/**
- * Tests {@link SyncingRealmHelper#store(User)} with a thrown {@link UserException}.
- *
- * @throws UserException
- * @throws IOException
+ * Tests {@link SyncingRealmHelper#store(User)} with a thrown {@link AlreadyExistsException}.
*/
- @Test(expected = AuthenticationException.class)
- public void testStoreUserFailure() throws UserException, IOException {
+ @Test(expected = IllegalStateException.class)
+ public void testStoreUserFailure() throws AlreadyExistsException {
User user = new User("tricia");
- doThrow(UserException.class).when(userManager).create(user);
+ doThrow(AlreadyExistsException.class).when(userManager).create(user);
helper.store(user);
}
/**
* Tests {@link SyncingRealmHelper#store(User)} with an existing user.
- *
- * @throws UserException
- * @throws IOException
*/
@Test
- public void testStoreUserModify() throws UserException, IOException {
+ public void testStoreUserModify() throws NotFoundException {
when(userManager.contains("tricia")).thenReturn(Boolean.TRUE);
User user = new User("tricia");
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java
index 87f96f850f..c3436c2395 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java
@@ -38,25 +38,21 @@ package sonia.scm.repository;
import com.google.common.base.Strings;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sonia.scm.SCMContextProvider;
import sonia.scm.io.FileSystem;
import sonia.scm.plugin.Extension;
import sonia.scm.repository.spi.GitRepositoryServiceProvider;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.schedule.Scheduler;
+import sonia.scm.schedule.Task;
+import sonia.scm.store.ConfigurationStoreFactory;
import java.io.File;
import java.io.IOException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import sonia.scm.SCMContextProvider;
-import sonia.scm.schedule.Scheduler;
-import sonia.scm.schedule.Task;
-import sonia.scm.store.ConfigurationStoreFactory;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -185,20 +181,8 @@ public class GitRepositoryHandler
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param repository
- * @param directory
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- protected void create(Repository repository, File directory)
- throws RepositoryException, IOException
- {
+ protected void create(Repository repository, File directory) throws IOException {
try (org.eclipse.jgit.lib.Repository gitRepository = build(directory)) {
gitRepository.create(true);
}
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java
index 1538269ee1..7e145f2dd9 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java
@@ -39,7 +39,6 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
-
import org.eclipse.jgit.api.FetchCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
@@ -54,23 +53,19 @@ import org.eclipse.jgit.transport.FetchResult;
import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.util.FS;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.util.HttpUtil;
import sonia.scm.util.Util;
+import sonia.scm.web.GitUserAgentProvider;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
-
import java.util.Map;
import java.util.concurrent.TimeUnit;
-import javax.servlet.http.HttpServletRequest;
-import sonia.scm.web.GitUserAgentProvider;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -192,22 +187,7 @@ public final class GitUtil
return tags;
}
- /**
- * Method description
- *
- *
- * @param git
- * @param directory
- * @param remoteRepository
- *
- * @return
- *
- * @throws RepositoryException
- */
- public static FetchResult fetch(Git git, File directory,
- Repository remoteRepository)
- throws RepositoryException
- {
+ public static FetchResult fetch(Git git, File directory, Repository remoteRepository) {
try
{
FetchCommand fetch = git.fetch();
@@ -220,7 +200,7 @@ public final class GitUtil
}
catch (GitAPIException ex)
{
- throw new RepositoryException("could not fetch", ex);
+ throw new InternalRepositoryException("could not fetch", ex);
}
}
@@ -294,7 +274,7 @@ public final class GitUtil
{
if (walk != null)
{
- walk.close();;
+ walk.close();
}
}
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitIncomingOutgoingCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitIncomingOutgoingCommand.java
index aed1917110..e90a1c11ed 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitIncomingOutgoingCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitIncomingOutgoingCommand.java
@@ -36,28 +36,25 @@ package sonia.scm.repository.spi;
import com.google.common.collect.Lists;
import com.google.common.io.Closeables;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.GitChangesetConverter;
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.GitUtil;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.List;
import java.util.Map.Entry;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -117,21 +114,7 @@ public abstract class AbstractGitIncomingOutgoingCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- protected ChangesetPagingResult getIncomingOrOutgoingChangesets(
- PagedRemoteCommandRequest request)
- throws IOException, RepositoryException
- {
+ protected ChangesetPagingResult getIncomingOrOutgoingChangesets(PagedRemoteCommandRequest request) throws IOException {
Repository remoteRepository = request.getRemoteRepository();
Git git = Git.wrap(open());
@@ -141,8 +124,7 @@ public abstract class AbstractGitIncomingOutgoingCommand
ObjectId localId = getDefaultBranch(git.getRepository());
ObjectId remoteId = null;
- Ref remoteBranch = getRemoteBranch(git.getRepository(), localId,
- remoteRepository);
+ Ref remoteBranch = getRemoteBranch(git.getRepository(), localId, remoteRepository);
if (remoteBranch != null)
{
@@ -178,7 +160,7 @@ public abstract class AbstractGitIncomingOutgoingCommand
}
catch (Exception ex)
{
- throw new RepositoryException("could not execute incoming command", ex);
+ throw new InternalRepositoryException("could not execute incoming command", ex);
}
finally
{
@@ -191,23 +173,7 @@ public abstract class AbstractGitIncomingOutgoingCommand
return new ChangesetPagingResult(changesets.size(), changesets);
}
- /**
- * Method description
- *
- *
- * @param repository
- * @param local
- * @param remoteRepository
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- private Ref getRemoteBranch(org.eclipse.jgit.lib.Repository repository,
- ObjectId local, Repository remoteRepository)
- throws IOException, RepositoryException
- {
+ private Ref getRemoteBranch(org.eclipse.jgit.lib.Repository repository, ObjectId local, Repository remoteRepository) throws IOException {
Ref ref = null;
if (local != null)
@@ -236,7 +202,7 @@ public abstract class AbstractGitIncomingOutgoingCommand
{
if (ref != null)
{
- throw new RepositoryException("could not find remote branch");
+ throw new InternalRepositoryException("could not find remote branch");
}
ref = e.getValue();
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitPushOrPullCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitPushOrPullCommand.java
index 764dde47f3..75050c26ea 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitPushOrPullCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitPushOrPullCommand.java
@@ -37,28 +37,23 @@ package sonia.scm.repository.spi;
import com.google.common.base.Preconditions;
import com.google.common.collect.Iterables;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.transport.PushResult;
import org.eclipse.jgit.transport.RemoteRefUpdate;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.GitUtil;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.InternalRepositoryException;
import java.io.File;
-import java.io.IOException;
-
import java.util.Collection;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -94,20 +89,7 @@ public abstract class AbstractGitPushOrPullCommand extends AbstractGitCommand
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- * @param source
- * @param remoteUrl
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- protected long push(Repository source, String remoteUrl)
- throws IOException, RepositoryException
- {
+ protected long push(Repository source, String remoteUrl) {
Git git = Git.wrap(source);
org.eclipse.jgit.api.PushCommand push = git.push();
@@ -132,7 +114,7 @@ public abstract class AbstractGitPushOrPullCommand extends AbstractGitCommand
}
catch (Exception ex)
{
- throw new RepositoryException("could not execute push/pull command", ex);
+ throw new InternalRepositoryException("could not execute push/pull command", ex);
}
return counter;
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBlameCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBlameCommand.java
index c797fd70eb..f50f245963 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBlameCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBlameCommand.java
@@ -37,30 +37,26 @@ package sonia.scm.repository.spi;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
import sonia.scm.repository.GitUtil;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Person;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.ArrayList;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -76,15 +72,6 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
//~--- constructors ---------------------------------------------------------
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
public GitBlameCommand(GitContext context, Repository repository)
{
super(context, repository);
@@ -92,20 +79,9 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
public BlameResult getBlameResult(BlameCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
if (logger.isDebugEnabled())
{
@@ -132,7 +108,7 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
if (gitBlameResult == null)
{
- throw new RepositoryException(
+ throw new InternalRepositoryException(
"could not create blame result for path ".concat(
request.getPath()));
}
@@ -174,7 +150,7 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
}
catch (GitAPIException ex)
{
- throw new RepositoryException("could not create blame view", ex);
+ throw new InternalRepositoryException("could not create blame view", ex);
}
return result;
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java
index df32c2b5eb..0cc47100de 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java
@@ -36,22 +36,19 @@ package sonia.scm.repository.spi;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Ref;
-
import sonia.scm.repository.Branch;
import sonia.scm.repository.GitUtil;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -74,18 +71,8 @@ public class GitBranchesCommand extends AbstractGitCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public List getBranches() throws RepositoryException, IOException
- {
+ public List getBranches() throws IOException {
List branches = null;
Git git = new Git(open());
@@ -115,7 +102,7 @@ public class GitBranchesCommand extends AbstractGitCommand
}
catch (GitAPIException ex)
{
- throw new RepositoryException("could not read branches", ex);
+ throw new InternalRepositoryException("could not read branches", ex);
}
return branches;
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java
index 72ec3f73e7..f194796bdc 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java
@@ -37,7 +37,6 @@ package sonia.scm.repository.spi;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
@@ -49,29 +48,25 @@ import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilter;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
import sonia.scm.repository.GitSubModuleParser;
import sonia.scm.repository.GitUtil;
import sonia.scm.repository.PathNotFoundException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.SubRepository;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import sonia.scm.util.IOUtil;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -105,22 +100,10 @@ public class GitBrowseCommand extends AbstractGitCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
public BrowserResult getBrowserResult(BrowseCommandRequest request)
- throws IOException, RepositoryException
- {
+ throws IOException, RevisionNotFoundException {
logger.debug("try to create browse result for {}", request);
BrowserResult result;
@@ -174,8 +157,7 @@ public class GitBrowseCommand extends AbstractGitCommand
*/
private FileObject createFileObject(org.eclipse.jgit.lib.Repository repo,
BrowseCommandRequest request, ObjectId revId, TreeWalk treeWalk)
- throws IOException, RepositoryException
- {
+ throws IOException, RevisionNotFoundException {
FileObject file;
try
@@ -283,24 +265,9 @@ public class GitBrowseCommand extends AbstractGitCommand
return result;
}
- /**
- * Method description
- *
- *
- * @param repo
- * @param request
- * @param revId
- * @param path
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
private BrowserResult getResult(org.eclipse.jgit.lib.Repository repo,
BrowseCommandRequest request, ObjectId revId)
- throws IOException, RepositoryException
- {
+ throws IOException, RevisionNotFoundException {
BrowserResult result = null;
RevWalk revWalk = null;
TreeWalk treeWalk = null;
@@ -393,24 +360,11 @@ public class GitBrowseCommand extends AbstractGitCommand
return result;
}
- /**
- * Method description
- *
- *
- * @param repo
- * @param revision
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@SuppressWarnings("unchecked")
private Map getSubRepositories(org.eclipse.jgit.lib.Repository repo,
ObjectId revision)
- throws IOException, RepositoryException
- {
+ throws IOException, RevisionNotFoundException {
if (logger.isDebugEnabled())
{
logger.debug("read submodules of {} at {}", repository.getName(),
@@ -435,8 +389,7 @@ public class GitBrowseCommand extends AbstractGitCommand
private SubRepository getSubRepository(org.eclipse.jgit.lib.Repository repo,
ObjectId revId, String path)
- throws IOException, RepositoryException
- {
+ throws IOException, RevisionNotFoundException {
Map subRepositories = subrepositoryCache.get(revId);
if (subRepositories == null)
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitCatCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitCatCommand.java
index c451dd8614..4b05098d03 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitCatCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitCatCommand.java
@@ -46,7 +46,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.repository.GitUtil;
import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.util.Util;
@@ -66,7 +65,7 @@ public class GitCatCommand extends AbstractGitCommand implements CatCommand {
}
@Override
- public void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, RepositoryException {
+ public void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, PathNotFoundException, RevisionNotFoundException {
logger.debug("try to read content for {}", request);
try (ClosableObjectLoaderContainer closableObjectLoaderContainer = getLoader(request)) {
closableObjectLoaderContainer.objectLoader.copyTo(output);
@@ -74,24 +73,24 @@ public class GitCatCommand extends AbstractGitCommand implements CatCommand {
}
@Override
- public InputStream getCatResultStream(CatCommandRequest request) throws IOException, RepositoryException {
+ public InputStream getCatResultStream(CatCommandRequest request) throws IOException, PathNotFoundException, RevisionNotFoundException {
logger.debug("try to read content for {}", request);
return new InputStreamWrapper(getLoader(request));
}
- void getContent(org.eclipse.jgit.lib.Repository repo, ObjectId revId, String path, OutputStream output) throws IOException, RepositoryException {
+ void getContent(org.eclipse.jgit.lib.Repository repo, ObjectId revId, String path, OutputStream output) throws IOException, PathNotFoundException, RevisionNotFoundException {
try (ClosableObjectLoaderContainer closableObjectLoaderContainer = getLoader(repo, revId, path)) {
closableObjectLoaderContainer.objectLoader.copyTo(output);
}
}
- private ClosableObjectLoaderContainer getLoader(CatCommandRequest request) throws IOException, RepositoryException {
+ private ClosableObjectLoaderContainer getLoader(CatCommandRequest request) throws IOException, PathNotFoundException, RevisionNotFoundException {
org.eclipse.jgit.lib.Repository repo = open();
ObjectId revId = getCommitOrDefault(repo, request.getRevision());
return getLoader(repo, revId, request.getPath());
}
- private ClosableObjectLoaderContainer getLoader(Repository repo, ObjectId revId, String path) throws IOException, RepositoryException {
+ private ClosableObjectLoaderContainer getLoader(Repository repo, ObjectId revId, String path) throws IOException, PathNotFoundException, RevisionNotFoundException {
TreeWalk treeWalk = new TreeWalk(repo);
treeWalk.setRecursive(Util.nonNull(path).contains("/"));
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitIncomingCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitIncomingCommand.java
index 9bd982a909..a1c1a7e652 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitIncomingCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitIncomingCommand.java
@@ -36,16 +36,14 @@ package sonia.scm.repository.spi;
import org.eclipse.jgit.api.LogCommand;
import org.eclipse.jgit.lib.ObjectId;
-
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -70,22 +68,8 @@ public class GitIncomingCommand extends AbstractGitIncomingOutgoingCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public ChangesetPagingResult getIncomingChangesets(
- IncomingCommandRequest request)
- throws IOException, RepositoryException
- {
+ public ChangesetPagingResult getIncomingChangesets(IncomingCommandRequest request) throws IOException {
return getIncomingOrOutgoingChangesets(request);
}
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java
index 0643035e7a..52625ff6c4 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java
@@ -37,7 +37,6 @@ package sonia.scm.repository.spi;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
-
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -45,25 +44,22 @@ import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilter;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.GitChangesetConverter;
import sonia.scm.repository.GitUtil;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.util.IOUtil;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -165,7 +161,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
@Override
@SuppressWarnings("unchecked")
public ChangesetPagingResult getChangesets(LogCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
if (logger.isDebugEnabled())
{
@@ -268,7 +264,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
}
catch (Exception ex)
{
- throw new RepositoryException("could not create change log", ex);
+ throw new InternalRepositoryException("could not create change log", ex);
}
finally
{
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitOutgoingCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitOutgoingCommand.java
index 7b40a60a08..2a1f805cf6 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitOutgoingCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitOutgoingCommand.java
@@ -36,16 +36,14 @@ package sonia.scm.repository.spi;
import org.eclipse.jgit.api.LogCommand;
import org.eclipse.jgit.lib.ObjectId;
-
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -84,7 +82,7 @@ public class GitOutgoingCommand extends AbstractGitIncomingOutgoingCommand
@Override
public ChangesetPagingResult getOutgoingChangesets(
OutgoingCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
return getIncomingOrOutgoingChangesets(request);
}
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPullCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPullCommand.java
index ec0f468a57..a7b341ff5d 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPullCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPullCommand.java
@@ -37,7 +37,6 @@ package sonia.scm.repository.spi;
import com.google.common.base.Preconditions;
import com.google.common.collect.Iterables;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.ObjectId;
@@ -46,23 +45,20 @@ import org.eclipse.jgit.transport.FetchResult;
import org.eclipse.jgit.transport.RefSpec;
import org.eclipse.jgit.transport.TagOpt;
import org.eclipse.jgit.transport.TrackingRefUpdate;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.GitUtil;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PullResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
-
import java.net.URL;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -109,7 +105,7 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
*/
@Override
public PullResponse pull(PullCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
PullResponse response;
Repository sourceRepository = request.getRemoteRepository();
@@ -130,21 +126,7 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
return response;
}
- /**
- * Method description
- *
- *
- * @param git
- * @param result
- * @param fetch
- *
- * @return
- *
- * @throws RepositoryException
- */
- private PullResponse convert(Git git, FetchResult fetch)
- throws RepositoryException
- {
+ private PullResponse convert(Git git, FetchResult fetch) {
long counter = 0l;
for (TrackingRefUpdate tru : fetch.getTrackingRefUpdates())
@@ -212,19 +194,8 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
return counter;
}
- /**
- * Method description
- *
- *
- * @param sourceRepository
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
private PullResponse pullFromScmRepository(Repository sourceRepository)
- throws IOException, RepositoryException
+ throws IOException
{
File sourceDirectory = handler.getDirectory(sourceRepository);
@@ -256,19 +227,8 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
return response;
}
- /**
- * Method description
- *
- *
- * @param url
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
private PullResponse pullFromUrl(URL url)
- throws IOException, RepositoryException
+ throws IOException
{
logger.debug("pull changes from {} to {}", url, repository.getId());
@@ -289,7 +249,7 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
}
catch (GitAPIException ex)
{
- throw new RepositoryException("error durring pull", ex);
+ throw new InternalRepositoryException("error durring pull", ex);
}
return response;
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPushCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPushCommand.java
index c64465194a..193d68d7a5 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPushCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitPushCommand.java
@@ -37,16 +37,14 @@ package sonia.scm.repository.spi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PushResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -91,7 +89,7 @@ public class GitPushCommand extends AbstractGitPushOrPullCommand
*/
@Override
public PushResponse push(PushCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
String remoteUrl = getRemoteUrl(request);
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitTagsCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitTagsCommand.java
index 14583ac7dc..02fee3cef0 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitTagsCommand.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitTagsCommand.java
@@ -37,27 +37,23 @@ package sonia.scm.repository.spi;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
-
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.GitUtil;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.Tag;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -79,17 +75,8 @@ public class GitTagsCommand extends AbstractGitCommand implements TagsCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public List getTags() throws IOException, RepositoryException
+ public List getTags() throws IOException
{
List tags = null;
@@ -108,7 +95,7 @@ public class GitTagsCommand extends AbstractGitCommand implements TagsCommand
}
catch (GitAPIException ex)
{
- throw new RepositoryException("could not read tags from repository", ex);
+ throw new InternalRepositoryException("could not read tags from repository", ex);
}
finally
{
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java
index f8fa5c8200..162e3db489 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryViewer.java
@@ -40,17 +40,14 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.io.Closeables;
import com.google.inject.Inject;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.Branch;
import sonia.scm.repository.Branches;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.Person;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.RepositoryService;
import sonia.scm.repository.api.RepositoryServiceFactory;
import sonia.scm.template.Template;
@@ -60,16 +57,14 @@ import sonia.scm.util.HttpUtil;
import sonia.scm.util.IOUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Writer;
-
import java.util.Date;
import java.util.Iterator;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -113,21 +108,9 @@ public class GitRepositoryViewer
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- *
- * @param request
- * @param response
- * @param repository
- *
- * @throws IOException
- * @throws RepositoryException
- */
public void handleRequest(HttpServletRequest request,
HttpServletResponse response, Repository repository)
- throws RepositoryException, IOException
+ throws IOException
{
String baseUrl = HttpUtil.getCompleteUrl(request);
@@ -171,7 +154,7 @@ public class GitRepositoryViewer
* @throws RepositoryException
*/
private BranchesModel createBranchesModel(Repository repository)
- throws RepositoryException, IOException
+ throws IOException
{
BranchesModel model = null;
RepositoryService service = null;
diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java
index ebf4173ad5..5612a64652 100644
--- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java
+++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java
@@ -42,7 +42,6 @@ import org.eclipse.jgit.http.server.GitServlet;
import org.eclipse.jgit.lfs.lib.Constants;
import org.slf4j.Logger;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryProvider;
import sonia.scm.repository.RepositoryRequestListenerUtil;
import sonia.scm.util.HttpUtil;
@@ -214,7 +213,7 @@ public class ScmGitServlet extends GitServlet
private void handleBrowserRequest(HttpServletRequest request, HttpServletResponse response, Repository repository) throws ServletException, IOException {
try {
repositoryViewer.handleRequest(request, response, repository);
- } catch (RepositoryException | IOException ex) {
+ } catch (IOException ex) {
throw new ServletException("could not create repository view", ex);
}
}
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java
index d049447d7f..d0fd627046 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java
@@ -35,17 +35,16 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.GitConstants;
import java.io.IOException;
-import sonia.scm.repository.GitConstants;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Unit tests for {@link GitBlameCommand}.
@@ -59,10 +58,10 @@ public class GitBlameCommandTest extends AbstractGitCommandTestBase
* Tests blame command with default branch.
*
* @throws IOException
- * @throws RepositoryException
+ * @
*/
@Test
- public void testDefaultBranch() throws IOException, RepositoryException {
+ public void testDefaultBranch() throws IOException {
// without default branch, the repository head should be used
BlameCommandRequest request = new BlameCommandRequest();
request.setPath("a.txt");
@@ -89,7 +88,7 @@ public class GitBlameCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetBlameResult() throws IOException, RepositoryException
+ public void testGetBlameResult() throws IOException
{
BlameCommandRequest request = new BlameCommandRequest();
@@ -124,7 +123,7 @@ public class GitBlameCommandTest extends AbstractGitCommandTestBase
*/
@Test
public void testGetBlameResultWithRevision()
- throws IOException, RepositoryException
+ throws IOException
{
BlameCommandRequest request = new BlameCommandRequest();
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java
index 727034b9ca..d71c85a152 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java
@@ -36,19 +36,20 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.GitConstants;
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
-
import java.util.List;
-import sonia.scm.repository.GitConstants;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Unit tests for {@link GitBrowseCommand}.
@@ -60,12 +61,9 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase
/**
* Test browse command with default branch.
- *
- * @throws IOException
- * @throws RepositoryException
*/
@Test
- public void testDefaultBranch() throws IOException, RepositoryException {
+ public void testDefaultBranch() throws IOException, RevisionNotFoundException {
// without default branch, the repository head should be used
BrowserResult result = createCommand().getBrowserResult(new BrowseCommandRequest());
assertNotNull(result);
@@ -94,16 +92,8 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase
assertEquals("c", foList.get(1).getName());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBrowse() throws IOException, RepositoryException
- {
+ public void testBrowse() throws IOException, RevisionNotFoundException {
BrowserResult result =
createCommand().getBrowserResult(new BrowseCommandRequest());
@@ -143,16 +133,8 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase
assertEquals("c", c.getPath());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBrowseSubDirectory() throws IOException, RepositoryException
- {
+ public void testBrowseSubDirectory() throws IOException, RevisionNotFoundException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setPath("c");
@@ -198,16 +180,8 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase
checkDate(e.getLastModified());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testRecusive() throws IOException, RepositoryException
- {
+ public void testRecusive() throws IOException, RevisionNotFoundException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setRecursive(true);
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java
index c23db0873b..3611c9c636 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java
@@ -35,7 +35,6 @@ package sonia.scm.repository.spi;
import org.junit.Test;
import sonia.scm.repository.GitConstants;
import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import java.io.ByteArrayOutputStream;
@@ -54,7 +53,7 @@ import static org.junit.Assert.assertEquals;
public class GitCatCommandTest extends AbstractGitCommandTestBase {
@Test
- public void testDefaultBranch() throws IOException, RepositoryException {
+ public void testDefaultBranch() throws IOException, PathNotFoundException, RevisionNotFoundException {
// without default branch, the repository head should be used
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -67,7 +66,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
}
@Test
- public void testCat() throws IOException, RepositoryException {
+ public void testCat() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -76,7 +75,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
}
@Test
- public void testSimpleCat() throws IOException, RepositoryException {
+ public void testSimpleCat() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
@@ -84,7 +83,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
}
@Test(expected = PathNotFoundException.class)
- public void testUnknownFile() throws IOException, RepositoryException {
+ public void testUnknownFile() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("unknown");
@@ -92,7 +91,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
}
@Test(expected = RevisionNotFoundException.class)
- public void testUnknownRevision() throws IOException, RepositoryException {
+ public void testUnknownRevision() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setRevision("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
@@ -101,7 +100,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
}
@Test
- public void testSimpleStream() throws IOException, RepositoryException {
+ public void testSimpleStream() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
@@ -114,7 +113,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase {
catResultStream.close();
}
- private String execute(CatCommandRequest request) throws IOException, RepositoryException {
+ private String execute(CatCommandRequest request) throws IOException, PathNotFoundException, RevisionNotFoundException {
String content = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitIncomingCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitIncomingCommandTest.java
index 7cfe33f858..6aa852b12c 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitIncomingCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitIncomingCommandTest.java
@@ -36,18 +36,16 @@ package sonia.scm.repository.spi;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
-
+import org.junit.Ignore;
import org.junit.Test;
-
import sonia.scm.repository.ChangesetPagingResult;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-import org.junit.Ignore;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -67,7 +65,7 @@ public class GitIncomingCommandTest
*/
@Test
public void testGetIncomingChangesets()
- throws IOException, GitAPIException, RepositoryException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
@@ -101,7 +99,7 @@ public class GitIncomingCommandTest
*/
@Test
public void testGetIncomingChangesetsWithAllreadyPullChangesets()
- throws IOException, GitAPIException, RepositoryException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
@@ -138,7 +136,7 @@ public class GitIncomingCommandTest
*/
@Test
public void testGetIncomingChangesetsWithEmptyRepository()
- throws IOException, RepositoryException
+ throws IOException
{
GitIncomingCommand cmd = createCommand();
IncomingCommandRequest request = new IncomingCommandRequest();
@@ -163,7 +161,7 @@ public class GitIncomingCommandTest
@Test
@Ignore
public void testGetIncomingChangesetsWithUnrelatedRepository()
- throws IOException, RepositoryException, GitAPIException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java
index c5af70e3a9..1d78485ae3 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java
@@ -35,22 +35,23 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
+import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.Test;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
+import sonia.scm.repository.GitConstants;
import sonia.scm.repository.Modifications;
-import sonia.scm.repository.RepositoryException;
-
-import static org.hamcrest.Matchers.*;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import sonia.scm.repository.GitConstants;
+
+import static org.hamcrest.Matchers.contains;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
/**
* Unit tests for {@link GitLogCommand}.
@@ -65,10 +66,10 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
*
* @throws IOException
* @throws GitAPIException
- * @throws RepositoryException
+ * @
*/
@Test
- public void testGetDefaultBranch() throws IOException, GitAPIException, RepositoryException {
+ public void testGetDefaultBranch() throws IOException, GitAPIException {
// without default branch, the repository head should be used
ChangesetPagingResult result = createCommand().getChangesets(new LogCommandRequest());
@@ -99,7 +100,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetAll() throws IOException, RepositoryException
+ public void testGetAll() throws IOException
{
ChangesetPagingResult result =
createCommand().getChangesets(new LogCommandRequest());
@@ -117,7 +118,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetAllByPath() throws IOException, RepositoryException
+ public void testGetAllByPath() throws IOException
{
LogCommandRequest request = new LogCommandRequest();
@@ -140,7 +141,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetAllWithLimit() throws IOException, RepositoryException
+ public void testGetAllWithLimit() throws IOException
{
LogCommandRequest request = new LogCommandRequest();
@@ -171,7 +172,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetAllWithPaging() throws IOException, RepositoryException
+ public void testGetAllWithPaging() throws IOException
{
LogCommandRequest request = new LogCommandRequest();
@@ -231,7 +232,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase
* @throws RepositoryException
*/
@Test
- public void testGetRange() throws IOException, RepositoryException
+ public void testGetRange() throws IOException
{
LogCommandRequest request = new LogCommandRequest();
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitOutgoingCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitOutgoingCommandTest.java
index 28be6f7df0..58f70109ef 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitOutgoingCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitOutgoingCommandTest.java
@@ -37,19 +37,16 @@ package sonia.scm.repository.spi;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
-
import org.junit.Test;
-
import sonia.scm.repository.ChangesetPagingResult;
-import sonia.scm.repository.RepositoryException;
+
+import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
* Unit tests for {@link OutgoingCommand}.
*
@@ -68,7 +65,7 @@ public class GitOutgoingCommandTest extends AbstractRemoteCommandTestBase
*/
@Test
public void testGetOutgoingChangesets()
- throws IOException, GitAPIException, RepositoryException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
@@ -102,7 +99,7 @@ public class GitOutgoingCommandTest extends AbstractRemoteCommandTestBase
*/
@Test
public void testGetOutgoingChangesetsWithAllreadyPushedChanges()
- throws IOException, GitAPIException, RepositoryException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
@@ -142,7 +139,7 @@ public class GitOutgoingCommandTest extends AbstractRemoteCommandTestBase
*/
@Test
public void testGetOutgoingChangesetsWithEmptyRepository()
- throws IOException, RepositoryException
+ throws IOException
{
GitOutgoingCommand cmd = createCommand();
OutgoingCommandRequest request = new OutgoingCommandRequest();
diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitPushCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitPushCommandTest.java
index bf82193e84..91fad57880 100644
--- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitPushCommandTest.java
+++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitPushCommandTest.java
@@ -37,20 +37,17 @@ package sonia.scm.repository.spi;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
-
import org.junit.Test;
-
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PushResponse;
-import static org.junit.Assert.*;
+import java.io.IOException;
+import java.util.Iterator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
-import java.util.Iterator;
-
/**
*
* @author Sebastian Sdorra
@@ -68,7 +65,7 @@ public class GitPushCommandTest extends AbstractRemoteCommandTestBase
*/
@Test
public void testPush()
- throws IOException, GitAPIException, RepositoryException
+ throws IOException, GitAPIException
{
write(outgoing, outgoingDirectory, "a.txt", "content of a.txt");
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
index 22a64fe5b2..19cfd37665 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/AbstractHgHandler.java
@@ -37,18 +37,15 @@ package sonia.scm.repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.SCMContext;
import sonia.scm.util.IOUtil;
import sonia.scm.util.Util;
import sonia.scm.web.HgUtil;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.xml.bind.JAXBException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -56,7 +53,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import javax.xml.bind.JAXBException;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -257,45 +254,15 @@ public class AbstractHgHandler
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param resultType
- * @param script
- * @param
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- protected T getResultFromScript(Class resultType,
- HgPythonScript script)
- throws IOException, RepositoryException
- {
+ protected T getResultFromScript(Class resultType, HgPythonScript script) throws IOException {
return getResultFromScript(resultType, script,
new HashMap());
}
- /**
- * Method description
- *
- *
- * @param resultType
- * @param script
- * @param extraEnv
- * @param
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@SuppressWarnings("unchecked")
protected T getResultFromScript(Class resultType,
HgPythonScript script, Map extraEnv)
- throws IOException, RepositoryException
+ throws IOException
{
Process p = createScriptProcess(script, extraEnv);
@@ -305,7 +272,7 @@ public class AbstractHgHandler
} catch (JAXBException ex) {
logger.error("could not parse result", ex);
- throw new RepositoryException("could not parse result", ex);
+ throw new InternalRepositoryException("could not parse result", ex);
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java
index aa0e4156ae..057bd173d9 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java
@@ -36,31 +36,25 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import com.github.legman.Subscribe;
-
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.inject.Inject;
import com.google.inject.OutOfScopeException;
import com.google.inject.Provider;
import com.google.inject.ProvisionException;
import com.google.inject.Singleton;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.config.ScmConfiguration;
-
+import sonia.scm.config.ScmConfigurationChangedEvent;
+import sonia.scm.net.ahc.AdvancedHttpClient;
import sonia.scm.util.HttpUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
-
import java.util.UUID;
-import javax.servlet.http.HttpServletRequest;
-import sonia.scm.config.ScmConfigurationChangedEvent;
-import sonia.scm.net.ahc.AdvancedHttpClient;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -273,7 +267,7 @@ public class HgHookManager
{
//J-
return HttpUtil.getUriWithoutEndSeperator(
- Objects.firstNonNull(
+ MoreObjects.firstNonNull(
configuration.getBaseUrl(),
"http://localhost:8080/scm"
)
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java
index 30b5063c11..ad61926eef 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java
@@ -37,18 +37,17 @@ package sonia.scm.repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.io.INIConfiguration;
import sonia.scm.io.INIConfigurationReader;
import sonia.scm.io.INIConfigurationWriter;
import sonia.scm.io.INISection;
import sonia.scm.util.ValidationUtil;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -80,22 +79,10 @@ public class HgImportHandler extends AbstactImportHandler
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param repositoryDirectory
- * @param repositoryName
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
protected Repository createRepository(File repositoryDirectory,
String repositoryName)
- throws IOException, RepositoryException
+ throws IOException
{
Repository repository = super.createRepository(repositoryDirectory,
repositoryName);
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java
index aad546f651..39100b8cfa 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java
@@ -38,10 +38,8 @@ package sonia.scm.repository;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.ConfigurationException;
import sonia.scm.SCMContextProvider;
import sonia.scm.installer.HgInstaller;
@@ -55,23 +53,21 @@ import sonia.scm.io.INIConfigurationWriter;
import sonia.scm.io.INISection;
import sonia.scm.plugin.Extension;
import sonia.scm.repository.spi.HgRepositoryServiceProvider;
+import sonia.scm.store.ConfigurationStoreFactory;
import sonia.scm.util.IOUtil;
import sonia.scm.util.SystemUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-
import java.text.MessageFormat;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import sonia.scm.store.ConfigurationStoreFactory;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -430,11 +426,10 @@ public class HgRepositoryHandler
* @param directory
*
* @throws IOException
- * @throws RepositoryException
*/
@Override
protected void postCreate(Repository repository, File directory)
- throws IOException, RepositoryException
+ throws IOException
{
File hgrcFile = new File(directory, PATH_HGRC);
INIConfiguration hgrc = new INIConfiguration();
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersion.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersion.java
index afe6a17ca1..097046e7f7 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersion.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersion.java
@@ -34,14 +34,15 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -100,7 +101,7 @@ public class HgVersion
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("mercurial", mercurial)
.add("python", python)
.toString();
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersionHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersionHandler.java
index e52eee2c8a..26c9095ead 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersionHandler.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgVersionHandler.java
@@ -44,15 +44,6 @@ import java.io.IOException;
public class HgVersionHandler extends AbstractHgHandler
{
- /**
- * Constructs ...
- *
- *
- * @param handler
- * @param jaxbContext
- * @param context
- * @param directory
- */
public HgVersionHandler(HgRepositoryHandler handler, HgContext context,
File directory)
{
@@ -61,17 +52,7 @@ public class HgVersionHandler extends AbstractHgHandler
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- public HgVersion getVersion() throws IOException, RepositoryException
- {
+ public HgVersion getVersion() throws IOException {
return getResultFromScript(HgVersion.class, HgPythonScript.VERSION);
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBlameCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBlameCommand.java
index be5dbeda04..96a57ece65 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBlameCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBlameCommand.java
@@ -38,26 +38,21 @@ package sonia.scm.repository.spi;
import com.aragost.javahg.Changeset;
import com.aragost.javahg.commands.AnnotateCommand;
import com.aragost.javahg.commands.AnnotateLine;
-
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
import sonia.scm.repository.Person;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.web.HgUtil;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -87,20 +82,9 @@ public class HgBlameCommand extends AbstractCommand implements BlameCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
public BlameResult getBlameResult(BlameCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
if (logger.isDebugEnabled())
{
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java
index 64d544c5ed..5c38205393 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java
@@ -36,20 +36,15 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.Changeset;
-
import com.google.common.base.Function;
import com.google.common.collect.Lists;
-
import sonia.scm.repository.Branch;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -72,18 +67,8 @@ public class HgBranchesCommand extends AbstractCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public List getBranches() throws RepositoryException, IOException
- {
+ public List getBranches() {
List hgBranches =
com.aragost.javahg.commands.BranchesCommand.on(open()).execute();
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBrowseCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBrowseCommand.java
index 0303275adf..4dc0b8a33e 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBrowseCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBrowseCommand.java
@@ -36,16 +36,14 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Strings;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.javahg.HgFileviewCommand;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -67,20 +65,9 @@ public class HgBrowseCommand extends AbstractCommand implements BrowseCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
public BrowserResult getBrowserResult(BrowseCommandRequest request)
- throws IOException, RepositoryException
+ throws IOException
{
HgFileviewCommand cmd = HgFileviewCommand.on(open());
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
index c0ae0b51b5..554d6aaf05 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCatCommand.java
@@ -36,8 +36,8 @@ package sonia.scm.repository.spi;
import com.aragost.javahg.commands.ExecutionException;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closeables;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.web.HgUtil;
import java.io.IOException;
@@ -51,7 +51,7 @@ public class HgCatCommand extends AbstractCommand implements CatCommand {
}
@Override
- public void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, RepositoryException {
+ public void getCatResult(CatCommandRequest request, OutputStream output) throws IOException {
InputStream input = getCatResultStream(request);
try {
ByteStreams.copy(input, output);
@@ -61,7 +61,7 @@ public class HgCatCommand extends AbstractCommand implements CatCommand {
}
@Override
- public InputStream getCatResultStream(CatCommandRequest request) throws IOException, RepositoryException {
+ public InputStream getCatResultStream(CatCommandRequest request) throws IOException {
com.aragost.javahg.commands.CatCommand cmd =
com.aragost.javahg.commands.CatCommand.on(open());
@@ -70,7 +70,7 @@ public class HgCatCommand extends AbstractCommand implements CatCommand {
try {
return cmd.execute(request.getPath());
} catch (ExecutionException e) {
- throw new RepositoryException(e);
+ throw new InternalRepositoryException(e);
}
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
index dcdcdeec2f..d705f0ac14 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgDiffCommand.java
@@ -38,19 +38,17 @@ package sonia.scm.repository.spi;
import com.google.common.base.Strings;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closeables;
-
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.DiffFormat;
import sonia.scm.repository.spi.javahg.HgDiffInternalCommand;
import sonia.scm.web.HgUtil;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -72,19 +70,9 @@ public class HgDiffCommand extends AbstractCommand implements DiffCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- * @param output
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
public void getDiffResult(DiffCommandRequest request, OutputStream output)
- throws IOException, RepositoryException
+ throws IOException
{
com.aragost.javahg.Repository hgRepo = open();
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgIncomingCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgIncomingCommand.java
index 73284d886a..55cf0fbe01 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgIncomingCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgIncomingCommand.java
@@ -35,21 +35,19 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.commands.ExecutionException;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.HgRepositoryHandler;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.javahg.HgIncomingChangesetCommand;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
-
import java.util.Collections;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -80,22 +78,9 @@ public class HgIncomingCommand extends AbstractCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
- public ChangesetPagingResult getIncomingChangesets(
- IncomingCommandRequest request)
- throws RepositoryException
- {
+ public ChangesetPagingResult getIncomingChangesets(IncomingCommandRequest request) {
File remoteRepository = handler.getDirectory(request.getRemoteRepository());
com.aragost.javahg.Repository repository = open();
@@ -118,7 +103,7 @@ public class HgIncomingCommand extends AbstractCommand
}
else
{
- throw new RepositoryException("could not execute incoming command", ex);
+ throw new InternalRepositoryException("could not execute incoming command", ex);
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgLogCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgLogCommand.java
index af485d19df..68d6913962 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgLogCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgLogCommand.java
@@ -36,20 +36,16 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Strings;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.javahg.HgLogChangesetCommand;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
import java.util.ArrayList;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -71,42 +67,16 @@ public class HgLogCommand extends AbstractCommand implements LogCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param id
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public Changeset getChangeset(String id)
- throws IOException, RepositoryException
- {
+ public Changeset getChangeset(String id) {
com.aragost.javahg.Repository repository = open();
HgLogChangesetCommand cmd = on(repository);
return cmd.rev(id).single();
}
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public ChangesetPagingResult getChangesets(LogCommandRequest request)
- throws IOException, RepositoryException
- {
+ public ChangesetPagingResult getChangesets(LogCommandRequest request) {
ChangesetPagingResult result = null;
com.aragost.javahg.Repository repository = open();
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgOutgoingCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgOutgoingCommand.java
index 1322424198..b476b6c2ab 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgOutgoingCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgOutgoingCommand.java
@@ -35,21 +35,19 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.commands.ExecutionException;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.HgRepositoryHandler;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.spi.javahg.HgOutgoingChangesetCommand;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
-
import java.util.Collections;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -80,21 +78,10 @@ public class HgOutgoingCommand extends AbstractCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
public ChangesetPagingResult getOutgoingChangesets(
OutgoingCommandRequest request)
- throws RepositoryException
{
File remoteRepository = handler.getDirectory(request.getRemoteRepository());
@@ -116,7 +103,7 @@ public class HgOutgoingCommand extends AbstractCommand
}
else
{
- throw new RepositoryException("could not execute outgoing command", ex);
+ throw new InternalRepositoryException("could not execute outgoing command", ex);
}
}
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPullCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPullCommand.java
index 5243cbcc92..0eb23ef4e7 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPullCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPullCommand.java
@@ -37,22 +37,19 @@ package sonia.scm.repository.spi;
import com.aragost.javahg.Changeset;
import com.aragost.javahg.commands.ExecutionException;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.HgRepositoryHandler;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PullResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.Collections;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -83,21 +80,10 @@ public class HgPullCommand extends AbstractHgPushOrPullCommand
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
public PullResponse pull(PullCommandRequest request)
- throws RepositoryException, IOException
+ throws IOException
{
String url = getRemoteUrl(request);
@@ -111,7 +97,7 @@ public class HgPullCommand extends AbstractHgPushOrPullCommand
}
catch (ExecutionException ex)
{
- throw new RepositoryException("could not execute push command", ex);
+ throw new InternalRepositoryException("could not execute push command", ex);
}
return new PullResponse(result.size());
diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPushCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPushCommand.java
index 10b4af002e..fb0a1a1c73 100644
--- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPushCommand.java
+++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgPushCommand.java
@@ -37,22 +37,19 @@ package sonia.scm.repository.spi;
import com.aragost.javahg.Changeset;
import com.aragost.javahg.commands.ExecutionException;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import sonia.scm.repository.HgRepositoryHandler;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.PushResponse;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.IOException;
-
import java.util.Collections;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -83,21 +80,10 @@ public class HgPushCommand extends AbstractHgPushOrPullCommand
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
public PushResponse push(PushCommandRequest request)
- throws RepositoryException, IOException
+ throws IOException
{
String url = getRemoteUrl(request);
@@ -111,7 +97,7 @@ public class HgPushCommand extends AbstractHgPushOrPullCommand
}
catch (ExecutionException ex)
{
- throw new RepositoryException("could not execute push command", ex);
+ throw new InternalRepositoryException("could not execute push command", ex);
}
return new PushResponse(result.size());
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBlameCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBlameCommandTest.java
index 0dea409589..8b46c5f290 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBlameCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBlameCommandTest.java
@@ -36,17 +36,16 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -54,16 +53,8 @@ import java.io.IOException;
public class HgBlameCommandTest extends AbstractHgCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetBlameResult() throws IOException, RepositoryException
- {
+ public void testGetBlameResult() throws IOException {
BlameCommandRequest request = new BlameCommandRequest();
request.setPath("a.txt");
@@ -87,17 +78,8 @@ public class HgBlameCommandTest extends AbstractHgCommandTestBase
line.getAuthor().getMail());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetBlameResultWithRevision()
- throws IOException, RepositoryException
- {
+ public void testGetBlameResultWithRevision() throws IOException {
BlameCommandRequest request = new BlameCommandRequest();
request.setPath("a.txt");
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java
index 0262dfc36b..c53aa8c607 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgBrowseCommandTest.java
@@ -36,19 +36,20 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
-
import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -56,16 +57,8 @@ import java.util.List;
public class HgBrowseCommandTest extends AbstractHgCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBrowse() throws IOException, RepositoryException
- {
+ public void testBrowse() throws IOException {
List foList = getRootFromTip(new BrowseCommandRequest());
FileObject a = getFileObject(foList, "a.txt");
FileObject c = getFileObject(foList, "c");
@@ -81,16 +74,8 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase
assertEquals("c", c.getPath());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBrowseSubDirectory() throws IOException, RepositoryException
- {
+ public void testBrowseSubDirectory() throws IOException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setPath("c");
@@ -137,16 +122,8 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase
checkDate(e.getLastModified());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testDisableLastCommit() throws IOException, RepositoryException
- {
+ public void testDisableLastCommit() throws IOException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setDisableLastCommit(true);
@@ -159,16 +136,8 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase
assertNull(a.getLastModified());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testRecursive() throws IOException, RepositoryException
- {
+ public void testRecursive() throws IOException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setRecursive(true);
@@ -215,20 +184,7 @@ public class HgBrowseCommandTest extends AbstractHgCommandTestBase
return a;
}
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- private List getRootFromTip(BrowseCommandRequest request)
- throws IOException, RepositoryException
- {
+ private List getRootFromTip(BrowseCommandRequest request) throws IOException {
BrowserResult result = new HgBrowseCommand(cmdContext,
repository).getBrowserResult(request);
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgCatCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgCatCommandTest.java
index afb5249b25..9379fd42a8 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgCatCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgCatCommandTest.java
@@ -33,8 +33,10 @@
package sonia.scm.repository.spi;
+import org.junit.Ignore;
import org.junit.Test;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.NotFoundException;
+import sonia.scm.repository.InternalRepositoryException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -45,7 +47,7 @@ import static org.junit.Assert.assertEquals;
public class HgCatCommandTest extends AbstractHgCommandTestBase {
@Test
- public void testCat() throws IOException, RepositoryException {
+ public void testCat() throws IOException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -54,23 +56,24 @@ public class HgCatCommandTest extends AbstractHgCommandTestBase {
}
@Test
- public void testSimpleCat() throws IOException, RepositoryException {
+ public void testSimpleCat() throws IOException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
assertEquals("b", execute(request));
}
- @Test(expected = RepositoryException.class)
- public void testUnknownFile() throws IOException, RepositoryException {
+ @Test(expected = InternalRepositoryException.class)
+ public void testUnknownFile() throws IOException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("unknown");
execute(request);
}
- @Test(expected = RepositoryException.class)
- public void testUnknownRevision() throws IOException, RepositoryException {
+ @Test(expected = NotFoundException.class)
+ @Ignore("detection of unknown revision in hg not yet implemented")
+ public void testUnknownRevision() throws IOException {
CatCommandRequest request = new CatCommandRequest();
request.setRevision("abc");
@@ -79,7 +82,7 @@ public class HgCatCommandTest extends AbstractHgCommandTestBase {
}
@Test
- public void testSimpleStream() throws IOException, RepositoryException {
+ public void testSimpleStream() throws IOException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
@@ -92,7 +95,7 @@ public class HgCatCommandTest extends AbstractHgCommandTestBase {
catResultStream.close();
}
- private String execute(CatCommandRequest request) throws IOException, RepositoryException {
+ private String execute(CatCommandRequest request) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new HgCatCommand(cmdContext, repository).getCatResult(request, baos);
return baos.toString().trim();
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgIncomingCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgIncomingCommandTest.java
index a8a5de156b..4d7b7c75d9 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgIncomingCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgIncomingCommandTest.java
@@ -35,19 +35,18 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.Changeset;
-
import org.junit.Test;
-
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.HgTestUtil;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.InternalRepositoryException;
import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -60,12 +59,9 @@ public class HgIncomingCommandTest extends IncomingOutgoingTestBase
*
*
* @throws IOException
- * @throws RepositoryException
*/
@Test
- public void testGetIncomingChangesets()
- throws IOException, RepositoryException
- {
+ public void testGetIncomingChangesets() throws IOException {
writeNewFile(outgoing, outgoingDirectory, "a.txt", "Content of file a.txt");
writeNewFile(outgoing, outgoingDirectory, "b.txt", "Content of file b.txt");
@@ -89,16 +85,8 @@ public class HgIncomingCommandTest extends IncomingOutgoingTestBase
assertChangesetsEqual(c2, cpr.getChangesets().get(1));
}
- /**
- * Method description
- *
- *
- * @throws RepositoryException
- */
@Test
- public void testGetIncomingChangesetsWithEmptyRepository()
- throws RepositoryException
- {
+ public void testGetIncomingChangesetsWithEmptyRepository() {
HgIncomingCommand cmd = createIncomingCommand();
IncomingCommandRequest request = new IncomingCommandRequest();
@@ -110,17 +98,8 @@ public class HgIncomingCommandTest extends IncomingOutgoingTestBase
assertEquals(0, cpr.getTotal());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
- @Test(expected = RepositoryException.class)
- public void testGetIncomingChangesetsWithUnrelatedRepository()
- throws IOException, RepositoryException
- {
+ @Test(expected = InternalRepositoryException.class)
+ public void testGetIncomingChangesetsWithUnrelatedRepository() throws IOException {
writeNewFile(outgoing, outgoingDirectory, "a.txt", "Content of file a.txt");
writeNewFile(outgoing, outgoingDirectory, "b.txt", "Content of file b.txt");
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgLogCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgLogCommandTest.java
index bae48180ce..c4d49ba8b5 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgLogCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgLogCommandTest.java
@@ -36,20 +36,19 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.Modifications;
-import sonia.scm.repository.RepositoryException;
-import static org.hamcrest.Matchers.*;
-
-import static org.junit.Assert.*;
+import static org.hamcrest.Matchers.contains;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
*
* @author Sebastian Sdorra
@@ -57,16 +56,8 @@ import java.io.IOException;
public class HgLogCommandTest extends AbstractHgCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAll() throws IOException, RepositoryException
- {
+ public void testGetAll() {
ChangesetPagingResult result =
createComamnd().getChangesets(new LogCommandRequest());
@@ -75,16 +66,8 @@ public class HgLogCommandTest extends AbstractHgCommandTestBase
assertEquals(5, result.getChangesets().size());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllByPath() throws IOException, RepositoryException
- {
+ public void testGetAllByPath() {
LogCommandRequest request = new LogCommandRequest();
request.setPath("a.txt");
@@ -102,16 +85,8 @@ public class HgLogCommandTest extends AbstractHgCommandTestBase
result.getChangesets().get(2).getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllWithLimit() throws IOException, RepositoryException
- {
+ public void testGetAllWithLimit() {
LogCommandRequest request = new LogCommandRequest();
request.setPagingLimit(2);
@@ -133,16 +108,8 @@ public class HgLogCommandTest extends AbstractHgCommandTestBase
assertEquals("542bf4893dd2ff58a0eb719551d75ddeb919608b", c2.getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllWithPaging() throws IOException, RepositoryException
- {
+ public void testGetAllWithPaging() {
LogCommandRequest request = new LogCommandRequest();
request.setPagingStart(1);
@@ -165,16 +132,8 @@ public class HgLogCommandTest extends AbstractHgCommandTestBase
assertEquals("79b6baf49711ae675568e0698d730b97ef13e84a", c2.getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetCommit() throws IOException, RepositoryException
- {
+ public void testGetCommit() {
HgLogCommand command = createComamnd();
Changeset c =
command.getChangeset("a9bacaf1b7fa0cebfca71fed4e59ed69a6319427");
@@ -197,16 +156,8 @@ public class HgLogCommandTest extends AbstractHgCommandTestBase
assertThat(mods.getAdded(), contains("a.txt", "b.txt"));
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetRange() throws IOException, RepositoryException
- {
+ public void testGetRange() {
LogCommandRequest request = new LogCommandRequest();
request.setStartChangeset("3049df33fdbb");
diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgOutgoingCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgOutgoingCommandTest.java
index 7a43df98bc..354481b9b3 100644
--- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgOutgoingCommandTest.java
+++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgOutgoingCommandTest.java
@@ -35,20 +35,18 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.Changeset;
-
import org.junit.Test;
-
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.HgTestUtil;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.InternalRepositoryException;
+
+import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
*
* @author Sebastian Sdorra
@@ -56,17 +54,8 @@ import java.io.IOException;
public class HgOutgoingCommandTest extends IncomingOutgoingTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetOutgoingChangesets()
- throws IOException, RepositoryException
- {
+ public void testGetOutgoingChangesets() throws IOException {
writeNewFile(outgoing, outgoingDirectory, "a.txt", "Content of file a.txt");
writeNewFile(outgoing, outgoingDirectory, "b.txt", "Content of file b.txt");
@@ -90,16 +79,8 @@ public class HgOutgoingCommandTest extends IncomingOutgoingTestBase
assertChangesetsEqual(c2, cpr.getChangesets().get(1));
}
- /**
- * Method description
- *
- *
- * @throws RepositoryException
- */
@Test
- public void testGetOutgoingChangesetsWithEmptyRepository()
- throws RepositoryException
- {
+ public void testGetOutgoingChangesetsWithEmptyRepository() {
HgOutgoingCommand cmd = createOutgoingCommand();
OutgoingCommandRequest request = new OutgoingCommandRequest();
@@ -111,17 +92,8 @@ public class HgOutgoingCommandTest extends IncomingOutgoingTestBase
assertEquals(0, cpr.getTotal());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
- @Test(expected = RepositoryException.class)
- public void testGetOutgoingChangesetsWithUnrelatedRepository()
- throws IOException, RepositoryException
- {
+ @Test(expected = InternalRepositoryException.class)
+ public void testGetOutgoingChangesetsWithUnrelatedRepository() throws IOException {
writeNewFile(outgoing, outgoingDirectory, "a.txt", "Content of file a.txt");
writeNewFile(outgoing, outgoingDirectory, "b.txt", "Content of file b.txt");
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java
index 58ada0738b..7d5c9695c9 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java
@@ -37,10 +37,8 @@ package sonia.scm.repository;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.internal.io.fs.FSHooks;
@@ -48,19 +46,17 @@ import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.util.SVNDebugLog;
-
import sonia.scm.io.FileSystem;
import sonia.scm.logging.SVNKitLogger;
import sonia.scm.plugin.Extension;
+import sonia.scm.repository.spi.HookEventFacade;
import sonia.scm.repository.spi.SvnRepositoryServiceProvider;
+import sonia.scm.store.ConfigurationStoreFactory;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
-import java.io.IOException;
-import sonia.scm.repository.spi.HookEventFacade;
-import sonia.scm.store.ConfigurationStoreFactory;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -72,38 +68,21 @@ public class SvnRepositoryHandler
extends AbstractSimpleRepositoryHandler
{
- /** Field description */
public static final String PROPERTY_UUID = "svn.uuid";
- /** Field description */
- public static final String RESOURCE_VERSION =
- "sonia/scm/version/scm-svn-plugin";
+ public static final String RESOURCE_VERSION = "sonia/scm/version/scm-svn-plugin";
- /** Field description */
public static final String TYPE_DISPLAYNAME = "Subversion";
- /** Field description */
public static final String TYPE_NAME = "svn";
- /** Field description */
public static final RepositoryType TYPE = new RepositoryType(TYPE_NAME,
TYPE_DISPLAYNAME,
SvnRepositoryServiceProvider.COMMANDS);
- /** the logger for SvnRepositoryHandler */
private static final Logger logger =
LoggerFactory.getLogger(SvnRepositoryHandler.class);
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- * @param storeFactory
- * @param fileSystem
- * @param repositoryManager
- */
@Inject
public SvnRepositoryHandler(ConfigurationStoreFactory storeFactory, FileSystem fileSystem,
HookEventFacade eventFacade)
@@ -128,60 +107,26 @@ public class SvnRepositoryHandler
}
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
@Override
public ImportHandler getImportHandler()
{
return new SvnImportHandler(this);
}
- /**
- * Method description
- *
- *
- * @return
- */
@Override
public RepositoryType getType()
{
return TYPE;
}
- /**
- * Method description
- *
- *
- * @return
- */
@Override
public String getVersionInformation()
{
return getStringFromResource(RESOURCE_VERSION, DEFAULT_VERSION_INFORMATION);
}
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param repository
- * @param directory
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- protected void create(Repository repository, File directory)
- throws RepositoryException, IOException
- {
+ protected void create(Repository repository, File directory) throws InternalRepositoryException {
Compatibility comp = config.getCompatibility();
if (logger.isDebugEnabled())
@@ -228,7 +173,7 @@ public class SvnRepositoryHandler
}
catch (SVNException ex)
{
- throw new RepositoryException(ex);
+ throw new InternalRepositoryException(ex);
}
finally
{
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnUtil.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnUtil.java
index 6cc5eb5da9..28419391ab 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnUtil.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnUtil.java
@@ -38,10 +38,8 @@ package sonia.scm.repository;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.io.Closeables;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.tmatesoft.svn.core.SVNErrorCode;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNLogEntryPath;
@@ -52,20 +50,17 @@ import org.tmatesoft.svn.core.internal.util.SVNXMLUtil;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.admin.SVNChangeEntry;
-
import sonia.scm.util.HttpUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
-
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -351,21 +346,7 @@ public final class SvnUtil
}
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param revision
- *
- * @return
- *
- * @throws RepositoryException
- */
- public static long getRevisionNumber(String revision)
- throws RepositoryException
- {
+ public static long getRevisionNumber(String revision) throws RevisionNotFoundException {
long revisionNumber = -1;
if (Util.isNotEmpty(revision))
@@ -376,7 +357,7 @@ public final class SvnUtil
}
catch (NumberFormatException ex)
{
- throw new RepositoryException("given revision is not a svnrevision");
+ throw new RevisionNotFoundException(revision);
}
}
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBlameCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBlameCommand.java
index 9c059d0ea5..fe9a72ffce 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBlameCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBlameCommand.java
@@ -35,7 +35,6 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.Lists;
-
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
@@ -43,21 +42,18 @@ import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNLogClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.SvnBlameHandler;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
-import java.io.IOException;
-
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -65,37 +61,13 @@ import java.util.List;
public class SvnBlameCommand extends AbstractSvnCommand implements BlameCommand
{
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
public SvnBlameCommand(SvnContext context, Repository repository)
{
super(context, repository);
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public BlameResult getBlameResult(BlameCommandRequest request)
- throws IOException, RepositoryException
- {
+ public BlameResult getBlameResult(BlameCommandRequest request) {
String path = request.getPath();
String revision = request.getRevision();
List blameLines = Lists.newArrayList();
@@ -126,7 +98,7 @@ public class SvnBlameCommand extends AbstractSvnCommand implements BlameCommand
}
catch (SVNException ex)
{
- throw new RepositoryException("could not create blame result", ex);
+ throw new InternalRepositoryException("could not create blame result", ex);
}
return new BlameResult(blameLines.size(), blameLines);
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java
index 1464d7eb96..54b8458715 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java
@@ -36,32 +36,27 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.Lists;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.tmatesoft.svn.core.SVNDirEntry;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.SVNProperties;
import org.tmatesoft.svn.core.SVNProperty;
import org.tmatesoft.svn.core.io.SVNRepository;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.SubRepository;
import sonia.scm.repository.SvnUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
import java.util.Collection;
import java.util.List;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -76,40 +71,14 @@ public class SvnBrowseCommand extends AbstractSvnCommand
private static final Logger logger =
LoggerFactory.getLogger(SvnBrowseCommand.class);
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
SvnBrowseCommand(SvnContext context, Repository repository)
{
super(context, repository);
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
- public BrowserResult getBrowserResult(BrowseCommandRequest request)
- throws IOException, RepositoryException
- {
+ public BrowserResult getBrowserResult(BrowseCommandRequest request) throws RevisionNotFoundException {
String path = request.getPath();
long revisionNumber = SvnUtil.getRevisionNumber(request.getRevision());
@@ -293,7 +262,7 @@ public class SvnBrowseCommand extends AbstractSvnCommand
}
catch (SVNException ex)
{
- logger.error("could not fetch file properties");
+ logger.error("could not fetch file properties", ex);
}
}
}
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBundleCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBundleCommand.java
index af9dbe5fda..c3ce87decf 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBundleCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBundleCommand.java
@@ -37,25 +37,22 @@ package sonia.scm.repository.spi;
import com.google.common.io.ByteSink;
import com.google.common.io.Closeables;
-
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.admin.SVNAdminClient;
-
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.SvnUtil;
import sonia.scm.repository.api.BundleResponse;
-import static com.google.common.base.Preconditions.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -64,31 +61,11 @@ public class SvnBundleCommand extends AbstractSvnCommand
implements BundleCommand
{
- /**
- * Constructs ...
- *
- *
- * @param context
- * @param repository
- */
public SvnBundleCommand(SvnContext context, Repository repository)
{
super(context, repository);
}
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param adminClient
- * @param repository
- * @param target
- *
- * @throws IOException
- * @throws SVNException
- */
private static void dump(SVNAdminClient adminClient, File repository,
ByteSink target)
throws SVNException, IOException
@@ -107,21 +84,8 @@ public class SvnBundleCommand extends AbstractSvnCommand
}
}
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public BundleResponse bundle(BundleCommandRequest request)
- throws IOException, RepositoryException
- {
+ public BundleResponse bundle(BundleCommandRequest request) throws IOException {
ByteSink archive = checkNotNull(request.getArchive(),
"archive is required");
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnCatCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnCatCommand.java
index 4a8b907c29..4936a16a8c 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnCatCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnCatCommand.java
@@ -43,15 +43,14 @@ import org.tmatesoft.svn.core.SVNProperties;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.admin.SVNLookClient;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.PathNotFoundException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.SvnUtil;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -72,15 +71,6 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
//~--- constructors ---------------------------------------------------------
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
SvnCatCommand(SvnContext context, Repository repository)
{
super(context, repository);
@@ -88,20 +78,8 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param request
- * @param output
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public void getCatResult(CatCommandRequest request, OutputStream output)
- throws IOException, RepositoryException
- {
+ public void getCatResult(CatCommandRequest request, OutputStream output) throws RevisionNotFoundException, PathNotFoundException {
if (logger.isDebugEnabled())
{
logger.debug("try to get content for {}", request);
@@ -125,7 +103,7 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
}
@Override
- public InputStream getCatResultStream(CatCommandRequest request) throws IOException, RepositoryException {
+ public InputStream getCatResultStream(CatCommandRequest request) throws RevisionNotFoundException, PathNotFoundException {
// There seems to be no method creating an input stream as a result, so
// we have no other possibility then to copy the content into a buffer and
// stream it from there.
@@ -134,20 +112,7 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
return new ByteArrayInputStream(output.toByteArray());
}
- /**
- * Method description
- *
- *
- * @param request
- * @param output
- * @param revision
- *
- * @throws RepositoryException
- */
- private void getCatFromRevision(CatCommandRequest request,
- OutputStream output, long revision)
- throws RepositoryException
- {
+ private void getCatFromRevision(CatCommandRequest request, OutputStream output, long revision) throws PathNotFoundException, RevisionNotFoundException {
logger.debug("try to read content from revision {} and path {}", revision,
request.getPath());
@@ -164,31 +129,18 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
}
}
- private void handleSvnException(CatCommandRequest request, SVNException ex) throws RepositoryException {
+ private void handleSvnException(CatCommandRequest request, SVNException ex) throws PathNotFoundException, RevisionNotFoundException {
int svnErrorCode = ex.getErrorMessage().getErrorCode().getCode();
if (SVNErrorCode.FS_NOT_FOUND.getCode() == svnErrorCode) {
throw new PathNotFoundException(request.getPath());
} else if (SVNErrorCode.FS_NO_SUCH_REVISION.getCode() == svnErrorCode) {
throw new RevisionNotFoundException(request.getRevision());
} else {
- throw new RepositoryException("could not get content from revision", ex);
+ throw new InternalRepositoryException("could not get content from revision", ex);
}
}
- /**
- * Method description
- *
- *
- * @param request
- * @param output
- * @param txn
- *
- * @throws RepositoryException
- */
- private void getCatFromTransaction(CatCommandRequest request,
- OutputStream output, String txn)
- throws RepositoryException
- {
+ private void getCatFromTransaction(CatCommandRequest request, OutputStream output, String txn) {
logger.debug("try to read content from transaction {} and path {}", txn,
request.getPath());
@@ -204,8 +156,7 @@ public class SvnCatCommand extends AbstractSvnCommand implements CatCommand
}
catch (SVNException ex)
{
- throw new RepositoryException("could not get content from transaction",
- ex);
+ throw new InternalRepositoryException("could not get content from transaction", ex);
}
finally
{
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnDiffCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnDiffCommand.java
index f7af17326d..0b65466a42 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnDiffCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnDiffCommand.java
@@ -36,10 +36,8 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.base.Preconditions;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
@@ -48,18 +46,17 @@ import org.tmatesoft.svn.core.wc.ISVNDiffGenerator;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNDiffClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
-
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.SvnUtil;
import sonia.scm.repository.api.DiffFormat;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
import java.io.OutputStream;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -73,38 +70,13 @@ public class SvnDiffCommand extends AbstractSvnCommand implements DiffCommand
private static final Logger logger =
LoggerFactory.getLogger(SvnDiffCommand.class);
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
public SvnDiffCommand(SvnContext context, Repository repository)
{
super(context, repository);
}
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param request
- * @param output
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
- public void getDiffResult(DiffCommandRequest request, OutputStream output)
- throws IOException, RepositoryException
- {
+ public void getDiffResult(DiffCommandRequest request, OutputStream output) throws RevisionNotFoundException {
if (logger.isDebugEnabled())
{
logger.debug("create diff for {}", request);
@@ -149,7 +121,7 @@ public class SvnDiffCommand extends AbstractSvnCommand implements DiffCommand
}
catch (SVNException ex)
{
- throw new RepositoryException("could not create diff", ex);
+ throw new InternalRepositoryException("could not create diff", ex);
}
finally
{
diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLogCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLogCommand.java
index b1024ec5b4..ededb4e1f0 100644
--- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLogCommand.java
+++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLogCommand.java
@@ -37,33 +37,25 @@ package sonia.scm.repository.spi;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.tmatesoft.svn.core.ISVNLogEntryHandler;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.io.SVNRepository;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
+import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.SvnUtil;
import sonia.scm.util.Util;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
import java.util.Collection;
import java.util.List;
-/**
- *
- * @author Sebastian Sdorra
- */
+//~--- JDK imports ------------------------------------------------------------
+
public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
{
@@ -73,17 +65,6 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
private static final Logger logger =
LoggerFactory.getLogger(SvnLogCommand.class);
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- *
- * @param context
- * @param repository
- * @param repositoryDirectory
- */
SvnLogCommand(SvnContext context, Repository repository)
{
super(context, repository);
@@ -91,22 +72,9 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
//~--- get methods ----------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param revision
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
- public Changeset getChangeset(String revision)
- throws IOException, RepositoryException
- {
+ public Changeset getChangeset(String revision) throws RevisionNotFoundException {
Changeset changeset = null;
if (logger.isDebugEnabled())
@@ -128,28 +96,15 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
}
catch (SVNException ex)
{
- throw new RepositoryException("could not open repository", ex);
+ throw new InternalRepositoryException("could not open repository", ex);
}
return changeset;
}
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Override
@SuppressWarnings("unchecked")
- public ChangesetPagingResult getChangesets(LogCommandRequest request)
- throws IOException, RepositoryException
- {
+ public ChangesetPagingResult getChangesets(LogCommandRequest request) throws RevisionNotFoundException {
if (logger.isDebugEnabled())
{
logger.debug("fetch changesets for {}", request);
@@ -183,7 +138,7 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
}
catch (SVNException ex)
{
- throw new RepositoryException("could not open repository", ex);
+ throw new InternalRepositoryException("could not open repository", ex);
}
return changesets;
@@ -191,18 +146,7 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
//~--- methods --------------------------------------------------------------
- /**
- * Method description
- *
- *
- * @param v
- *
- * @return
- *
- * @throws RepositoryException
- */
- private long parseRevision(String v) throws RepositoryException
- {
+ private long parseRevision(String v) throws RevisionNotFoundException {
long result = -1l;
if (!Strings.isNullOrEmpty(v))
@@ -213,8 +157,7 @@ public class SvnLogCommand extends AbstractSvnCommand implements LogCommand
}
catch (NumberFormatException ex)
{
- throw new RepositoryException(
- String.format("could not convert revision %s", v), ex);
+ throw new RevisionNotFoundException(v);
}
}
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBlameCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBlameCommandTest.java
index e320dd3251..ec4f375df4 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBlameCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBlameCommandTest.java
@@ -35,17 +35,15 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BlameLine;
import sonia.scm.repository.BlameResult;
-import sonia.scm.repository.RepositoryException;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
*
* @author Sebastian Sdorra
@@ -53,15 +51,8 @@ import java.io.IOException;
public class SvnBlameCommandTest extends AbstractSvnCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetBlameResult() throws IOException, RepositoryException
+ public void testGetBlameResult()
{
BlameCommandRequest request = new BlameCommandRequest();
@@ -85,17 +76,8 @@ public class SvnBlameCommandTest extends AbstractSvnCommandTestBase
assertNull(line.getAuthor().getMail());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetBlameResultWithRevision()
- throws IOException, RepositoryException
- {
+ public void testGetBlameResultWithRevision() {
BlameCommandRequest request = new BlameCommandRequest();
request.setPath("a.txt");
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java
index 369d179fed..c4c658ea7a 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java
@@ -36,19 +36,21 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.FileObject;
-import sonia.scm.repository.RepositoryException;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.repository.RevisionNotFoundException;
import java.io.IOException;
-
import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -56,16 +58,8 @@ import java.util.List;
public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBrowse() throws IOException, RepositoryException
- {
+ public void testBrowse() throws RevisionNotFoundException {
List foList = getRootFromTip(new BrowseCommandRequest());
FileObject a = getFileObject(foList, "a.txt");
@@ -87,11 +81,9 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
*
*
* @throws IOException
- * @throws RepositoryException
*/
@Test
- public void testBrowseSubDirectory() throws IOException, RepositoryException
- {
+ public void testBrowseSubDirectory() throws RevisionNotFoundException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setPath("c");
@@ -137,16 +129,8 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
checkDate(e.getLastModified());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testDisableLastCommit() throws IOException, RepositoryException
- {
+ public void testDisableLastCommit() throws RevisionNotFoundException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setDisableLastCommit(true);
@@ -160,8 +144,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
}
@Test
- public void testRecursive() throws IOException, RepositoryException
- {
+ public void testRecursive() throws RevisionNotFoundException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setRecursive(true);
BrowserResult result = createCommand().getBrowserResult(request);
@@ -220,20 +203,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
return a;
}
- /**
- * Method description
- *
- *
- * @param request
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- private List getRootFromTip(BrowseCommandRequest request)
- throws IOException, RepositoryException
- {
+ private List getRootFromTip(BrowseCommandRequest request) throws RevisionNotFoundException {
BrowserResult result = createCommand().getBrowserResult(request);
assertNotNull(result);
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBundleCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBundleCommandTest.java
index 57fde186cf..9e7e40810c 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBundleCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBundleCommandTest.java
@@ -37,23 +37,22 @@ package sonia.scm.repository.spi;
import com.google.common.io.ByteSink;
import com.google.common.io.Files;
-
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.api.BundleResponse;
-import static org.hamcrest.Matchers.*;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -61,15 +60,8 @@ import java.io.IOException;
public class SvnBundleCommandTest extends AbstractSvnCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testBundle() throws IOException, RepositoryException
+ public void testBundle() throws IOException
{
File file = temp.newFile();
ByteSink sink = Files.asByteSink(file);
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnCatCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnCatCommandTest.java
index f7e2123bad..3980b3e558 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnCatCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnCatCommandTest.java
@@ -34,7 +34,6 @@ package sonia.scm.repository.spi;
import org.junit.Test;
import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import java.io.ByteArrayOutputStream;
@@ -48,7 +47,7 @@ import static org.junit.Assert.assertEquals;
public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
@Test
- public void testCat() throws IOException, RepositoryException {
+ public void testCat() throws PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -57,7 +56,7 @@ public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
}
@Test
- public void testSimpleCat() throws IOException, RepositoryException {
+ public void testSimpleCat() throws PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("c/d.txt");
@@ -65,7 +64,7 @@ public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
}
@Test(expected = PathNotFoundException.class)
- public void testUnknownFile() throws IOException, RepositoryException {
+ public void testUnknownFile() throws PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("unknown");
@@ -75,7 +74,7 @@ public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
}
@Test(expected = RevisionNotFoundException.class)
- public void testUnknownRevision() throws IOException, RepositoryException {
+ public void testUnknownRevision() throws PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -85,7 +84,7 @@ public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
}
@Test
- public void testSimpleStream() throws IOException, RepositoryException {
+ public void testSimpleStream() throws IOException, PathNotFoundException, RevisionNotFoundException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
request.setRevision("1");
@@ -99,7 +98,7 @@ public class SvnCatCommandTest extends AbstractSvnCommandTestBase {
catResultStream.close();
}
- private String execute(CatCommandRequest request) throws IOException, RepositoryException {
+ private String execute(CatCommandRequest request) throws PathNotFoundException, RevisionNotFoundException {
String content = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLogCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLogCommandTest.java
index a3942bd0f4..941687190c 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLogCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnLogCommandTest.java
@@ -35,18 +35,18 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
-
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.Modifications;
-import sonia.scm.repository.RepositoryException;
+import sonia.scm.repository.RevisionNotFoundException;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
//~--- JDK imports ------------------------------------------------------------
-import java.io.IOException;
-
/**
*
* @author Sebastian Sdorra
@@ -54,16 +54,8 @@ import java.io.IOException;
public class SvnLogCommandTest extends AbstractSvnCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAll() throws IOException, RepositoryException
- {
+ public void testGetAll() throws RevisionNotFoundException {
ChangesetPagingResult result =
createCommand().getChangesets(new LogCommandRequest());
@@ -72,16 +64,8 @@ public class SvnLogCommandTest extends AbstractSvnCommandTestBase
assertEquals(6, result.getChangesets().size());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllByPath() throws IOException, RepositoryException
- {
+ public void testGetAllByPath() throws RevisionNotFoundException {
LogCommandRequest request = new LogCommandRequest();
request.setPath("a.txt");
@@ -96,16 +80,8 @@ public class SvnLogCommandTest extends AbstractSvnCommandTestBase
assertEquals("1", result.getChangesets().get(2).getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllWithLimit() throws IOException, RepositoryException
- {
+ public void testGetAllWithLimit() throws RevisionNotFoundException {
LogCommandRequest request = new LogCommandRequest();
request.setPagingLimit(2);
@@ -127,16 +103,8 @@ public class SvnLogCommandTest extends AbstractSvnCommandTestBase
assertEquals("4", c2.getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetAllWithPaging() throws IOException, RepositoryException
- {
+ public void testGetAllWithPaging() throws RevisionNotFoundException {
LogCommandRequest request = new LogCommandRequest();
request.setPagingStart(1);
@@ -159,16 +127,8 @@ public class SvnLogCommandTest extends AbstractSvnCommandTestBase
assertEquals("3", c2.getId());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetCommit() throws IOException, RepositoryException
- {
+ public void testGetCommit() throws RevisionNotFoundException {
Changeset c = createCommand().getChangeset("3");
assertNotNull(c);
@@ -188,16 +148,8 @@ public class SvnLogCommandTest extends AbstractSvnCommandTestBase
assertEquals("b.txt", mods.getRemoved().get(0));
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- */
@Test
- public void testGetRange() throws IOException, RepositoryException
- {
+ public void testGetRange() throws RevisionNotFoundException {
LogCommandRequest request = new LogCommandRequest();
request.setStartChangeset("2");
diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnUnbundleCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnUnbundleCommandTest.java
index 2c59797296..133518e8db 100644
--- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnUnbundleCommandTest.java
+++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnUnbundleCommandTest.java
@@ -34,26 +34,22 @@ package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.io.Files;
-
import org.junit.Test;
-
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
-
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.SvnUtil;
import sonia.scm.repository.api.UnbundleResponse;
-import static org.hamcrest.Matchers.*;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
-
import java.io.File;
import java.io.IOException;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -61,17 +57,9 @@ import java.io.IOException;
public class SvnUnbundleCommandTest extends AbstractSvnCommandTestBase
{
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws RepositoryException
- * @throws SVNException
- */
@Test
public void testUnbundle()
- throws IOException, RepositoryException, SVNException
+ throws IOException, SVNException
{
File bundle = bundle();
SvnContext ctx = createEmptyContext();
@@ -95,16 +83,7 @@ public class SvnUnbundleCommandTest extends AbstractSvnCommandTestBase
SvnUtil.closeSession(repo);
}
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws RepositoryException
- */
- private File bundle() throws IOException, RepositoryException
+ private File bundle() throws IOException
{
File file = tempFolder.newFile();
diff --git a/scm-test/src/main/java/sonia/scm/ManagerTestBase.java b/scm-test/src/main/java/sonia/scm/ManagerTestBase.java
index 24bd2a0ebb..eda3182638 100644
--- a/scm-test/src/main/java/sonia/scm/ManagerTestBase.java
+++ b/scm-test/src/main/java/sonia/scm/ManagerTestBase.java
@@ -33,21 +33,21 @@
package sonia.scm;
-import java.io.IOException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
import sonia.scm.util.MockUtil;
+import java.io.IOException;
+
/**
*
* @author Sebastian Sdorra
*
* @param
- * @param
*/
-public abstract class ManagerTestBase
+public abstract class ManagerTestBase
{
@Rule
@@ -55,7 +55,7 @@ public abstract class ManagerTestBase manager;
+ protected Manager manager;
@Before
public void setUp() throws IOException {
@@ -75,6 +75,6 @@ public abstract class ManagerTestBase createManager();
+ protected abstract Manager createManager();
}
diff --git a/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java b/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java
index db4cfe0090..5a1dc605bb 100644
--- a/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java
+++ b/scm-test/src/main/java/sonia/scm/repository/DummyRepositoryHandler.java
@@ -34,6 +34,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.Sets;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.io.DefaultFileSystem;
import sonia.scm.store.ConfigurationStoreFactory;
@@ -70,10 +71,10 @@ public class DummyRepositoryHandler
@Override
- protected void create(Repository repository, File directory) throws RepositoryException {
+ protected void create(Repository repository, File directory) throws AlreadyExistsException {
String key = repository.getNamespace() + "/" + repository.getName();
if (existingRepoNames.contains(key)) {
- throw new RepositoryAlreadyExistsException("Repo exists");
+ throw new AlreadyExistsException();
} else {
existingRepoNames.add(key);
}
diff --git a/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java b/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java
index 680ac83dd9..999ef1dc45 100644
--- a/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java
+++ b/scm-test/src/main/java/sonia/scm/repository/SimpleRepositoryHandlerTestBase.java
@@ -35,6 +35,7 @@ package sonia.scm.repository;
import org.junit.Test;
import sonia.scm.AbstractTestBase;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.store.ConfigurationStoreFactory;
import sonia.scm.store.InMemoryConfigurationStoreFactory;
import sonia.scm.util.IOUtil;
@@ -60,12 +61,12 @@ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase {
ConfigurationStoreFactory factory, File directory);
@Test
- public void testCreate() throws RepositoryException {
+ public void testCreate() throws AlreadyExistsException {
createRepository();
}
@Test
- public void testCreateResourcePath() throws RepositoryException {
+ public void testCreateResourcePath() throws AlreadyExistsException {
Repository repository = createRepository();
String path = handler.createResourcePath(repository);
@@ -75,7 +76,7 @@ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase {
}
@Test
- public void testDelete() throws RepositoryException {
+ public void testDelete() throws Exception {
Repository repository = createRepository();
handler.delete(repository);
@@ -100,7 +101,7 @@ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase {
}
}
- private Repository createRepository() throws RepositoryException {
+ private Repository createRepository() throws AlreadyExistsException {
Repository repository = RepositoryTestData.createHeartOfGold();
handler.create(repository);
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/spi/CommitRequest.java b/scm-test/src/main/java/sonia/scm/repository/client/spi/CommitRequest.java
index fd473300fa..2138fef5cc 100644
--- a/scm-test/src/main/java/sonia/scm/repository/client/spi/CommitRequest.java
+++ b/scm-test/src/main/java/sonia/scm/repository/client/spi/CommitRequest.java
@@ -34,8 +34,8 @@ package sonia.scm.repository.client.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
import sonia.scm.repository.Person;
/**
@@ -105,7 +105,7 @@ public final class CommitRequest
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("author", author)
.add("message", message)
.toString();
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/spi/TagRequest.java b/scm-test/src/main/java/sonia/scm/repository/client/spi/TagRequest.java
index fccf555c16..ff34309b6d 100644
--- a/scm-test/src/main/java/sonia/scm/repository/client/spi/TagRequest.java
+++ b/scm-test/src/main/java/sonia/scm/repository/client/spi/TagRequest.java
@@ -34,8 +34,8 @@ package sonia.scm.repository.client.spi;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-
/**
*
* @author Sebastian Sdorra
@@ -103,7 +103,7 @@ public final class TagRequest
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("revision", revision)
.add("name", name)
.toString();
diff --git a/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java b/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java
index 86b3de5615..9f1c50c797 100644
--- a/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java
+++ b/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java
@@ -37,46 +37,33 @@ package sonia.scm.user;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
-
import org.junit.Test;
-
+import sonia.scm.AlreadyExistsException;
+import sonia.scm.ConcurrentModificationException;
import sonia.scm.Manager;
import sonia.scm.ManagerTestBase;
-
-import static org.junit.Assert.*;
-
-//~--- JDK imports ------------------------------------------------------------
+import sonia.scm.NotFoundException;
import java.io.IOException;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
-/**
- *
- * @author Sebastian Sdorra
- */
-public abstract class UserManagerTestBase
- extends ManagerTestBase
-{
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+//~--- JDK imports ------------------------------------------------------------
+
+public abstract class UserManagerTestBase extends ManagerTestBase {
- /** Field description */
public static final int THREAD_COUNT = 10;
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testCreate() throws UserException, IOException
- {
+ public void testCreate() throws AlreadyExistsException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -87,16 +74,8 @@ public abstract class UserManagerTestBase
assertUserEquals(zaphod, otherUser);
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
- @Test(expected = UserAlreadyExistsException.class)
- public void testCreateExisting() throws UserException, IOException
- {
+ @Test(expected = AlreadyExistsException.class)
+ public void testCreateExisting() throws AlreadyExistsException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -107,16 +86,8 @@ public abstract class UserManagerTestBase
manager.create(sameUser);
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testDelete() throws UserException, IOException
- {
+ public void testDelete() throws Exception {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -125,29 +96,13 @@ public abstract class UserManagerTestBase
assertNull(manager.get("zaphod"));
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
- @Test(expected = UserNotFoundException.class)
- public void testDeleteNotFound() throws UserException, IOException
- {
+ @Test(expected = NotFoundException.class)
+ public void testDeleteNotFound() throws Exception {
manager.delete(UserTestData.createDent());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testGet() throws UserException, IOException
- {
+ public void testGet() throws AlreadyExistsException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -160,16 +115,8 @@ public abstract class UserManagerTestBase
assertEquals("Zaphod Beeblebrox", zaphod.getDisplayName());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testGetAll() throws UserException, IOException
- {
+ public void testGetAll() throws AlreadyExistsException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -233,16 +180,8 @@ public abstract class UserManagerTestBase
assertEquals(reference.getDisplayName(), "Tricia McMillan");
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testModify() throws UserException, IOException
- {
+ public void testModify() throws AlreadyExistsException, NotFoundException, ConcurrentModificationException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -256,31 +195,13 @@ public abstract class UserManagerTestBase
assertEquals(otherUser.getDisplayName(), "Tricia McMillan");
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
- @Test(expected = UserException.class)
- public void testModifyNotExisting() throws UserException, IOException
- {
+ @Test(expected = NotFoundException.class)
+ public void testModifyNotExisting() throws NotFoundException, ConcurrentModificationException {
manager.modify(UserTestData.createZaphod());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws InterruptedException
- * @throws UserException
- */
@Test
- public void testMultiThreaded()
- throws UserException, IOException, InterruptedException
- {
+ public void testMultiThreaded() throws InterruptedException {
int initialSize = manager.getAll().size();
List testers = new ArrayList();
@@ -316,16 +237,8 @@ public abstract class UserManagerTestBase
assertTrue((initialSize + THREAD_COUNT) == manager.getAll().size());
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
@Test
- public void testRefresh() throws UserException, IOException
- {
+ public void testRefresh() throws AlreadyExistsException, NotFoundException {
User zaphod = UserTestData.createZaphod();
manager.create(zaphod);
@@ -335,26 +248,11 @@ public abstract class UserManagerTestBase
assertEquals(zaphod.getDisplayName(), "Zaphod Beeblebrox");
}
- /**
- * Method description
- *
- *
- * @throws IOException
- * @throws UserException
- */
- @Test(expected = UserNotFoundException.class)
- public void testRefreshNotFound() throws UserException, IOException
- {
+ @Test(expected = NotFoundException.class)
+ public void testRefreshNotFound() throws NotFoundException {
manager.refresh(UserTestData.createDent());
}
- /**
- * Method description
- *
- *
- * @param user
- * @param otherUser
- */
private void assertUserEquals(User user, User otherUser)
{
assertEquals(user.getName(), otherUser.getName());
@@ -363,35 +261,16 @@ public abstract class UserManagerTestBase
assertEquals(user.getPassword(), otherUser.getPassword());
}
- //~--- inner classes --------------------------------------------------------
-
- /**
- * Class description
- *
- *
- * @version Enter version here..., 2010-11-23
- * @author Sebastian Sdorra
- */
private static class MultiThreadTester implements Runnable
{
- /**
- * Constructs ...
- *
- *
- * @param userManager
- */
- public MultiThreadTester(Manager userManager)
+ public MultiThreadTester(Manager userManager)
{
this.manager = userManager;
}
//~--- methods ------------------------------------------------------------
- /**
- * Method description
- *
- */
@Override
public void run()
{
@@ -410,17 +289,7 @@ public abstract class UserManagerTestBase
finished = true;
}
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws UserException
- */
- private User createUser() throws UserException, IOException
- {
+ private User createUser() throws AlreadyExistsException {
String id = UUID.randomUUID().toString();
User user = new User(id, id.concat(" displayName"),
id.concat("@mail.com"));
@@ -430,18 +299,7 @@ public abstract class UserManagerTestBase
return user;
}
- /**
- * Method description
- *
- *
- * @param user
- *
- * @throws IOException
- * @throws UserException
- */
- private void modifyAndDeleteUser(User user)
- throws UserException, IOException
- {
+ private void modifyAndDeleteUser(User user) throws IOException, NotFoundException, ConcurrentModificationException {
String name = user.getName();
String nd = name.concat(" new displayname");
@@ -463,6 +321,6 @@ public abstract class UserManagerTestBase
private boolean finished = false;
/** Field description */
- private Manager manager;
+ private Manager manager;
}
}
diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml
index 6d3b94412d..602be8185e 100644
--- a/scm-webapp/pom.xml
+++ b/scm-webapp/pom.xml
@@ -99,11 +99,6 @@
jackson-datatype-jsr310
${jackson.version}
-
- javax
- javaee-api
- 7.0
-
org.hibernate.validator
hibernate-validator
diff --git a/scm-webapp/src/main/java/sonia/scm/ClassOverride.java b/scm-webapp/src/main/java/sonia/scm/ClassOverride.java
index 63d4c8339b..8741ce85af 100644
--- a/scm-webapp/src/main/java/sonia/scm/ClassOverride.java
+++ b/scm-webapp/src/main/java/sonia/scm/ClassOverride.java
@@ -34,13 +34,14 @@ package sonia.scm;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -97,7 +98,7 @@ public class ClassOverride implements Validateable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("bind", bind)
.add("to", to)
.toString();
diff --git a/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java b/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
index abc9ab2fd9..e2a1f29a33 100644
--- a/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/ManagerDaoAdapter.java
@@ -7,19 +7,15 @@ import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
-public class ManagerDaoAdapter {
+public class ManagerDaoAdapter {
private final GenericDAO dao;
- private final Function notFoundException;
- private final Function alreadyExistsException;
- public ManagerDaoAdapter(GenericDAO dao, Function notFoundException, Function alreadyExistsException) {
+ public ManagerDaoAdapter(GenericDAO dao) {
this.dao = dao;
- this.notFoundException = notFoundException;
- this.alreadyExistsException = alreadyExistsException;
}
- public void modify(T object, Function permissionCheck, AroundHandler beforeUpdate, AroundHandler afterUpdate) throws E {
+ public void modify(T object, Function permissionCheck, AroundHandler beforeUpdate, AroundHandler afterUpdate) throws NotFoundException {
T notModified = dao.get(object.getId());
if (notModified != null) {
permissionCheck.apply(notModified).check();
@@ -34,19 +30,19 @@ public class ManagerDaoAdapter {
afterUpdate.handle(notModified);
} else {
- throw notFoundException.apply(object);
+ throw new NotFoundException();
}
}
- public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate) throws E {
+ public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate) throws AlreadyExistsException {
return create(newObject, permissionCheck, beforeCreate, afterCreate, dao::contains);
}
- public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate, Predicate existsCheck) throws E {
+ public T create(T newObject, Supplier permissionCheck, AroundHandler beforeCreate, AroundHandler afterCreate, Predicate existsCheck) throws AlreadyExistsException {
permissionCheck.get().check();
AssertUtil.assertIsValid(newObject);
if (existsCheck.test(newObject)) {
- throw alreadyExistsException.apply(newObject);
+ throw new AlreadyExistsException();
}
newObject.setCreationDate(System.currentTimeMillis());
beforeCreate.handle(newObject);
@@ -55,19 +51,19 @@ public class ManagerDaoAdapter {
return newObject;
}
- public void delete(T toDelete, Supplier permissionCheck, AroundHandler beforeDelete, AroundHandler afterDelete) throws E {
+ public void delete(T toDelete, Supplier permissionCheck, AroundHandler beforeDelete, AroundHandler afterDelete) throws NotFoundException {
permissionCheck.get().check();
if (dao.contains(toDelete)) {
beforeDelete.handle(toDelete);
dao.delete(toDelete);
afterDelete.handle(toDelete);
} else {
- throw notFoundException.apply(toDelete);
+ throw new NotFoundException();
}
}
@FunctionalInterface
- public interface AroundHandler {
- void handle(T notModified) throws E;
+ public interface AroundHandler {
+ void handle(T notModified);
}
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/UserAlreadyExistsExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/rest/AlreadyExistsExceptionMapper.java
similarity index 53%
rename from scm-webapp/src/main/java/sonia/scm/api/rest/UserAlreadyExistsExceptionMapper.java
rename to scm-webapp/src/main/java/sonia/scm/api/rest/AlreadyExistsExceptionMapper.java
index ef0cc8b0a4..28240482e5 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/UserAlreadyExistsExceptionMapper.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/AlreadyExistsExceptionMapper.java
@@ -1,6 +1,6 @@
package sonia.scm.api.rest;
-import sonia.scm.user.UserAlreadyExistsException;
+import sonia.scm.AlreadyExistsException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
@@ -8,9 +8,9 @@ import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
-public class UserAlreadyExistsExceptionMapper implements ExceptionMapper {
+public class AlreadyExistsExceptionMapper implements ExceptionMapper {
@Override
- public Response toResponse(UserAlreadyExistsException exception) {
+ public Response toResponse(AlreadyExistsException exception) {
return Response.status(Status.CONFLICT).build();
}
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/GroupAlreadyExistsExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/rest/GroupAlreadyExistsExceptionMapper.java
deleted file mode 100644
index 43c0d1ff32..0000000000
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/GroupAlreadyExistsExceptionMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package sonia.scm.api.rest;
-
-import sonia.scm.group.GroupAlreadyExistsException;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-
-@Provider
-public class GroupAlreadyExistsExceptionMapper implements ExceptionMapper {
- @Override
- public Response toResponse(GroupAlreadyExistsException exception) {
- return Response.status(Status.CONFLICT).build();
- }
-}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/Permission.java b/scm-webapp/src/main/java/sonia/scm/api/rest/Permission.java
index cab11840df..ba707c19c2 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/Permission.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/Permission.java
@@ -34,15 +34,15 @@ package sonia.scm.api.rest;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -127,7 +127,7 @@ public class Permission implements Serializable
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("id", id)
.add("value", value)
.toString();
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/RepositoryAlreadyExistsExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/rest/RepositoryAlreadyExistsExceptionMapper.java
deleted file mode 100644
index e69b9e98d6..0000000000
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/RepositoryAlreadyExistsExceptionMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package sonia.scm.api.rest;
-
-import sonia.scm.repository.RepositoryAlreadyExistsException;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-
-@Provider
-public class RepositoryAlreadyExistsExceptionMapper implements ExceptionMapper {
- @Override
- public Response toResponse(RepositoryAlreadyExistsException exception) {
- return Response.status(Status.CONFLICT).build();
- }
-}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/RestExceptionResult.java b/scm-webapp/src/main/java/sonia/scm/api/rest/RestExceptionResult.java
index 42130a0a35..5c0e048b78 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/RestExceptionResult.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/RestExceptionResult.java
@@ -34,15 +34,16 @@ package sonia.scm.api.rest;
//~--- non-JDK imports --------------------------------------------------------
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Throwables;
-//~--- JDK imports ------------------------------------------------------------
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+//~--- JDK imports ------------------------------------------------------------
+
/**
*
* @author Sebastian Sdorra
@@ -145,7 +146,7 @@ public class RestExceptionResult
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("message", message)
.add("stacktrace", stacktrace)
.toString();
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java
index 2ad7a64255..f00072cdcb 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java
@@ -48,8 +48,13 @@ import sonia.scm.util.AssertUtil;
import sonia.scm.util.HttpUtil;
import sonia.scm.util.Util;
-import javax.ws.rs.core.*;
+import javax.ws.rs.core.CacheControl;
+import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.GenericEntity;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -61,28 +66,19 @@ import java.util.Date;
//~--- JDK imports ------------------------------------------------------------
-/**
- *
- * @author Sebastian Sdorra
- *
- * @param
- * @param
- */
-public abstract class AbstractManagerResource
-{
+public abstract class AbstractManagerResource {
/** the logger for AbstractManagerResource */
private static final Logger logger =
LoggerFactory.getLogger(AbstractManagerResource.class);
- protected final Manager manager;
+ protected final Manager manager;
private final Class type;
protected int cacheMaxAge = 0;
protected boolean disableCache = false;
- public AbstractManagerResource(Manager manager, Class type) {
+ public AbstractManagerResource(Manager manager, Class type) {
this.manager = manager;
this.type = type;
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/BrowserStreamingOutput.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/BrowserStreamingOutput.java
index 73f59f14da..2705b407de 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/BrowserStreamingOutput.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/BrowserStreamingOutput.java
@@ -38,7 +38,6 @@ package sonia.scm.api.rest.resources;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.api.CatCommandBuilder;
import sonia.scm.repository.api.RepositoryService;
@@ -120,13 +119,13 @@ public class BrowserStreamingOutput implements StreamingOutput
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
- catch (RepositoryException ex)
- {
- logger.error("could not write content to page", ex);
-
- throw new WebApplicationException(ex,
- Response.Status.INTERNAL_SERVER_ERROR);
- }
+// catch (RepositoryException ex)
+// {
+// logger.error("could not write content to page", ex);
+//
+// throw new WebApplicationException(ex,
+// Response.Status.INTERNAL_SERVER_ERROR);
+// }
finally
{
IOUtil.close(repositoryService);
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
index 7aed8dde0b..95f729c2a3 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
@@ -39,26 +39,20 @@ import com.google.inject.Inject;
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
-
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.credential.PasswordService;
import org.apache.shiro.subject.Subject;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
+import sonia.scm.ConcurrentModificationException;
+import sonia.scm.NotFoundException;
import sonia.scm.api.rest.RestActionResult;
import sonia.scm.security.Role;
import sonia.scm.security.ScmSecurityException;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.util.AssertUtil;
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -67,6 +61,8 @@ import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+//~--- JDK imports ------------------------------------------------------------
+
/**
* Resource to change the password of the authenticated user.
*
@@ -104,11 +100,6 @@ public class ChangePasswordResource
*
* @param oldPassword old password of the current user
* @param newPassword new password for the current user
- *
- * @return
- *
- * @throws IOException
- * @throws UserException
*/
@POST
@TypeHint(RestActionResult.class)
@@ -118,10 +109,7 @@ public class ChangePasswordResource
@ResponseCode(code = 500, condition = "internal server error")
})
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public Response changePassword(@FormParam("old-password") String oldPassword,
- @FormParam("new-password") String newPassword)
- throws UserException, IOException
- {
+ public Response changePassword(@FormParam("old-password") String oldPassword, @FormParam("new-password") String newPassword) throws NotFoundException, ConcurrentModificationException {
AssertUtil.assertIsNotEmpty(oldPassword);
AssertUtil.assertIsNotEmpty(newPassword);
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
index fc0f3751e5..db29725917 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
@@ -35,26 +35,20 @@ package sonia.scm.api.rest.resources;
//~--- non-JDK imports --------------------------------------------------------
-import com.google.common.io.Closeables;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.api.DiffCommandBuilder;
import sonia.scm.repository.api.RepositoryService;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-import java.io.OutputStream;
+import sonia.scm.util.IOUtil;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
-import sonia.scm.util.IOUtil;
+import java.io.IOException;
+import java.io.OutputStream;
+
+//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -96,22 +90,11 @@ public class DiffStreamingOutput implements StreamingOutput
* @throws WebApplicationException
*/
@Override
- public void write(OutputStream output)
- throws IOException, WebApplicationException
- {
+ public void write(OutputStream output) throws IOException {
try
{
builder.retriveContent(output);
}
- catch (PathNotFoundException ex)
- {
- if (logger.isWarnEnabled())
- {
- logger.warn("could not find path {}", ex.getPath());
- }
-
- throw new WebApplicationException(Response.Status.NOT_FOUND);
- }
catch (RevisionNotFoundException ex)
{
if (logger.isWarnEnabled())
@@ -121,13 +104,13 @@ public class DiffStreamingOutput implements StreamingOutput
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
- catch (RepositoryException ex)
- {
- logger.error("could not write content to page", ex);
-
- throw new WebApplicationException(ex,
- Response.Status.INTERNAL_SERVER_ERROR);
- }
+// catch (RepositoryException ex)
+// {
+// logger.error("could not write content to page", ex);
+//
+// throw new WebApplicationException(ex,
+// Response.Status.INTERNAL_SERVER_ERROR);
+// }
finally
{
IOUtil.close(repositoryService);
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
index 42816abd93..a560cc278e 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
@@ -43,12 +43,25 @@ import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import org.apache.shiro.SecurityUtils;
import sonia.scm.group.Group;
-import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.security.Role;
-import javax.ws.rs.*;
-import javax.ws.rs.core.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.GenericEntity;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
import java.util.Collection;
//~--- JDK imports ------------------------------------------------------------
@@ -60,23 +73,13 @@ import java.util.Collection;
*/
@Path("groups")
@Singleton
-public class GroupResource
- extends AbstractManagerResource
-{
+public class GroupResource extends AbstractManagerResource {
/** Field description */
public static final String PATH_PART = "groups";
//~--- constructors ---------------------------------------------------------
- /**
- * Constructs ...
- *
- *
- *
- * @param securityContextProvider
- * @param groupManager
- */
@Inject
public GroupResource(GroupManager groupManager)
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryImportResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryImportResource.java
index 1b25fc3f79..4ffb349057 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryImportResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryImportResource.java
@@ -35,7 +35,7 @@ package sonia.scm.api.rest.resources;
//~--- non-JDK imports --------------------------------------------------------
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.io.Files;
@@ -47,10 +47,19 @@ import com.webcohesion.enunciate.metadata.rs.TypeHint;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import sonia.scm.AlreadyExistsException;
+import sonia.scm.NotFoundException;
import sonia.scm.NotSupportedFeatuerException;
import sonia.scm.Type;
import sonia.scm.api.rest.RestActionUploadResult;
-import sonia.scm.repository.*;
+import sonia.scm.repository.AdvancedImportHandler;
+import sonia.scm.repository.ImportHandler;
+import sonia.scm.repository.ImportResult;
+import sonia.scm.repository.InternalRepositoryException;
+import sonia.scm.repository.Repository;
+import sonia.scm.repository.RepositoryHandler;
+import sonia.scm.repository.RepositoryManager;
+import sonia.scm.repository.RepositoryType;
import sonia.scm.repository.api.Command;
import sonia.scm.repository.api.RepositoryService;
import sonia.scm.repository.api.RepositoryServiceFactory;
@@ -58,8 +67,21 @@ import sonia.scm.repository.api.UnbundleCommandBuilder;
import sonia.scm.security.Role;
import sonia.scm.util.IOUtil;
-import javax.ws.rs.*;
-import javax.ws.rs.core.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.GenericEntity;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@@ -256,10 +278,10 @@ public class RepositoryImportResource
service = serviceFactory.create(repository);
service.getPullCommand().pull(request.getUrl());
}
- catch (RepositoryException ex)
- {
- handleImportFailure(ex, repository);
- }
+// catch (RepositoryException ex)
+// {
+// handleImportFailure(ex, repository);
+// }
catch (IOException ex)
{
handleImportFailure(ex, repository);
@@ -413,11 +435,11 @@ public class RepositoryImportResource
logger.warn("exception occured durring directory import", ex);
response = Response.serverError().build();
}
- catch (RepositoryException ex)
- {
- logger.warn("exception occured durring directory import", ex);
- response = Response.serverError().build();
- }
+// catch (RepositoryException ex)
+// {
+// logger.warn("exception occured durring directory import", ex);
+// response = Response.serverError().build();
+// }
}
else
{
@@ -526,14 +548,14 @@ public class RepositoryImportResource
// repository = new Repository(null, type, name);
manager.create(repository);
}
- catch (RepositoryAlreadyExistsException ex)
+ catch (AlreadyExistsException ex)
{
logger.warn("a {} repository with the name {} already exists", type,
name);
throw new WebApplicationException(Response.Status.CONFLICT);
}
- catch (RepositoryException ex)
+ catch (InternalRepositoryException ex)
{
handleGenericCreationFailure(ex, type, name);
}
@@ -583,11 +605,7 @@ public class RepositoryImportResource
service = serviceFactory.create(repository);
service.getUnbundleCommand().setCompressed(compressed).unbundle(file);
}
- catch (RepositoryException ex)
- {
- handleImportFailure(ex, repository);
- }
- catch (IOException ex)
+ catch (InternalRepositoryException ex)
{
handleImportFailure(ex, repository);
}
@@ -685,9 +703,9 @@ public class RepositoryImportResource
{
manager.delete(repository);
}
- catch (RepositoryException e)
+ catch (InternalRepositoryException | NotFoundException e)
{
- logger.error("can not delete repository", e);
+ logger.error("can not delete repository after import failure", e);
}
throw new WebApplicationException(ex,
@@ -741,7 +759,7 @@ public class RepositoryImportResource
{
throw new WebApplicationException(ex);
}
- catch (RepositoryException ex)
+ catch (InternalRepositoryException ex)
{
throw new WebApplicationException(ex);
}
@@ -812,7 +830,7 @@ public class RepositoryImportResource
public String toString()
{
//J-
- return Objects.toStringHelper(this)
+ return MoreObjects.toStringHelper(this)
.add("name", name)
.add("url", url)
.toString();
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
index 9b9688332f..4a9fd9e38f 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
@@ -46,16 +46,51 @@ import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.AuthorizationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sonia.scm.repository.*;
-import sonia.scm.repository.api.*;
+import sonia.scm.NotFoundException;
+import sonia.scm.repository.BlameResult;
+import sonia.scm.repository.Branches;
+import sonia.scm.repository.BrowserResult;
+import sonia.scm.repository.Changeset;
+import sonia.scm.repository.ChangesetPagingResult;
+import sonia.scm.repository.HealthChecker;
+import sonia.scm.repository.Permission;
+import sonia.scm.repository.Repository;
+import sonia.scm.repository.RepositoryIsNotArchivedException;
+import sonia.scm.repository.RepositoryManager;
+import sonia.scm.repository.RepositoryNotFoundException;
+import sonia.scm.repository.Tags;
+import sonia.scm.repository.api.BlameCommandBuilder;
+import sonia.scm.repository.api.BrowseCommandBuilder;
+import sonia.scm.repository.api.CatCommandBuilder;
+import sonia.scm.repository.api.CommandNotSupportedException;
+import sonia.scm.repository.api.DiffCommandBuilder;
+import sonia.scm.repository.api.DiffFormat;
+import sonia.scm.repository.api.LogCommandBuilder;
+import sonia.scm.repository.api.RepositoryService;
+import sonia.scm.repository.api.RepositoryServiceFactory;
import sonia.scm.util.AssertUtil;
import sonia.scm.util.HttpUtil;
import sonia.scm.util.IOUtil;
import sonia.scm.util.Util;
-import javax.ws.rs.*;
-import javax.ws.rs.core.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.GenericEntity;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.StreamingOutput;
+import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -69,7 +104,7 @@ import java.util.Collection;
*/
@Singleton
@Path("repositories")
-public class RepositoryResource extends AbstractManagerResource
+public class RepositoryResource extends AbstractManagerResource
{
/** Field description */
@@ -169,12 +204,15 @@ public class RepositoryResource extends AbstractManagerResource
+public class UserResource extends AbstractManagerResource
{
/** Field description */
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java
index b06b5b9eba..d44a91d2c9 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchRootResource.java
@@ -5,7 +5,6 @@ import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import sonia.scm.repository.Branches;
import sonia.scm.repository.NamespaceAndName;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryNotFoundException;
import sonia.scm.repository.api.CommandNotSupportedException;
import sonia.scm.repository.api.RepositoryService;
@@ -55,7 +54,7 @@ public class BranchRootResource {
@ResponseCode(code = 404, condition = "not found, no branch with the specified name for the repository available or repository not found"),
@ResponseCode(code = 500, condition = "internal server error")
})
- public Response get(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("branch") String branchName) throws IOException, RepositoryException {
+ public Response get(@PathParam("namespace") String namespace, @PathParam("name") String name, @PathParam("branch") String branchName) throws IOException {
try (RepositoryService repositoryService = servicefactory.create(new NamespaceAndName(namespace, name))) {
Branches branches = repositoryService.getBranchesCommand().getBranches();
return branches.getBranches()
@@ -100,7 +99,7 @@ public class BranchRootResource {
@ResponseCode(code = 404, condition = "not found, no repository found for the given namespace and name"),
@ResponseCode(code = 500, condition = "internal server error")
})
- public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) throws IOException, RepositoryException {
+ public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) throws IOException {
try (RepositoryService repositoryService = servicefactory.create(new NamespaceAndName(namespace, name))) {
Branches branches = repositoryService.getBranchesCommand().getBranches();
return Response.ok(branchCollectionToDtoMapper.map(namespace, name, branches.getBranches())).build();
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CollectionResourceManagerAdapter.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CollectionResourceManagerAdapter.java
index 3169088331..3ef19f7294 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CollectionResourceManagerAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CollectionResourceManagerAdapter.java
@@ -1,6 +1,7 @@
package sonia.scm.api.v2.resources;
import de.otto.edison.hal.HalRepresentation;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.Manager;
import sonia.scm.ModelObject;
import sonia.scm.PageResult;
@@ -22,16 +23,14 @@ import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
*
* @param The type of the model object, eg. {@link sonia.scm.user.User}.
* @param The corresponding transport object, eg. {@link UserDto}.
- * @param The exception type for the model object, eg. {@link sonia.scm.user.UserException}.
*
* @see SingleResourceManagerAdapter
*/
@SuppressWarnings("squid:S00119") // "MODEL_OBJECT" is much more meaningful than "M", right?
class CollectionResourceManagerAdapter extends AbstractManagerResource {
+ DTO extends HalRepresentation> extends AbstractManagerResource {
- CollectionResourceManagerAdapter(Manager manager, Class type) {
+ CollectionResourceManagerAdapter(Manager manager, Class type) {
super(manager, type);
}
@@ -48,7 +47,7 @@ class CollectionResourceManagerAdapter modelObjectSupplier, Function uriCreator) throws EXCEPTION {
+ public Response create(DTO dto, Supplier modelObjectSupplier, Function uriCreator) throws AlreadyExistsException {
if (dto == null) {
return Response.status(BAD_REQUEST).build();
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ContentResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ContentResource.java
index 0936a5b4a0..bf97a998d7 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ContentResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ContentResource.java
@@ -8,7 +8,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.repository.NamespaceAndName;
import sonia.scm.repository.PathNotFoundException;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryNotFoundException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.repository.api.RepositoryService;
@@ -79,9 +78,9 @@ public class ContentResource {
} catch (PathNotFoundException e) {
LOG.debug("path '{}' not found in repository {}/{}", path, namespace, name, e);
throw new WebApplicationException(Status.NOT_FOUND);
- } catch (RepositoryException e) {
- LOG.info("error reading repository resource {} from {}/{}", path, namespace, name, e);
- throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR);
+ } catch (RevisionNotFoundException e) {
+ LOG.debug("revision '{}' not found in repository {}/{}", revision, namespace, name, e);
+ throw new WebApplicationException(Status.NOT_FOUND);
}
};
}
@@ -124,7 +123,7 @@ public class ContentResource {
} catch (RevisionNotFoundException e) {
LOG.debug("revision '{}' not found in repository {}/{}", revision, namespace, name, e);
return Response.status(Status.NOT_FOUND).build();
- } catch (IOException | RepositoryException e) {
+ } catch (IOException e) {
LOG.info("error reading repository resource {} from {}/{}", path, namespace, name, e);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
@@ -137,7 +136,7 @@ public class ContentResource {
contentType.getLanguage().ifPresent(language -> responseBuilder.header("Language", language));
}
- private byte[] getHead(String revision, String path, RepositoryService repositoryService) throws IOException, RepositoryException {
+ private byte[] getHead(String revision, String path, RepositoryService repositoryService) throws IOException, PathNotFoundException, RevisionNotFoundException {
InputStream stream = repositoryService.getCatCommand().setRevision(revision).getStream(path);
try {
byte[] buffer = new byte[HEAD_BUFFER_SIZE];
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java
index 4a9c797b9f..acc02c0da4 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java
@@ -1,15 +1,24 @@
package sonia.scm.api.v2.resources;
-import com.webcohesion.enunciate.metadata.rs.*;
+import com.webcohesion.enunciate.metadata.rs.ResponseCode;
+import com.webcohesion.enunciate.metadata.rs.ResponseHeader;
+import com.webcohesion.enunciate.metadata.rs.ResponseHeaders;
+import com.webcohesion.enunciate.metadata.rs.StatusCodes;
+import com.webcohesion.enunciate.metadata.rs.TypeHint;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.group.Group;
-import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
-import java.io.IOException;
public class GroupCollectionResource {
@@ -19,7 +28,7 @@ public class GroupCollectionResource {
private final GroupCollectionToDtoMapper groupCollectionToDtoMapper;
private final ResourceLinks resourceLinks;
- private final IdResourceManagerAdapter adapter;
+ private final IdResourceManagerAdapter adapter;
@Inject
public GroupCollectionResource(GroupManager manager, GroupDtoToGroupMapper dtoToGroupMapper, GroupCollectionToDtoMapper groupCollectionToDtoMapper, ResourceLinks resourceLinks) {
@@ -76,7 +85,7 @@ public class GroupCollectionResource {
})
@TypeHint(TypeHint.NO_CONTENT.class)
@ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created group"))
- public Response create(GroupDto groupDto) throws IOException, GroupException {
+ public Response create(GroupDto groupDto) throws AlreadyExistsException {
return adapter.create(groupDto,
() -> dtoToGroupMapper.map(groupDto),
group -> resourceLinks.group().self(group.getName()));
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java
index 10818ec953..c0bb7e5bc5 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java
@@ -4,19 +4,24 @@ import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import sonia.scm.group.Group;
-import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
public class GroupResource {
private final GroupToGroupDtoMapper groupToGroupDtoMapper;
private final GroupDtoToGroupMapper dtoToGroupMapper;
- private final IdResourceManagerAdapter adapter;
+ private final IdResourceManagerAdapter adapter;
@Inject
public GroupResource(GroupManager manager, GroupToGroupDtoMapper groupToGroupDtoMapper,
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java
index ded4bff309..e1f9be1ead 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java
@@ -1,12 +1,12 @@
package sonia.scm.api.v2.resources;
import de.otto.edison.hal.HalRepresentation;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.Manager;
import sonia.scm.ModelObject;
import sonia.scm.PageResult;
import javax.ws.rs.core.Response;
-import java.io.IOException;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -18,15 +18,14 @@ import java.util.function.Supplier;
*/
@SuppressWarnings("squid:S00119") // "MODEL_OBJECT" is much more meaningful than "M", right?
class IdResourceManagerAdapter {
+ DTO extends HalRepresentation> {
- private final Manager manager;
+ private final Manager manager;
- private final SingleResourceManagerAdapter singleAdapter;
- private final CollectionResourceManagerAdapter collectionAdapter;
+ private final SingleResourceManagerAdapter singleAdapter;
+ private final CollectionResourceManagerAdapter collectionAdapter;
- IdResourceManagerAdapter(Manager manager, Class type) {
+ IdResourceManagerAdapter(Manager manager, Class type) {
this.manager = manager;
singleAdapter = new SingleResourceManagerAdapter<>(manager, type);
collectionAdapter = new CollectionResourceManagerAdapter<>(manager, type);
@@ -48,7 +47,7 @@ class IdResourceManagerAdapter modelObjectSupplier, Function uriCreator) throws IOException, EXCEPTION {
+ public Response create(DTO dto, Supplier modelObjectSupplier, Function uriCreator) throws AlreadyExistsException {
return collectionAdapter.create(dto, modelObjectSupplier, uriCreator);
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java
index f9a32c7ddd..9421c3ca14 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/MeResource.java
@@ -5,7 +5,6 @@ import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import org.apache.shiro.SecurityUtils;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.VndMediaType;
@@ -28,7 +27,7 @@ public class MeResource {
private final UserToUserDtoMapper userToDtoMapper;
- private final IdResourceManagerAdapter adapter;
+ private final IdResourceManagerAdapter adapter;
@Inject
public MeResource(UserToUserDtoMapper userToDtoMapper, UserManager manager) {
this.userToDtoMapper = userToDtoMapper;
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java
index 9fef539756..9f4858d2f6 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryCollectionResource.java
@@ -5,8 +5,8 @@ import com.webcohesion.enunciate.metadata.rs.ResponseHeader;
import com.webcohesion.enunciate.metadata.rs.ResponseHeaders;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryManager;
import sonia.scm.web.VndMediaType;
@@ -25,7 +25,7 @@ public class RepositoryCollectionResource {
private static final int DEFAULT_PAGE_SIZE = 10;
- private final CollectionResourceManagerAdapter adapter;
+ private final CollectionResourceManagerAdapter adapter;
private final RepositoryCollectionToDtoMapper repositoryCollectionToDtoMapper;
private final RepositoryDtoToRepositoryMapper dtoToRepositoryMapper;
private final ResourceLinks resourceLinks;
@@ -87,7 +87,7 @@ public class RepositoryCollectionResource {
})
@TypeHint(TypeHint.NO_CONTENT.class)
@ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created repository"))
- public Response create(@Valid RepositoryDto repositoryDto) throws RepositoryException {
+ public Response create(@Valid RepositoryDto repositoryDto) throws AlreadyExistsException {
return adapter.create(repositoryDto,
() -> dtoToRepositoryMapper.map(repositoryDto, null),
repository -> resourceLinks.repository().self(repository.getNamespace(), repository.getName()));
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java
index 817eb29f11..703e6c4403 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryResource.java
@@ -5,7 +5,6 @@ import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import sonia.scm.repository.NamespaceAndName;
import sonia.scm.repository.Repository;
-import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryIsNotArchivedException;
import sonia.scm.repository.RepositoryManager;
import sonia.scm.web.VndMediaType;
@@ -30,7 +29,7 @@ public class RepositoryResource {
private final RepositoryDtoToRepositoryMapper dtoToRepositoryMapper;
private final RepositoryManager manager;
- private final SingleResourceManagerAdapter adapter;
+ private final SingleResourceManagerAdapter adapter;
private final Provider tagRootResource;
private final Provider branchRootResource;
private final Provider changesetRootResource;
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/SingleResourceManagerAdapter.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/SingleResourceManagerAdapter.java
index 06195284df..bc84ca7c33 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/SingleResourceManagerAdapter.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/SingleResourceManagerAdapter.java
@@ -22,22 +22,20 @@ import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
*
* @param The type of the model object, eg. {@link sonia.scm.user.User}.
* @param The corresponding transport object, eg. {@link UserDto}.
- * @param The exception type for the model object, eg. {@link sonia.scm.user.UserException}.
*
* @see CollectionResourceManagerAdapter
*/
@SuppressWarnings("squid:S00119") // "MODEL_OBJECT" is much more meaningful than "M", right?
class SingleResourceManagerAdapter extends AbstractManagerResource {
+ DTO extends HalRepresentation> extends AbstractManagerResource {
private final Function> errorHandler;
- SingleResourceManagerAdapter(Manager manager, Class type) {
+ SingleResourceManagerAdapter(Manager manager, Class type) {
this(manager, type, e -> Optional.empty());
}
- SingleResourceManagerAdapter(Manager manager, Class type, Function> errorHandler) {
+ SingleResourceManagerAdapter(Manager manager, Class type, Function> errorHandler) {
super(manager, type);
this.errorHandler = errorHandler;
}
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java
index 36a1e69a83..550c60de5d 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserCollectionResource.java
@@ -1,15 +1,24 @@
package sonia.scm.api.v2.resources;
-import com.webcohesion.enunciate.metadata.rs.*;
+import com.webcohesion.enunciate.metadata.rs.ResponseCode;
+import com.webcohesion.enunciate.metadata.rs.ResponseHeader;
+import com.webcohesion.enunciate.metadata.rs.ResponseHeaders;
+import com.webcohesion.enunciate.metadata.rs.StatusCodes;
+import com.webcohesion.enunciate.metadata.rs.TypeHint;
+import sonia.scm.AlreadyExistsException;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
-import java.io.IOException;
public class UserCollectionResource {
@@ -18,7 +27,7 @@ public class UserCollectionResource {
private final UserCollectionToDtoMapper userCollectionToDtoMapper;
private final ResourceLinks resourceLinks;
- private final IdResourceManagerAdapter adapter;
+ private final IdResourceManagerAdapter adapter;
@Inject
public UserCollectionResource(UserManager manager, UserDtoToUserMapper dtoToUserMapper,
@@ -78,7 +87,7 @@ public class UserCollectionResource {
})
@TypeHint(TypeHint.NO_CONTENT.class)
@ResponseHeaders(@ResponseHeader(name = "Location", description = "uri to the created user"))
- public Response create(UserDto userDto) throws IOException, UserException {
+ public Response create(UserDto userDto) throws AlreadyExistsException {
return adapter.create(userDto,
() -> dtoToUserMapper.map(userDto, ""),
user -> resourceLinks.user().self(user.getName()));
diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java
index f05c8165cb..a4e07382dd 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java
@@ -4,12 +4,17 @@ import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
import sonia.scm.user.User;
-import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
public class UserResource {
@@ -17,7 +22,7 @@ public class UserResource {
private final UserDtoToUserMapper dtoToUserMapper;
private final UserToUserDtoMapper userToDtoMapper;
- private final IdResourceManagerAdapter adapter;
+ private final IdResourceManagerAdapter