/* * 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.jmx; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Map; import java.util.Properties; import org.hibernate.search.cfg.spi.SearchConfiguration; /** * A common place for helper methods useful for all tests using SimpleJNDI * @author Sanne Grinovero */ class SimpleJNDIHelper { private SimpleJNDIHelper() { //not to be constructed } /** * @param testClass the current test class is needed to define were to best store the temporary data * @return the Path for SimpleJNDI to store its data */ public static Path makeTestingJndiDirectory(Class<?> testClass) { Path targetDir = getTargetDir(); Path simpleJndiDir = targetDir.resolve( "simpleJndi" ); if ( !Files.exists( simpleJndiDir ) ) { try { Files.createDirectory( simpleJndiDir ); } catch (IOException e) { throw new RuntimeException( e ); } } return simpleJndiDir; } public static void enableSimpleJndi(SearchConfiguration configuration, Path jndiStorage) { Properties p = configuration.getProperties(); enableSimpleJndi( p, jndiStorage ); } @SuppressWarnings({ "rawtypes", "unchecked" }) public static void enableSimpleJndi(Map p, Path jndiStorage) { p.put( "hibernate.jndi.class", "org.osjava.sj.SimpleContextFactory" ); p.put( "hibernate.jndi.org.osjava.sj.root", jndiStorage.toAbsolutePath().toString() ); p.put( "hibernate.jndi.org.osjava.sj.jndi.shared", "true" ); } private static Path getTargetDir() { URI classesDirUri; try { classesDirUri = SimpleJNDIHelper.class.getProtectionDomain() .getCodeSource() .getLocation() .toURI(); } catch (URISyntaxException e) { throw new RuntimeException( e ); } return Paths.get( classesDirUri ).getParent(); } }