mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-08 18:26:30 +00:00
Change to use new extension point mechanism.
This commit is contained in:
parent
f1e37112c5
commit
5a2fe0dc63
@ -1,13 +1,7 @@
|
||||
package com.pmease.commons.editable;
|
||||
|
||||
import java.util.Collection;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
|
||||
public class EditablePlugin extends AbstractPlugin {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,13 +1,7 @@
|
||||
package com.pmease.commons.git;
|
||||
|
||||
import java.util.Collection;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
|
||||
public class GitPlugin extends AbstractPlugin {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ 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.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
|
||||
@ -42,6 +43,8 @@ public class HibernateModule extends AbstractPluginModule {
|
||||
Matchers.any(),
|
||||
Matchers.annotatedWith(Transactional.class),
|
||||
transactionInterceptor);
|
||||
|
||||
addExtension(ServletContextConfigurator.class, HibernateServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,47 +1,15 @@
|
||||
package com.pmease.commons.hibernate;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.eclipse.jetty.servlet.FilterHolder;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.util.ExceptionUtils;
|
||||
|
||||
public class HibernatePlugin extends AbstractPlugin {
|
||||
|
||||
private final PersistService persistService;
|
||||
|
||||
private final HibernateFilter hibernateFilter;
|
||||
|
||||
private static Field typeLiteralTypeField;
|
||||
|
||||
static {
|
||||
try {
|
||||
typeLiteralTypeField = TypeLiteral.class.getDeclaredField("type");
|
||||
typeLiteralTypeField.setAccessible(true);
|
||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||
modifiersField.setAccessible(true);
|
||||
modifiersField.setInt(typeLiteralTypeField, Modifier.PROTECTED);
|
||||
} catch (Exception e) {
|
||||
throw ExceptionUtils.unchecked(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Inject
|
||||
public HibernatePlugin(PersistService persistService, HibernateFilter hibernateFilter) {
|
||||
public HibernatePlugin(PersistService persistService) {
|
||||
this.persistService = persistService;
|
||||
this.hibernateFilter = hibernateFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -54,16 +22,4 @@ public class HibernatePlugin extends AbstractPlugin {
|
||||
persistService.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return ImmutableList.of(new ServletContextConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
FilterHolder filterHolder = new FilterHolder(hibernateFilter);
|
||||
context.addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
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.extensionpoints.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));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.pmease.commons.jersey;
|
||||
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainManager;
|
||||
|
||||
import com.pmease.commons.shiro.extensionpoint.FilterChainConfigurator;
|
||||
|
||||
public class JerseyFilterChainConfigurator implements FilterChainConfigurator {
|
||||
|
||||
@Override
|
||||
public void configure(FilterChainManager filterChainManager) {
|
||||
filterChainManager.createChain("/" + JerseyPlugin.REST_PATH + "/**", "noSessionCreation, authcBasic");
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,6 +2,7 @@ package com.pmease.commons.jersey;
|
||||
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.shiro.extensionpoint.FilterChainConfigurator;
|
||||
import com.pmease.commons.util.EasyMap;
|
||||
import com.sun.jersey.guice.JerseyServletModule;
|
||||
import com.sun.jersey.guice.spi.container.servlet.GuiceContainer;
|
||||
@ -34,6 +35,8 @@ public class JerseyModule extends AbstractPluginModule {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
addExtension(FilterChainConfigurator.class, JerseyFilterChainConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,29 +1,9 @@
|
||||
package com.pmease.commons.jersey;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainManager;
|
||||
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.shiro.extensionpoint.FilterChainConfigurator;
|
||||
|
||||
public class JerseyPlugin extends AbstractPlugin {
|
||||
|
||||
public static final String REST_PATH = "rest";
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return Arrays.asList(
|
||||
new FilterChainConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(FilterChainManager filterChainManager) {
|
||||
filterChainManager.createChain("/" + REST_PATH + "/**", "noSessionCreation, authcBasic");
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package com.pmease.commons.jetty;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
|
||||
@ -98,11 +97,6 @@ public class JettyPlugin extends AbstractPlugin {
|
||||
return server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static class DisableTraceFilter implements Filter {
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
package com.pmease.commons.loader;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@ -99,5 +98,4 @@ public abstract class AbstractPlugin implements Dependency, Lifecycle {
|
||||
public void stop() {
|
||||
}
|
||||
|
||||
public abstract Collection<?> getExtensions();
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package com.pmease.commons.loader;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.spy;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@ -21,34 +21,16 @@ public class AbstractPluginTest {
|
||||
@Before
|
||||
public void before() {
|
||||
plugin1 = spy(new AbstractPlugin() {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
});
|
||||
plugin1.setId("plugin1");
|
||||
plugin1.setDependencyIds(ImmutableSet.of("plugin2", "plugin3"));
|
||||
|
||||
plugin2 = spy(new AbstractPlugin() {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
});
|
||||
plugin2.setId("plugin2");
|
||||
plugin2.setDependencyIds(ImmutableSet.of("plugin3"));
|
||||
|
||||
plugin3 = spy(new AbstractPlugin() {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
});
|
||||
plugin3.setId("plugin3");
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ import org.apache.shiro.guice.aop.ShiroAopModule;
|
||||
import org.apache.shiro.web.filter.mgt.FilterChainResolver;
|
||||
import org.apache.shiro.web.mgt.WebSecurityManager;
|
||||
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
|
||||
@ -30,6 +31,8 @@ public class ShiroModule extends AbstractPluginModule {
|
||||
bind(CredentialsMatcher.class).to(DefaultPasswordMatcher.class);
|
||||
|
||||
install(new ShiroAopModule());
|
||||
|
||||
addExtension(ServletContextConfigurator.class, ShiroServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,38 +1,7 @@
|
||||
package com.pmease.commons.shiro;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
|
||||
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.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
|
||||
public class ShiroPlugin extends AbstractPlugin {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return Arrays.asList(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));
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.pmease.commons.shiro;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
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.jetty.extensionpoints.ServletContextConfigurator;
|
||||
|
||||
public class ShiroServletContextConfigurator implements 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));
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.pmease.commons.wicket;
|
||||
import org.apache.wicket.protocol.http.WicketFilter;
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
|
||||
@ -14,6 +15,8 @@ public class WicketModule extends AbstractPluginModule {
|
||||
|
||||
bind(WicketServlet.class).to(DefaultWicketServlet.class);
|
||||
bind(WicketFilter.class).to(DefaultWicketFilter.class);
|
||||
|
||||
addExtension(ServletContextConfigurator.class, WicketServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,44 +1,7 @@
|
||||
package com.pmease.commons.wicket;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
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.google.common.collect.ImmutableList;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
|
||||
public class WicketPlugin extends AbstractPlugin {
|
||||
|
||||
private final WicketServlet wicketServlet;
|
||||
|
||||
@Inject
|
||||
public WicketPlugin(WicketServlet wicketServlet) {
|
||||
this.wicketServlet = wicketServlet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return ImmutableList.of(
|
||||
new ServletContextConfigurator() {
|
||||
|
||||
@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, "/");
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.pmease.commons.wicket;
|
||||
|
||||
import org.apache.wicket.protocol.http.WicketServlet;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
|
||||
public class WicketServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
private final WicketServlet wicketServlet;
|
||||
|
||||
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, "/");
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,8 +3,8 @@ package com.pmease.gitop.core;
|
||||
import java.io.Serializable;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AppLoader;
|
||||
import com.pmease.commons.loader.AppName;
|
||||
import com.pmease.gitop.core.manager.InitManager;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
|
||||
@ -24,20 +25,18 @@ public class Gitop extends AbstractPlugin {
|
||||
private final InitManager initManager;
|
||||
|
||||
private final ServerConfig serverConfig;
|
||||
|
||||
private final String appName;
|
||||
|
||||
private List<ManualConfig> manualConfigs;
|
||||
|
||||
@Inject
|
||||
public Gitop(ServerConfig serverConfig, InitManager initManager) {
|
||||
public Gitop(ServerConfig serverConfig, InitManager initManager, @AppName String appName) {
|
||||
this.initManager = initManager;
|
||||
this.serverConfig = serverConfig;
|
||||
this.appName = appName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public void start() {
|
||||
@ -92,6 +91,10 @@ public class Gitop extends AbstractPlugin {
|
||||
return "https://" + hostName + ":" + serverConfig.getSslConfig().getPort();
|
||||
}
|
||||
|
||||
public String getAppName() {
|
||||
return appName;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method can be called from different UI threads, so we clone manual configs to
|
||||
* make it thread-safe.
|
||||
@ -114,4 +117,8 @@ public class Gitop extends AbstractPlugin {
|
||||
return AppLoader.getInstance(type);
|
||||
}
|
||||
|
||||
public static <T> Set<T> getExtensions(Class<T> extensionPoint) {
|
||||
return AppLoader.getExtensions(extensionPoint);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
package com.pmease.gitop.product;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.bio.SocketConnector;
|
||||
import org.eclipse.jetty.server.ssl.SslSocketConnector;
|
||||
|
||||
import com.pmease.commons.jetty.extensionpoints.ServerConfigurator;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
import com.pmease.gitop.core.setting.SslConfig;
|
||||
|
||||
public class GitopServerConfigurator implements ServerConfigurator {
|
||||
|
||||
private ServerConfig serverConfig;
|
||||
|
||||
@Inject
|
||||
public GitopServerConfigurator(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public void configure(Server server) {
|
||||
if (serverConfig.getHttpPort() != 0) {
|
||||
SocketConnector connector = new SocketConnector();
|
||||
connector.setPort(serverConfig.getHttpPort());
|
||||
server.addConnector(connector);
|
||||
}
|
||||
|
||||
SslConfig sslConfig = serverConfig.getSslConfig();
|
||||
if (sslConfig != null) {
|
||||
SslSocketConnector sslConnector = new SslSocketConnector();
|
||||
sslConnector.setPort(sslConfig.getPort());
|
||||
|
||||
sslConnector.setKeystore(sslConfig.getKeystorePath());
|
||||
sslConnector.setPassword(sslConfig.getKeystorePassword());
|
||||
sslConnector.setKeyPassword(sslConfig.getKeystoreKeyPassword());
|
||||
|
||||
server.addConnector(sslConnector);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.pmease.gitop.product;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
|
||||
import com.pmease.commons.bootstrap.Bootstrap;
|
||||
import com.pmease.commons.jetty.FileAssetServlet;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
|
||||
public class GitopServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
private final ServerConfig serverConfig;
|
||||
|
||||
public GitopServletContextConfigurator(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
context.getSessionHandler().getSessionManager().setMaxInactiveInterval(serverConfig.getSessionTimeout());
|
||||
|
||||
/*
|
||||
* 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));
|
||||
context.addServlet(servletHolder, "/site/*");
|
||||
context.addServlet(servletHolder, "/robots.txt");
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,87 +1,16 @@
|
||||
package com.pmease.gitop.product;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.bio.SocketConnector;
|
||||
import org.eclipse.jetty.server.ssl.SslSocketConnector;
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler;
|
||||
import org.eclipse.jetty.servlet.ServletHolder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.pmease.commons.bootstrap.Bootstrap;
|
||||
import com.pmease.commons.jetty.FileAssetServlet;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServerConfigurator;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.gitop.core.setting.ServerConfig;
|
||||
import com.pmease.gitop.core.setting.SslConfig;
|
||||
|
||||
public class Product extends AbstractPlugin {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(Product.class);
|
||||
|
||||
private final ServerConfig serverConfig;
|
||||
|
||||
public static final String NAME = "Gitop";
|
||||
|
||||
@Inject
|
||||
public Product(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return ImmutableList.of(
|
||||
new ServerConfigurator() {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public void configure(Server server) {
|
||||
if (serverConfig.getHttpPort() != 0) {
|
||||
SocketConnector connector = new SocketConnector();
|
||||
connector.setPort(serverConfig.getHttpPort());
|
||||
server.addConnector(connector);
|
||||
}
|
||||
|
||||
SslConfig sslConfig = serverConfig.getSslConfig();
|
||||
if (sslConfig != null) {
|
||||
SslSocketConnector sslConnector = new SslSocketConnector();
|
||||
sslConnector.setPort(sslConfig.getPort());
|
||||
|
||||
sslConnector.setKeystore(sslConfig.getKeystorePath());
|
||||
sslConnector.setPassword(sslConfig.getKeystorePassword());
|
||||
sslConnector.setKeyPassword(sslConfig.getKeystoreKeyPassword());
|
||||
|
||||
server.addConnector(sslConnector);
|
||||
}
|
||||
}
|
||||
},
|
||||
new ServletContextConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
context.getSessionHandler().getSessionManager().setMaxInactiveInterval(serverConfig.getSessionTimeout());
|
||||
|
||||
/*
|
||||
* 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));
|
||||
context.addServlet(servletHolder, "/site/*");
|
||||
context.addServlet(servletHolder, "/robots.txt");
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postStart() {
|
||||
logger.info(NAME + " has been started successfully.");
|
||||
|
||||
@ -5,6 +5,8 @@ import java.util.Properties;
|
||||
|
||||
import com.google.inject.name.Names;
|
||||
import com.pmease.commons.bootstrap.Bootstrap;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServerConfigurator;
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.loader.AppName;
|
||||
@ -28,6 +30,9 @@ public class ProductModule extends AbstractPluginModule {
|
||||
bind(Properties.class).annotatedWith(Names.named("server")).toInstance(serverProps);
|
||||
|
||||
bind(ServerConfig.class).to(DefaultServerConfig.class);
|
||||
|
||||
addExtension(ServerConfigurator.class, GitopServerConfigurator.class);
|
||||
addExtension(ServletContextConfigurator.class, GitopServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
import com.pmease.commons.jetty.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.commons.loader.AbstractPluginModule;
|
||||
import com.pmease.commons.wicket.AbstractWicketConfig;
|
||||
@ -16,6 +17,8 @@ public class WebModule extends AbstractPluginModule {
|
||||
|
||||
// put your guice bindings here
|
||||
bind(AbstractWicketConfig.class).to(WicketConfig.class);
|
||||
|
||||
addExtension(ServletContextConfigurator.class, WebServletContextConfigurator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,38 +1,7 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
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.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.commons.loader.AbstractPlugin;
|
||||
import com.pmease.gitop.web.asset.AssetLocator;
|
||||
|
||||
public class WebPlugin extends AbstractPlugin {
|
||||
|
||||
@Override
|
||||
public Collection<?> getExtensions() {
|
||||
return Arrays.asList(
|
||||
new ServletContextConfigurator() {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(new ClasspathAssetServlet(AssetLocator.class));
|
||||
context.addServlet(servletHolder, "/asset/*");
|
||||
context.addServlet(servletHolder, "/favicon.ico");
|
||||
|
||||
ErrorPageErrorHandler errorHandler = (ErrorPageErrorHandler) context.getErrorHandler();
|
||||
errorHandler.addErrorPage(HttpServletResponse.SC_NOT_FOUND, "/asset/404.html");
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package com.pmease.gitop.web;
|
||||
|
||||
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.extensionpoints.ServletContextConfigurator;
|
||||
import com.pmease.gitop.web.asset.AssetLocator;
|
||||
|
||||
public class WebServletContextConfigurator implements ServletContextConfigurator {
|
||||
|
||||
@Override
|
||||
public void configure(ServletContextHandler context) {
|
||||
ServletHolder servletHolder = new ServletHolder(new ClasspathAssetServlet(AssetLocator.class));
|
||||
context.addServlet(servletHolder, "/asset/*");
|
||||
context.addServlet(servletHolder, "/favicon.ico");
|
||||
|
||||
ErrorPageErrorHandler errorHandler = (ErrorPageErrorHandler) context.getErrorHandler();
|
||||
errorHandler.addErrorPage(HttpServletResponse.SC_NOT_FOUND, "/asset/404.html");
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user