Package com.evolveum.midpoint.util
Class MiscUtil
java.lang.Object
com.evolveum.midpoint.util.MiscUtil
- Author:
- semancik
- 
Nested Class SummaryNested Classes
- 
Constructor SummaryConstructors
- 
Method SummaryModifier 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- 
MiscUtilpublic MiscUtil()
 
- 
- 
Method Details- 
union
- 
unionExtends@SafeVarargs public static <T> Collection<? extends T> unionExtends(Collection<? extends T>... sets) 
- 
unorderedCollectionEqualspublic static <T> boolean unorderedCollectionEquals(Collection<? extends T> a, Collection<? extends T> b) 
- 
unorderedCollectionEqualsWithComparatorpublic 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.
- 
unorderedCollectionEqualspublic 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.
- 
unorderedArrayEqualspublic static <T> boolean unorderedArrayEquals(T[] a, T[] b) 
- 
unorderedArrayEqualsOnly zero vs non-zero value of comparator is important.
- 
unorderedCollectionHashcode
- 
readFile- Throws:
- IOException
 
- 
copyFile- Throws:
- IOException
 
- 
copyDirectoryCopy 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
- 
andn-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
- 
asDateConverts 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
- 
carthesianpublic 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
- 
cloneMapShallow clone
- 
toString
- 
splitLines
- 
isBetweenpublic static boolean isBetween(XMLGregorianCalendar date, XMLGregorianCalendar start, XMLGregorianCalendar end) 
- 
containspublic static <T> boolean contains(T element, T[] array) 
- 
stripHtmlMarkup
- 
getValuesFromDisplayableValuespublic 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
- 
extractSingletonpublic 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
- 
hasDuplicatesReturns true if the collection contains at least one pair of equals elements.
- 
formatExceptionMessageWithCause
- 
formatExceptionMessageWithCause
- 
formatExceptionMessage
- 
throwException- Throws:
- T extends Throwable
 
- 
throwExceptionAsUnchecked
- 
runCheckedpublic 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
- 
takeThreadDumpThanks for this code go to https://crunchify.com/how-to-generate-java-thread-dump-programmatically/
- 
paramsToMap
- 
writeZipFilepublic 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
- 
getEarliestTimeIgnoringNullpublic static XMLGregorianCalendar getEarliestTimeIgnoringNull(Collection<XMLGregorianCalendar> realValues) 
- 
findWithComparatorpublic static <V> V findWithComparator(Collection<V> values, V value, @NotNull @NotNull Comparator<V> comparator) 
- 
findpublic static <V> V find(Collection<V> values, V value, @NotNull @NotNull EqualsChecker<V> equalsChecker) 
- 
enumFromOrdinalConverts 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
 
- 
enumOrdinalReturns ordinal value from nullable enum or returnsnull.
- 
trimString
- 
getSimpleClassName
- 
requireNonNullpublic static <T> T requireNonNull(T value, Supplier<String> messageSupplier) throws SchemaException - Throws:
- SchemaException
 
- 
configNonNullpublic static <T> T configNonNull(T value, Supplier<String> messageSupplier) throws ConfigurationException - Throws:
- ConfigurationException
 
- 
configNonNullpublic static <T> T configNonNull(T value, String template, Object... arguments) throws ConfigurationException - Throws:
- ConfigurationException
 
- 
argNonNull
- 
argNonNull
- 
stateNonNull
- 
stateNonNull
- 
isSingleNull
- 
sleepWatchfullySleeps watching "can run" flag.InterruptedExceptionis caught (causing checking can run flag) but not propagated.
- 
sleepCatchingInterruptedExceptionpublic static void sleepCatchingInterruptedException(long delay) Sleeps for specified time.InterruptedExceptionis caught (causing immediate exit) but not propagated.
- 
sleepNonInterruptiblypublic 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
- 
requireNonNullpublic static <T,E extends Throwable> T requireNonNull(T value, MiscUtil.ExceptionSupplier<E> exceptionSupplier) throws E - Throws:
- E extends Throwable
 
- 
checkCollectionImmutable
- 
schemaCheckpublic static void schemaCheck(boolean condition, String template, Object... arguments) throws SchemaException - Throws:
- SchemaException
 
- 
configCheckpublic static void configCheck(boolean condition, String template, Object... arguments) throws ConfigurationException - Throws:
- ConfigurationException
 
- 
stateCheck
- 
assertCheck
- 
argCheck
- 
getClassWithMessage
- 
asListTreatingNullLikeArrays.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
- 
fixFileNameCrude 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!
 
-