WIP:site
[hibernate4-maven-plugin] / src / it / hmp-testclasses-annotationscanning / src / test / java / net / java / examples / hmp / test / util / BaseDeploymentPackage.java
1 package net.java.examples.hmp.test.util;\r
2 \r
3 import org.jboss.shrinkwrap.api.ArchivePath;\r
4 import org.jboss.shrinkwrap.api.Filter;\r
5 import org.jboss.shrinkwrap.api.ShrinkWrap;\r
6 import org.jboss.shrinkwrap.api.spec.WebArchive;\r
7 import org.jboss.shrinkwrap.resolver.api.maven.Maven;\r
8 import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;\r
9 \r
10 import net.java.examples.hmp.model.domain.BaseEntity;\r
11 import net.java.examples.hmp.model.domain.callback.UserChangeTrackListener;\r
12 import net.java.examples.hmp.model.domain.extension.IUserChangeInfo;\r
13 import net.java.examples.hmp.model.domain.extension.IUserChangeTrackable;\r
14 import net.java.examples.hmp.model.domain.userchangeinfo.BaseUserChangeTrackedEntity;\r
15 import net.java.examples.hmp.model.domain.userchangeinfo.UserChangeInfo;\r
16 import net.java.examples.hmp.model.test.userchangeinfo.UserChangeInfoTestEntity;\r
17 import net.java.examples.hmp.persistence.producer.EntityManagerProducer;\r
18 import net.java.examples.hmp.service.IUserChangeInfoTestService;\r
19 import net.java.examples.hmp.service.impl.UserChangeInfoTestService;\r
20 \r
21 public class BaseDeploymentPackage {\r
22 \r
23     private WebArchive war;\r
24     PomEquippedResolveStage resolver = createOfflineResolverForDefaultPomFile();\r
25 \r
26     private static final IgnoreTestClassesFilter IGNORE_TEST_CLASSES_FILTER = new IgnoreTestClassesFilter();\r
27 \r
28     public PomEquippedResolveStage createOfflineResolverForDefaultPomFile() {\r
29         return Maven.configureResolver().workOffline(true).loadPomFromFile("pom.xml");\r
30     }\r
31 \r
32     public BaseDeploymentPackage addPackages(Package... packages) {\r
33         this.war.addPackages(false, IGNORE_TEST_CLASSES_FILTER, packages);\r
34         return this;\r
35     }\r
36 \r
37     public BaseDeploymentPackage addClasses(Class<?>... classes) {\r
38         this.war.addClasses(classes);\r
39 \r
40         return this;\r
41     }\r
42 \r
43     public BaseDeploymentPackage addClass(Class<?> clazz) {\r
44         this.war.addClass(clazz);\r
45 \r
46         return this;\r
47     }\r
48 \r
49     public static class IgnoreTestClassesFilter implements Filter<ArchivePath> {\r
50 \r
51         @Override\r
52         public boolean include(ArchivePath object) {\r
53             return !object.get().endsWith("Test.class");\r
54         }\r
55     }\r
56 \r
57     public BaseDeploymentPackage createStandardDeploymentPackage() {\r
58         PomEquippedResolveStage resolver = createOfflineResolverForDefaultPomFile();\r
59 \r
60         this.war = ShrinkWrap.create(WebArchive.class, "test.war")//\r
61                 .addAsWebInfResource("beans.xml", "beans.xml")//\r
62                 .addAsLibraries(resolver.resolve(//\r
63                         "org.assertj:assertj-core", // Assertj must be included to use the Assertj-Assertions in the Test-Methods\r
64                         "com.google.guava:guava", //\r
65                         "org.apache.commons:commons-lang3", //\r
66                         "commons-beanutils:commons-beanutils", //\r
67                         "org.apache.deltaspike.core:deltaspike-core-api", //\r
68                         "org.apache.deltaspike.core:deltaspike-core-impl").withTransitivity().asFile());\r
69 \r
70         return this;\r
71     }\r
72 \r
73     public BaseDeploymentPackage addTestPersistence() {\r
74         this.war.addAsResource("test-persistence.xml", "META-INF/persistence.xml");\r
75         return this;\r
76     }\r
77 \r
78     public BaseDeploymentPackage addPackagesModel() {\r
79         addClass(EntityManagerProducer.class);\r
80 \r
81         this.addPackageModelDomain();\r
82 \r
83         return this;\r
84     }\r
85 \r
86     private BaseDeploymentPackage addPackageModelDomain() {\r
87         addPackages(BaseEntity.class.getPackage());\r
88         addPackages(IUserChangeInfo.class.getPackage());\r
89 \r
90         return this;\r
91     }\r
92 \r
93     public BaseDeploymentPackage addPackageTestModel() {\r
94         // Here the definition of our Test-Entity, which is located under src/test/classes\r
95         addClass(UserChangeInfoTestEntity.class);\r
96 \r
97         return this;\r
98     }\r
99 \r
100     public BaseDeploymentPackage addPackagesUserChangeTrack() {\r
101         addClass(UserChangeInfo.class);\r
102         addClass(IUserChangeInfo.class);\r
103         addClass(UserChangeTrackListener.class);\r
104         addClass(IUserChangeTrackable.class);\r
105         addClass(BaseUserChangeTrackedEntity.class);\r
106 \r
107         return this;\r
108     }\r
109 \r
110     public BaseDeploymentPackage addPackagesTestServices() {\r
111         addClass(IUserChangeInfoTestService.class);\r
112         addClass(UserChangeInfoTestService.class);\r
113 \r
114         return this;\r
115     }\r
116 \r
117     public WebArchive getWAR() {\r
118         return this.war;\r
119     }\r
120 }\r