mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-01 11:05:56 +01:00
Add servlet decorators for hg and svn
This commit is contained in:
@@ -1,8 +1,6 @@
|
|||||||
package sonia.scm.web;
|
package sonia.scm.repository.spi;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
|
||||||
import sonia.scm.repository.spi.ScmProviderHttpServletDecoratorFactory;
|
|
||||||
import sonia.scm.util.Decorators;
|
import sonia.scm.util.Decorators;
|
||||||
|
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
@@ -15,9 +13,15 @@ public abstract class ScmProviderHttpServletProvider implements Provider<ScmProv
|
|||||||
@Inject(optional = true)
|
@Inject(optional = true)
|
||||||
private Set<ScmProviderHttpServletDecoratorFactory> decoratorFactories;
|
private Set<ScmProviderHttpServletDecoratorFactory> decoratorFactories;
|
||||||
|
|
||||||
|
private final String type;
|
||||||
|
|
||||||
|
protected ScmProviderHttpServletProvider(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScmProviderHttpServlet get() {
|
public ScmProviderHttpServlet get() {
|
||||||
return Decorators.decorate(getRootServlet(), decoratorFactories.stream().filter(d -> d.handlesScmType("git")).collect(toList()));
|
return Decorators.decorate(getRootServlet(), decoratorFactories.stream().filter(d -> d.handlesScmType(type)).collect(toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract ScmProviderHttpServlet getRootServlet();
|
protected abstract ScmProviderHttpServlet getRootServlet();
|
||||||
@@ -1,16 +1,22 @@
|
|||||||
package sonia.scm.web;
|
package sonia.scm.web;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServletProvider;
|
||||||
|
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
|
|
||||||
public class ScmGitServletProvider extends ScmProviderHttpServletProvider {
|
public class ScmGitServletProvider extends ScmProviderHttpServletProvider {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Provider<ScmGitServlet> scmGitServlet;
|
private Provider<ScmGitServlet> servletProvider;
|
||||||
|
|
||||||
|
public ScmGitServletProvider() {
|
||||||
|
super("git");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ScmGitServlet getRootServlet() {
|
protected ScmProviderHttpServlet getRootServlet() {
|
||||||
return scmGitServlet.get();
|
return servletProvider.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package sonia.scm.web;
|
||||||
|
|
||||||
|
import com.google.inject.BindingAnnotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@BindingAnnotation
|
||||||
|
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@interface Hg {
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package sonia.scm.web;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServletProvider;
|
||||||
|
|
||||||
|
import javax.inject.Provider;
|
||||||
|
|
||||||
|
public class HgCGIServletProvider extends ScmProviderHttpServletProvider {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Provider<HgCGIServlet> servletProvider;
|
||||||
|
|
||||||
|
public HgCGIServletProvider() {
|
||||||
|
super("hg");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ScmProviderHttpServlet getRootServlet() {
|
||||||
|
return servletProvider.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import sonia.scm.api.v2.resources.ScmPathInfoStore;
|
|||||||
import sonia.scm.config.ScmConfiguration;
|
import sonia.scm.config.ScmConfiguration;
|
||||||
import sonia.scm.plugin.Extension;
|
import sonia.scm.plugin.Extension;
|
||||||
import sonia.scm.repository.spi.InitializingHttpScmProtocolWrapper;
|
import sonia.scm.repository.spi.InitializingHttpScmProtocolWrapper;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
@@ -13,7 +14,7 @@ import javax.inject.Singleton;
|
|||||||
@Extension
|
@Extension
|
||||||
public class HgScmProtocolProviderWrapper extends InitializingHttpScmProtocolWrapper {
|
public class HgScmProtocolProviderWrapper extends InitializingHttpScmProtocolWrapper {
|
||||||
@Inject
|
@Inject
|
||||||
public HgScmProtocolProviderWrapper(Provider<HgCGIServlet> servletProvider, Provider<HgPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
public HgScmProtocolProviderWrapper(@Hg Provider<ScmProviderHttpServlet> servletProvider, Provider<HgPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
||||||
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import sonia.scm.plugin.Extension;
|
|||||||
import sonia.scm.repository.HgContext;
|
import sonia.scm.repository.HgContext;
|
||||||
import sonia.scm.repository.HgContextProvider;
|
import sonia.scm.repository.HgContextProvider;
|
||||||
import sonia.scm.repository.HgHookManager;
|
import sonia.scm.repository.HgHookManager;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -79,6 +80,8 @@ public class HgServletModule extends ServletModule
|
|||||||
bind(HgConfigPackagesToDtoMapper.class).to(Mappers.getMapper(HgConfigPackagesToDtoMapper.class).getClass());
|
bind(HgConfigPackagesToDtoMapper.class).to(Mappers.getMapper(HgConfigPackagesToDtoMapper.class).getClass());
|
||||||
bind(HgConfigInstallationsToDtoMapper.class);
|
bind(HgConfigInstallationsToDtoMapper.class);
|
||||||
|
|
||||||
|
bind(ScmProviderHttpServlet.class).annotatedWith(Hg.class).toProvider(HgCGIServletProvider.class);
|
||||||
|
|
||||||
// bind servlets
|
// bind servlets
|
||||||
serve(MAPPING_HOOK).with(HgHookCallbackServlet.class);
|
serve(MAPPING_HOOK).with(HgHookCallbackServlet.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package sonia.scm.web;
|
||||||
|
|
||||||
|
import com.google.inject.BindingAnnotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@BindingAnnotation
|
||||||
|
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@interface Svn {
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package sonia.scm.web;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServletProvider;
|
||||||
|
|
||||||
|
import javax.inject.Provider;
|
||||||
|
|
||||||
|
public class SvnDAVServletProvider extends ScmProviderHttpServletProvider {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Provider<SvnDAVServlet> servletProvider;
|
||||||
|
|
||||||
|
public SvnDAVServletProvider() {
|
||||||
|
super("svn");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ScmProviderHttpServlet getRootServlet() {
|
||||||
|
return servletProvider.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ public class SvnScmProtocolProviderWrapper extends InitializingHttpScmProtocolWr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SvnScmProtocolProviderWrapper(Provider<SvnDAVServlet> servletProvider, Provider<SvnPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
public SvnScmProtocolProviderWrapper(@Svn Provider<ScmProviderHttpServlet> servletProvider, Provider<SvnPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
||||||
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.mapstruct.factory.Mappers;
|
|||||||
import sonia.scm.api.v2.resources.SvnConfigDtoToSvnConfigMapper;
|
import sonia.scm.api.v2.resources.SvnConfigDtoToSvnConfigMapper;
|
||||||
import sonia.scm.api.v2.resources.SvnConfigToSvnConfigDtoMapper;
|
import sonia.scm.api.v2.resources.SvnConfigToSvnConfigDtoMapper;
|
||||||
import sonia.scm.plugin.Extension;
|
import sonia.scm.plugin.Extension;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -50,5 +51,7 @@ public class SvnServletModule extends ServletModule {
|
|||||||
protected void configureServlets() {
|
protected void configureServlets() {
|
||||||
bind(SvnConfigDtoToSvnConfigMapper.class).to(Mappers.getMapper(SvnConfigDtoToSvnConfigMapper.class).getClass());
|
bind(SvnConfigDtoToSvnConfigMapper.class).to(Mappers.getMapper(SvnConfigDtoToSvnConfigMapper.class).getClass());
|
||||||
bind(SvnConfigToSvnConfigDtoMapper.class).to(Mappers.getMapper(SvnConfigToSvnConfigDtoMapper.class).getClass());
|
bind(SvnConfigToSvnConfigDtoMapper.class).to(Mappers.getMapper(SvnConfigToSvnConfigDtoMapper.class).getClass());
|
||||||
|
|
||||||
|
bind(ScmProviderHttpServlet.class).annotatedWith(Svn.class).toProvider(SvnDAVServletProvider.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user