Fixed bug with directories, that should be scanned for annotations
[hibernate4-maven-plugin] / src / it / hmp-testclasses-annotationscanning / src / test / java / net / java / examples / hmp / test / util / BaseDeploymentPackage.java
diff --git a/src/it/hmp-testclasses-annotationscanning/src/test/java/net/java/examples/hmp/test/util/BaseDeploymentPackage.java b/src/it/hmp-testclasses-annotationscanning/src/test/java/net/java/examples/hmp/test/util/BaseDeploymentPackage.java
new file mode 100644 (file)
index 0000000..25d4468
--- /dev/null
@@ -0,0 +1,120 @@
+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