Package org.optaplanner.core.config.util
Class ConfigUtils
java.lang.Object
org.optaplanner.core.config.util.ConfigUtils
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
abbreviate
(List<String> list) static String
abbreviate
(List<String> list, int limit) static void
applyCustomProperties
(Object bean, String beanClassPropertyName, Map<String, String> customProperties, String customPropertiesPropertyName) static int
ceilDivide
(int dividend, int divisor) Divides and ceils the result without using floating point arithmetic.static Class<? extends Annotation>
extractAnnotationClass
(Member member, Class<? extends Annotation>... annotationClasses) extractCollectionGenericTypeParameterLeniently
(String parentClassConcept, Class<?> parentClass, Class<?> type, Type genericType, Class<? extends Annotation> annotationClass, String memberName) static Class<?>
extractCollectionGenericTypeParameterStrictly
(String parentClassConcept, Class<?> parentClass, Class<?> type, Type genericType, Class<? extends Annotation> annotationClass, String memberName) static <C> MemberAccessor
findPlanningIdMemberAccessor
(Class<C> clazz, MemberAccessorFactory memberAccessorFactory, DomainAccessType domainAccessType) getAllAnnotatedLineageClasses
(Class<?> bottomClass, Class<? extends Annotation> annotation) getAllMembers
(Class<?> baseClass, Class<? extends Annotation> annotationClass) getDeclaredMembers
(Class<?> baseClass) static <Config_ extends AbstractConfig<Config_>>
Config_inheritConfig
(Config_ original, Config_ inherited) static <Config_ extends AbstractConfig<Config_>>
List<Config_>inheritMergeableListConfig
(List<Config_> originalList, List<Config_> inheritedList) static <T> List<T>
inheritMergeableListProperty
(List<T> originalList, List<T> inheritedList) static <K,
T> Map<K, T> inheritMergeableMapProperty
(Map<K, T> originalMap, Map<K, T> inheritedMap) static <T> T
inheritOverwritableProperty
(T original, T inherited) static boolean
isEmptyCollection
(Collection<?> collection) static boolean
static <T> T
meldProperty
(T a, T b) A relaxed version ofmergeProperty(Object, Object)
.static <T> T
mergeProperty
(T a, T b) static <T> T
newInstance
(Object configBean, String propertyName, Class<T> clazz) Create a new instance of clazz from a config's property.static <T> T
newInstance
(Supplier<String> ownerDescriptor, String propertyName, Class<T> clazz) Create a new instance of clazz from a general source.static int
resolvePoolSize
(String propertyName, String value, String... magicValues)
-
Method Details
-
newInstance
Create a new instance of clazz from a config's property.If the instantiation fails, the simple class name of
configBean
will be used as the owner ofpropertyName
.Intended usage:
selectionFilter = ConfigUtils.newInstance( config, "filterClass", config.getFilterClass());
- Type Parameters:
T
- the new instance type- Parameters:
configBean
- the bean holding theclazz
to be instantiatedpropertyName
-configBean
's property holdingclazz
clazz
-Class
representation of the typeT
- Returns:
- new instance of clazz
-
newInstance
public static <T> T newInstance(Supplier<String> ownerDescriptor, String propertyName, Class<T> clazz) Create a new instance of clazz from a general source.If the instantiation fails, the result of
ownerDescriptor
will be used to describe the owner ofpropertyName
.- Type Parameters:
T
- the new instance type- Parameters:
ownerDescriptor
- describes the owner ofpropertyName
propertyName
- property holding theclazz
clazz
-Class
representation of the typeT
- Returns:
- new instance of clazz
-
applyCustomProperties
-
inheritConfig
public static <Config_ extends AbstractConfig<Config_>> Config_ inheritConfig(Config_ original, Config_ inherited) -
inheritMergeableListConfig
public static <Config_ extends AbstractConfig<Config_>> List<Config_> inheritMergeableListConfig(List<Config_> originalList, List<Config_> inheritedList) -
inheritOverwritableProperty
public static <T> T inheritOverwritableProperty(T original, T inherited) -
inheritMergeableListProperty
-
inheritMergeableMapProperty
-
mergeProperty
public static <T> T mergeProperty(T a, T b) -
meldProperty
public static <T> T meldProperty(T a, T b) A relaxed version ofmergeProperty(Object, Object)
. Used primarily for merging failed benchmarks, where a property remains the same over benchmark runs (for example: dataset problem size), but the property in the failed benchmark isn't initialized, therefore null. When merging, we can still use the correctly initialized property of the benchmark that didn't fail.Null-handling:
- if both properties are null, returns null
- if only one of the properties is not null, returns that property
- if both properties are not null, returns
mergeProperty(Object, Object)
- Type Parameters:
T
- the type of propertya
andb
- Parameters:
a
- propertya
b
- propertyb
- Returns:
- sometimes null
- See Also:
-
isEmptyCollection
-
ceilDivide
public static int ceilDivide(int dividend, int divisor) Divides and ceils the result without using floating point arithmetic. For floor division, seeMath.floorDiv(long, long)
.- Parameters:
dividend
- the dividenddivisor
- the divisor- Returns:
- dividend / divisor, ceiled
- Throws:
ArithmeticException
- ifdivisor == 0
-
resolvePoolSize
-
getAllAnnotatedLineageClasses
public static List<Class<?>> getAllAnnotatedLineageClasses(Class<?> bottomClass, Class<? extends Annotation> annotation) -
getDeclaredMembers
- Parameters:
baseClass
- never null- Returns:
- never null, sorted by type (fields before methods), then by
AlphabeticMemberComparator
.
-
getAllMembers
public static List<Member> getAllMembers(Class<?> baseClass, Class<? extends Annotation> annotationClass) - Parameters:
baseClass
- never nullannotationClass
- never null- Returns:
- never null, sorted by type (fields before methods), then by
AlphabeticMemberComparator
.
-
extractAnnotationClass
@SafeVarargs public static Class<? extends Annotation> extractAnnotationClass(Member member, Class<? extends Annotation>... annotationClasses) -
extractCollectionGenericTypeParameterStrictly
-
extractCollectionGenericTypeParameterLeniently
-
findPlanningIdMemberAccessor
public static <C> MemberAccessor findPlanningIdMemberAccessor(Class<C> clazz, MemberAccessorFactory memberAccessorFactory, DomainAccessType domainAccessType) -
abbreviate
-
abbreviate
-
isNativeImage
public static boolean isNativeImage()
-