mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-02 03:25:56 +01:00
Remove special RepositoryNotFoundException
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package sonia.scm;
|
package sonia.scm;
|
||||||
|
|
||||||
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -25,14 +26,20 @@ public class NotFoundException extends RuntimeException {
|
|||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static NotFoundExceptionBuilder notFound(Repository repository) {
|
||||||
|
return new NotFoundExceptionBuilder().in(repository);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NotFoundExceptionBuilder notFound(NamespaceAndName namespaceAndName) {
|
||||||
|
return new NotFoundExceptionBuilder().in(namespaceAndName);
|
||||||
|
}
|
||||||
|
|
||||||
public static NotFoundExceptionBuilder notFound(Class type, String id) {
|
public static NotFoundExceptionBuilder notFound(Class type, String id) {
|
||||||
NotFoundExceptionBuilder builder = new NotFoundExceptionBuilder();
|
return new NotFoundExceptionBuilder().in(type, id);
|
||||||
return builder.in(type, id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NotFoundExceptionBuilder notFound(String type, String id) {
|
public static NotFoundExceptionBuilder notFound(String type, String id) {
|
||||||
NotFoundExceptionBuilder builder = new NotFoundExceptionBuilder();
|
return new NotFoundExceptionBuilder().in(type, id);
|
||||||
return builder.in(type, id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ContextEntry> getContext() {
|
public List<ContextEntry> getContext() {
|
||||||
@@ -50,17 +57,20 @@ public class NotFoundException extends RuntimeException {
|
|||||||
private final List<ContextEntry> context = new LinkedList<>();
|
private final List<ContextEntry> context = new LinkedList<>();
|
||||||
|
|
||||||
public NotFoundExceptionBuilder in(Repository repository) {
|
public NotFoundExceptionBuilder in(Repository repository) {
|
||||||
this.in(Repository.class, repository.getNamespaceAndName().logString());
|
return in(repository.getNamespaceAndName());
|
||||||
return this;
|
}
|
||||||
|
|
||||||
|
public NotFoundExceptionBuilder in(NamespaceAndName namespaceAndName) {
|
||||||
|
return this.in(Repository.class, namespaceAndName.logString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public NotFoundExceptionBuilder in(Class type, String id) {
|
public NotFoundExceptionBuilder in(Class type, String id) {
|
||||||
this.context.add(new ContextEntry(type, id));
|
context.add(new ContextEntry(type, id));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NotFoundExceptionBuilder in(String type, String id) {
|
public NotFoundExceptionBuilder in(String type, String id) {
|
||||||
this.context.add(new ContextEntry(type, id));
|
context.add(new ContextEntry(type, id));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|
||||||
import sonia.scm.NotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signals that the specified {@link Repository} could be found.
|
|
||||||
*
|
|
||||||
* @author Sebastian Sdorra
|
|
||||||
* @since 1.6
|
|
||||||
*/
|
|
||||||
public class RepositoryNotFoundException extends NotFoundException
|
|
||||||
{
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -6583078808900520166L;
|
|
||||||
private static final String TYPE_REPOSITORY = "Repository";
|
|
||||||
|
|
||||||
//~--- constructors ---------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@link RepositoryNotFoundException} with null as its
|
|
||||||
* error detail message.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public RepositoryNotFoundException(Repository repository) {
|
|
||||||
super(Repository.class, repository.getNamespaceAndName().logString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public RepositoryNotFoundException(String repositoryId) {
|
|
||||||
super(TYPE_REPOSITORY, repositoryId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RepositoryNotFoundException(NamespaceAndName namespaceAndName) {
|
|
||||||
super(Repository.class, namespaceAndName.logString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -38,13 +38,13 @@ package sonia.scm.repository.api;
|
|||||||
import com.github.legman.ReferenceType;
|
import com.github.legman.ReferenceType;
|
||||||
import com.github.legman.Subscribe;
|
import com.github.legman.Subscribe;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.base.Strings;
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import sonia.scm.HandlerEventType;
|
import sonia.scm.HandlerEventType;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.cache.Cache;
|
import sonia.scm.cache.Cache;
|
||||||
import sonia.scm.cache.CacheManager;
|
import sonia.scm.cache.CacheManager;
|
||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
@@ -57,7 +57,6 @@ import sonia.scm.repository.Repository;
|
|||||||
import sonia.scm.repository.RepositoryCacheKeyPredicate;
|
import sonia.scm.repository.RepositoryCacheKeyPredicate;
|
||||||
import sonia.scm.repository.RepositoryEvent;
|
import sonia.scm.repository.RepositoryEvent;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.repository.spi.RepositoryServiceProvider;
|
import sonia.scm.repository.spi.RepositoryServiceProvider;
|
||||||
import sonia.scm.repository.spi.RepositoryServiceResolver;
|
import sonia.scm.repository.spi.RepositoryServiceResolver;
|
||||||
@@ -161,7 +160,7 @@ public final class RepositoryServiceFactory
|
|||||||
* @return a implementation of RepositoryService
|
* @return a implementation of RepositoryService
|
||||||
* for the given type of repository
|
* for the given type of repository
|
||||||
*
|
*
|
||||||
* @throws RepositoryNotFoundException if no repository
|
* @throws NotFoundException if no repository
|
||||||
* with the given id is available
|
* with the given id is available
|
||||||
* @throws RepositoryServiceNotFoundException if no repository service
|
* @throws RepositoryServiceNotFoundException if no repository service
|
||||||
* implementation for this kind of repository is available
|
* implementation for this kind of repository is available
|
||||||
@@ -170,7 +169,6 @@ public final class RepositoryServiceFactory
|
|||||||
* for that repository
|
* for that repository
|
||||||
*/
|
*/
|
||||||
public RepositoryService create(NamespaceAndName namespaceAndName)
|
public RepositoryService create(NamespaceAndName namespaceAndName)
|
||||||
throws RepositoryNotFoundException
|
|
||||||
{
|
{
|
||||||
Preconditions.checkArgument(namespaceAndName != null,
|
Preconditions.checkArgument(namespaceAndName != null,
|
||||||
"a non empty namespace and name is required");
|
"a non empty namespace and name is required");
|
||||||
@@ -179,7 +177,7 @@ public final class RepositoryServiceFactory
|
|||||||
|
|
||||||
if (repository == null)
|
if (repository == null)
|
||||||
{
|
{
|
||||||
throw new RepositoryNotFoundException(namespaceAndName);
|
throw NotFoundException.notFound(namespaceAndName).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
return create(repository);
|
return create(repository);
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ package sonia.scm.repository.spi;
|
|||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryHookEvent;
|
import sonia.scm.repository.RepositoryHookEvent;
|
||||||
import sonia.scm.repository.RepositoryHookType;
|
import sonia.scm.repository.RepositoryHookType;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.HookContext;
|
import sonia.scm.repository.api.HookContext;
|
||||||
import sonia.scm.repository.api.HookContextFactory;
|
import sonia.scm.repository.api.HookContextFactory;
|
||||||
|
|
||||||
@@ -71,18 +71,18 @@ public final class HookEventFacade
|
|||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
|
|
||||||
public HookEventHandler handle(String id) throws RepositoryNotFoundException {
|
public HookEventHandler handle(String id) {
|
||||||
return handle(repositoryManagerProvider.get().get(id));
|
return handle(repositoryManagerProvider.get().get(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HookEventHandler handle(NamespaceAndName namespaceAndName) throws RepositoryNotFoundException {
|
public HookEventHandler handle(NamespaceAndName namespaceAndName) {
|
||||||
return handle(repositoryManagerProvider.get().get(namespaceAndName));
|
return handle(repositoryManagerProvider.get().get(namespaceAndName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HookEventHandler handle(Repository repository) throws RepositoryNotFoundException {
|
public HookEventHandler handle(Repository repository) {
|
||||||
if (repository == null)
|
if (repository == null)
|
||||||
{
|
{
|
||||||
throw new RepositoryNotFoundException(repository);
|
throw NotFoundException.notFound(repository).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new HookEventHandler(repositoryManagerProvider.get(),
|
return new HookEventHandler(repositoryManagerProvider.get(),
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ import org.apache.shiro.SecurityUtils;
|
|||||||
import org.apache.shiro.subject.Subject;
|
import org.apache.shiro.subject.Subject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.HgContext;
|
import sonia.scm.repository.HgContext;
|
||||||
import sonia.scm.repository.HgHookManager;
|
import sonia.scm.repository.HgHookManager;
|
||||||
import sonia.scm.repository.HgRepositoryHandler;
|
import sonia.scm.repository.HgRepositoryHandler;
|
||||||
import sonia.scm.repository.RepositoryHookType;
|
import sonia.scm.repository.RepositoryHookType;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryUtil;
|
import sonia.scm.repository.RepositoryUtil;
|
||||||
import sonia.scm.repository.api.HgHookMessage;
|
import sonia.scm.repository.api.HgHookMessage;
|
||||||
import sonia.scm.repository.api.HgHookMessage.Severity;
|
import sonia.scm.repository.api.HgHookMessage.Severity;
|
||||||
@@ -275,17 +275,11 @@ public class HgHookCallbackServlet extends HttpServlet
|
|||||||
|
|
||||||
printMessages(response, context);
|
printMessages(response, context);
|
||||||
}
|
}
|
||||||
catch (RepositoryNotFoundException ex)
|
catch (NotFoundException ex)
|
||||||
{
|
{
|
||||||
if (logger.isErrorEnabled())
|
logger.error(ex.getMessage());
|
||||||
{
|
|
||||||
logger.error("could not find repository with id {}", id);
|
|
||||||
|
|
||||||
if (logger.isTraceEnabled())
|
logger.trace("repository not found", ex);
|
||||||
{
|
|
||||||
logger.trace("repository not found", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
response.sendError(HttpServletResponse.SC_NOT_FOUND);
|
response.sendError(HttpServletResponse.SC_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import sonia.scm.repository.Changeset;
|
|||||||
import sonia.scm.repository.ChangesetPagingResult;
|
import sonia.scm.repository.ChangesetPagingResult;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.repository.api.CommandNotSupportedException;
|
import sonia.scm.repository.api.CommandNotSupportedException;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
@@ -78,7 +77,7 @@ public class BranchRootResource {
|
|||||||
.build();
|
.build();
|
||||||
} catch (CommandNotSupportedException ex) {
|
} catch (CommandNotSupportedException ex) {
|
||||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
return Response.status(Response.Status.NOT_FOUND).build();
|
return Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,7 +97,7 @@ public class BranchRootResource {
|
|||||||
@PathParam("name") String name,
|
@PathParam("name") String name,
|
||||||
@PathParam("branch") String branchName,
|
@PathParam("branch") String branchName,
|
||||||
@DefaultValue("0") @QueryParam("page") int page,
|
@DefaultValue("0") @QueryParam("page") int page,
|
||||||
@DefaultValue("10") @QueryParam("pageSize") int pageSize) throws Exception {
|
@DefaultValue("10") @QueryParam("pageSize") int pageSize) throws IOException {
|
||||||
try (RepositoryService repositoryService = serviceFactory.create(new NamespaceAndName(namespace, name))) {
|
try (RepositoryService repositoryService = serviceFactory.create(new NamespaceAndName(namespace, name))) {
|
||||||
boolean branchExists = repositoryService.getBranchesCommand()
|
boolean branchExists = repositoryService.getBranchesCommand()
|
||||||
.getBranches()
|
.getBranches()
|
||||||
@@ -151,8 +150,6 @@ public class BranchRootResource {
|
|||||||
return Response.ok(branchCollectionToDtoMapper.map(namespace, name, branches.getBranches())).build();
|
return Response.ok(branchCollectionToDtoMapper.map(namespace, name, branches.getBranches())).build();
|
||||||
} catch (CommandNotSupportedException ex) {
|
} catch (CommandNotSupportedException ex) {
|
||||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
} catch (RepositoryNotFoundException e) {
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import sonia.scm.repository.Changeset;
|
|||||||
import sonia.scm.repository.ChangesetPagingResult;
|
import sonia.scm.repository.ChangesetPagingResult;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import sonia.scm.NotFoundException;
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.util.IOUtil;
|
import sonia.scm.util.IOUtil;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import sonia.scm.repository.ChangesetPagingResult;
|
|||||||
import sonia.scm.repository.InternalRepositoryException;
|
import sonia.scm.repository.InternalRepositoryException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.web.VndMediaType;
|
import sonia.scm.web.VndMediaType;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import sonia.scm.repository.NamespaceAndName;
|
|||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.Permission;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.web.VndMediaType;
|
import sonia.scm.web.VndMediaType;
|
||||||
|
|
||||||
@@ -131,7 +130,7 @@ public class PermissionRootResource {
|
|||||||
@Produces(VndMediaType.PERMISSION)
|
@Produces(VndMediaType.PERMISSION)
|
||||||
@TypeHint(PermissionDto.class)
|
@TypeHint(PermissionDto.class)
|
||||||
@Path("")
|
@Path("")
|
||||||
public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) throws RepositoryNotFoundException {
|
public Response getAll(@PathParam("namespace") String namespace, @PathParam("name") String name) {
|
||||||
Repository repository = load(namespace, name);
|
Repository repository = load(namespace, name);
|
||||||
RepositoryPermissions.permissionRead(repository).check();
|
RepositoryPermissions.permissionRead(repository).check();
|
||||||
return Response.ok(permissionCollectionToDtoMapper.map(repository)).build();
|
return Response.ok(permissionCollectionToDtoMapper.map(repository)).build();
|
||||||
@@ -237,12 +236,12 @@ public class PermissionRootResource {
|
|||||||
* @param namespace the repository namespace
|
* @param namespace the repository namespace
|
||||||
* @param name the repository name
|
* @param name the repository name
|
||||||
* @return the repository if the user is permitted
|
* @return the repository if the user is permitted
|
||||||
* @throws RepositoryNotFoundException if the repository does not exists
|
* @throws NotFoundException if the repository does not exists
|
||||||
*/
|
*/
|
||||||
private Repository load(String namespace, String name) throws RepositoryNotFoundException {
|
private Repository load(String namespace, String name) {
|
||||||
NamespaceAndName namespaceAndName = new NamespaceAndName(namespace, name);
|
NamespaceAndName namespaceAndName = new NamespaceAndName(namespace, name);
|
||||||
return Optional.ofNullable(manager.get(namespaceAndName))
|
return Optional.ofNullable(manager.get(namespaceAndName))
|
||||||
.orElseThrow(() -> new RepositoryNotFoundException(namespaceAndName));
|
.orElseThrow(() -> NotFoundException.notFound(namespaceAndName).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package sonia.scm.api.v2.resources;
|
|||||||
|
|
||||||
import sonia.scm.repository.BrowserResult;
|
import sonia.scm.repository.BrowserResult;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.BrowseCommandBuilder;
|
import sonia.scm.repository.api.BrowseCommandBuilder;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.webcohesion.enunciate.metadata.rs.TypeHint;
|
|||||||
import sonia.scm.NotFoundException;
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.RepositoryPermissions;
|
import sonia.scm.repository.RepositoryPermissions;
|
||||||
import sonia.scm.repository.Tag;
|
import sonia.scm.repository.Tag;
|
||||||
import sonia.scm.repository.Tags;
|
import sonia.scm.repository.Tags;
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh(Repository repository) throws RepositoryNotFoundException {
|
public void refresh(Repository repository) {
|
||||||
AssertUtil.assertIsNotNull(repository);
|
AssertUtil.assertIsNotNull(repository);
|
||||||
RepositoryPermissions.read(repository).check();
|
RepositoryPermissions.read(repository).check();
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
|
|||||||
if (fresh != null) {
|
if (fresh != null) {
|
||||||
fresh.copyProperties(repository);
|
fresh.copyProperties(repository);
|
||||||
} else {
|
} else {
|
||||||
throw new RepositoryNotFoundException(repository);
|
throw NotFoundException.notFound(repository).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public final class HealthChecker {
|
|||||||
Repository repository = repositoryManager.get(id);
|
Repository repository = repositoryManager.get(id);
|
||||||
|
|
||||||
if (repository == null) {
|
if (repository == null) {
|
||||||
throw new RepositoryNotFoundException(id);
|
throw new NotFoundException(Repository.class, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
doCheck(repository);
|
doCheck(repository);
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import com.google.inject.Inject;
|
|||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.PushStateDispatcher;
|
import sonia.scm.PushStateDispatcher;
|
||||||
import sonia.scm.filter.WebElement;
|
import sonia.scm.filter.WebElement;
|
||||||
import sonia.scm.repository.DefaultRepositoryProvider;
|
import sonia.scm.repository.DefaultRepositoryProvider;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.repository.spi.HttpScmProtocol;
|
import sonia.scm.repository.spi.HttpScmProtocol;
|
||||||
@@ -71,8 +71,8 @@ public class HttpProtocolServlet extends HttpServlet {
|
|||||||
requestProvider.get().setAttribute(DefaultRepositoryProvider.ATTRIBUTE_NAME, repositoryService.getRepository());
|
requestProvider.get().setAttribute(DefaultRepositoryProvider.ATTRIBUTE_NAME, repositoryService.getRepository());
|
||||||
HttpScmProtocol protocol = repositoryService.getProtocol(HttpScmProtocol.class);
|
HttpScmProtocol protocol = repositoryService.getProtocol(HttpScmProtocol.class);
|
||||||
protocol.serve(req, resp, getServletConfig());
|
protocol.serve(req, resp, getServletConfig());
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
log.debug("Repository not found for namespace and name {}", namespaceAndName, e);
|
log.debug(e.getMessage());
|
||||||
resp.setStatus(HttpStatus.SC_NOT_FOUND);
|
resp.setStatus(HttpStatus.SC_NOT_FOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
import sonia.scm.NotFoundException;
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.CatCommandBuilder;
|
import sonia.scm.repository.api.CatCommandBuilder;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
@@ -58,7 +57,7 @@ public class ContentResourceTest {
|
|||||||
when(catCommand.setRevision(REV)).thenReturn(catCommand);
|
when(catCommand.setRevision(REV)).thenReturn(catCommand);
|
||||||
|
|
||||||
// defaults for unknown things
|
// defaults for unknown things
|
||||||
doThrow(new RepositoryNotFoundException("x")).when(repositoryServiceFactory).create(not(eq(existingNamespaceAndName)));
|
doThrow(new NotFoundException("Test", "r")).when(repositoryServiceFactory).create(not(eq(existingNamespaceAndName)));
|
||||||
doThrow(new NotFoundException("Test", "X")).when(catCommand).getStream(any());
|
doThrow(new NotFoundException("Test", "X")).when(catCommand).getStream(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import sonia.scm.NotFoundException;
|
|||||||
import sonia.scm.api.rest.AuthorizationExceptionMapper;
|
import sonia.scm.api.rest.AuthorizationExceptionMapper;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.DiffCommandBuilder;
|
import sonia.scm.repository.api.DiffCommandBuilder;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
@@ -107,7 +106,7 @@ public class DiffResourceTest extends RepositoryTestBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldGet404OnMissingRepository() throws URISyntaxException, RepositoryNotFoundException {
|
public void shouldGet404OnMissingRepository() throws URISyntaxException {
|
||||||
when(serviceFactory.create(any(NamespaceAndName.class))).thenThrow(new NotFoundException("Text", "x"));
|
when(serviceFactory.create(any(NamespaceAndName.class))).thenThrow(new NotFoundException("Text", "x"));
|
||||||
MockHttpRequest request = MockHttpRequest
|
MockHttpRequest request = MockHttpRequest
|
||||||
.get(DIFF_URL + "revision")
|
.get(DIFF_URL + "revision")
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import sonia.scm.repository.InternalRepositoryException;
|
|||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Person;
|
import sonia.scm.repository.Person;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.LogCommandBuilder;
|
import sonia.scm.repository.api.LogCommandBuilder;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
@@ -133,7 +132,7 @@ public class FileHistoryResourceTest extends RepositoryTestBase {
|
|||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldGet404OnMissingRepository() throws URISyntaxException, RepositoryNotFoundException {
|
public void shouldGet404OnMissingRepository() throws URISyntaxException {
|
||||||
when(serviceFactory.create(any(NamespaceAndName.class))).thenThrow(new NotFoundException("Text", "x"));
|
when(serviceFactory.create(any(NamespaceAndName.class))).thenThrow(new NotFoundException("Text", "x"));
|
||||||
MockHttpRequest request = MockHttpRequest
|
MockHttpRequest request = MockHttpRequest
|
||||||
.get(FILE_HISTORY_URL + "revision/a.txt")
|
.get(FILE_HISTORY_URL + "revision/a.txt")
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.repository.BrowserResult;
|
import sonia.scm.repository.BrowserResult;
|
||||||
import sonia.scm.repository.FileObject;
|
import sonia.scm.repository.FileObject;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.BrowseCommandBuilder;
|
import sonia.scm.repository.api.BrowseCommandBuilder;
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
@@ -81,8 +81,8 @@ public class SourceRootResourceTest extends RepositoryTestBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturn404IfRepoNotFound() throws URISyntaxException, RepositoryNotFoundException {
|
public void shouldReturn404IfRepoNotFound() throws URISyntaxException {
|
||||||
when(serviceFactory.create(new NamespaceAndName("idont", "exist"))).thenThrow(new RepositoryNotFoundException("abc"));
|
when(serviceFactory.create(new NamespaceAndName("idont", "exist"))).thenThrow(new NotFoundException("Test", "a"));
|
||||||
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "idont/exist/sources");
|
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "idont/exist/sources");
|
||||||
MockHttpResponse response = new MockHttpResponse();
|
MockHttpResponse response = new MockHttpResponse();
|
||||||
|
|
||||||
@@ -109,8 +109,8 @@ public class SourceRootResourceTest extends RepositoryTestBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldGet404ForSingleFileIfRepoNotFound() throws URISyntaxException, RepositoryNotFoundException {
|
public void shouldGet404ForSingleFileIfRepoNotFound() throws URISyntaxException {
|
||||||
when(serviceFactory.create(new NamespaceAndName("idont", "exist"))).thenThrow(new RepositoryNotFoundException("abc"));
|
when(serviceFactory.create(new NamespaceAndName("idont", "exist"))).thenThrow(new NotFoundException("Test", "a"));
|
||||||
|
|
||||||
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "idont/exist/sources/revision/fileabc");
|
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "idont/exist/sources/revision/fileabc");
|
||||||
MockHttpResponse response = new MockHttpResponse();
|
MockHttpResponse response = new MockHttpResponse();
|
||||||
|
|||||||
@@ -353,7 +353,7 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
manager.refresh(heartOfGold);
|
manager.refresh(heartOfGold);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = RepositoryNotFoundException.class)
|
@Test(expected = NotFoundException.class)
|
||||||
public void testRefreshNotFound(){
|
public void testRefreshNotFound(){
|
||||||
manager.refresh(createRepositoryWithId());
|
manager.refresh(createRepositoryWithId());
|
||||||
}
|
}
|
||||||
@@ -383,7 +383,7 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
|||||||
RepositoryManager repoManager = createRepositoryManager(false);
|
RepositoryManager repoManager = createRepositoryManager(false);
|
||||||
Repository repository = spy(createTestRepository());
|
Repository repository = spy(createTestRepository());
|
||||||
repository.setName("Testrepo");
|
repository.setName("Testrepo");
|
||||||
((DefaultRepositoryManager) repoManager).create(repository);
|
repoManager.create(repository);
|
||||||
assertEquals("default_namespace", repository.getNamespace());
|
assertEquals("default_namespace", repository.getNamespace());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import sonia.scm.NotFoundException;
|
||||||
import sonia.scm.PushStateDispatcher;
|
import sonia.scm.PushStateDispatcher;
|
||||||
import sonia.scm.repository.DefaultRepositoryProvider;
|
import sonia.scm.repository.DefaultRepositoryProvider;
|
||||||
import sonia.scm.repository.NamespaceAndName;
|
import sonia.scm.repository.NamespaceAndName;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
|
||||||
import sonia.scm.repository.api.RepositoryService;
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
import sonia.scm.repository.api.RepositoryServiceFactory;
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.repository.spi.HttpScmProtocol;
|
import sonia.scm.repository.spi.HttpScmProtocol;
|
||||||
@@ -58,12 +58,12 @@ public class HttpProtocolServletTest {
|
|||||||
private HttpScmProtocol protocol;
|
private HttpScmProtocol protocol;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void init() throws RepositoryNotFoundException {
|
public void init() {
|
||||||
initMocks(this);
|
initMocks(this);
|
||||||
when(userAgentParser.parse(request)).thenReturn(userAgent);
|
when(userAgentParser.parse(request)).thenReturn(userAgent);
|
||||||
when(userAgent.isBrowser()).thenReturn(false);
|
when(userAgent.isBrowser()).thenReturn(false);
|
||||||
NamespaceAndName existingRepo = new NamespaceAndName("space", "repo");
|
NamespaceAndName existingRepo = new NamespaceAndName("space", "repo");
|
||||||
when(serviceFactory.create(not(eq(existingRepo)))).thenThrow(new RepositoryNotFoundException("x"));
|
when(serviceFactory.create(not(eq(existingRepo)))).thenThrow(new NotFoundException("Test", "a"));
|
||||||
when(serviceFactory.create(existingRepo)).thenReturn(repositoryService);
|
when(serviceFactory.create(existingRepo)).thenReturn(repositoryService);
|
||||||
when(requestProvider.get()).thenReturn(httpServletRequest);
|
when(requestProvider.get()).thenReturn(httpServletRequest);
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ public class HttpProtocolServletTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldDelegateToProvider() throws RepositoryNotFoundException, IOException, ServletException {
|
public void shouldDelegateToProvider() throws IOException, ServletException {
|
||||||
when(request.getPathInfo()).thenReturn("/space/name");
|
when(request.getPathInfo()).thenReturn("/space/name");
|
||||||
NamespaceAndName namespaceAndName = new NamespaceAndName("space", "name");
|
NamespaceAndName namespaceAndName = new NamespaceAndName("space", "name");
|
||||||
doReturn(repositoryService).when(serviceFactory).create(namespaceAndName);
|
doReturn(repositoryService).when(serviceFactory).create(namespaceAndName);
|
||||||
|
|||||||
Reference in New Issue
Block a user