--- /dev/null
+package net.java.examples.hmp.test.util;\r
+\r
+import org.jboss.shrinkwrap.api.ArchivePath;\r
+import org.jboss.shrinkwrap.api.Filter;\r
+import org.jboss.shrinkwrap.api.ShrinkWrap;\r
+import org.jboss.shrinkwrap.api.spec.WebArchive;\r
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;\r
+import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;\r
+\r
+import net.java.examples.hmp.model.domain.BaseEntity;\r
+import net.java.examples.hmp.model.domain.callback.UserChangeTrackListener;\r
+import net.java.examples.hmp.model.domain.extension.IUserChangeInfo;\r
+import net.java.examples.hmp.model.domain.extension.IUserChangeTrackable;\r
+import net.java.examples.hmp.model.domain.userchangeinfo.BaseUserChangeTrackedEntity;\r
+import net.java.examples.hmp.model.domain.userchangeinfo.UserChangeInfo;\r
+import net.java.examples.hmp.model.test.userchangeinfo.UserChangeInfoTestEntity;\r
+import net.java.examples.hmp.persistence.producer.EntityManagerProducer;\r
+import net.java.examples.hmp.service.IUserChangeInfoTestService;\r
+import net.java.examples.hmp.service.impl.UserChangeInfoTestService;\r
+\r
+public class BaseDeploymentPackage {\r
+\r
+ private WebArchive war;\r
+ PomEquippedResolveStage resolver = createOfflineResolverForDefaultPomFile();\r
+\r
+ private static final IgnoreTestClassesFilter IGNORE_TEST_CLASSES_FILTER = new IgnoreTestClassesFilter();\r
+\r
+ public PomEquippedResolveStage createOfflineResolverForDefaultPomFile() {\r
+ return Maven.configureResolver().workOffline(true).loadPomFromFile("pom.xml");\r
+ }\r
+\r
+ public BaseDeploymentPackage addPackages(Package... packages) {\r
+ this.war.addPackages(false, IGNORE_TEST_CLASSES_FILTER, packages);\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addClasses(Class<?>... classes) {\r
+ this.war.addClasses(classes);\r
+\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addClass(Class<?> clazz) {\r
+ this.war.addClass(clazz);\r
+\r
+ return this;\r
+ }\r
+\r
+ public static class IgnoreTestClassesFilter implements Filter<ArchivePath> {\r
+\r
+ @Override\r
+ public boolean include(ArchivePath object) {\r
+ return !object.get().endsWith("Test.class");\r
+ }\r
+ }\r
+\r
+ public BaseDeploymentPackage createStandardDeploymentPackage() {\r
+ PomEquippedResolveStage resolver = createOfflineResolverForDefaultPomFile();\r
+\r
+ this.war = ShrinkWrap.create(WebArchive.class, "test.war")//\r
+ .addAsWebInfResource("beans.xml", "beans.xml")//\r
+ .addAsLibraries(resolver.resolve(//\r
+ "org.assertj:assertj-core", // Assertj must be included to use the Assertj-Assertions in the Test-Methods\r
+ "com.google.guava:guava", //\r
+ "org.apache.commons:commons-lang3", //\r
+ "commons-beanutils:commons-beanutils", //\r
+ "org.apache.deltaspike.core:deltaspike-core-api", //\r
+ "org.apache.deltaspike.core:deltaspike-core-impl").withTransitivity().asFile());\r
+\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addTestPersistence() {\r
+ this.war.addAsResource("test-persistence.xml", "META-INF/persistence.xml");\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addPackagesModel() {\r
+ addClass(EntityManagerProducer.class);\r
+\r
+ this.addPackageModelDomain();\r
+\r
+ return this;\r
+ }\r
+\r
+ private BaseDeploymentPackage addPackageModelDomain() {\r
+ addPackages(BaseEntity.class.getPackage());\r
+ addPackages(IUserChangeInfo.class.getPackage());\r
+\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addPackageTestModel() {\r
+ // Here the definition of our Test-Entity, which is located under src/test/classes\r
+ addClass(UserChangeInfoTestEntity.class);\r
+\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addPackagesUserChangeTrack() {\r
+ addClass(UserChangeInfo.class);\r
+ addClass(IUserChangeInfo.class);\r
+ addClass(UserChangeTrackListener.class);\r
+ addClass(IUserChangeTrackable.class);\r
+ addClass(BaseUserChangeTrackedEntity.class);\r
+\r
+ return this;\r
+ }\r
+\r
+ public BaseDeploymentPackage addPackagesTestServices() {\r
+ addClass(IUserChangeInfoTestService.class);\r
+ addClass(UserChangeInfoTestService.class);\r
+\r
+ return this;\r
+ }\r
+\r
+ public WebArchive getWAR() {\r
+ return this.war;\r
+ }\r
+}\r