Add gitop.core module.

This commit is contained in:
robin shine 2013-07-01 12:17:05 +08:00
parent 80795dd63d
commit 9d377d6776
20 changed files with 296 additions and 76 deletions

75
gitop.core/pom.xml Normal file
View File

@ -0,0 +1,75 @@
<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.core</artifactId>
<version>1.0.0</version>
<parent>
<groupId>com.pmease</groupId>
<artifactId>parent.general</artifactId>
<version>1.0.26</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>com.pmease</groupId>
<artifactId>plugin.maven</artifactId>
</plugin>
<plugin>
<artifactId>maven-archetype-plugin</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>commons.loader</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.web</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.security</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.rest</artifactId>
<version>1.0.26</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.core.CoreModule</moduleClass>
</properties>
</project>

View File

@ -0,0 +1,34 @@
package com.pmease.gitop.core;
import com.pmease.commons.loader.AbstractPlugin;
import com.pmease.commons.loader.AbstractPluginModule;
import com.pmease.commons.loader.AppName;
import com.pmease.commons.security.AbstractRealm;
import com.pmease.commons.web.AbstractWicketConfig;
/**
* NOTE: Do not forget to rename moduleClass property defined in the pom if you've renamed this class.
*
*/
public class CoreModule extends AbstractPluginModule {
public static final String PRODUCT_NAME = "Gitop";
@Override
protected void configure() {
super.configure();
bind(AbstractWicketConfig.class).to(WicketConfig.class);
bind(AbstractRealm.class).to(UserRealm.class);
bindConstant().annotatedWith(AppName.class).to(PRODUCT_NAME);
bind(HelloResource.class);
}
@Override
protected Class<? extends AbstractPlugin> getPluginClass() {
return CorePlugin.class;
}
}

View File

@ -0,0 +1,51 @@
package com.pmease.gitop.core;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
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.commons.persistence.AbstractEntity;
import com.pmease.commons.persistence.extensionpoints.ModelContribution;
import com.pmease.gitop.core.model.User;
import com.pmease.gitop.core.web.asset.AssetLocator;
public class CorePlugin 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");
}
},
new ModelContribution() {
@Override
public Collection<Class<? extends AbstractEntity>> getModelClasses() {
Collection<Class<? extends AbstractEntity>> modelClasses =
new HashSet<Class<? extends AbstractEntity>>();
modelClasses.add(User.class);
return modelClasses;
}
});
}
}

View File

