package org.infinispan.test.integration.as; import java.io.IOException; import java.io.InputStream; import java.util.Map.Entry; import java.util.Properties; import java.util.Set; import org.jboss.shrinkwrap.api.asset.Asset; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.descriptor.api.Descriptors; import org.jboss.shrinkwrap.descriptor.api.spec.se.manifest.ManifestDescriptor; /** * Helper class for integration testing of the generated JBoss Modules. * <p/> * The slot version is set as a property in the parent pom, and passed to the JVM of Arquillian as a system property of * the Maven maven-failsafe-plugin. * Loading it as a Properties makes these settings available to tests run withing the IDE as well. * * @author Sanne Grinovero * @since 7.2 */ public class VersionTestHelper { private VersionTestHelper() { //not meant to be created } public static String hibernateOrmModuleName() { return "org.hibernate:" + injectVariables( "${hibernate-orm.module.slot}" ); } public static String hibernateSearchModuleName() { return "org.hibernate.search.orm:" + injectVariables( "${hibernate-search.module.slot}" ); } public static Asset manifestDependencies(String moduleDependencies) { return manifest( injectVariables( moduleDependencies ) ); } private static Asset manifest(String dependencies) { String manifest = Descriptors.create( ManifestDescriptor.class ) .attribute( "Dependencies", dependencies ) .exportAsString(); return new StringAsset( manifest ); } private static String injectVariables(String dependencies) { Properties projectCompilationProperties = new Properties(); final InputStream resourceAsStream = VersionTestHelper.class.getClassLoader().getResourceAsStream( "module-versions.properties" ); try { projectCompilationProperties.load( resourceAsStream ); } catch (IOException e) { throw new RuntimeException( e ); } finally { try { resourceAsStream.close(); } catch (IOException e) { throw new RuntimeException( e ); } } Set<Entry<Object,Object>> entrySet = projectCompilationProperties.entrySet(); for (Entry<Object,Object> entry : entrySet) { String key = (String) entry.getKey(); String value = (String) entry.getValue(); dependencies = dependencies.replace("${" + key + "}", value); } return dependencies; } }