Class MinimalMetaBean<T extends Bean>

  • Type Parameters:
    T - the type of the bean
    All Implemented Interfaces:
    MetaBean, TypedMetaBean<T>

    public final class MinimalMetaBean<T extends Bean>
    extends Object
    implements TypedMetaBean<T>
    A meta-bean implementation designed for use by the code generator.
    • Method Detail

      • of

        @Deprecated
        @SafeVarargs
        public static <B extends BeanMinimalMetaBean<B> of​(Class<B> beanType,
                                                             Supplier<BeanBuilder<B>> builderSupplier,
                                                             Function<B,​Object>... getters)
        Deprecated.
        Use version that takes the field names
        Obtains an instance of the meta-bean for immutable beans.

        The properties will be determined using reflection to find the PropertyDefinition annotation.

        Type Parameters:
        B - the type of the bean
        Parameters:
        beanType - the bean type, not null
        builderSupplier - the supplier of bean builders, not null
        getters - the getter functions, not null
        Returns:
        the meta-bean, not null
      • of

        @SafeVarargs
        public static <B extends BeanMinimalMetaBean<B> of​(Class<B> beanType,
                                                             String[] fieldNames,
                                                             Supplier<BeanBuilder<B>> builderSupplier,
                                                             Function<B,​Object>... getters)
        Obtains an instance of the meta-bean for immutable beans.

        The properties will be determined using reflection to find the PropertyDefinition annotation. The field names must be specified as reflection does not return fields in source code order.

        Type Parameters:
        B - the type of the bean
        Parameters:
        beanType - the bean type, not null
        fieldNames - the field names, not null
        builderSupplier - the supplier of bean builders, not null
        getters - the getter functions, not null
        Returns:
        the meta-bean, not null
      • of

        @Deprecated
        public static <B extends BeanMinimalMetaBean<B> of​(Class<B> beanType,
                                                             Supplier<BeanBuilder<B>> builderSupplier,
                                                             List<Function<B,​Object>> getters,
                                                             List<BiConsumer<B,​Object>> setters)
        Deprecated.
        Use version that takes the field names
        Obtains an instance of the meta-bean for mutable beans.

        The properties will be determined using reflection to find the PropertyDefinition annotation.

        Type Parameters:
        B - the type of the bean
        Parameters:
        beanType - the bean type, not null
        builderSupplier - the supplier of bean builders, not null
        getters - the getter functions, not null
        setters - the setter functions, not null
        Returns:
        the meta-bean, not null
      • of

        public static <B extends BeanMinimalMetaBean<B> of​(Class<B> beanType,
                                                             String[] fieldNames,
                                                             Supplier<BeanBuilder<B>> builderSupplier,
                                                             List<Function<B,​Object>> getters,
                                                             List<BiConsumer<B,​Object>> setters)
        Obtains an instance of the meta-bean for mutable beans.

        The properties will be determined using reflection to find the PropertyDefinition annotation. The field names must be specified as reflection does not return fields in source code order.

        Type Parameters:
        B - the type of the bean
        Parameters:
        beanType - the bean type, not null
        fieldNames - the field names, not null
        builderSupplier - the supplier of bean builders, not null
        getters - the getter functions, not null
        setters - the setter functions, not null
        Returns:
        the meta-bean, not null
      • withAlias

        public MinimalMetaBean<T> withAlias​(String alias,
                                            String realName)
        Adds an alias to the meta-bean.

        When using metaProperty(String), the alias will return the meta-property of the real name.

        Parameters:
        alias - the alias
        realName - the real name
        Returns:
        the new meta-bean instance
        Throws:
        IllegalArgumentException - if the realName is invalid
      • isBuildable

        public boolean isBuildable()
        Description copied from interface: MetaBean
        Checks whether this bean is buildable or not.

        A buildable bean can be constructed using MetaBean.builder(). If this method returns true then builder() must return a valid builder. If this method returns false then builder() must throw UnsupportedOperationException.

        Specified by:
        isBuildable in interface MetaBean
        Returns:
        true if this bean is buildable
      • builder

        public BeanBuilder<T> builder()
        Description copied from interface: MetaBean
        Creates a bean builder that can be used to create an instance of this bean.

        The builder is used in two main ways. The first is to allow immutable beans to be constructed. The second is to enable automated tools like serialization/deserialization.

        The builder can be thought of as a Map of MetaProperty to value. Note that the implementation is not necessarily an actual map.

        Specified by:
        builder in interface MetaBean
        Specified by:
        builder in interface TypedMetaBean<T extends Bean>
        Returns:
        the bean builder, not null
      • beanType

        public Class<T> beanType()
        Description copied from interface: MetaBean
        Get the type of the bean, represented as a Class.

        A MetaBean can be thought of as the equivalent of Class but for beans. This method allows the actual Class instance of the bean to be obtained.

        Specified by:
        beanType in interface MetaBean
        Specified by:
        beanType in interface TypedMetaBean<T extends Bean>
        Returns:
        the type of the bean, not null
      • metaProperty

        public <R> MetaProperty<R> metaProperty​(String propertyName)
        Description copied from interface: MetaBean
        Gets a meta-property by name.

        Each meta-bean manages a single bean with a known set of properties. This method returns the property with the specified name.

        The base interface throws an exception if the name is not recognised. By contrast, the DynamicMetaBean subinterface creates the property on demand.

        Specified by:
        metaProperty in interface MetaBean
        Type Parameters:
        R - the property type, optional, enabling auto-casting
        Parameters:
        propertyName - the property name to retrieve, not null
        Returns:
        the meta property, not null
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toString

        public String toString()
        Returns a string that summarises the meta-bean.
        Overrides:
        toString in class Object
        Returns:
        a summary string, not null