/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.integration; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.Set; import java.util.Map.Entry; /** * Helper class for integration testing of the JBoss Modules generated by the * hibernate-search-modules Maven module. * * 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. * * @since 5.0 */ public class VersionTestHelper { private static String hibernateSearchVersion = null; private static String hibernateSearchModuleSlot = null; private static String hibernateOrmModuleName = null; private static String luceneFullVersion = null; private static String hibernateAnnotationsFullVersion = null; private VersionTestHelper() { //not meant to be created } /** * @return the slot version of the Hibernate Search modules generated by this project */ public static synchronized String getModuleSlotString() { if ( hibernateSearchModuleSlot == null ) { String versionHibernateSearch = getDependencyVersionHibernateSearch(); String[] split = versionHibernateSearch.split( "\\." ); hibernateSearchModuleSlot = split[0] + '.' + split[1]; } return hibernateSearchModuleSlot; } public static synchronized String getDependencyVersionHibernateSearch() { if ( hibernateSearchVersion == null ) { hibernateSearchVersion = injectVariables( "${dependency.version.HibernateSearch}" ); } return hibernateSearchVersion; } public static synchronized String getHibernateORMModuleName() { if ( hibernateOrmModuleName == null ) { hibernateOrmModuleName = "org.hibernate:" + injectVariables( "${hibernate-orm.module.slot}" ); } return hibernateOrmModuleName; } public static synchronized String getDependencyVersionLucene() { if ( luceneFullVersion == null ) { luceneFullVersion = injectVariables( "${dependency.version.Lucene}" ); } return luceneFullVersion; } public static synchronized String getDependencyVersionHibernateCommonsAnnotations() { if ( hibernateAnnotationsFullVersion == null ) { hibernateAnnotationsFullVersion = injectVariables( "${dependency.version.hcann}" ); } return hibernateAnnotationsFullVersion; } public static String getWildFlyModuleIdentifier() { return "org.hibernate.search.orm:" + getModuleSlotString(); } public static String injectVariables(String inputString) { 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(); inputString = inputString.replace( "${" + key + "}", value ); } return inputString; } }