apply patch for blame support from naver.com

This commit is contained in:
Sebastian Sdorra
2011-09-14 11:13:14 +02:00
parent b75d8c8a0d
commit 8dc56330c2
14 changed files with 1158 additions and 4 deletions

View File

@@ -44,6 +44,8 @@ import org.slf4j.LoggerFactory;
import sonia.scm.NotSupportedFeatuerException;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.repository.BlamePagingResult;
import sonia.scm.repository.BlameViewerUtil;
import sonia.scm.repository.BrowserResult;
import sonia.scm.repository.ChangesetPagingResult;
import sonia.scm.repository.ChangesetViewerUtil;
@@ -59,6 +61,7 @@ import sonia.scm.repository.RepositoryHandler;
import sonia.scm.repository.RepositoryManager;
import sonia.scm.repository.RepositoryNotFoundException;
import sonia.scm.repository.RevisionNotFoundException;
import sonia.scm.util.AssertUtil;
import sonia.scm.util.HttpUtil;
import sonia.scm.web.security.WebSecurityContext;
@@ -116,7 +119,8 @@ public class RepositoryResource
ScmConfiguration configuration, RepositoryManager repositoryManager,
Provider<WebSecurityContext> securityContextProvider,
ChangesetViewerUtil changesetViewerUtil,
RepositoryBrowserUtil repositoryBrowserUtil)
RepositoryBrowserUtil repositoryBrowserUtil,
BlameViewerUtil blameViewerUtil)
{
super(repositoryManager);
this.configuration = configuration;
@@ -124,6 +128,7 @@ public class RepositoryResource
this.securityContextProvider = securityContextProvider;
this.changesetViewerUtil = changesetViewerUtil;
this.repositoryBrowserUtil = repositoryBrowserUtil;
this.blameViewerUtil = blameViewerUtil;
setDisableCache(false);
}
@@ -224,6 +229,37 @@ public class RepositoryResource
return response;
}
@GET
@Path("{id}/blame")
public Response blame(@PathParam("id") String id,
@QueryParam("revision") String revision,
@QueryParam("path") String path)
{
Response response = null;
try {
AssertUtil.assertIsNotNull(path);
BlamePagingResult blamePagingResult = blameViewerUtil.getBlame(id, revision, path);
if (blamePagingResult != null) {
response = Response.ok(blamePagingResult).build();
}
else
{
response = Response.ok().build();
}
} catch (IllegalStateException ex) {
response = Response.status(Response.Status.NOT_FOUND).build();
} catch (RepositoryException ex) {
response = Response.status(Response.Status.NOT_FOUND).build();
} catch (NotSupportedFeatuerException ex) {
response = Response.status(Response.Status.BAD_REQUEST).build();
}
return response;
}
/**
* Method description
@@ -512,10 +548,13 @@ public class RepositoryResource
/** Field description */
private RepositoryBrowserUtil repositoryBrowserUtil;
/** Field description */
private BlameViewerUtil blameViewerUtil;
/** Field description */
private RepositoryManager repositoryManager;
/** Field description */
private Provider<WebSecurityContext> securityContextProvider;
}

View File

@@ -47,6 +47,7 @@ import sonia.scm.HandlerEvent;
import sonia.scm.SCMContextProvider;
import sonia.scm.Type;
import sonia.scm.repository.AbstractRepositoryManager;
import sonia.scm.repository.BlameViewer;
import sonia.scm.repository.ChangesetViewer;
import sonia.scm.repository.PermissionType;
import sonia.scm.repository.PermissionUtil;
@@ -549,7 +550,16 @@ public class XmlRepositoryManager extends AbstractRepositoryManager
return getHandler(repository).getChangesetViewer(repository);
}
/**
@Override
public BlameViewer getBlameViewer(Repository repository)
throws RepositoryException
{
AssertUtil.assertIsNotNull(repository);
isReader(repository);
return getHandler(repository).getBlameViewer(repository);
}
/**
* Method description
*
*