Package io.github.toolfactory.jvm.util
Class ObjectProvider
- java.lang.Object
-
- io.github.toolfactory.jvm.util.ObjectProvider
-
public class ObjectProvider extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ObjectProvider.BuildingException
static interface
ObjectProvider.ExceptionHandler
static class
ObjectProvider.InitializationMarkViaExceptionHandler
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
CLASS_NAME
private java.util.List<java.lang.String>
classNameItems
private java.util.Map<java.lang.String,java.util.List<java.lang.String>>
jVMVendorToClassSuffix
private int
jVMVersion
private java.lang.String
vendor
-
Constructor Summary
Constructors Constructor Description ObjectProvider(int... versions)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ObjectProvider
get(java.util.Map<java.lang.Object,java.lang.Object> context)
static ObjectProvider.ExceptionHandler
getExceptionHandler(java.util.Map<java.lang.Object,java.lang.Object> context)
static <F> F
getObject(java.lang.Class<? super F> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
private <F> F
getObjectInternal(java.lang.Class<? super F> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
<T> T
getOrBuildObject(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
private <T> T
getOrBuildObjectInternal(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
private void
init(int... versions)
boolean
isMarkedToBeInitializedViaExceptionHandler(ObjectProvider.BuildingException exception)
<T> boolean
markToBeInitializedViaExceptionHandler(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
<T> boolean
markToBeInitializedViaExceptionHandler(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context, ObjectProvider.InitializationMarkViaExceptionHandler exception)
(package private) boolean
putClassNameOptionalItem(java.util.List<java.lang.String> classNameOptionalItems, java.lang.String value)
static void
putIfAbsent(java.util.Map<java.lang.Object,java.lang.Object> context, Supplier<ObjectProvider> objectProvider)
(package private) java.util.Collection<java.lang.String>
retrieveAllClassNameCombinations(java.util.List<java.lang.String> classNameItems, java.lang.String separator)
private <T> java.lang.Class<? super T>
retrieveClass(java.util.List<java.lang.String> classNameItems, java.util.Collection<java.lang.String> notFoundClasses, java.lang.String separator)
static void
setExceptionHandler(java.util.Map<java.lang.Object,java.lang.Object> context, ObjectProvider.ExceptionHandler exceptionHandler)
-
-
-
Field Detail
-
classNameItems
private java.util.List<java.lang.String> classNameItems
-
jVMVendorToClassSuffix
private java.util.Map<java.lang.String,java.util.List<java.lang.String>> jVMVendorToClassSuffix
-
CLASS_NAME
private static java.lang.String CLASS_NAME
-
jVMVersion
private int jVMVersion
-
vendor
private java.lang.String vendor
-
-
Method Detail
-
init
private void init(int... versions)
-
getOrBuildObject
public <T> T getOrBuildObject(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
-
putClassNameOptionalItem
boolean putClassNameOptionalItem(java.util.List<java.lang.String> classNameOptionalItems, java.lang.String value)
-
getOrBuildObjectInternal
private <T> T getOrBuildObjectInternal(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException, java.lang.SecurityException
- Throws:
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchMethodException
java.lang.SecurityException
-
retrieveClass
private <T> java.lang.Class<? super T> retrieveClass(java.util.List<java.lang.String> classNameItems, java.util.Collection<java.lang.String> notFoundClasses, java.lang.String separator) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
retrieveAllClassNameCombinations
java.util.Collection<java.lang.String> retrieveAllClassNameCombinations(java.util.List<java.lang.String> classNameItems, java.lang.String separator)
-
getObjectInternal
private <F> F getObjectInternal(java.lang.Class<? super F> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
-
getObject
public static <F> F getObject(java.lang.Class<? super F> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
-
get
public static ObjectProvider get(java.util.Map<java.lang.Object,java.lang.Object> context)
-
putIfAbsent
public static void putIfAbsent(java.util.Map<java.lang.Object,java.lang.Object> context, Supplier<ObjectProvider> objectProvider)
-
markToBeInitializedViaExceptionHandler
public <T> boolean markToBeInitializedViaExceptionHandler(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context)
-
markToBeInitializedViaExceptionHandler
public <T> boolean markToBeInitializedViaExceptionHandler(java.lang.Class<? super T> clazz, java.util.Map<java.lang.Object,java.lang.Object> context, ObjectProvider.InitializationMarkViaExceptionHandler exception)
-
isMarkedToBeInitializedViaExceptionHandler
public boolean isMarkedToBeInitializedViaExceptionHandler(ObjectProvider.BuildingException exception)
-
setExceptionHandler
public static void setExceptionHandler(java.util.Map<java.lang.Object,java.lang.Object> context, ObjectProvider.ExceptionHandler exceptionHandler)
-
getExceptionHandler
public static ObjectProvider.ExceptionHandler getExceptionHandler(java.util.Map<java.lang.Object,java.lang.Object> context)
-
-