blob: 89d0845d3397507c596782e272d70cd82f262f42 [file] [log] [blame]
/*
* Copyright (c) 2007, 2009, 2011, 2012, 2015, 2016, 2019 Eike Stepper (Loehne, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.net4j.util;
import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.om.OMPlatform;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
/**
* Provides static methods that check object states and invocation arguments.
*
* @author Eike Stepper
*/
public final class CheckUtil
{
/**
* @since 3.7
*/
public static final boolean HAS_DEBUGGER_ATTACHED = hasDebuggerAttached();
/**
* @since 3.7
*/
public static final boolean SANITIZE_TIMEOUT = OMPlatform.INSTANCE.isProperty("org.eclipse.net4j.util.CheckUtil.sanitizeTimeout", HAS_DEBUGGER_ATTACHED);
private static final long ONE_DAY = 1000 * 60 * 60 * 24;
private static int counter;
private CheckUtil()
{
}
public static void checkNull(Object handle, String msg) throws NullPointerException
{
if (handle == null)
{
throw new NullPointerException(msg);
}
}
public static void checkArg(boolean expr, String msg) throws IllegalArgumentException
{
if (!expr)
{
throw new IllegalArgumentException(msg);
}
}
public static void checkArg(Object handle, String handleName) throws IllegalArgumentException
{
if (handle == null)
{
throw new IllegalArgumentException(handleName + " is null"); //$NON-NLS-1$
}
}
public static void checkState(boolean expr, String msg) throws IllegalStateException
{
if (!expr)
{
throw new IllegalStateException(msg);
}
}
public static void checkState(Object handle, String handleName) throws IllegalStateException
{
if (handle == null)
{
throw new IllegalStateException(handleName + " is null"); //$NON-NLS-1$
}
}
/**
* @since 3.6
*/
public static void countUp(String message)
{
IOUtil.OUT().println(message + (++counter));
}
/**
* @since 3.6
*/
public static void countDown(String message)
{
IOUtil.OUT().println(message + --counter);
}
/**
*
* @since 3.7
*/
public static long sanitizeTimeout(long timeout)
{
if (SANITIZE_TIMEOUT)
{
timeout = Math.max(timeout, ONE_DAY);
}
return timeout;
}
private static boolean hasDebuggerAttached()
{
try
{
String property = OMPlatform.INSTANCE.getProperty("org.eclipse.net4j.util.CheckUtil.hasDebuggerAttached");
if (property != null)
{
return Boolean.parseBoolean(property);
}
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
String jvmArguments = runtimeMXBean.getInputArguments().toString();
return jvmArguments.contains("-agentlib:jdwp");
}
catch (Throwable ex)
{
return false;
}
}
}