@ -1,4 +1,4 @@
package com.pmease.gitop;
package com.pmease.gitop.core;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@ -6,7 +6,7 @@ import javax.ws.rs.Path;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import com.pmease.commons.security.SecurityHelper;
import com.pmease.gitop.model.User;
import com.pmease.gitop.core.model.User;
@Path("/hello")
public class HelloResource {

View File

@ -1,4 +1,4 @@
package com.pmease.gitop;
package com.pmease.gitop.core;
import java.util.Arrays;
import java.util.Collection;
@ -11,7 +11,7 @@ import org.apache.shiro.authc.credential.CredentialsMatcher;
import com.pmease.commons.persistence.dao.GeneralDao;
import com.pmease.commons.security.AbstractRealm;
import com.pmease.gitop.model.User;
import com.pmease.gitop.core.model.User;
@Singleton
public class UserRealm extends AbstractRealm<User> {

View File

@ -1,11 +1,11 @@
package com.pmease.gitop;
package com.pmease.gitop.core;
import javax.inject.Singleton;
import org.apache.wicket.Page;
import com.pmease.commons.web.AbstractWicketConfig;
import com.pmease.gitop.web.HomePage;
import com.pmease.gitop.core.web.HomePage;
@Singleton
public class WicketConfig extends AbstractWicketConfig {

View File

@ -1,4 +1,4 @@
package com.pmease.gitop.model;
package com.pmease.gitop.core.model;
import javax.persistence.Entity;

View File

@ -1,4 +1,4 @@
package com.pmease.gitop.web;
package com.pmease.gitop.core.web;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
@ -8,7 +8,7 @@ import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.AbstractReadOnlyModel;
import com.pmease.commons.security.SecurityHelper;
import com.pmease.gitop.model.User;
import com.pmease.gitop.core.model.User;
@SuppressWarnings("serial")
public class HomePage extends WebPage {

View File

@ -0,0 +1,5 @@
package com.pmease.gitop.core.web.asset;
public class AssetLocator {
}

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="archetype.plugin">
<fileSets>
<fileSet filtered="true" packaged="true">
<directory>src/main/java</directory>
</fileSet>
<fileSet filtered="false" packaged="false">
<directory>src/main/resources</directory>
</fileSet>
<fileSet filtered="false" packaged="false">
<directory>src/test/java</directory>
</fileSet>
<fileSet filtered="false" packaged="false">
<directory>src/test/resources</directory>
</fileSet>
</fileSets>
</archetype-descriptor>

View File

@ -0,0 +1,60 @@
<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>
#if (\${groupId} != "com.pmease")
<groupId>\${groupId}</groupId>
#end
<artifactId>\${artifactId}</artifactId>
<version>\${version}</version>
<parent>
<groupId>com.pmease</groupId>
<artifactId>parent.general</artifactId>
<version>1.0.26</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>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</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>\${package}.PluginModule</moduleClass>
</properties>
</project>

View File

@ -0,0 +1,13 @@
package ${package};
import java.util.Collection;
import com.pmease.commons.loader.AbstractPlugin;
public class Plugin extends AbstractPlugin {
@Override
public Collection<?> getExtensions() {
return null;
}
}

View File

@ -0,0 +1,24 @@
package ${package};
import com.pmease.commons.loader.AbstractPlugin;
import com.pmease.commons.loader.AbstractPluginModule;
/**
* NOTE: Do not forget to rename moduleClass property defined in the pom if you've renamed this class.
*
*/
public class PluginModule extends AbstractPluginModule {
@Override
protected void configure() {
super.configure();
// put your guice bindings here
}
@Override
protected Class<? extends AbstractPlugin> getPluginClass() {
return Plugin.class;
}
}

View File

@ -97,32 +97,12 @@
<artifactId>commons.jsw</artifactId>
<version>1.0.26</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.persistence</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.jetty</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.rest</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.web</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>commons.security</artifactId>
<version>1.0.26</version>
</dependency>
</dependency>
<dependency>
<groupId>com.pmease</groupId>
<artifactId>gitop.core</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
@ -144,7 +124,7 @@
<properties>
<executables>bin/*.sh, bin/wrapper-*</executables>
<bootstrapClass>com.pmease.commons.bootstrap.Bootstrap</bootstrapClass>
<moduleClass>com.pmease.commons.product.ProductModule</moduleClass>
<moduleClass>com.pmease.gitop.ProductModule</moduleClass>
<aggregation>false</aggregation>
</properties>
</project>

View File

@ -2,18 +2,15 @@ package com.pmease.gitop;
import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import java.util.Properties;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authc.credential.PasswordService;
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.ErrorPageErrorHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.hibernate.criterion.DetachedCriteria;
@ -23,18 +20,14 @@ import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableList;
import com.pmease.commons.bootstrap.Bootstrap;
import com.pmease.commons.jetty.ClasspathAssetServlet;
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.commons.persistence.AbstractEntity;
import com.pmease.commons.persistence.dao.GeneralDao;
import com.pmease.commons.persistence.extensionpoints.ModelContribution;
import com.pmease.commons.util.FileUtils;
import com.pmease.commons.util.StringUtils;
import com.pmease.gitop.model.User;
import com.pmease.gitop.web.asset.AssetLocator;
import com.pmease.gitop.core.model.User;
public class Product extends AbstractPlugin {
@ -115,25 +108,8 @@ public class Product extends AbstractPlugin {
ServletHolder servletHolder = new ServletHolder(new FileAssetServlet(siteDir));
context.addServlet(servletHolder, "/site/*");
context.addServlet(servletHolder, "/robots.txt");
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");
}
},
new ModelContribution() {
@Override
public Collection<Class<? extends AbstractEntity>> getModelClasses() {
Collection<Class<? extends AbstractEntity>> modelClasses =
new HashSet<Class<? extends AbstractEntity>>();
modelClasses.add(User.class);
return modelClasses;
}
}
);
}

View File

@ -6,11 +6,8 @@ import java.util.Properties;
import com.pmease.commons.bootstrap.Bootstrap;
import com.pmease.commons.loader.AbstractPlugin;
import com.pmease.commons.loader.AbstractPluginModule;
import com.pmease.commons.loader.AppName;
import com.pmease.commons.persistence.Hibernate;
import com.pmease.commons.security.AbstractRealm;
import com.pmease.commons.util.FileUtils;
import com.pmease.commons.web.AbstractWicketConfig;
public class ProductModule extends AbstractPluginModule {
@ -21,13 +18,6 @@ public class ProductModule extends AbstractPluginModule {
Properties hibernateProps = FileUtils.loadProperties(
new File(Bootstrap.installDir, "conf/hibernate.properties"));
bind(Properties.class).annotatedWith(Hibernate.class).toInstance(hibernateProps);
bind(AbstractWicketConfig.class).to(WicketConfig.class);
bind(AbstractRealm.class).to(UserRealm.class);
bindConstant().annotatedWith(AppName.class).to(Product.PRODUCT_NAME);
bind(HelloResource.class);
}
@Override

View File

@ -1,5 +0,0 @@
package com.pmease.gitop.web.asset;
public class AssetLocator {
}