ISIS-2050: reworks order and depth of introspection. Squashed from previous commits:
ISIS-2050: uses simpler overload that defaults IntrospectionState to TYPE_INTROSPECTED.
Also introduces overload for className as well as Class<?>
ISIS-2050: only contribute to entities and view models; improves MetaModel exporter
to also dump out the facets of any "discovered" domain types.
ISIS-2050: load specs only to TYPE (not MEMBERS) everywhere; only adds described as facet (derived from type) if is do-op.
ISIS-2050: fixes for unit tests and reorder introspection slightly in order to fix lockdown
ISIS-2050: adds ValueFacet for Joda LocalTime
Uses a very simple implementation, because I suspect that the other capabilities of ValueFacet simply aren't needed anymore...
- removes contributingDomainServiceTypes from AppManifest.Registry once more ... will just eagerly introspect type and members for all domain services - fixes introspectUpTo algorithm - skip type hierarchy traversal for domain services with natureOfService=DOMAIN - improves/reduces logging - lazily introspect up to type and members whenever any of the members (properties/collections/actions) are referenced of an ObjectSpecAbstract
ISIS-2050: introduces config property to enable/disable full introspection of metamodel
If disabled, then metamodel validation is skipped
ISIS-2050: moves introspectObjectSpecId() so called directly from constructor of ObjectSpec.
ISIS-2050: postProcessor now called by ObjectSpecAbstract after fully introspected, rather than by SpecificationLoader
ISIS-2050: passes PostProcessor into ObjectSpecificationAbstract's constructor
ISIS-2050: scales back the depth of introspection when introspecting members
- only need to introspect the type for parameters and return types.
ISIS-2050: removes SpecificationLoader#state; now responsibility of each ObjectSpecification to keep track of its own introspectionState.
ISIS-2050: eagerly introspects contributing specs, lazily introspecs the remainder.
ISIS-2050: updates AppManifest.Registry to also hold all contributingDomainServiceTypes
This is so that we can eagerly build the ObjectSpecs for these types and mixins, but leave everything else to be built lazily.
ISIS-2050: when traversing type hierarchy, now only introspect super types up to the TYPE, not their MEMBERs as well.
ISIS-2050: renames two of the IntrospectionStates
ISIS-2050: pulls upTo introspectionState into a parameter for all of SpecificationLoaders methods
... so that the caller can decide the level of introspection that needs to be performed.
ISIS-2050: extends IntrospectionState with additional states for type vs member introspection; inlining methods to simplify
... with the aim of exposing the IntrospectionState upTo so can pass through and honour the phases.
Removed the guards in introspectTypeHierarchy, don't think they are needed any more since only ever called from its caller which checks the introspectionState anyway
ISIS-2050: breaks out introspectTypeHierarchyAndMembers into two.
ISIS-2050: replaces IntrospectionStrategy with the concept of introspecting "up to" a certain state.
ISIS-2050: refactors responsibilities of SpecLoader vs ObjectSpec
just the management of introspectionState on ObjectSpec
ISIS-2050: introduces ObjectSpecIdFacetFactory
and additional process(ProcessObjectSpecIdContext) for FacetProcessor