mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
use new repository service api for repository rest resource
This commit is contained in:
@@ -39,9 +39,9 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.repository.PathNotFoundException;
|
import sonia.scm.repository.PathNotFoundException;
|
||||||
import sonia.scm.repository.RepositoryBrowser;
|
|
||||||
import sonia.scm.repository.RepositoryException;
|
import sonia.scm.repository.RepositoryException;
|
||||||
import sonia.scm.repository.RevisionNotFoundException;
|
import sonia.scm.repository.RevisionNotFoundException;
|
||||||
|
import sonia.scm.repository.api.CatCommandBuilder;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
@@ -71,13 +71,13 @@ public class BrowserStreamingOutput implements StreamingOutput
|
|||||||
*
|
*
|
||||||
* @param browser
|
* @param browser
|
||||||
* @param revision
|
* @param revision
|
||||||
|
*
|
||||||
|
* @param builder
|
||||||
* @param path
|
* @param path
|
||||||
*/
|
*/
|
||||||
public BrowserStreamingOutput(RepositoryBrowser browser, String revision,
|
public BrowserStreamingOutput(CatCommandBuilder builder, String path)
|
||||||
String path)
|
|
||||||
{
|
{
|
||||||
this.browser = browser;
|
this.builder = builder;
|
||||||
this.revision = revision;
|
|
||||||
this.path = path;
|
this.path = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ public class BrowserStreamingOutput implements StreamingOutput
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
browser.getContent(revision, path, output);
|
builder.retriveContent(output, path);
|
||||||
}
|
}
|
||||||
catch (PathNotFoundException ex)
|
catch (PathNotFoundException ex)
|
||||||
{
|
{
|
||||||
@@ -130,11 +130,8 @@ public class BrowserStreamingOutput implements StreamingOutput
|
|||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private RepositoryBrowser browser;
|
private CatCommandBuilder builder;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private String path;
|
private String path;
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private String revision;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ package sonia.scm.api.rest.resources;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.repository.DiffViewer;
|
|
||||||
import sonia.scm.repository.PathNotFoundException;
|
import sonia.scm.repository.PathNotFoundException;
|
||||||
import sonia.scm.repository.RepositoryException;
|
import sonia.scm.repository.RepositoryException;
|
||||||
import sonia.scm.repository.RevisionNotFoundException;
|
import sonia.scm.repository.RevisionNotFoundException;
|
||||||
|
import sonia.scm.repository.api.DiffCommandBuilder;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
@@ -66,19 +66,14 @@ public class DiffStreamingOutput implements StreamingOutput
|
|||||||
//~--- constructors ---------------------------------------------------------
|
//~--- constructors ---------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs ...
|
* Constructs ...
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @param diffViewer
|
* @param builder
|
||||||
* @param revision
|
|
||||||
* @param path
|
|
||||||
*/
|
*/
|
||||||
public DiffStreamingOutput(DiffViewer diffViewer, String revision,
|
public DiffStreamingOutput(DiffCommandBuilder builder)
|
||||||
String path)
|
|
||||||
{
|
{
|
||||||
this.diffViewer = diffViewer;
|
this.builder = builder;
|
||||||
this.revision = revision;
|
|
||||||
this.path = path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
@@ -98,7 +93,7 @@ public class DiffStreamingOutput implements StreamingOutput
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
diffViewer.getDiff(revision, path, output);
|
builder.retriveContent(output);
|
||||||
}
|
}
|
||||||
catch (PathNotFoundException ex)
|
catch (PathNotFoundException ex)
|
||||||
{
|
{
|
||||||
@@ -130,11 +125,5 @@ public class DiffStreamingOutput implements StreamingOutput
|
|||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private DiffViewer diffViewer;
|
private DiffCommandBuilder builder;
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private String path;
|
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private String revision;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ package sonia.scm.api.rest.resources;
|
|||||||
|
|
||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
@@ -45,30 +46,30 @@ import org.codehaus.enunciate.modules.jersey.ExternallyManagedLifecycle;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.NotSupportedFeatuerException;
|
|
||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
import sonia.scm.repository.BlameResult;
|
import sonia.scm.repository.BlameResult;
|
||||||
import sonia.scm.repository.BlameViewerUtil;
|
|
||||||
import sonia.scm.repository.BrowserResult;
|
import sonia.scm.repository.BrowserResult;
|
||||||
import sonia.scm.repository.Changeset;
|
import sonia.scm.repository.Changeset;
|
||||||
import sonia.scm.repository.ChangesetPagingResult;
|
import sonia.scm.repository.ChangesetPagingResult;
|
||||||
import sonia.scm.repository.ChangesetViewerUtil;
|
|
||||||
import sonia.scm.repository.DiffViewer;
|
|
||||||
import sonia.scm.repository.Permission;
|
import sonia.scm.repository.Permission;
|
||||||
import sonia.scm.repository.PermissionType;
|
import sonia.scm.repository.PermissionType;
|
||||||
import sonia.scm.repository.PermissionUtil;
|
import sonia.scm.repository.PermissionUtil;
|
||||||
import sonia.scm.repository.Repository;
|
import sonia.scm.repository.Repository;
|
||||||
import sonia.scm.repository.RepositoryBrowser;
|
|
||||||
import sonia.scm.repository.RepositoryBrowserUtil;
|
|
||||||
import sonia.scm.repository.RepositoryException;
|
import sonia.scm.repository.RepositoryException;
|
||||||
import sonia.scm.repository.RepositoryHandler;
|
|
||||||
import sonia.scm.repository.RepositoryIsNotArchivedException;
|
import sonia.scm.repository.RepositoryIsNotArchivedException;
|
||||||
import sonia.scm.repository.RepositoryManager;
|
import sonia.scm.repository.RepositoryManager;
|
||||||
import sonia.scm.repository.RepositoryNotFoundException;
|
import sonia.scm.repository.RepositoryNotFoundException;
|
||||||
import sonia.scm.repository.RepositoryUtil;
|
import sonia.scm.repository.RepositoryUtil;
|
||||||
|
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.LogCommandBuilder;
|
||||||
|
import sonia.scm.repository.api.RepositoryService;
|
||||||
|
import sonia.scm.repository.api.RepositoryServiceFactory;
|
||||||
import sonia.scm.security.ScmSecurityException;
|
import sonia.scm.security.ScmSecurityException;
|
||||||
import sonia.scm.util.AssertUtil;
|
import sonia.scm.util.AssertUtil;
|
||||||
import sonia.scm.util.HttpUtil;
|
|
||||||
import sonia.scm.util.Util;
|
import sonia.scm.util.Util;
|
||||||
import sonia.scm.web.security.WebSecurityContext;
|
import sonia.scm.web.security.WebSecurityContext;
|
||||||
|
|
||||||
@@ -125,6 +126,7 @@ public class RepositoryResource
|
|||||||
* @param configuration
|
* @param configuration
|
||||||
* @param repositoryManager
|
* @param repositoryManager
|
||||||
* @param securityContextProvider
|
* @param securityContextProvider
|
||||||
|
* @param servicefactory
|
||||||
* @param changesetViewerUtil
|
* @param changesetViewerUtil
|
||||||
* @param repositoryBrowserUtil
|
* @param repositoryBrowserUtil
|
||||||
* @param blameViewerUtil
|
* @param blameViewerUtil
|
||||||
@@ -133,17 +135,13 @@ public class RepositoryResource
|
|||||||
public RepositoryResource(
|
public RepositoryResource(
|
||||||
ScmConfiguration configuration, RepositoryManager repositoryManager,
|
ScmConfiguration configuration, RepositoryManager repositoryManager,
|
||||||
Provider<WebSecurityContext> securityContextProvider,
|
Provider<WebSecurityContext> securityContextProvider,
|
||||||
ChangesetViewerUtil changesetViewerUtil,
|
RepositoryServiceFactory servicefactory)
|
||||||
RepositoryBrowserUtil repositoryBrowserUtil,
|
|
||||||
BlameViewerUtil blameViewerUtil)
|
|
||||||
{
|
{
|
||||||
super(repositoryManager);
|
super(repositoryManager);
|
||||||
this.configuration = configuration;
|
this.configuration = configuration;
|
||||||
this.repositoryManager = repositoryManager;
|
this.repositoryManager = repositoryManager;
|
||||||
|
this.servicefactory = servicefactory;
|
||||||
this.securityContextProvider = securityContextProvider;
|
this.securityContextProvider = securityContextProvider;
|
||||||
this.changesetViewerUtil = changesetViewerUtil;
|
|
||||||
this.repositoryBrowserUtil = repositoryBrowserUtil;
|
|
||||||
this.blameViewerUtil = blameViewerUtil;
|
|
||||||
setDisableCache(false);
|
setDisableCache(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,8 +352,15 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
AssertUtil.assertIsNotNull(path);
|
AssertUtil.assertIsNotNull(path);
|
||||||
|
|
||||||
BlameResult blamePagingResult = blameViewerUtil.getBlame(id, revision,
|
RepositoryService service = servicefactory.create(id);
|
||||||
path);
|
BlameCommandBuilder builder = service.getBlameCommand();
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(revision))
|
||||||
|
{
|
||||||
|
builder.setRevision(revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
BlameResult blamePagingResult = builder.getBlameResult(path);
|
||||||
|
|
||||||
if (blamePagingResult != null)
|
if (blamePagingResult != null)
|
||||||
{
|
{
|
||||||
@@ -374,7 +379,7 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
catch (NotSupportedFeatuerException ex)
|
catch (CommandNotSupportedException ex)
|
||||||
{
|
{
|
||||||
response = Response.status(Response.Status.BAD_REQUEST).build();
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
@@ -416,8 +421,20 @@ public class RepositoryResource
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
BrowserResult result = repositoryBrowserUtil.getResult(id, revision,
|
RepositoryService service = servicefactory.create(id);
|
||||||
path);
|
BrowseCommandBuilder builder = service.getBrowseCommand();
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(revision))
|
||||||
|
{
|
||||||
|
builder.setRevision(revision);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
builder.setPath(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserResult result = builder.getBrowserResult();
|
||||||
|
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
@@ -432,7 +449,7 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
catch (NotSupportedFeatuerException ex)
|
catch (CommandNotSupportedException ex)
|
||||||
{
|
{
|
||||||
response = Response.status(Response.Status.BAD_REQUEST).build();
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
@@ -513,7 +530,8 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Changeset changeset = changesetViewerUtil.getChangeset(id, revision);
|
RepositoryService service = servicefactory.create(id);
|
||||||
|
Changeset changeset = service.getLogCommand().getChangeset(revision);
|
||||||
|
|
||||||
if (changeset != null)
|
if (changeset != null)
|
||||||
{
|
{
|
||||||
@@ -528,7 +546,7 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
catch (NotSupportedFeatuerException ex)
|
catch (CommandNotSupportedException ex)
|
||||||
{
|
{
|
||||||
response = Response.status(Response.Status.BAD_REQUEST).build();
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
@@ -585,17 +603,22 @@ public class RepositoryResource
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
ChangesetPagingResult changesets = null;
|
ChangesetPagingResult changesets = null;
|
||||||
|
RepositoryService service = servicefactory.create(id);
|
||||||
|
LogCommandBuilder builder = service.getLogCommand();
|
||||||
|
|
||||||
if (Util.isEmpty(path))
|
if (!Strings.isNullOrEmpty(path))
|
||||||
{
|
{
|
||||||
changesets = changesetViewerUtil.getChangesets(id, start, limit);
|
builder.setPath(path);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (!Strings.isNullOrEmpty(revision))
|
||||||
{
|
{
|
||||||
changesets = changesetViewerUtil.getChangesets(id, path, revision,
|
builder.setStartChangeset(revision);
|
||||||
start, limit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
changesets =
|
||||||
|
builder.setPagingStart(start).setPagingLimit(limit).getChangesets();
|
||||||
|
|
||||||
if (changesets != null)
|
if (changesets != null)
|
||||||
{
|
{
|
||||||
response = Response.ok(changesets).build();
|
response = Response.ok(changesets).build();
|
||||||
@@ -609,7 +632,7 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
catch (NotSupportedFeatuerException ex)
|
catch (CommandNotSupportedException ex)
|
||||||
{
|
{
|
||||||
response = Response.status(Response.Status.BAD_REQUEST).build();
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
@@ -645,37 +668,37 @@ public class RepositoryResource
|
|||||||
{
|
{
|
||||||
Response response = null;
|
Response response = null;
|
||||||
StreamingOutput output = null;
|
StreamingOutput output = null;
|
||||||
Repository repository = repositoryManager.get(id);
|
|
||||||
|
|
||||||
if (repository != null)
|
try
|
||||||
{
|
{
|
||||||
try
|
RepositoryService service = servicefactory.create(id);
|
||||||
|
CatCommandBuilder builder = service.getCatCommand();
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(revision))
|
||||||
{
|
{
|
||||||
RepositoryBrowser browser =
|
builder.setRevision(revision);
|
||||||
repositoryManager.getRepositoryBrowser(repository);
|
|
||||||
|
|
||||||
if (browser != null)
|
|
||||||
{
|
|
||||||
output = new BrowserStreamingOutput(browser, revision, path);
|
|
||||||
|
|
||||||
String contentDispositionName =
|
|
||||||
getContentDispositionNameFromPath(path);
|
|
||||||
|
|
||||||
response = Response.ok(output).header("Content-Disposition",
|
|
||||||
contentDispositionName).build();
|
|
||||||
}
|
|
||||||
else if (logger.isWarnEnabled())
|
|
||||||
{
|
|
||||||
logger.warn("could not find repository browser for respository {}",
|
|
||||||
repository.getId());
|
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
logger.error("could not retrive content", ex);
|
|
||||||
response = createErrorResonse(ex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
output = new BrowserStreamingOutput(builder, path);
|
||||||
|
|
||||||
|
String contentDispositionName = getContentDispositionNameFromPath(path);
|
||||||
|
|
||||||
|
response = Response.ok(output).header("Content-Disposition",
|
||||||
|
contentDispositionName).build();
|
||||||
|
}
|
||||||
|
catch (RepositoryNotFoundException ex)
|
||||||
|
{
|
||||||
|
logger.warn("could not find repository browser for respository {}", id);
|
||||||
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
|
}
|
||||||
|
catch (CommandNotSupportedException ex)
|
||||||
|
{
|
||||||
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.error("could not retrive content", ex);
|
||||||
|
response = createErrorResonse(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
@@ -718,32 +741,39 @@ public class RepositoryResource
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Repository repository = repositoryManager.get(id);
|
RepositoryService service = servicefactory.create(id);
|
||||||
|
DiffCommandBuilder builder = service.getDiffCommand();
|
||||||
|
|
||||||
if (repository != null)
|
if (!Strings.isNullOrEmpty(revision))
|
||||||
{
|
{
|
||||||
DiffViewer diffViewer = repositoryManager.getDiffViewer(repository);
|
builder.setRevision(revision);
|
||||||
|
|
||||||
if (diffViewer != null)
|
|
||||||
{
|
|
||||||
String name =
|
|
||||||
repository.getName().concat("-").concat(revision).concat(".diff");
|
|
||||||
String contentDispositionName = getContentDispositionName(name);
|
|
||||||
|
|
||||||
response = Response.ok(new DiffStreamingOutput(diffViewer, revision,
|
|
||||||
path)).header("Content-Disposition",
|
|
||||||
contentDispositionName).build();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Strings.isNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
builder.setPath(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
String name = service.getRepository().getName().concat("-").concat(
|
||||||
|
revision).concat(".diff");
|
||||||
|
String contentDispositionName = getContentDispositionName(name);
|
||||||
|
|
||||||
|
response = Response.ok(new DiffStreamingOutput(builder)).header(
|
||||||
|
"Content-Disposition", contentDispositionName).build();
|
||||||
}
|
}
|
||||||
catch (RepositoryNotFoundException ex)
|
catch (RepositoryNotFoundException ex)
|
||||||
{
|
{
|
||||||
response = Response.status(Response.Status.NOT_FOUND).build();
|
response = Response.status(Response.Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
|
catch (CommandNotSupportedException ex)
|
||||||
|
{
|
||||||
|
response = Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.error("could not create diff", ex);
|
||||||
|
response = createErrorResonse(ex);
|
||||||
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@@ -909,21 +939,15 @@ public class RepositoryResource
|
|||||||
|
|
||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private BlameViewerUtil blameViewerUtil;
|
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private ChangesetViewerUtil changesetViewerUtil;
|
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private ScmConfiguration configuration;
|
private ScmConfiguration configuration;
|
||||||
|
|
||||||
/** Field description */
|
|
||||||
private RepositoryBrowserUtil repositoryBrowserUtil;
|
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private RepositoryManager repositoryManager;
|
private RepositoryManager repositoryManager;
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
private Provider<WebSecurityContext> securityContextProvider;
|
private Provider<WebSecurityContext> securityContextProvider;
|
||||||
|
|
||||||
|
/** Field description */
|
||||||
|
private RepositoryServiceFactory servicefactory;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user