Package nl._42.beanie
Class BeanBuilder
- java.lang.Object
-
- nl._42.beanie.BeanBuilder
-
- All Implemented Interfaces:
ValueGenerator
public class BeanBuilder extends java.lang.Object implements ValueGenerator
Builds new bean instances.- Since:
- Feb 14, 2014
- Author:
- Jeroen van Schagen
-
-
Constructor Summary
Constructors Constructor Description BeanBuilder()
Construct a simpleBeanBuilder
, please note that this builder by default does not yet support conversions and persistence.BeanBuilder(BeanBuilder beanBuilder)
Construct a newBeanBuilder
cloning the settings of an existing builder.BeanBuilder(BeanConverter beanConverter, BeanSaver beanSaver)
Construct a simpleBeanBuilder
.BeanBuilder(BeanSaver beanSaver)
Construct a simpleBeanBuilder
, please note that this builder by default does not yet support conversions.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
delete(java.lang.Object bean)
Deletes the bean.void
deleteAll(java.lang.Iterable<? extends java.lang.Object> beans)
Deletes multiple beans.java.lang.Object
generate(java.lang.Class<?> beanClass)
Generate a new value of the specified type.<T> T
generateSafely(java.lang.Class<T> beanClass)
Generate a new bean, properly casted to the correct type.protected java.lang.Object
generateValue(java.lang.Class<?> beanClass, java.beans.PropertyDescriptor descriptor)
BeanGenerator
getBeanGenerator()
Retrieves the underlying bean generator.java.util.Set<PropertyReference>
getSkippedProperties()
Retrieves the skipped properties.BeanBuilder
register(java.lang.Class<?> declaringClass, java.lang.String propertyName, ValueGenerator generator)
Register a value generation strategy for a specific property reference.BeanBuilder
register(java.lang.Class<?> valueType, ValueGenerator generator)
Register a value generation strategy for a specific type.<T> BeanBuilder
register(java.lang.Class<T> valueType, java.util.function.Supplier<T> generator)
Register a value generation strategy for a specific type.BeanBuilder
register(Supportable predicate, ValueGenerator generator)
Register a value generation strategy for a specific type.BeanBuilder
registerIf(java.util.function.Predicate<java.lang.reflect.AccessibleObject> predicate, ValueGenerator generator)
Register a value generation strategy for a specific type.BeanBuilder
registerValue(java.lang.Class<?> valueType, java.lang.Object value)
Register a constant value for a specific type.BeanBuilder
registerValue(java.lang.Class<?> declaringClass, java.lang.String propertyName, java.lang.Object value)
Register a constant value for a specific property reference.<T> T
save(T bean)
Saves the bean.void
setBeanConverter(BeanConverter beanConverter)
void
setBeanSaver(BeanSaver beanSaver)
BeanBuilder
skip(java.lang.Class<?> declaringClass, java.lang.String propertyName)
Skip a property from being generated.<T> EditableBeanBuildCommand<T>
start(java.lang.Class<T> beanClass)
Start building a new bean.<T> EditableBeanBuildCommand<T>
start(T bean)
Start building a new bean.<I extends BeanBuildCommand<?>>
IstartAs(java.lang.Class<I> interfaceType)
Start building a new bean, using a custom builder interface.<I extends BeanBuildCommand<T>,T>
IstartAs(java.lang.Class<I> interfaceType, T bean)
Start building a new bean, using a custom builder interface.
-
-
-
Constructor Detail
-
BeanBuilder
public BeanBuilder()
Construct a simpleBeanBuilder
, please note that this builder by default does not yet support conversions and persistence.
-
BeanBuilder
public BeanBuilder(BeanSaver beanSaver)
Construct a simpleBeanBuilder
, please note that this builder by default does not yet support conversions.- Parameters:
beanSaver
- used to save constructed beans- See Also:
setBeanConverter(BeanConverter)
-
BeanBuilder
public BeanBuilder(BeanConverter beanConverter, BeanSaver beanSaver)
Construct a simpleBeanBuilder
.- Parameters:
beanConverter
- used to convert beans between typesbeanSaver
- used to save constructed beans
-
BeanBuilder
public BeanBuilder(BeanBuilder beanBuilder)
Construct a newBeanBuilder
cloning the settings of an existing builder.- Parameters:
beanBuilder
- the builder instance to clone from
-
-
Method Detail
-
start
public <T> EditableBeanBuildCommand<T> start(java.lang.Class<T> beanClass)
Start building a new bean.- Type Parameters:
T
- the bean type- Parameters:
beanClass
- the type of bean to start building- Returns:
- the bean build command
-
start
public <T> EditableBeanBuildCommand<T> start(T bean)
Start building a new bean.- Type Parameters:
T
- the bean type- Parameters:
bean
- the initial bean- Returns:
- the bean build command
-
startAs
public <I extends BeanBuildCommand<?>> I startAs(java.lang.Class<I> interfaceType)
Start building a new bean, using a custom builder interface.- Type Parameters:
I
- the interface type- Parameters:
interfaceType
- the build command interface- Returns:
- the builder instance, capable of building beans
-
startAs
public <I extends BeanBuildCommand<T>,T> I startAs(java.lang.Class<I> interfaceType, T bean)
Start building a new bean, using a custom builder interface.- Type Parameters:
I
- the interface typeT
- the bean type- Parameters:
interfaceType
- the build command interfacebean
- the template bean- Returns:
- the builder instance, capable of building beans
-
generate
public java.lang.Object generate(java.lang.Class<?> beanClass)
Generate a new value of the specified type.- Specified by:
generate
in interfaceValueGenerator
- Parameters:
beanClass
- the type of value- Returns:
- the generation value
-
generateSafely
public <T> T generateSafely(java.lang.Class<T> beanClass)
Generate a new bean, properly casted to the correct type.- Type Parameters:
T
- the bean type- Parameters:
beanClass
- the bean class- Returns:
- the generated bean
-
generateValue
protected java.lang.Object generateValue(java.lang.Class<?> beanClass, java.beans.PropertyDescriptor descriptor)
-
skip
public BeanBuilder skip(java.lang.Class<?> declaringClass, java.lang.String propertyName)
Skip a property from being generated.- Parameters:
declaringClass
- the bean that declares this propertypropertyName
- the property name- Returns:
- this instance
-
register
public BeanBuilder register(java.lang.Class<?> declaringClass, java.lang.String propertyName, ValueGenerator generator)
Register a value generation strategy for a specific property reference.- Parameters:
declaringClass
- the bean class that declares our propertypropertyName
- the name of the propertygenerator
- the generation strategy- Returns:
- this instance
-
registerValue
public BeanBuilder registerValue(java.lang.Class<?> declaringClass, java.lang.String propertyName, java.lang.Object value)
Register a constant value for a specific property reference.- Parameters:
declaringClass
- the bean class that declares our propertypropertyName
- the name of the propertyvalue
- the value to return- Returns:
- this instance
-
register
public BeanBuilder register(java.lang.Class<?> valueType, ValueGenerator generator)
Register a value generation strategy for a specific type.- Parameters:
valueType
- the type of valuegenerator
- the generation strategy- Returns:
- this instance
-
register
public <T> BeanBuilder register(java.lang.Class<T> valueType, java.util.function.Supplier<T> generator)
Register a value generation strategy for a specific type.- Parameters:
valueType
- the type of valuegenerator
- the generation strategy- Returns:
- this instance
-
register
public BeanBuilder register(Supportable predicate, ValueGenerator generator)
Register a value generation strategy for a specific type.- Parameters:
predicate
- the support predicategenerator
- the generation strategy- Returns:
- this instance
-
registerIf
public BeanBuilder registerIf(java.util.function.Predicate<java.lang.reflect.AccessibleObject> predicate, ValueGenerator generator)
Register a value generation strategy for a specific type.- Parameters:
predicate
- the support predicategenerator
- the generation strategy- Returns:
- this instance
-
registerValue
public BeanBuilder registerValue(java.lang.Class<?> valueType, java.lang.Object value)
Register a constant value for a specific type.- Parameters:
valueType
- the type of valuevalue
- the value to return- Returns:
- this instance
-
save
public <T> T save(T bean)
Saves the bean.- Type Parameters:
T
- the bean type- Parameters:
bean
- the bean to save- Returns:
- the saved bean
-
delete
public void delete(java.lang.Object bean)
Deletes the bean.- Parameters:
bean
- the bean to delete
-
deleteAll
public void deleteAll(java.lang.Iterable<? extends java.lang.Object> beans)
Deletes multiple beans.- Parameters:
beans
- the beans to delete
-
getBeanGenerator
public final BeanGenerator getBeanGenerator()
Retrieves the underlying bean generator.- Returns:
- the bean generator
-
getSkippedProperties
public java.util.Set<PropertyReference> getSkippedProperties()
Retrieves the skipped properties.- Returns:
- the skipped properties
-
setBeanSaver
public void setBeanSaver(BeanSaver beanSaver)
- Parameters:
beanSaver
- the saver to set
-
setBeanConverter
public void setBeanConverter(BeanConverter beanConverter)
- Parameters:
beanConverter
- the converter to set
-
-