mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Support multiple api's within a q instance. For science!
This commit is contained in:
@ -22,6 +22,9 @@
|
||||
package com.kingsrook.qqq.backend.core.utils;
|
||||
|
||||
|
||||
import com.kingsrook.qqq.backend.core.utils.lambdas.UnsafeSupplier;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@ -48,4 +51,49 @@ public class ObjectUtils
|
||||
|
||||
throw (new NullPointerException("all null objects"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Like Objects.requireNonNullElse, only use an (unsafe) supplier as the first
|
||||
** arg, and only if it throws, return the 2nd arg
|
||||
*******************************************************************************/
|
||||
public static <T> T tryElse(UnsafeSupplier<T, ?> supplier, T defaultIfThrew)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (supplier.get());
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
return (defaultIfThrew);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Like Objects.requireNonNullElse, only use an (unsafe) supplier as the first
|
||||
** arg, and if it throws or returns null, then return the 2nd arg
|
||||
*******************************************************************************/
|
||||
public static <T> T tryAndRequireNonNullElse(UnsafeSupplier<T, ?> supplier, T defaultIfThrew)
|
||||
{
|
||||
try
|
||||
{
|
||||
T t = supplier.get();
|
||||
if(t != null)
|
||||
{
|
||||
return (t);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
//////////
|
||||
// noop //
|
||||
//////////
|
||||
}
|
||||
|
||||
return (defaultIfThrew);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.utils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -36,8 +37,9 @@ class ObjectUtilsTest
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings({ "DataFlowIssue", "ConfusingArgumentToVarargsMethod" })
|
||||
@Test
|
||||
void test()
|
||||
void testRequireNonNullElse()
|
||||
{
|
||||
assertThatThrownBy(() -> ObjectUtils.requireNonNullElse(null)).isInstanceOf(NullPointerException.class);
|
||||
assertThatThrownBy(() -> ObjectUtils.requireNonNullElse(null, null)).isInstanceOf(NullPointerException.class);
|
||||
@ -47,4 +49,34 @@ class ObjectUtilsTest
|
||||
assertEquals("c", ObjectUtils.requireNonNullElse(null, null, "c"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings({ "StringOperationCanBeSimplified", "DataFlowIssue" })
|
||||
@Test
|
||||
void testTryElse()
|
||||
{
|
||||
String nullString = null;
|
||||
assertEquals("tried", ObjectUtils.tryElse(() -> "tried".toString(), "else"));
|
||||
assertEquals("else", ObjectUtils.tryElse(() -> nullString.toString(), "else"));
|
||||
assertNull(ObjectUtils.tryElse(() -> null, "else"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@SuppressWarnings({ "StringOperationCanBeSimplified", "DataFlowIssue" })
|
||||
@Test
|
||||
void testTryAndRequireNonNullElse()
|
||||
{
|
||||
String nullString = null;
|
||||
assertEquals("tried", ObjectUtils.tryAndRequireNonNullElse(() -> "tried".toString(), "else"));
|
||||
assertEquals("else", ObjectUtils.tryAndRequireNonNullElse(() -> nullString.toString(), "else"));
|
||||
assertEquals("else", ObjectUtils.tryAndRequireNonNullElse(() -> null, "else"));
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user