package org.infinispan.test.integration.security.utils; import java.net.URL; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.SystemUtils; import org.jboss.as.arquillian.container.ManagementClient; import org.jboss.as.test.integration.security.common.CoreUtils; import org.jboss.logging.Logger; /** * Common utilities for JDG security tests. * * @author Jan Lanik * @author Josef Cacek * @author Vitalii Chepeliuk */ public class Utils extends CoreUtils { private static final Logger LOGGER = Logger.getLogger(Utils.class); public static final boolean IBM_JDK = StringUtils.startsWith(SystemUtils.JAVA_VENDOR, "IBM"); public static URL getResource(String name) { ClassLoader tccl = Thread.currentThread().getContextClassLoader(); return tccl.getResource(name); } private static final long STOP_DELAY_DEFAULT = 0; /** * stops execution of the program indefinitely useful in testsuite debugging */ public static void stop() { stop(STOP_DELAY_DEFAULT); } /** * stop test execution for a given time interval useful for debugging * * @param delay interval (milliseconds), if delay<=0, interval is considered to be infinite (Long.MAX_VALUE) */ public static void stop(long delay) { long currentTime = System.currentTimeMillis(); long remainingTime = 0 < delay ? currentTime + delay - System.currentTimeMillis() : Long.MAX_VALUE; while (remainingTime > 0) { try { Thread.sleep(remainingTime); } catch (InterruptedException ex) { remainingTime = currentTime + delay - System.currentTimeMillis(); continue; } } } /** * Sets or removes (in case value==null) a system property. It's only a helper method, which avoids * {@link NullPointerException} thrown from {@link System#setProperty(String, String)} method, when the value is * <code>null</code>. * * @param key property name * @param value property value * @return the previous string value of the system property */ public static String setSystemProperty(final String key, final String value) { return value == null ? System.clearProperty(key) : System.setProperty(key, value); } /** * Returns canonical hostname retrieved from management address of the givem * {@link org.jboss.as.arquillian.container.ManagementClient}. * * @param managementClient * @return */ public static final String getCannonicalHost(final ManagementClient managementClient) { return getCannonicalHost(managementClient.getMgmtAddress()); } }