= Core MetaModel Introspection
:page-role: -toc -narrow


:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

include::../section-hooks/causeway.core.meta-model.introspector~pre.adoc[]

[cols="3a,2a,5a", options="header"]
|===
|Property
|Default
|Description
|
[[causeway.core.meta-model.introspector.lock-after-full-introspection]]
causeway.core.meta-model. +
introspector. +
lock-after-full-introspection

|  true
| If true, then no new specifications will be allowed to be loaded once introspection has been complete.

Only applies if the introspector is configured to perform full introspection up-front (either because of `IntrospectionMode#FULL` or `IntrospectionMode#LAZY++_++UNLESS++_++PRODUCTION` when in production); otherwise is ignored.


|
[[causeway.core.meta-model.introspector.mode]]
causeway.core.meta-model. +
introspector.mode

|  lazy-unless-production
| Whether all known types should be fully introspected as part of the bootstrapping, or should only be partially introspected initially.

Leaving this as lazy means that there's a chance that metamodel validation errors will not be discovered during bootstrap. That said, metamodel validation is still run incrementally for any classes introspected lazily after initial bootstrapping (unless `#isValidateIncrementally()` is disabled.


|
[[causeway.core.meta-model.introspector.parallelize]]
causeway.core.meta-model. +
introspector.parallelize

| 
| Whether to perform metamodel introspection in parallel, intended to speed up bootstrapping.

For now this is _experimental_. We recommend this is left as disabled (the default).


|
[[causeway.core.meta-model.introspector.policy]]
causeway.core.meta-model. +
introspector.policy

| 
| Policy as to how introspection should process class members and supporting methods.

Default is to only introspect public class members, while annotating these is optional.


|
[[causeway.core.meta-model.introspector.validate-incrementally]]
causeway.core.meta-model. +
introspector. +
validate-incrementally

|  true
| If true, then metamodel validation is performed after any new specification has been loaded (after the initial bootstrapping).

This does _not_ apply if the introspector is configured to perform full introspection up-front AND when the metamodel is locked after initial bootstrapping (because in that case the lock check will simply prevent any new specs from being loaded). But it will apply otherwise.

In particular, this setting _can_ still apply even if the mode is set to full, because that in itself does not preclude some code from attempting to load some previously unknown type. For example, a fixture script could attempt to invoke an action on some new type using the `WrapperFactory` - this will cause introspection of that new type to be performed.



|===

include::../section-hooks/causeway.core.meta-model.introspector~post.adoc[]
