Package nl._42.beanie

Class BeanBuilder

java.lang.Object
nl._42.beanie.BeanBuilder
All Implemented Interfaces:
ValueGenerator

public class BeanBuilder extends Object implements ValueGenerator
Builds new bean instances.
Since:
Feb 14, 2014
Author:
Jeroen van Schagen
  • Constructor Details

    • BeanBuilder

      public BeanBuilder()
      Construct a simple BeanBuilder, please note that this builder by default does not yet support conversions and persistence.
      See Also:
    • BeanBuilder

      public BeanBuilder(BeanSaver beanSaver)
      Construct a simple BeanBuilder, please note that this builder by default does not yet support conversions.
      Parameters:
      beanSaver - used to save constructed beans
      See Also:
    • BeanBuilder

      public BeanBuilder(BeanConverter beanConverter, BeanSaver beanSaver)
      Construct a simple BeanBuilder.
      Parameters:
      beanConverter - used to convert beans between types
      beanSaver - used to save constructed beans
    • BeanBuilder

      public BeanBuilder(BeanBuilder beanBuilder)
      Construct a new BeanBuilder cloning the settings of an existing builder.
      Parameters:
      beanBuilder - the builder instance to clone from
  • Method Details

    • start

      public <T> EditableBeanBuildCommand<T> start(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(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(Class<I> interfaceType, T bean)
      Start building a new bean, using a custom builder interface.
      Type Parameters:
      I - the interface type
      T - the bean type
      Parameters:
      interfaceType - the build command interface
      bean - the template bean
      Returns:
      the builder instance, capable of building beans
    • generate

      public Object generate(Class<?> beanClass)
      Generate a new value of the specified type.
      Specified by:
      generate in interface ValueGenerator
      Parameters:
      beanClass - the type of value
      Returns:
      the generation value
    • generateSafely

      public <T> T generateSafely(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 Object generateValue(Class<?> beanClass, PropertyDescriptor descriptor)
    • skip

      public BeanBuilder skip(Class<?> declaringClass, String propertyName)
      Skip a property from being generated.
      Parameters:
      declaringClass - the bean that declares this property
      propertyName - the property name
      Returns:
      this instance
    • register

      public BeanBuilder register(Class<?> declaringClass, String propertyName, ValueGenerator generator)
      Register a value generation strategy for a specific property reference.
      Parameters:
      declaringClass - the bean class that declares our property
      propertyName - the name of the property
      generator - the generation strategy
      Returns:
      this instance
    • registerValue

      public BeanBuilder registerValue(Class<?> declaringClass, String propertyName, Object value)
      Register a constant value for a specific property reference.
      Parameters:
      declaringClass - the bean class that declares our property
      propertyName - the name of the property
      value - the value to return
      Returns:
      this instance
    • register

      public BeanBuilder register(Class<?> valueType, ValueGenerator generator)
      Register a value generation strategy for a specific type.
      Parameters:
      valueType - the type of value
      generator - the generation strategy
      Returns:
      this instance
    • register

      public <T> BeanBuilder register(Class<T> valueType, Supplier<T> generator)
      Register a value generation strategy for a specific type.
      Parameters:
      valueType - the type of value
      generator - 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 predicate
      generator - the generation strategy
      Returns:
      this instance
    • registerIf

      public BeanBuilder registerIf(Predicate<AccessibleObject> predicate, ValueGenerator generator)
      Register a value generation strategy for a specific type.
      Parameters:
      predicate - the support predicate
      generator - the generation strategy
      Returns:
      this instance
    • registerValue

      public BeanBuilder registerValue(Class<?> valueType, Object value)
      Register a constant value for a specific type.
      Parameters:
      valueType - the type of value
      value - 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(Object bean)
      Deletes the bean.
      Parameters:
      bean - the bean to delete
    • deleteAll

      public void deleteAll(Iterable<? extends 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 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