diff --git a/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java b/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java new file mode 100644 index 0000000000..744f0aa0eb --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/group/GroupNotFoundException.java @@ -0,0 +1,89 @@ +/** + * 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 + * {@link GroupManager#modify(Group)} 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() {} + + /** + * Constructs a new GroupNotFoundException. + * + * + * @param message message for the exception + */ + public GroupNotFoundException(String message) + { + super(message); + } + + /** + * Constructs a new GroupNotFoundException. + * + * + * @param throwable root cause + */ + public GroupNotFoundException(Throwable throwable) + { + super(throwable); + } + + /** + * Constructs a new GroupNotFoundException. + * + * + * @param message message for the exception + * @param throwable root cause + */ + public GroupNotFoundException(String message, Throwable throwable) + { + super(message, throwable); + } +} diff --git a/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java b/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java new file mode 100644 index 0000000000..ab8e0fcc22 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/user/UserNotFoundException.java @@ -0,0 +1,88 @@ +/** + * 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 + * {@link UserManager#modify(User)} 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() {} + + /** + * Constructs a new UserNotFoundException. + * + * + * @param message message for the exception + */ + public UserNotFoundException(String message) + { + super(message); + } + + /** + * Constructs a new UserNotFoundException. + * + * + * @param throwable root cause + */ + public UserNotFoundException(Throwable throwable) + { + super(throwable); + } + + /** + * Constructs a new UserNotFoundException. + * + * + * @param message message for the exception + * @param throwable root cause + */ + public UserNotFoundException(String message, Throwable throwable) + { + super(message, throwable); + } +} 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 2841eafe72..58b1fc3842 100644 --- a/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java +++ b/scm-test/src/main/java/sonia/scm/user/UserManagerTestBase.java @@ -125,6 +125,19 @@ public abstract class UserManagerTestBase assertNull(manager.get("zaphod")); } + /** + * Method description + * + * + * @throws IOException + * @throws UserException + */ + @Test(expected = UserNotFoundException.class) + public void testDeleteNotFound() throws UserException, IOException + { + manager.delete(UserTestData.createDent()); + } + /** * Method description * @@ -253,9 +266,7 @@ public abstract class UserManagerTestBase @Test(expected = UserException.class) public void testModifyNotExisting() throws UserException, IOException { - User zaphod = UserTestData.createZaphod(); - - manager.modify(zaphod); + manager.modify(UserTestData.createZaphod()); } /** @@ -324,6 +335,19 @@ 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 + { + manager.refresh(UserTestData.createDent()); + } + /** * Method description * diff --git a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java index 9cf0f39af2..fc3651c822 100644 --- a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java +++ b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupManager.java @@ -176,7 +176,7 @@ public class DefaultGroupManager extends AbstractGroupManager } else { - throw new GroupException("user does not exists"); + throw new GroupNotFoundException("user does not exists"); } } @@ -228,7 +228,7 @@ public class DefaultGroupManager extends AbstractGroupManager } else { - throw new GroupException("group does not exists"); + throw new GroupNotFoundException("group does not exists"); } } @@ -256,7 +256,7 @@ public class DefaultGroupManager extends AbstractGroupManager if (fresh == null) { - throw new GroupException("group does not exists"); + throw new GroupNotFoundException("group does not exists"); } fresh.copyProperties(group); diff --git a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java index 807da0cf62..465a66465e 100644 --- a/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java +++ b/scm-webapp/src/main/java/sonia/scm/user/DefaultUserManager.java @@ -220,7 +220,7 @@ public class DefaultUserManager extends AbstractUserManager } else { - throw new UserException("user does not exists"); + throw new UserNotFoundException("user does not exists"); } } @@ -292,7 +292,7 @@ public class DefaultUserManager extends AbstractUserManager } else { - throw new UserException("user does not exists"); + throw new UserNotFoundException("user does not exists"); } } @@ -319,7 +319,7 @@ public class DefaultUserManager extends AbstractUserManager if (fresh == null) { - throw new UserException("user does not exists"); + throw new UserNotFoundException("user does not exists"); } fresh.copyProperties(user); diff --git a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java index 720bd3dd0e..ed7c00a90f 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/DefaultRepositoryManagerTest.java @@ -58,7 +58,6 @@ import static org.mockito.Mockito.*; import java.io.IOException; -import java.util.Collections; import java.util.HashSet; import java.util.Set;