mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
Introduce extension point for scm http requests
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
package sonia.scm.repository.spi;
|
||||||
|
|
||||||
|
import sonia.scm.DecoratorFactory;
|
||||||
|
import sonia.scm.plugin.ExtensionPoint;
|
||||||
|
|
||||||
|
@ExtensionPoint
|
||||||
|
public interface ScmProviderHttpServletFactory extends DecoratorFactory<ScmProviderHttpServlet> {}
|
||||||
@@ -37,7 +37,6 @@ package sonia.scm.util;
|
|||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.DecoratorFactory;
|
import sonia.scm.DecoratorFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -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 Git {
|
||||||
|
}
|
||||||
@@ -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 GitScmProtocolProviderWrapper extends InitializingHttpScmProtocolWrapper {
|
public class GitScmProtocolProviderWrapper extends InitializingHttpScmProtocolWrapper {
|
||||||
@Inject
|
@Inject
|
||||||
public GitScmProtocolProviderWrapper(Provider<ScmGitServlet> servletProvider, Provider<GitPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
public GitScmProtocolProviderWrapper(@Git Provider<ScmProviderHttpServlet> servletProvider, Provider<GitPermissionFilter> permissionFilter, Provider<ScmPathInfoStore> uriInfoStore, ScmConfiguration scmConfiguration) {
|
||||||
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
super(servletProvider, permissionFilter, uriInfoStore, scmConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import org.mapstruct.factory.Mappers;
|
|||||||
import sonia.scm.api.v2.resources.GitConfigDtoToGitConfigMapper;
|
import sonia.scm.api.v2.resources.GitConfigDtoToGitConfigMapper;
|
||||||
import sonia.scm.api.v2.resources.GitConfigToGitConfigDtoMapper;
|
import sonia.scm.api.v2.resources.GitConfigToGitConfigDtoMapper;
|
||||||
import sonia.scm.plugin.Extension;
|
import sonia.scm.plugin.Extension;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
import sonia.scm.web.lfs.LfsBlobStoreFactory;
|
import sonia.scm.web.lfs.LfsBlobStoreFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,5 +64,7 @@ public class GitServletModule extends ServletModule
|
|||||||
|
|
||||||
bind(GitConfigDtoToGitConfigMapper.class).to(Mappers.getMapper(GitConfigDtoToGitConfigMapper.class).getClass());
|
bind(GitConfigDtoToGitConfigMapper.class).to(Mappers.getMapper(GitConfigDtoToGitConfigMapper.class).getClass());
|
||||||
bind(GitConfigToGitConfigDtoMapper.class).to(Mappers.getMapper(GitConfigToGitConfigDtoMapper.class).getClass());
|
bind(GitConfigToGitConfigDtoMapper.class).to(Mappers.getMapper(GitConfigToGitConfigDtoMapper.class).getClass());
|
||||||
|
|
||||||
|
bind(ScmProviderHttpServlet.class).annotatedWith(Git.class).toProvider(ScmGitServletProvider.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package sonia.scm.web;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServlet;
|
||||||
|
import sonia.scm.repository.spi.ScmProviderHttpServletFactory;
|
||||||
|
import sonia.scm.util.Decorators;
|
||||||
|
|
||||||
|
import javax.inject.Provider;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class ScmGitServletProvider implements Provider<ScmProviderHttpServlet> {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Provider<ScmGitServlet> scmGitServlet;
|
||||||
|
@Inject(optional = true)
|
||||||
|
private Set<ScmProviderHttpServletFactory> decoratorFactories;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ScmProviderHttpServlet get() {
|
||||||
|
return Decorators.decorate(scmGitServlet.get(), decoratorFactories);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user