mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-08 18:26:30 +00:00
Remove servlet/filter auto-configure from commons projects. Instead add
them into gitop projects for flexibility. Change to use GitFilter instead of GitServlet so that Git repository can be served without a prefix.
This commit is contained in:
parent
3a1b1d9a15
commit
aa69531262
@ -43,11 +43,6 @@
|
||||
<artifactId>commons.util</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
|
||||
@ -76,11 +76,6 @@
|
||||
<artifactId>jtds</artifactId>
|
||||
<version>1.3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
||||
@ -65,4 +65,9 @@ public class DefaultUnitOfWork implements UnitOfWork, Provider<Session> {
|
||||
return sessionFactoryProvider.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
sessionReferenceHolder.get().reset();
|
||||
}
|
||||
|
||||
}
|
||||
@ -13,7 +13,6 @@ import com.google.inject.name.Names;
|
||||
import com.google.inject.util.Providers;
|
||||
import com.pmease.commons.hibernate.dao.DefaultGeneralDao;
|
||||
import com.pmease.commons.hibernate.dao.GeneralDao;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
|
||||
@ -51,8 +50,6 @@ public class HibernateModule extends AbstractPluginModule {
|
||||
Matchers.any(),
|
||||
Matchers.annotatedWith(Sessional.class),
|
||||
sessionInterceptor);
|
||||
|
||||
contribute(ServletContextConfigurator.class, HibernateServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
package com.pmease.commons.hibernate;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.eclipse.jetty.servlet.FilterHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
|
||||
public class HibernateServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
private final HibernateFilter hibernateFilter;
|
||||
|
||||
@Inject
|
||||
public HibernateServletContextConfigurator(HibernateFilter hibernateFilter) {
|
||||
this.hibernateFilter = hibernateFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
FilterHolder filterHolder = new FilterHolder(hibernateFilter);
|
||||
context.addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
}
|
||||
|
||||
}
|
||||
@ -25,6 +25,8 @@ public interface UnitOfWork {
|
||||
|
||||
void end();
|
||||
|
||||
void reset();
|
||||
|
||||
Session getSession();
|
||||
|
||||
SessionFactory getSessionFactory();
|
||||
|
||||
@ -42,12 +42,7 @@
|
||||
<groupId>com.sun.jersey.contribs</groupId>
|
||||
<artifactId>jersey-guice</artifactId>
|
||||
<version>${jerseyVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.shiro</artifactId>
|
||||
<version>1.0.30</version>
|
||||
</dependency>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
package com.pmease.commons.jersey;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
|
||||
@Path("/dummy")
|
||||
public class DummyResource {
|
||||
|
||||
@GET
|
||||
@Produces("text/plain")
|
||||
public String get() {
|
||||
return "Dummy's gold.";
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,12 +1,6 @@
|
||||
package com.pmease.commons.jersey;
|
||||
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainManager;
|
||||
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.shiro.FilterChainConfigurator;
|
||||
import com.pmease.commons.util.EasyMap;
|
||||
import com.sun.jersey.guice.JerseyServletModule;
|
||||
import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
|
||||
|
||||
/**
|
||||
* NOTE: Do not forget to rename moduleClass property defined in the pom if
|
||||
@ -15,38 +9,10 @@ import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
|
||||
*/
|
||||
public class JerseyModule extends AbstractPluginModule {
|
||||
|
||||
public static final String REST_PATH = "rest";
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
|
||||
install(new JerseyServletModule() {
|
||||
|
||||
protected void configureServlets() {
|
||||
// Bind at least one resource here as otherwise Jersey will report error.
|
||||
bind(DummyResource.class);
|
||||
|
||||
// Route all RESTful requests through GuiceContainer
|
||||
serve(getRestPath()).with(
|
||||
GuiceContainer.class,
|
||||
EasyMap.of("com.sun.jersey.api.json.POJOMappingFeature", "true"));
|
||||
}
|
||||
|
||||
protected String getRestPath() {
|
||||
return "/" + REST_PATH + "/*";
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
contribute(FilterChainConfigurator.class, new FilterChainConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(FilterChainManager filterChainManager) {
|
||||
filterChainManager.createChain("/" + REST_PATH + "/**", "noSessionCreation, authcBasic");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -31,12 +31,12 @@ public class JettyPlugin extends AbstractPlugin {
|
||||
|
||||
private final Set<ServerConfigurator> serverConfigurators;
|
||||
|
||||
private final Set<ServletContextConfigurator> servletContextConfigurators;
|
||||
private final Set<ServletConfigurator> servletContextConfigurators;
|
||||
|
||||
@Inject
|
||||
public JettyPlugin(
|
||||
Set<ServerConfigurator> serverConfigurators,
|
||||
Set<ServletContextConfigurator> servletContextConfigurators) {
|
||||
Set<ServletConfigurator> servletContextConfigurators) {
|
||||
this.serverConfigurators = serverConfigurators;
|
||||
this.servletContextConfigurators = servletContextConfigurators;
|
||||
}
|
||||
@ -76,7 +76,7 @@ public class JettyPlugin extends AbstractPlugin {
|
||||
|
||||
context.addFilter(DisableTraceFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
|
||||
for (ServletContextConfigurator configurator: servletContextConfigurators)
|
||||
for (ServletConfigurator configurator: servletContextConfigurators)
|
||||
configurator.configure(context);
|
||||
|
||||
/*
|
||||
|
||||
@ -5,6 +5,6 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import com.pmease.commons.loader.ExtensionPoint;
|
||||
|
||||
@ExtensionPoint
|
||||
public interface ServletContextConfigurator {
|
||||
public interface ServletConfigurator {
|
||||
void configure(ServletContextHandler context);
|
||||
}
|
||||
@ -37,12 +37,7 @@
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-web</artifactId>
|
||||
<version>${shiroVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.hibernate</artifactId>
|
||||
|
||||
@ -1,23 +1,15 @@
|
||||
package com.pmease.commons.shiro;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.apache.shiro.authc.credential.CredentialsMatcher;
|
||||
import org.apache.shiro.authc.credential.DefaultPasswordService;
|
||||
import org.apache.shiro.authc.credential.PasswordService;
|
||||
import org.apache.shiro.guice.aop.ShiroAopModule;
|
||||
import org.apache.shiro.web.env.EnvironmentLoader;
|
||||
import org.apache.shiro.web.env.EnvironmentLoaderListener;
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainResolver;
|
||||
import org.apache.shiro.web.mgt.WebSecurityManager;
|
||||
import org.apache.shiro.web.servlet.ShiroFilter;
|
||||
import org.eclipse.jetty.servlet.FilterHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
|
||||
/**
|
||||
@ -36,23 +28,9 @@ public class ShiroModule extends AbstractPluginModule {
|
||||
bind(BasicAuthenticationFilter.class);
|
||||
bind(PasswordService.class).to(DefaultPasswordService.class).in(Singleton.class);
|
||||
bind(CredentialsMatcher.class).to(DefaultPasswordMatcher.class);
|
||||
|
||||
bind(ShiroFilter.class);
|
||||
|
||||
install(new ShiroAopModule());
|
||||
|
||||
contribute(ServletContextConfigurator.class, new ServletContextConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
context.setInitParameter(
|
||||
EnvironmentLoader.ENVIRONMENT_CLASS_PARAM,
|
||||
DefaultWebEnvironment.class.getName());
|
||||
|
||||
context.addEventListener(new EnvironmentLoaderListener());
|
||||
|
||||
context.addFilter(new FilterHolder(new ShiroFilter()), "/*", EnumSet.allOf(DispatcherType.class));
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -35,6 +35,14 @@ public abstract class ObjectReference<T> {
|
||||
object = null;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void reset() {
|
||||
count = 0;
|
||||
if (object != null) {
|
||||
closeObject(object);
|
||||
object = null;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void closeObject(T object);
|
||||
}
|
||||
|
||||
@ -53,11 +53,6 @@
|
||||
<artifactId>commons.loader</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.editable</artifactId>
|
||||
|
||||
@ -4,7 +4,6 @@ import org.apache.wicket.protocol.http.WicketFilter;
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
|
||||
import com.pmease.commons.editable.EditSupport;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.wicket.editable.EditHelper;
|
||||
|
||||
@ -17,8 +16,6 @@ public class WicketModule extends AbstractPluginModule {
|
||||
bind(WicketServlet.class).to(DefaultWicketServlet.class);
|
||||
bind(WicketFilter.class).to(DefaultWicketFilter.class);
|
||||
|
||||
contribute(ServletContextConfigurator.class, WicketServletContextConfigurator.class);
|
||||
|
||||
contributeFromPackage(EditSupport.class, EditHelper.class);
|
||||
}
|
||||
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
package com.pmease.commons.wicket;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
|
||||
public class WicketServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
private final WicketServlet wicketServlet;
|
||||
|
||||
@Inject
|
||||
public WicketServletContextConfigurator(WicketServlet wicketServlet) {
|
||||
this.wicketServlet = wicketServlet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(wicketServlet);
|
||||
|
||||
/*
|
||||
* Add wicket servlet as the default servlet which will serve all requests failed to
|
||||
* match a path pattern
|
||||
*/
|
||||
context.addServlet(servletHolder, "/");
|
||||
}
|
||||
|
||||
}
|
||||
@ -46,6 +46,11 @@
|
||||
<artifactId>commons.editable</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
@ -65,7 +70,7 @@
|
||||
</repository>
|
||||
</repositories>
|
||||
<properties>
|
||||
<moduleClass>com.pmease.gitop.core.GitopModule</moduleClass>
|
||||
<moduleClass>com.pmease.gitop.core.CoreModule</moduleClass>
|
||||
</properties>
|
||||
<version>1.0.30</version>
|
||||
</project>
|
||||
|
||||
@ -8,7 +8,7 @@ import org.hibernate.cfg.NamingStrategy;
|
||||
import com.pmease.commons.hibernate.AbstractEntity;
|
||||
import com.pmease.commons.hibernate.ModelProvider;
|
||||
import com.pmease.commons.hibernate.PrefixedNamingStrategy;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.shiro.AbstractRealm;
|
||||
@ -20,7 +20,7 @@ import com.pmease.gitop.core.permission.UserRealm;
|
||||
* NOTE: Do not forget to rename moduleClass property defined in the pom if you've renamed this class.
|
||||
*
|
||||
*/
|
||||
public class GitopModule extends AbstractPluginModule {
|
||||
public class CoreModule extends AbstractPluginModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
@ -42,7 +42,7 @@ public class GitopModule extends AbstractPluginModule {
|
||||
|
||||
});
|
||||
|
||||
contribute(ServletContextConfigurator.class, GitServletContextConfigurator.class);
|
||||
contribute(ServletConfigurator.class, CoreServletConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -0,0 +1,53 @@
|
||||
package com.pmease.gitop.core;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.apache.shiro.web.env.EnvironmentLoader;
|
||||
import org.apache.shiro.web.env.EnvironmentLoaderListener;
|
||||
import org.apache.shiro.web.servlet.ShiroFilter;
|
||||
import org.eclipse.jetty.servlet.FilterHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
import com.pmease.commons.hibernate.HibernateFilter;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.commons.shiro.DefaultWebEnvironment;
|
||||
|
||||
@Singleton
|
||||
public class CoreServletConfigurator implements ServletConfigurator {
|
||||
|
||||
private final ShiroFilter shiroFilter;
|
||||
|
||||
private final GitFilter gitFilter;
|
||||
|
||||
private final HibernateFilter hibernateFilter;
|
||||
|
||||
@Inject
|
||||
public CoreServletConfigurator(HibernateFilter hibernateFilter, ShiroFilter shiroFilter, GitFilter gitFilter) {
|
||||
this.hibernateFilter = hibernateFilter;
|
||||
this.shiroFilter = shiroFilter;
|
||||
this.gitFilter = gitFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
FilterHolder filterHolder = new FilterHolder(hibernateFilter);
|
||||
context.addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
|
||||
context.setInitParameter(
|
||||
EnvironmentLoader.ENVIRONMENT_CLASS_PARAM,
|
||||
DefaultWebEnvironment.class.getName());
|
||||
|
||||
context.addEventListener(new EnvironmentLoaderListener());
|
||||
|
||||
filterHolder = new FilterHolder(shiroFilter);
|
||||
context.addFilter(filterHolder, "/*", EnumSet.allOf(DispatcherType.class));
|
||||
|
||||
filterHolder = new FilterHolder(gitFilter);
|
||||
context.addFilter(filterHolder, "/*", EnumSet.allOf(DispatcherType.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -4,8 +4,12 @@ import java.io.IOException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@ -20,17 +24,16 @@ import com.pmease.gitop.core.manager.ProjectManager;
|
||||
import com.pmease.gitop.core.model.Project;
|
||||
|
||||
@Singleton
|
||||
@SuppressWarnings("serial")
|
||||
public class GitServlet extends HttpServlet {
|
||||
public class GitFilter implements Filter {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(GitServlet.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(GitFilter.class);
|
||||
|
||||
private static final String INFO_REFS = "info/refs";
|
||||
|
||||
private final ProjectManager projectManager;
|
||||
|
||||
@Inject
|
||||
public GitServlet(ProjectManager projectManager) {
|
||||
public GitFilter(ProjectManager projectManager) {
|
||||
this.projectManager = projectManager;
|
||||
}
|
||||
|
||||
@ -68,9 +71,7 @@ public class GitServlet extends HttpServlet {
|
||||
response.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String pathInfo = StringUtils.stripStart(req.getPathInfo(), "/");
|
||||
protected void processPacks(HttpServletRequest req, HttpServletResponse resp, String pathInfo) throws ServletException, IOException {
|
||||
String service = StringUtils.substringAfterLast(pathInfo, "/");
|
||||
|
||||
String repoInfo = StringUtils.substringBeforeLast(pathInfo, "/");
|
||||
@ -99,10 +100,7 @@ public class GitServlet extends HttpServlet {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String pathInfo = StringUtils.stripStart(req.getPathInfo(), "/");
|
||||
|
||||
protected void processRefs(HttpServletRequest req, HttpServletResponse resp, String pathInfo) throws ServletException, IOException {
|
||||
if (!pathInfo.endsWith(INFO_REFS)) {
|
||||
String message = "Invalid refs request url: " + req.getRequestURL();
|
||||
logger.error("Error serving git request: " + message);
|
||||
@ -140,5 +138,32 @@ public class GitServlet extends HttpServlet {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletRequest httpRequest = (HttpServletRequest) request;
|
||||
HttpServletResponse httpResponse = (HttpServletResponse) response;
|
||||
|
||||
String pathInfo = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
|
||||
pathInfo = StringUtils.stripStart(pathInfo, "/");
|
||||
|
||||
if (pathInfo.endsWith(INFO_REFS)) {
|
||||
processRefs(httpRequest, httpResponse, pathInfo);
|
||||
} else if (pathInfo.endsWith("git-receive-pack") || pathInfo.endsWith("git-upload-pack")) {
|
||||
processPacks(httpRequest, httpResponse, pathInfo);
|
||||
} else {
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
package com.pmease.gitop.core;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
|
||||
public class GitServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
private final GitServlet gitServlet;
|
||||
|
||||
@Inject
|
||||
public GitServletContextConfigurator(GitServlet gitServlet) {
|
||||
this.gitServlet = gitServlet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(gitServlet);
|
||||
context.addServlet(servletHolder, "/git/*");
|
||||
}
|
||||
|
||||
}
|
||||
@ -113,6 +113,11 @@
|
||||
<artifactId>commons.jersey</artifactId>
|
||||
<version>1.0.30</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>gitop.rest</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
||||
@ -10,12 +10,12 @@ import com.pmease.commons.jetty.ServerConfigurator;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
import com.pmease.gitop.core.setting.SslConfig;
|
||||
|
||||
public class GitopServerConfigurator implements ServerConfigurator {
|
||||
public class ProductConfigurator implements ServerConfigurator {
|
||||
|
||||
private ServerConfig serverConfig;
|
||||
|
||||
@Inject
|
||||
public GitopServerConfigurator(ServerConfig serverConfig) {
|
||||
public ProductConfigurator(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import java.util.Properties;
|
||||
import com.google.inject.name.Names;
|
||||
import com.pmease.commons.bootstrap.Bootstrap;
|
||||
import com.pmease.commons.jetty.ServerConfigurator;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.loader.AppName;
|
||||
import com.pmease.commons.util.FileUtils;
|
||||
@ -30,8 +30,9 @@ public class ProductModule extends AbstractPluginModule {
|
||||
|
||||
bind(ServerConfig.class).to(DefaultServerConfig.class);
|
||||
|
||||
contribute(ServerConfigurator.class, GitopServerConfigurator.class);
|
||||
contribute(ServletContextConfigurator.class, GitopServletContextConfigurator.class);
|
||||
contribute(ServerConfigurator.class, ProductConfigurator.class);
|
||||
contribute(ServletConfigurator.class, ProductServletConfigurator.class);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.pmease.gitop.product;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
@ -9,15 +7,15 @@ import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.bootstrap.Bootstrap;
|
||||
import com.pmease.commons.jetty.FileAssetServlet;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
|
||||
public class GitopServletContextConfigurator implements ServletContextConfigurator {
|
||||
public class ProductServletConfigurator implements ServletConfigurator {
|
||||
|
||||
private final ServerConfig serverConfig;
|
||||
|
||||
@Inject
|
||||
public GitopServletContextConfigurator(ServerConfig serverConfig) {
|
||||
public ProductServletConfigurator(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
}
|
||||
|
||||
@ -31,8 +29,7 @@ public class GitopServletContextConfigurator implements ServletContextConfigurat
|
||||
* Configure a servlet to serve contents under site folder. Site folder can be used
|
||||
* to hold site specific web assets.
|
||||
*/
|
||||
File siteDir = new File(Bootstrap.installDir, "site");
|
||||
ServletHolder servletHolder = new ServletHolder(new FileAssetServlet(siteDir));
|
||||
ServletHolder servletHolder = new ServletHolder(new FileAssetServlet(Bootstrap.getSiteDir()));
|
||||
context.addServlet(servletHolder, "/site/*");
|
||||
context.addServlet(servletHolder, "/robots.txt");
|
||||
}
|
||||
57
gitop.rest/pom.xml
Normal file
57
gitop.rest/pom.xml
Normal file
@ -0,0 +1,57 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>gitop.rest</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<parent>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>parent.general</artifactId>
|
||||
<version>1.0.28</version>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>plugin.maven</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>gitop.core</artifactId>
|
||||
<version>1.0.30</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>pmeaseRepo</id>
|
||||
<name>PMEase Repository</name>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>never</updatePolicy>
|
||||
<checksumPolicy>fail</checksumPolicy>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>always</updatePolicy>
|
||||
<checksumPolicy>fail</checksumPolicy>
|
||||
</snapshots>
|
||||
<url>http://artifact.pmease.com/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<properties>
|
||||
<moduleClass>com.pmease.gitop.rest.RestModule</moduleClass>
|
||||
</properties>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,29 @@
|
||||
package com.pmease.gitop.rest;
|
||||
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainManager;
|
||||
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.shiro.FilterChainConfigurator;
|
||||
|
||||
/**
|
||||
* NOTE: Do not forget to rename moduleClass property defined in the pom if you've renamed this class.
|
||||
*
|
||||
*/
|
||||
public class RestModule extends AbstractPluginModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
|
||||
// put your guice bindings here
|
||||
contribute(FilterChainConfigurator.class, new FilterChainConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(FilterChainManager filterChainManager) {
|
||||
filterChainManager.createChain("/rest/**", "noSessionCreation, authcBasic");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -35,11 +35,6 @@
|
||||
<artifactId>commons.wicket</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jersey</artifactId>
|
||||
<version>1.0.30</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- WICKET -->
|
||||
@ -84,6 +79,11 @@
|
||||
<version>0.7.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.pmease</groupId>
|
||||
<artifactId>commons.jetty</artifactId>
|
||||
<version>1.0.29</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
|
||||
@ -1,18 +1,10 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.jetty.ClasspathAssetServlet;
|
||||
import com.pmease.commons.jetty.ServletContextConfigurator;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.wicket.AbstractWicketConfig;
|
||||
import com.pmease.gitop.web.assets.AssetLocator;
|
||||
import com.pmease.gitop.web.common.component.fileupload.FileUploadServlet;
|
||||
import com.pmease.gitop.web.resource.RestResourceModule;
|
||||
|
||||
/**
|
||||
@ -29,21 +21,7 @@ public class WebModule extends AbstractPluginModule {
|
||||
bind(AbstractWicketConfig.class).to(GitopWebApp.class);
|
||||
bind(SitePaths.class).in(Singleton.class);
|
||||
|
||||
contribute(ServletContextConfigurator.class, new ServletContextConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(new ClasspathAssetServlet(AssetLocator.class));
|
||||
context.addServlet(servletHolder, "/assets/*");
|
||||
context.addServlet(servletHolder, "/favicon.ico");
|
||||
|
||||
ErrorPageErrorHandler errorHandler = (ErrorPageErrorHandler) context.getErrorHandler();
|
||||
errorHandler.addErrorPage(HttpServletResponse.SC_NOT_FOUND, "/assets/404.html");
|
||||
|
||||
servletHolder = context.addServlet(FileUploadServlet.class, "/uploads/*");
|
||||
}
|
||||
|
||||
});
|
||||
contribute(ServletConfigurator.class, WebServletConfigurator.class);
|
||||
|
||||
install(new RestResourceModule());
|
||||
}
|
||||
|
||||
@ -0,0 +1,47 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.jetty.ClasspathAssetServlet;
|
||||
import com.pmease.commons.jetty.ServletConfigurator;
|
||||
import com.pmease.gitop.web.assets.AssetLocator;
|
||||
import com.pmease.gitop.web.common.component.fileupload.FileUploadServlet;
|
||||
|
||||
@Singleton
|
||||
public class WebServletConfigurator implements ServletConfigurator {
|
||||
|
||||
private final WicketServlet wicketServlet;
|
||||
|
||||
@Inject
|
||||
public WebServletConfigurator(WicketServlet wicketServlet) {
|
||||
this.wicketServlet = wicketServlet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(wicketServlet);
|
||||
|
||||
/*
|
||||
* Add wicket servlet as the default servlet which will serve all requests failed to
|
||||
* match a path pattern
|
||||
*/
|
||||
context.addServlet(servletHolder, "/");
|
||||
|
||||
servletHolder = new ServletHolder(new ClasspathAssetServlet(AssetLocator.class));
|
||||
context.addServlet(servletHolder, "/assets/*");
|
||||
context.addServlet(servletHolder, "/favicon.ico");
|
||||
|
||||
ErrorPageErrorHandler errorHandler = (ErrorPageErrorHandler) context.getErrorHandler();
|
||||
errorHandler.addErrorPage(HttpServletResponse.SC_NOT_FOUND, "/assets/404.html");
|
||||
|
||||
servletHolder = context.addServlet(FileUploadServlet.class, "/uploads/*");
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.apache.wicket.Page;
|
||||
|
||||
import com.pmease.commons.wicket.AbstractWicketConfig;
|
||||
import com.pmease.gitop.web.page.home.HomePage;
|
||||
import com.pmease.gitop.web.page.init.ServerInitPage;
|
||||
|
||||
@Singleton
|
||||
public class WicketConfig extends AbstractWicketConfig {
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
super.init();
|
||||
|
||||
mountPage("/", HomePage.class);
|
||||
mountPage("/init", ServerInitPage.class);
|
||||
|
||||
mountPage("/test/dudu", TestPage.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends Page> getHomePage() {
|
||||
return HomePage.class;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user