mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-07 05:55:44 +01:00
generate repository urls
This commit is contained in:
@@ -349,7 +349,7 @@ public class ScmServletModule extends ServletModule
|
||||
{
|
||||
try
|
||||
{
|
||||
JAXB.unmarshal(file, ScmConfiguration.class);
|
||||
config = JAXB.unmarshal(file, ScmConfiguration.class);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
package sonia.scm.api.rest.resources;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
@@ -36,8 +38,10 @@ package sonia.scm.api.rest.resources;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
import sonia.scm.config.ScmConfiguration;
|
||||
import sonia.scm.repository.Repository;
|
||||
import sonia.scm.repository.RepositoryException;
|
||||
import sonia.scm.repository.RepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryManager;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
@@ -46,8 +50,11 @@ import java.io.IOException;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
@@ -63,6 +70,23 @@ public class RepositoryResource extends AbstractResource<Repository>
|
||||
/** Field description */
|
||||
public static final String PATH_PART = "repositories";
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
* @param configuration
|
||||
* @param repositoryManager
|
||||
*/
|
||||
@Inject
|
||||
public RepositoryResource(ScmConfiguration configuration,
|
||||
RepositoryManager repositoryManager)
|
||||
{
|
||||
this.configuration = configuration;
|
||||
this.repositoryManager = repositoryManager;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
/**
|
||||
@@ -126,9 +150,15 @@ public class RepositoryResource extends AbstractResource<Repository>
|
||||
protected Repository[] getAllItems()
|
||||
{
|
||||
Collection<Repository> repositoryCollection = repositoryManager.getAll();
|
||||
Repository[] repositories =
|
||||
repositoryCollection.toArray(new Repository[repositoryCollection.size()]);
|
||||
|
||||
return repositoryCollection.toArray(
|
||||
new Repository[repositoryCollection.size()]);
|
||||
for (Repository repository : repositories)
|
||||
{
|
||||
appendUrl(repository);
|
||||
}
|
||||
|
||||
return repositories;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,7 +187,11 @@ public class RepositoryResource extends AbstractResource<Repository>
|
||||
@Override
|
||||
protected Repository getItem(String id)
|
||||
{
|
||||
return repositoryManager.get(id);
|
||||
Repository repository = repositoryManager.get(id);
|
||||
|
||||
appendUrl(repository);
|
||||
|
||||
return repository;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -172,9 +206,46 @@ public class RepositoryResource extends AbstractResource<Repository>
|
||||
return PATH_PART;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param repository
|
||||
*/
|
||||
private void appendUrl(Repository repository)
|
||||
{
|
||||
StringBuilder url = new StringBuilder(request.getScheme());
|
||||
|
||||
url.append("://").append(configuration.getServername());
|
||||
url.append(":").append(request.getLocalPort());
|
||||
|
||||
String ctxPath = request.getContextPath();
|
||||
|
||||
url.append(ctxPath);
|
||||
|
||||
if (ctxPath.endsWith("/"))
|
||||
{
|
||||
ctxPath.substring(0, ctxPath.length() - 1);
|
||||
}
|
||||
|
||||
RepositoryHandler handler =
|
||||
repositoryManager.getHandler(repository.getType());
|
||||
|
||||
url.append(handler.createResourcePath(repository));
|
||||
repository.setUrl(url.toString());
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
@Inject
|
||||
private ScmConfiguration configuration;
|
||||
|
||||
/** Field description */
|
||||
private RepositoryManager repositoryManager;
|
||||
|
||||
/** TODO path request direct to method */
|
||||
@Context
|
||||
private HttpServletRequest request;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user