BeanSort (enum)

Top level object classification.

API

BeanSort.java
enum BeanSort {
  VIEW_MODEL     (1)
  ENTITY     (2)
  MANAGED_BEAN_CONTRIBUTING     (3)
  MANAGED_BEAN_NOT_CONTRIBUTING     (4)
  MIXIN     (5)
  VALUE     (6)
  COLLECTION     (7)
  ABSTRACT     (8)
  PROGRAMMATIC     (9)
  VETOED     (10)
  UNKNOWN
  BeanPolicy policy()
  boolean isManagedBeanContributing()
  boolean isManagedBeanNotContributing()
  boolean isMixin()
  boolean isViewModel()
  boolean isValue()
  boolean isCollection()
  boolean isEntity()
  boolean isAbstract()
  boolean isProgrammatic()
  boolean isVetoed()
  boolean isUnknown()
  boolean isManagedBeanAny()
}
1 VIEW_MODEL

Stateful object, with a state that can be marshaled and unmarshaled.

2 ENTITY

Persistable object, associated with a persistence layer/context.

3 MANAGED_BEAN_CONTRIBUTING

Injectable object, associated with a lifecycle context (application-scoped, request-scoped, …​).

4 MANAGED_BEAN_NOT_CONTRIBUTING

Injectable object, associated with a lifecycle context (application-scoped, request-scoped, …​).

5 MIXIN

Object associated with an entity , viewmodel or domain-service to act as contributer of a single domain-action or domain-property or domain-collection .

6 VALUE

Immutable, serializable object. Values (including enums) my have object support methods, hence needs introspection.

7 COLLECTION

Container of objects.

8 ABSTRACT

A non concrete type, that is a placeholder for a concrete implementer.

9 PROGRAMMATIC

Type must NOT be added to the meta-model, eg. by means of org.apache.causeway.applib.annotation.Domain.Exclude or Programmatic . Consequently the specification-loader should skip introspection of those types.

10 VETOED

Type must not be added to the meta-model, eg. by means of javax.enterprise.inject.Vetoed or Profile . Consequently the specification-loader should skip introspection of those types. If discovered by Spring during class-path scanning, we remove the corresponding BeanDefinition .

Members

VIEW_MODEL

Stateful object, with a state that can be marshaled and unmarshaled.

Includes classes annotated with @DomainObject , when not associated with a persistence layer.

see also #ENTITY

ENTITY

Persistable object, associated with a persistence layer/context.

Includes classes annotated with @DomainObject , when associated with a persistence layer.

see also #VIEW_MODEL

MANAGED_BEAN_CONTRIBUTING

Injectable object, associated with a lifecycle context (application-scoped, request-scoped, …​).

In other words: Indicates that the class is a Spring managed bean, which IS also contributing to the UI or WEB API. Hence needs introspection.

The ServiceRegistry must be aware.

to be introspected: YES

MANAGED_BEAN_NOT_CONTRIBUTING

Injectable object, associated with a lifecycle context (application-scoped, request-scoped, …​).

In other words: Indicates that the class is a Spring managed bean, which is NOT contributing to the UI or WEB API. Hence not introspected.

The ServiceRegistry must be aware regardless.

This is also the fallback BeanSort for beans originating from Bean annotated factory methods, when the bean class itself declares no annotations.

to be introspected: NO

MIXIN

Object associated with an entity , viewmodel or domain-service to act as contributer of a single domain-action or domain-property or domain-collection .

VALUE

Immutable, serializable object. Values (including enums) my have object support methods, hence needs introspection.

COLLECTION

Container of objects.

ABSTRACT

A non concrete type, that is a placeholder for a concrete implementer.

E.g. action return types or collection element types could be interfaces or abstract types (as discovered by reflection during introspection)

PROGRAMMATIC

Type must NOT be added to the meta-model, eg. by means of org.apache.causeway.applib.annotation.Domain.Exclude or Programmatic . Consequently the specification-loader should skip introspection of those types.

In other words: Indicates that the class is some bean, which is NOT contributing to the UI or WEB API, and also NOT managed by Spring.

ServiceRegistry will NOT be aware.

FactoryService#create(Class) will nevertheless support those programmatic beans. They may have injection points that need resolving.

VETOED

Type must not be added to the meta-model, eg. by means of javax.enterprise.inject.Vetoed or Profile . Consequently the specification-loader should skip introspection of those types. If discovered by Spring during class-path scanning, we remove the corresponding BeanDefinition .

ServiceRegistry must not be aware of those types.

FactoryService#getOrCreate(Class) must fail for those types.