to.etc.domui.component.meta.impl
Class DefaultJavaClassMetaModelFactory

java.lang.Object
  extended by to.etc.domui.component.meta.impl.DefaultJavaClassMetaModelFactory
All Implemented Interfaces:
IClassMetaModelFactory

public class DefaultJavaClassMetaModelFactory
extends java.lang.Object
implements IClassMetaModelFactory

A default, base implementation of a MetaModel layer. This tries to discover metadata by using base property information plus Hibernate/JPA annotation data.

Author:
Frits Jalvingh Created on Jun 16, 2008

Constructor Summary
DefaultJavaClassMetaModelFactory()
           
 
Method Summary
 int accepts(java.lang.Object theThingy)
          Must return a value > 0 when this knows how to create a metamodel for the specified thingerydoo.
 ClassMetaModel createModel(java.lang.Object theThingy)
          When accept() has returned a > 0 value, this must create an (immutable) metamodel for the thingy passed.
protected  void createPropertyInfo(DefaultClassMetaModel cmm, PropertyInfo pd, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
           
protected  void decodeAnnotation(DefaultClassMetaModel cmm, java.lang.annotation.Annotation an, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
          Decodes all DomUI annotations.
protected  void decodeAnnotationByName(DefaultClassMetaModel cmm, java.lang.annotation.Annotation an, java.lang.String name)
          Can be overridden to decode user-specific annotations.
protected  void decodeClassAnnotations(DefaultClassMetaModel cmm, java.lang.Class<?> clz, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
          Walk all known class annotations and use them to add class based metadata.
protected  void decodeDomainValues(DefaultClassMetaModel dmm, java.lang.Class<?> clz)
          If this is an enum or the class Boolean define it's domain values.
protected  void decodeJpaColumn(DefaultPropertyMetaModel<?> pmm, java.lang.annotation.Annotation an)
          Generically decode a JPA javax.persistence.Column annotation.
protected  void decodeProperties(DefaultClassMetaModel cmm, java.lang.Class<?> clz, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
          This obtains all properties from the class and initializes their models.
protected  void decodePropertyAnnotation(DefaultClassMetaModel cmm, DefaultPropertyMetaModel pmm, java.lang.annotation.Annotation an, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
           
protected  void decodePropertyAnnotationByName(DefaultClassMetaModel cmm, DefaultPropertyMetaModel<?> pmm, java.lang.annotation.Annotation an, java.lang.String name)
           
protected  void initPropertyModel(DefaultClassMetaModel cmm, PropertyInfo pd, DefaultPropertyMetaModel<?> pmm, java.util.List<SearchPropertyMetaModel> searchlist, java.util.List<SearchPropertyMetaModel> keysearchlist)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultJavaClassMetaModelFactory

public DefaultJavaClassMetaModelFactory()
Method Detail

accepts

public int accepts(@Nonnull
                   java.lang.Object theThingy)
Description copied from interface: IClassMetaModelFactory
Must return a value > 0 when this knows how to create a metamodel for the specified thingerydoo.

Specified by:
accepts in interface IClassMetaModelFactory
Returns:

createModel

@Nonnull
public ClassMetaModel createModel(@Nonnull
                                          java.lang.Object theThingy)
Description copied from interface: IClassMetaModelFactory
When accept() has returned a > 0 value, this must create an (immutable) metamodel for the thingy passed.

Specified by:
createModel in interface IClassMetaModelFactory
Returns:
See Also:
IClassMetaModelFactory.createModel(java.lang.Object)

decodeProperties

protected void decodeProperties(DefaultClassMetaModel cmm,
                                java.lang.Class<?> clz,
                                java.util.List<SearchPropertyMetaModel> searchlist,
                                java.util.List<SearchPropertyMetaModel> keysearchlist)
This obtains all properties from the class and initializes their models.

Parameters:
dmm -
clz -
keysearchlist -
searchlist -

createPropertyInfo

protected void createPropertyInfo(DefaultClassMetaModel cmm,
                                  PropertyInfo pd,
                                  java.util.List<SearchPropertyMetaModel> searchlist,
                                  java.util.List<SearchPropertyMetaModel> keysearchlist)

initPropertyModel

protected void initPropertyModel(DefaultClassMetaModel cmm,
                                 PropertyInfo pd,
                                 DefaultPropertyMetaModel<?> pmm,
                                 java.util.List<SearchPropertyMetaModel> searchlist,
                                 java.util.List<SearchPropertyMetaModel> keysearchlist)

decodePropertyAnnotation

protected void decodePropertyAnnotation(DefaultClassMetaModel cmm,
                                        DefaultPropertyMetaModel pmm,
                                        java.lang.annotation.Annotation an,
                                        java.util.List<SearchPropertyMetaModel> searchlist,
                                        java.util.List<SearchPropertyMetaModel> keysearchlist)

decodePropertyAnnotationByName

protected void decodePropertyAnnotationByName(DefaultClassMetaModel cmm,
                                              DefaultPropertyMetaModel<?> pmm,
                                              java.lang.annotation.Annotation an,
                                              java.lang.String name)

decodeJpaColumn

protected void decodeJpaColumn(DefaultPropertyMetaModel<?> pmm,
                               java.lang.annotation.Annotation an)
Generically decode a JPA javax.persistence.Column annotation.

Parameters:
pmm -
an -

decodeDomainValues

protected void decodeDomainValues(DefaultClassMetaModel dmm,
                                  java.lang.Class<?> clz)
If this is an enum or the class Boolean define it's domain values.

Parameters:
dmm -
clz -

decodeClassAnnotations

protected void decodeClassAnnotations(DefaultClassMetaModel cmm,
                                      java.lang.Class<?> clz,
                                      java.util.List<SearchPropertyMetaModel> searchlist,
                                      java.util.List<SearchPropertyMetaModel> keysearchlist)
Walk all known class annotations and use them to add class based metadata.

Parameters:
keysearchlist -
searchlist -

decodeAnnotationByName

protected void decodeAnnotationByName(@Nonnull
                                      DefaultClassMetaModel cmm,
                                      @Nonnull
                                      java.lang.annotation.Annotation an,
                                      @Nonnull
                                      java.lang.String name)
Can be overridden to decode user-specific annotations. Currently only decodes the javax.persistence.Table annotation.

Parameters:
an -
name -

decodeAnnotation

protected void decodeAnnotation(DefaultClassMetaModel cmm,
                                java.lang.annotation.Annotation an,
                                java.util.List<SearchPropertyMetaModel> searchlist,
                                java.util.List<SearchPropertyMetaModel> keysearchlist)
Decodes all DomUI annotations.

Parameters:
an -
keysearchlist -
searchlist -