Package com.evolveum.midpoint.util
Class MiscUtil
java.lang.Object
com.evolveum.midpoint.util.MiscUtil
- Author:
- semancik
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> voidaddAllIfNotPresent(List<T> receivingList, List<T> supplyingList) static <T> voidaddIfNotPresent(List<T> receivingList, T supplyingElement) static Booleann-ary and that ignores null values.static voidstatic <T> TargNonNull(T value, String template, Object... arguments) static <T> TargNonNull(T value, Supplier<String> messageSupplier) static DateasDate(int year, int month, int date, int hrs, int min, int sec) static DateConverts an XMLGregorianCalendar to an instance of java.util.Datestatic @Nullable Instantstatic @Nullable InstantasInstant(@Nullable XMLGregorianCalendar xgc) static <T> List<T>asListTreatingNull(T[] values) LikeArrays.asList(Object[])but if there's a single null value at input, creates an empty list.static Longstatic voidassertCheck(boolean condition, String template, Object... arguments) static @Nullable XMLGregorianCalendarasXMLGregorianCalendar(@Nullable Long timeInMillis) Returns null for null input, but also for value of 0L.static @Nullable XMLGregorianCalendarasXMLGregorianCalendar(@Nullable Instant instant) static @Nullable XMLGregorianCalendarasXMLGregorianCalendar(@Nullable Date date) Converts a java.util.Date into an instance of XMLGregorianCalendarstatic @NotNull StringbytesToHex(@org.jetbrains.annotations.NotNull byte[] bytes) static @Nullable StringbytesToHexPreview(@org.jetbrains.annotations.Nullable byte[] bytes) Returns first 8 bytes from provided byte array as hexadecimal and adds length information.static @Nullable StringbytesToHexPreview(@org.jetbrains.annotations.Nullable byte[] bytes, int previewLen) Returns a couple of bytes from provided byte array as hexadecimal and adds length information.static <T> voidcarthesian(List<? extends Collection<T>> valuesForDimensions, Processor<List<T>> tupleProcessor) We have n dimensions (D1...Dn), each containing a number of values.static <T> TcastSafely(Object value, Class<T> expectedClass) static voidcheckCollectionImmutable(Collection<?> collection) static <K,V> Map<K, V> Shallow clonestatic IntegercompareNullLast(Object o1, Object o2) static <T> @NotNull Collection<? extends T>concat(@NotNull Collection<? extends T> collection1, @NotNull Collection<? extends T> collection2) Returns a concatenation of two collections.static Stringconcat(Collection<String> stringCollection) static voidconfigCheck(boolean condition, String template, Object... arguments) static <T> TconfigNonNull(T value, String template, Object... arguments) static <T> TconfigNonNull(T value, Supplier<String> messageSupplier) static <T> booleancontains(T element, T[] array) static voidcopyDirectory(File src, File dst) Copy a directory and its contents.static voidstatic <T> Collection<T>createCollection(T... items) static <T extends Throwable>
TcreateSame(T original, String message) static Class<?>determineCommonAncestor(Collection<Class<?>> classes) static @NotNull Stringstatic <T> @NotNull Collection<T>emptyIfNull(Collection<T> collection) static <T> @NotNull List<T>emptyIfNull(List<T> list) static <K,V> @NotNull Map<K, V> emptyIfNull(Map<K, V> map) static <T extends Enum<T>>
TenumFromOrdinal(Class<T> enumType, Integer ordinal) Converts integer ordinal number to enum value of the defined enum type.static @Nullable IntegerenumOrdinal(@Nullable Enum<?> enumValue) Returns ordinal value from nullable enum or returnsnull.static booleanstatic <T> TextractSingleton(Collection<T> collection) static <T,E extends Throwable>
TextractSingleton(Collection<T> collection, Supplier<E> exceptionSupplier) static <T> TextractSingletonRequired(Collection<T> collection) static <T,E extends Throwable>
TextractSingletonRequired(Collection<T> collection, Supplier<E> multiExceptionSupplier, Supplier<E> noneExceptionSupplier) static <T> Collection<T>filter(Collection<T> input, Predicate<? super T> predicate) static <T> Set<T>static <V> Vfind(Collection<V> values, V value, @NotNull EqualsChecker<V> equalsChecker) static <V> VfindWithComparator(Collection<V> values, V value, @NotNull Comparator<V> comparator) static StringfixFileName(String originalName) Crude attempt at replacing all illegal chars with underscores.static Stringstatic Stringstatic StringformatExceptionMessageWithCause(Throwable t, int indent) static Stringstatic Stringstatic Stringstatic StringgetDiagInfo(Object o, int maxLength) static StringgetDiagInfo(Collection<?> objects, int maxItems, int maxLengthPerObject) static Objectstatic XMLGregorianCalendargetEarliestTimeIgnoringNull(Collection<XMLGregorianCalendar> realValues) static <T> TgetFirstNonNull(T... values) static <T> TgetFirstNonNullFromList(List<T> values) static StringgetFirstNonNullString(Object... values) static Stringstatic <T> TgetRandomItem(List<T> collection) static Stringstatic <T> TgetSingleValue(Collection<T> values, T defaultValue, String contextDescription) static <T> Collection<T>getValuesFromDisplayableValues(Collection<? extends DisplayableValue<T>> disps) static StringgetValueWithClass(Object object) static <T> booleanhasDuplicates(Collection<T> collection) Returns true if the collection contains at least one pair of equals elements.static booleanhasNoValue(Collection<?> collection) static byte[]hexToBytes(String hex) static StringhexToUtf8String(String hex) instancesOf(Class<E> cls) static booleanisAllNull(Collection<?> collection) static booleanisBetween(XMLGregorianCalendar date, XMLGregorianCalendar start, XMLGregorianCalendar end) static booleanisCollectionOf(Object object, @NotNull Class<?> memberClass) static booleanisNoValue(Collection<?> collection) static booleanisSingleNull(Object[] values) static <T> List<T>join(Collection<T> a, Collection<T> b) static <T> Tstatic Integerstatic Longstatic Integerstatic Longstatic <V> @NotNull Collection<V>nonNullValues(@NotNull Collection<V> values) static booleannullableCollectionsEqual(Collection<?> c1, Collection<?> c2) static Stringstatic doublestatic intstatic longstatic BigDecimalor0(BigDecimal value) static <K,V> Map<K, V> paramsToMap(Object[] params) static Stringstatic StringreadZipFile(File file, Charset charset) static <T,E extends Throwable>
TrequireNonNull(T value, MiscUtil.ExceptionSupplier<E> exceptionSupplier) static <T> TrequireNonNull(T value, Supplier<String> messageSupplier) static <T> TrunChecked(CheckedFunction<Producer<T>, T> function, CheckedProducer<T> checkedProducer) static voidschemaCheck(boolean condition, String template, Object... arguments) static <T> List<T>singletonOrEmptyList(T value) static <T> Set<T>singletonOrEmptySet(T value) static voidsleepCatchingInterruptedException(long delay) Sleeps for specified time.static voidsleepNonInterruptibly(long delay) Sleeps for specified time.static voidsleepWatchfully(long until, long increment, Supplier<Boolean> canRunSupplier) Sleeps watching "can run" flag.splitLines(String string) static booleanstartsWith(List<?> wholeList, List<?> subList) static voidstateCheck(boolean condition, String template, Object... arguments) static <T> TstateNonNull(T value, String template, Object... arguments) static <T> TstateNonNull(T value, Supplier<String> messageSupplier) static <T> @NotNull Stream<T>streamOf(Collection<T> collection) static StringstripHtmlMarkup(String htmlString) static StringtakeThreadDump(@Nullable Thread thread) Thanks for this code go to https://crunchify.com/how-to-generate-java-thread-dump-programmatically/static <T extends Throwable>
voidthrowAsSame(Throwable original, String message) Re-throws the original exception wrapped in the same class (e.g.static <T extends Throwable>
voidthrowException(Throwable exception) static voidstatic Integerstatic Longstatic Stringstatic URLtoUrlUnchecked(URI uri) static @Nullable StringtrimString(@Nullable String value, int size) static <T> @NotNull Collection<T>union(Collection<T>... sets) static <T> Collection<? extends T>unionExtends(Collection<? extends T>... sets) static <T> booleanunorderedArrayEquals(T[] a, T[] b) static <T> booleanunorderedArrayEquals(T[] a, T[] b, EqualsChecker<T> equalsChecker) Only zero vs non-zero value of comparator is important.static <T> booleanunorderedCollectionEquals(Collection<? extends T> a, Collection<? extends T> b) static <A,B> boolean unorderedCollectionEquals(Collection<A> a, Collection<B> b, HeteroEqualsChecker<A, B> comparator) Only zero vs non-zero value of comparator is important.static <T> booleanunorderedCollectionEqualsWithComparator(Collection<T> a, Collection<T> b, Comparator<T> comparator) Only zero vs non-zero value of comparator is important.static <T> intunorderedCollectionHashcode(Collection<T> collection, Predicate<T> filter) static <T> voidstatic <T> voidstatic voidwriteZipFile(File file, String entryName, String content, Charset charset)
-
Constructor Details
-
MiscUtil
public MiscUtil()
-
-
Method Details
-
union
-
unionExtends
@SafeVarargs public static <T> Collection<? extends T> unionExtends(Collection<? extends T>... sets) -
unorderedCollectionEquals
public static <T> boolean unorderedCollectionEquals(Collection<? extends T> a, Collection<? extends T> b) -
unorderedCollectionEqualsWithComparator
public static <T> boolean unorderedCollectionEqualsWithComparator(Collection<T> a, Collection<T> b, Comparator<T> comparator) Only zero vs non-zero value of comparator is important. Prefer otherunorderedCollectionEqualswhenever possible. If you are provided with comparator for good reason, you may use this. If you create comparator for this method, you probably should createEqualsCheckerinstead. -
unorderedCollectionEquals
public static <A,B> boolean unorderedCollectionEquals(Collection<A> a, Collection<B> b, HeteroEqualsChecker<A, B> comparator) Only zero vs non-zero value of comparator is important. -
unorderedArrayEquals
public static <T> boolean unorderedArrayEquals(T[] a, T[] b) -
unorderedArrayEquals
Only zero vs non-zero value of comparator is important. -
unorderedCollectionHashcode
-
readFile
- Throws:
IOException
-
copyFile
- Throws:
IOException
-
copyDirectory
Copy a directory and its contents.- Parameters:
src- The name of the directory to copy.dst- The name of the destination directory.- Throws:
IOException- If the directory could not be copied.
-
createCollection
-
and
n-ary and that ignores null values. -
equals
-
asXMLGregorianCalendar
@Nullable public static @Nullable XMLGregorianCalendar asXMLGregorianCalendar(@Nullable @Nullable Date date) Converts a java.util.Date into an instance of XMLGregorianCalendar- Parameters:
date- Instance of java.util.Date or a null reference- Returns:
- XMLGregorianCalendar instance whose value is based upon the value in the date parameter. If the date parameter is null then this method will simply return null.
-
asXMLGregorianCalendar
@Nullable public static @Nullable XMLGregorianCalendar asXMLGregorianCalendar(@Nullable @Nullable Long timeInMillis) Returns null for null input, but also for value of 0L. -
asXMLGregorianCalendar
@Nullable public static @Nullable XMLGregorianCalendar asXMLGregorianCalendar(@Nullable @Nullable Instant instant) -
asInstant
-
asInstant
-
asDate
Converts an XMLGregorianCalendar to an instance of java.util.Date- Parameters:
xgc- Instance of XMLGregorianCalendar or a null reference- Returns:
- java.util.Date instance whose value is based upon the value in the xgc parameter. If the xgc parameter is null then this method will simply return null.
-
asMillis
-
asDate
-
carthesian
public static <T> void carthesian(List<? extends Collection<T>> valuesForDimensions, Processor<List<T>> tupleProcessor) We have n dimensions (D1...Dn), each containing a number of values.This method sequentially creates all n-tuples of these values (one value from each dimension) and invokes tupleProcessor on them.
-
concat
-
isAllNull
-
getValueWithClass
-
getDiagInfoLazy
-
getDiagInfo
@Experimental public static String getDiagInfo(Collection<?> objects, int maxItems, int maxLengthPerObject) -
getDiagInfo
-
getDiagInfo
-
getClass
-
isNoValue
-
hasNoValue
-
cloneMap
Shallow clone -
toString
-
splitLines
-
isBetween
public static boolean isBetween(XMLGregorianCalendar date, XMLGregorianCalendar start, XMLGregorianCalendar end) -
contains
public static <T> boolean contains(T element, T[] array) -
stripHtmlMarkup
-
getValuesFromDisplayableValues
public static <T> Collection<T> getValuesFromDisplayableValues(Collection<? extends DisplayableValue<T>> disps) -
bytesToHex
@NotNull public static @NotNull String bytesToHex(@NotNull @org.jetbrains.annotations.NotNull byte[] bytes) -
hexToBytes
-
bytesToHexPreview
@Nullable public static @Nullable String bytesToHexPreview(@Nullable @org.jetbrains.annotations.Nullable byte[] bytes) Returns first 8 bytes from provided byte array as hexadecimal and adds length information. Returns null if null array is provided. -
bytesToHexPreview
@Nullable public static @Nullable String bytesToHexPreview(@Nullable @org.jetbrains.annotations.Nullable byte[] bytes, int previewLen) Returns a couple of bytes from provided byte array as hexadecimal and adds length information. Returns null if null array is provided.- Parameters:
previewLen- max number of bytes in the hexadecimal preview
-
hexToUtf8String
-
addAllIfNotPresent
-
addIfNotPresent
-
nullableCollectionsEqual
-
getObjectName
-
compareNullLast
-
getFirstNonNull
-
getFirstNonNullFromList
-
getFirstNonNullString
-
extractSingleton
-
extractSingleton
public static <T,E extends Throwable> T extractSingleton(Collection<T> collection, Supplier<E> exceptionSupplier) throws E - Throws:
E extends Throwable
-
extractSingletonRequired
@NotNull public static <T,E extends Throwable> T extractSingletonRequired(Collection<T> collection, Supplier<E> multiExceptionSupplier, Supplier<E> noneExceptionSupplier) throws E - Throws:
E extends Throwable
-
extractSingletonRequired
-
getSingleValue
-
isCollectionOf
-
instancesOf
-
last
-
emptyIfNull
-
emptyIfNull
-
emptyIfNull
-
emptyIfNull
-
streamOf
-
nullIfEmpty
-
hasDuplicates
Returns true if the collection contains at least one pair of equals elements. -
formatExceptionMessageWithCause
-
formatExceptionMessageWithCause
-
formatExceptionMessage
-
throwException
- Throws:
T extends Throwable
-
throwExceptionAsUnchecked
-
runChecked
public static <T> T runChecked(CheckedFunction<Producer<T>, T> function, CheckedProducer<T> checkedProducer) throws CommonException- Throws:
CommonException
-
unwrapTunnelledException
- Throws:
CommonException
-
unwrapTunnelledExceptionToRuntime
-
filter
-
filter
-
nonNullValues
@NotNull public static <V> @NotNull Collection<V> nonNullValues(@NotNull @NotNull Collection<V> values) -
toUrlUnchecked
-
join
-
takeThreadDump
Thanks for this code go to https://crunchify.com/how-to-generate-java-thread-dump-programmatically/ -
paramsToMap
-
writeZipFile
public static void writeZipFile(File file, String entryName, String content, Charset charset) throws IOException - Throws:
IOException
-
readZipFile
- Throws:
IOException
-
singletonOrEmptySet
-
singletonOrEmptyList
-
castSafely
- Throws:
SchemaException
-
determineCommonAncestor
-
throwAsSame
@Experimental public static <T extends Throwable> void throwAsSame(Throwable original, String message) throws T Re-throws the original exception wrapped in the same class (e.g. SchemaException as SchemaException) but with additional message. It is used to preserve meaning of the exception but adding some contextual information.- Throws:
T extends Throwable
-
createSame
-
getEarliestTimeIgnoringNull
public static XMLGregorianCalendar getEarliestTimeIgnoringNull(Collection<XMLGregorianCalendar> realValues) -
findWithComparator
public static <V> V findWithComparator(Collection<V> values, V value, @NotNull @NotNull Comparator<V> comparator) -
find
public static <V> V find(Collection<V> values, V value, @NotNull @NotNull EqualsChecker<V> equalsChecker) -
enumFromOrdinal
Converts integer ordinal number to enum value of the defined enum type.- Parameters:
enumType- type of enum (class object)ordinal- ordinal value- Returns:
- enum value or null if ordinal is null
- Throws:
IndexOutOfBoundsException- If the ordinal value is out of enum value range
-
enumOrdinal
Returns ordinal value from nullable enum or returnsnull. -
trimString
-
getSimpleClassName
-
requireNonNull
public static <T> T requireNonNull(T value, Supplier<String> messageSupplier) throws SchemaException - Throws:
SchemaException
-
configNonNull
public static <T> T configNonNull(T value, Supplier<String> messageSupplier) throws ConfigurationException - Throws:
ConfigurationException
-
configNonNull
public static <T> T configNonNull(T value, String template, Object... arguments) throws ConfigurationException - Throws:
ConfigurationException
-
argNonNull
-
argNonNull
-
stateNonNull
-
stateNonNull
-
isSingleNull
-
sleepWatchfully
Sleeps watching "can run" flag.InterruptedExceptionis caught (causing checking can run flag) but not propagated. -
sleepCatchingInterruptedException
public static void sleepCatchingInterruptedException(long delay) Sleeps for specified time.InterruptedExceptionis caught (causing immediate exit) but not propagated. -
sleepNonInterruptibly
public static void sleepNonInterruptibly(long delay) Sleeps for specified time.InterruptedExceptionis ignored - after we get it, we simply continue sleeping, until the whole specified time elapses. This is e.g. to simulate non-interruptible execution of a task. -
getRandomItem
-
toLong
-
toInteger
-
requireNonNull
public static <T,E extends Throwable> T requireNonNull(T value, MiscUtil.ExceptionSupplier<E> exceptionSupplier) throws E - Throws:
E extends Throwable
-
checkCollectionImmutable
-
schemaCheck
public static void schemaCheck(boolean condition, String template, Object... arguments) throws SchemaException - Throws:
SchemaException
-
configCheck
public static void configCheck(boolean condition, String template, Object... arguments) throws ConfigurationException - Throws:
ConfigurationException
-
stateCheck
-
assertCheck
-
argCheck
-
getClassWithMessage
-
asListTreatingNull
LikeArrays.asList(Object[])but if there's a single null value at input, creates an empty list. -
or0
-
or0
-
or0
-
or0
-
min
-
min
-
max
-
max
-
startsWith
-
fixFileName
Crude attempt at replacing all illegal chars with underscores. Maybe too strict. -
concat
@NotNull public static <T> @NotNull Collection<? extends T> concat(@NotNull @NotNull Collection<? extends T> collection1, @NotNull @NotNull Collection<? extends T> collection2) Returns a concatenation of two collections. (No trying to remove multiplicities.) Optimizing the operation if one of collections is empty. The return value should not be used for modifications!
-