blob: c61a6c5c44bd46220e676d71b94d0e821e9c7bab [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.deltaspike.data.test.util;
import java.io.File;
import java.net.URL;
import org.apache.deltaspike.data.test.TransactionalTestCase;
import org.apache.deltaspike.data.test.domain.AuditedEntity;
import org.jboss.arquillian.container.test.spi.TestDeployment;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
public abstract class TestDeployments {
public static String DS_PROPERTIES_WITH_ENV_AWARE_TX_STRATEGY
= "globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy="
+ "org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy";
/**
* Create a basic deployment with dependencies, beans.xml and persistence descriptor.
*
* @return Basic web archive.
*/
public static WebArchive initDeployment()
{
return initDeployment(true);
}
public static WebArchive initDeployment(boolean addDefaultEntityManagerProducer)
{
return initDeployment(addDefaultEntityManagerProducer, EmptyAsset.INSTANCE);
}
public static WebArchive initDeployment(boolean addDefaultEntityManagerProducer, Asset beansXmlAsset)
{
Logging.reconfigure();
WebArchive archive = ShrinkWrap
.create(WebArchive.class, "test.war")
// used by many tests, shouldn't interfere with others
.addClasses(TransactionalTestCase.class, TestData.class)
.addPackages(true, AuditedEntity.class.getPackage())
.addAsLibraries(getDeltaSpikeDataWithDependencies())
.addAsWebInfResource("test-persistence.xml", "classes/META-INF/persistence.xml")
.addAsWebInfResource(beansXmlAsset, "beans.xml")
.addAsWebInfResource(new StringAsset(DS_PROPERTIES_WITH_ENV_AWARE_TX_STRATEGY),
"classes/META-INF/apache-deltaspike.properties");
if (addDefaultEntityManagerProducer)
{
archive.addClass(EntityManagerProducer.class);
}
return archive;
}
public static File[] getDeltaSpikeDataWithDependencies()
{
return Maven.resolver().loadPomFromFile("pom.xml").resolve(
"org.apache.deltaspike.core:deltaspike-core-api",
"org.apache.deltaspike.core:deltaspike-core-impl",
"org.apache.deltaspike.modules:deltaspike-partial-bean-module-api",
"org.apache.deltaspike.modules:deltaspike-partial-bean-module-impl",
"org.apache.deltaspike.modules:deltaspike-jpa-module-api",
"org.apache.deltaspike.modules:deltaspike-jpa-module-impl",
"org.apache.deltaspike.modules:deltaspike-data-module-api",
"org.apache.deltaspike.modules:deltaspike-data-module-impl")
.withTransitivity()
.asFile();
}
public static void addToEarManifestIfExists(EnterpriseArchive archive, String resource)
{
URL url = TestDeployment.class.getClassLoader().getResource(resource);
if (url != null) {
archive.addAsManifestResource(resource);
}
}
}