<commit_before>[[_rg_runtime_configuring-core]]
= Configuring Core
: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.
:_basedir: ../
:_imagesdir: images/

This section lists the core/runtime configuration properties recognized by Apache Isis.

[NOTE]
====
Configuration properties for the JDO/DataNucleus objectstore can be found in the xref:rg.adoc#_rg_runtime_configuring-datanucleus[Configuring DataNucleus] section later in this chapter, while configuration properties for the viewers can be found in the their respective chapters, xref:ug.adoc#_ug_wicket-viewer_configuration-properties[here for Wicket viewer], and xref:ug.adoc#_ug_restfulobjects-viewer_configuration-properties[here for the Restful Objects viewer].
====



.Core Configuration Properties
[cols="2a,1,3a", options="header"]
|===
|Property
|Value +
(default value)
|Description

|`isis.object.` +
`editing`
| `true`,`false` (`true`)
|Whether objects' properties and collections can be edited directly (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_editing[`@DomainObject#editing()`]); see xref:rg.adoc#_rg_runtime_configuring-core_isis-objects-editing[below] for further discussion.


|`isis.persistor.` +
`disableConcurrencyChecking`
| `true`,`false` (`false`)
| Disables concurrency checking globally.  +

Only intended for "emergency use" as a workaround while pending fix/patch to Apache Isis itself.  (Note that there is no "datanucleus" in the property).

|`isis.reflector.facet.` +
`actionInvocation.filterVisibility`
| `true`,`false` (`true`)
|Whether lists of objects returned from an action invocation (aka "standalone collections") should be filtered for visibility. +

See xref:rg.adoc#_rg_runtime_configuring-core_filterVisibility[section below] for further discussion.

|`isis.reflector.facet.` +
`collectionAccessor.filterVisibility`
| `true`,`false` (`true`)
|Whether object collections (aka "parented collections") should be filtered for visibility. +

See xref:rg.adoc#_rg_runtime_configuring-core_filterVisibility[section below] for further discussion.

|`isis.reflector.facet.` +
`cssClass.patterns`
|regex:css1,regex2:css2,...
|Comma separated list of key:value pairs, where the key is a regex matching action names (eg `delete.*`) and the value is a link:http://getbootstrap.com/css/[Bootstrap] CSS button class (eg `btn-warning) to be applied (as per `@CssClass()`) to all action members matching the regex. +

See xref:ug.adoc#_ug_how-tos_ui-hints_action-icons-and-css[UI hints] for more details.

|`isis.reflector.facet.` +
`cssClassFa.patterns`
|regex:fa-icon,regex2:fa-icon2,...
|Comma separated list of key:value pairs, where the key is a regex matching action names (eg `create.*`) and the value is a link:http://fortawesome.github.io/Font-Awesome/icons/[font-awesome] icon name (eg `fa-plus`) to be applied (as per `@CssClassFa()`) to all action members matching the regex. +

See xref:ug.adoc#_ug_how-tos_ui-hints_action-icons-and-css[UI hints] for more details.

|`isis.reflector.facet.` +
`propertyAccessor.filterVisibility`
| `true`,`false` (`true`)
|Whether a reference to an object (a link) should be filtered for visibility. +

See xref:rg.adoc#_rg_runtime_configuring-core_filterVisibility[section below] for further discussion.

|`isis.reflector.facets`
|`FQCN`
|Fully qualified class names of a custom implementation of `ProgrammingModel` interface. +

See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.

|`isis.reflector.facets.` +
`exclude`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of (existing, built-in) facet factory classes to be included to the programming model. +

See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.

|`isis.reflector.facets.` +
`include`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of (new, custom) facet factory classes to be included to the programming model. +
See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.


|`isis.reflector.` +
`layoutMetadataReaders`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of classes to be instantiated to read layout metadata, as used in for xref:rg.adoc#_rg_object-layout_dynamic[dynamic layout]s. +

See xref:ug.adoc#_ug_extending_programming-model_layout-metadata-reader[Layout Metadata Reader] for more information.



|`isis.reflector.validator`
|`FQCN`
|Custom implementation of `MetaModelValidator` (in the `org.apache.isis.core.metamodel.specloader.validator` package) +

See xref:ug.adoc#_ug_extending_programming-model_custom-validator[Custom Validator] to learn more.

|`isis.reflector.validator.` +
`allowDeprecated`
| `true`,`false` (`true`)
| Whether deprecated annotations or naming conventions are tolerated or not.  If not, then a metamodel validation error will be triggered, meaning the app won't boot (fail-fast).


|`isis.services.` +
`ServicesInstallerFromAnnotation.` +
`packagePrefix`
|fully qualified package names (CSV)
|to search for domain services (including all subpackages).

This property is IGNORED if the xref:rg.adoc#_rg_runtime_configuring-components[`isis.appManifest`] configuration property is specified, or if an xref:rg.adoc#_rg_classes_super_manpage-AppManifest[`AppManifest`] is provided programmatically.


|`isis.services`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of classes to be instantiated as domain services.  +

Each entry can be optionally prefixed by "n:" specifying the relative order on the menu (corresponds to xref:rg.adoc#_rg_annotations_manpage-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`]).

This property is IGNORED if the xref:rg.adoc#_rg_runtime_configuring-components[`isis.appManifest`] configuration property is specified, or if an xref:rg.adoc#_rg_classes_super_manpage-AppManifest[`AppManifest`] is provided programmatically.


|`isis.services.` +
`audit.objects`
| `all`, `none` (`all`)
|Whether the changed properties of objects should be automatically audited (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_auditing[`@DomainObject(auditing=Auditing.AS_CONFIGURED)`].

|`isis.services.` +
`command.actions`
| `all`, `ignoreSafe`, `none` (`all`)
|Whether actions should be automatically reified into commands (for actions annotated with xref:rg.adoc#_rg_annotations_manpage-Action_command[`@Action(command=CommandReification.AS_CONFIGURED)`].  +

`ignoreQueryOnly` is an alias for `ignoreSafe`.


|`isis.services.` +
`container.disableAutoFlush`
| `true`,`false` (`_false_`)
|Whether the `DomainObjectContainer` should automatically flush pending changes prior to querying (via `allMatches()`, `firstMatch()` and so on).

|`isis.services.` +
`container.disableAutoFlush`
| `true`,`false` (`_false_`)
|Whether the `DomainObjectContainer` should automatically flush pending changes prior to querying (via `allMatches()`, `firstMatch()` and so on).



|`isis.services.` +
`ContentNegotiation-` +
`ServiceXRoDomainType` +
.prettyPrint
| `true`,`false` (depends)
|If a domain object has been mapped to the specified JAXB `x-ro-domain-type`, then determines whether the result is pretty-printed or not. +
+
If no configuration property is available, then the defaults is determined by the xref:rg.adoc#_rg_runtime_deployment-types[deployment type]: production mode disables pretty printing, while prototype mode enables it.



| `isis.service.` +
`email.tls.enabled`
| `true`,`false` (`_true_`)
|Whether to enable TLS for the email SMTP connection (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.sender.hostname` +
| host (`_smtp.gmail.com_`)
|The hostname of the external SMTP provider (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.port` +
| port number (`_587_`)
|The port number for the SMTP service on the the external SMTP host (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)


| `isis.service.` +
`email.sender.address` +
| email address
|The email address to use for sending out email (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  *Mandatory*.  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.sender.password` +
| email password
|The corresponding password for the email address to use for sending out email (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  *Mandatory*.  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)


| `isis.services.` +
`eventbus.implementation` +
| `guava`, `axon`, FQCN (`_guava_`)
|which implementation to use by the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`] as the underlying event bus.

| `isis.services.` +
`eventbus.allowLateRegistration` +
| `true`, `false`, (`_false_`)
|whether a domain service can register with the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`] after any events have posted. +

Since this almost certainly constitutes a bug in application code, by default this is disallowed.


| `isis.services.` +
`exceprecog.logRecognizedExceptions` +
| `true`, `false`, (`_false_`)
|whether recognized exceptions should also be logged. +

Generally a recognized exception is one that is expected (for example a uniqueness constraint violated in the database) and which does not represent an error condition.  This property logs the exception anyway, useful for debugging.


| `isis.services.` +
`ExceptionRecognizerComposite-` +
`ForJdoObjectStore.disable` +
| `true`, `false`, (`_false_`)
|whether to disable the default recognizers registered by `ExceptionRecognizerCompositeForJdoObjectStore`. +

This implementation provides a default set of recognizers to convert RDBMS constraints into user-friendly messages.  In the (probably remote) chance that this functionality isn't required, they can be disabled through this flag.


|`isis.services.` +
`publish.objects`
| `all`, `none` (`all`)
|Whether changed objects should be automatically published (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_publishing[`@DomainObject(publishing=Publishing.AS_CONFIGURED)`].

|`isis.services.` +
`publish.actions`
| `all`, `ignoreSafe`, `none` (`all`)
|Whether actions should be automatically published (for actions annotated with xref:rg.adoc#_rg_annotations_manpage-Action_publishing[`@Action(publishing=Publishing.AS_CONFIGURED)`]. +

|`isis.services.` +
`translation.po.mode`
| `read`,`write`
|Whether to force the `TranslationService` into either read or write mode. +

See xref:ug.adoc#_ug_more-advanced_i18n[i18n support] to learn more about the translation service.

|`isis.viewers.` +
`paged.parented`
|positive integer (12)
|Default page size for parented collections (as owned by an object, eg `Customer#getOrders()`)

|`isis.viewers.` +
`paged.standalone`
|positive integer (25)
|Default page size for standalone collections (as returned from an action invocation)


|`isis.viewers.` +
`propertyLayout.labelPosition`
|`TOP`, `LEFT` +
(`LEFT`)
|Default for label position for all properties if not explicitly specified using xref:rg.adoc#_rg_annotations_manpage-PropertyLayout_labelPosition[`@PropertyLayout#labelPosition()`]

|===



[[_rg_runtime_configuring-core_filterVisibility]]
== Filtering visibility

The framework provides three configuration properties that all influence whether a returned object is visible to the end-user:

* `isis.reflector.facet.actionInvocation.filterVisibility` +

If an action returns a collection that includes the object, then the object will be excluded from the list when rendered.  If itreturns a single object and the user does not have access to that object, then the action will seemingly return `null`

* `isis.reflector.facet.collectionAccessor.filterVisibility` +

If a parent object has a collection references another object to which the user does not have access, then (as for actions) the object will not be rendered in the list

* `isis.reflector.facet.propertyAccessor.filterVisibility` +

If an parent object has a (scalar) reference some other object to which the user does not have access, then the reference will be rendered as empty.


By default these configuration properties are all enabled, meaning that such features as multi-tenancy (as per the (non-ASF) http://github.com/isisaddons/isis-module-security[Isis addons' security] module) are available automatically.  That is, if an entity is logically "owned" by a user, then the multi-tenancy support can be arranged to prevent some other user from viewing that object.

In order for the framework to perform this filtering of collections, be aware that the framework takes a _copy_ of the original collection, filters on the collection, and returns that filtered collection rather than the original.

There are no major side-effects from this algorithm, other than the fact that the referenced objects will (most likely) need to be resolved in order to determine if they are visible.  This could conceivably have a performance impact in some cases.

To disable the visibility filtering, set the appropriate configuration property to `false`.  For example, to disable the collection filtering globally for an application, use:

[source,ini]
----
isis.reflector.facet.collectionAccessor.filterVisibility=false
----

<commit_msg>ISIS-1044: updating docs to indicate that the filteringVisisbility is in the 1.10.0-SNAPSHOT.<commit_after>[[_rg_runtime_configuring-core]]
= Configuring Core
: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.
:_basedir: ../
:_imagesdir: images/

This section lists the core/runtime configuration properties recognized by Apache Isis.

[NOTE]
====
Configuration properties for the JDO/DataNucleus objectstore can be found in the xref:rg.adoc#_rg_runtime_configuring-datanucleus[Configuring DataNucleus] section later in this chapter, while configuration properties for the viewers can be found in the their respective chapters, xref:ug.adoc#_ug_wicket-viewer_configuration-properties[here for Wicket viewer], and xref:ug.adoc#_ug_restfulobjects-viewer_configuration-properties[here for the Restful Objects viewer].
====



.Core Configuration Properties
[cols="2a,1,3a", options="header"]
|===
|Property
|Value +
(default value)
|Description

|`isis.object.` +
`editing`
| `true`,`false` (`true`)
|Whether objects' properties and collections can be edited directly (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_editing[`@DomainObject#editing()`]); see xref:rg.adoc#_rg_runtime_configuring-core_isis-objects-editing[below] for further discussion.


|`isis.persistor.` +
`disableConcurrencyChecking`
| `true`,`false` (`false`)
| Disables concurrency checking globally.  +

Only intended for "emergency use" as a workaround while pending fix/patch to Apache Isis itself.  (Note that there is no "datanucleus" in the property).

|`isis.reflector.facet.` +
`cssClass.patterns`
|regex:css1,regex2:css2,...
|Comma separated list of key:value pairs, where the key is a regex matching action names (eg `delete.*`) and the value is a link:http://getbootstrap.com/css/[Bootstrap] CSS button class (eg `btn-warning) to be applied (as per `@CssClass()`) to all action members matching the regex. +

See xref:ug.adoc#_ug_how-tos_ui-hints_action-icons-and-css[UI hints] for more details.

|`isis.reflector.facet.` +
`cssClassFa.patterns`
|regex:fa-icon,regex2:fa-icon2,...
|Comma separated list of key:value pairs, where the key is a regex matching action names (eg `create.*`) and the value is a link:http://fortawesome.github.io/Font-Awesome/icons/[font-awesome] icon name (eg `fa-plus`) to be applied (as per `@CssClassFa()`) to all action members matching the regex. +

See xref:ug.adoc#_ug_how-tos_ui-hints_action-icons-and-css[UI hints] for more details.

|`isis.reflector.facet.` +
`filterVisibility` +
(1.10.0-SNAPSHOT)
| `true`,`false` (`true`)
|Whether objects should be filtered for visibility. +

See xref:rg.adoc#_rg_runtime_configuring-core_filterVisibility[section below] for further discussion.

|`isis.reflector.facets`
|`FQCN`
|Fully qualified class names of a custom implementation of `ProgrammingModel` interface. +

See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.

|`isis.reflector.facets.` +
`exclude`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of (existing, built-in) facet factory classes to be included to the programming model. +

See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.

|`isis.reflector.facets.` +
`include`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of (new, custom) facet factory classes to be included to the programming model. +
See xref:ug.adoc#_ug_extending_programming-model_finetuning[finetuning the programming model] for more details.


|`isis.reflector.` +
`layoutMetadataReaders`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of classes to be instantiated to read layout metadata, as used in for xref:rg.adoc#_rg_object-layout_dynamic[dynamic layout]s. +

See xref:ug.adoc#_ug_extending_programming-model_layout-metadata-reader[Layout Metadata Reader] for more information.



|`isis.reflector.validator`
|`FQCN`
|Custom implementation of `MetaModelValidator` (in the `org.apache.isis.core.metamodel.specloader.validator` package) +

See xref:ug.adoc#_ug_extending_programming-model_custom-validator[Custom Validator] to learn more.

|`isis.reflector.validator.` +
`allowDeprecated`
| `true`,`false` (`true`)
| Whether deprecated annotations or naming conventions are tolerated or not.  If not, then a metamodel validation error will be triggered, meaning the app won't boot (fail-fast).


|`isis.services.` +
`ServicesInstallerFromAnnotation.` +
`packagePrefix`
|fully qualified package names (CSV)
|to search for domain services (including all subpackages).

This property is IGNORED if the xref:rg.adoc#_rg_runtime_configuring-components[`isis.appManifest`] configuration property is specified, or if an xref:rg.adoc#_rg_classes_super_manpage-AppManifest[`AppManifest`] is provided programmatically.


|`isis.services`
|`FQCN`,`FQCN2`,...
|Fully qualified class names of classes to be instantiated as domain services.  +

Each entry can be optionally prefixed by "n:" specifying the relative order on the menu (corresponds to xref:rg.adoc#_rg_annotations_manpage-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`]).

This property is IGNORED if the xref:rg.adoc#_rg_runtime_configuring-components[`isis.appManifest`] configuration property is specified, or if an xref:rg.adoc#_rg_classes_super_manpage-AppManifest[`AppManifest`] is provided programmatically.


|`isis.services.` +
`audit.objects`
| `all`, `none` (`all`)
|Whether the changed properties of objects should be automatically audited (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_auditing[`@DomainObject(auditing=Auditing.AS_CONFIGURED)`].

|`isis.services.` +
`command.actions`
| `all`, `ignoreSafe`, `none` (`all`)
|Whether actions should be automatically reified into commands (for actions annotated with xref:rg.adoc#_rg_annotations_manpage-Action_command[`@Action(command=CommandReification.AS_CONFIGURED)`].  +

`ignoreQueryOnly` is an alias for `ignoreSafe`.


|`isis.services.` +
`container.disableAutoFlush`
| `true`,`false` (`_false_`)
|Whether the `DomainObjectContainer` should automatically flush pending changes prior to querying (via `allMatches()`, `firstMatch()` and so on).

|`isis.services.` +
`container.disableAutoFlush`
| `true`,`false` (`_false_`)
|Whether the `DomainObjectContainer` should automatically flush pending changes prior to querying (via `allMatches()`, `firstMatch()` and so on).



|`isis.services.` +
`ContentNegotiation-` +
`ServiceXRoDomainType` +
.prettyPrint
| `true`,`false` (depends)
|If a domain object has been mapped to the specified JAXB `x-ro-domain-type`, then determines whether the result is pretty-printed or not. +
+
If no configuration property is available, then the defaults is determined by the xref:rg.adoc#_rg_runtime_deployment-types[deployment type]: production mode disables pretty printing, while prototype mode enables it.



| `isis.service.` +
`email.tls.enabled`
| `true`,`false` (`_true_`)
|Whether to enable TLS for the email SMTP connection (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.sender.hostname` +
| host (`_smtp.gmail.com_`)
|The hostname of the external SMTP provider (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.port` +
| port number (`_587_`)
|The port number for the SMTP service on the the external SMTP host (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)


| `isis.service.` +
`email.sender.address` +
| email address
|The email address to use for sending out email (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  *Mandatory*.  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)

| `isis.service.` +
`email.sender.password` +
| email password
|The corresponding password for the email address to use for sending out email (used by xref:rg.adoc#_rg_services-api_manpage-EmailService[`EmailService`]).  *Mandatory*.  +

NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)


| `isis.services.` +
`eventbus.implementation` +
| `guava`, `axon`, FQCN (`_guava_`)
|which implementation to use by the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`] as the underlying event bus.

| `isis.services.` +
`eventbus.allowLateRegistration` +
| `true`, `false`, (`_false_`)
|whether a domain service can register with the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`] after any events have posted. +

Since this almost certainly constitutes a bug in application code, by default this is disallowed.


| `isis.services.` +
`exceprecog.logRecognizedExceptions` +
| `true`, `false`, (`_false_`)
|whether recognized exceptions should also be logged. +

Generally a recognized exception is one that is expected (for example a uniqueness constraint violated in the database) and which does not represent an error condition.  This property logs the exception anyway, useful for debugging.


| `isis.services.` +
`ExceptionRecognizerComposite-` +
`ForJdoObjectStore.disable` +
| `true`, `false`, (`_false_`)
|whether to disable the default recognizers registered by `ExceptionRecognizerCompositeForJdoObjectStore`. +

This implementation provides a default set of recognizers to convert RDBMS constraints into user-friendly messages.  In the (probably remote) chance that this functionality isn't required, they can be disabled through this flag.


|`isis.services.` +
`publish.objects`
| `all`, `none` (`all`)
|Whether changed objects should be automatically published (for objects annotated with xref:rg.adoc#_rg_annotations_manpage-DomainObject_publishing[`@DomainObject(publishing=Publishing.AS_CONFIGURED)`].

|`isis.services.` +
`publish.actions`
| `all`, `ignoreSafe`, `none` (`all`)
|Whether actions should be automatically published (for actions annotated with xref:rg.adoc#_rg_annotations_manpage-Action_publishing[`@Action(publishing=Publishing.AS_CONFIGURED)`]. +

|`isis.services.` +
`translation.po.mode`
| `read`,`write`
|Whether to force the `TranslationService` into either read or write mode. +

See xref:ug.adoc#_ug_more-advanced_i18n[i18n support] to learn more about the translation service.

|`isis.viewers.` +
`paged.parented`
|positive integer (12)
|Default page size for parented collections (as owned by an object, eg `Customer#getOrders()`)

|`isis.viewers.` +
`paged.standalone`
|positive integer (25)
|Default page size for standalone collections (as returned from an action invocation)


|`isis.viewers.` +
`propertyLayout.labelPosition`
|`TOP`, `LEFT` +
(`LEFT`)
|Default for label position for all properties if not explicitly specified using xref:rg.adoc#_rg_annotations_manpage-PropertyLayout_labelPosition[`@PropertyLayout#labelPosition()`]

|===



[[_rg_runtime_configuring-core_filterVisibility]]
== Filtering visibility (1.10.0-SNAPSHOT)

The framework provides the `isis.reflector.facet.filterVisibility` configuration property that influences whether a returned object is visible to the end-user:

* Action invocations: +

If an action returns a collection that includes the object, then the object will be excluded from the list when rendered. If it returns a single object and the user does not have access to that object, then the action will seemingly return `null`

* Collections: +

If a parent object has a collection references another object to which the user does not have access, then (as for actions) the object will not be rendered in the list

* Properties: +

If an parent object has a (scalar) reference some other object to which the user does not have access, then the reference will be rendered as empty.

* Choices and autoComplete lists: +

If an object is returned in a list of choices or within an auto-complete list, and the user does not have access, then it is excluded from the rendered list.

The original motivation for this feature was to transparently support such features as multi-tenancy (as per the (non-ASF) http://github.com/isisaddons/isis-module-security[Isis addons' security] module).  That is, if an entity is logically "owned" by a user, then the multi-tenancy support can be arranged to prevent some other user from viewing that object.

By default this configuration property is enabled.  To disable the visibility filtering, set the appropriate configuration property to `false`:

[source,ini]
----
isis.reflector.facet.filterVisibility=false
----

Filtering is supported by the Wicket viewer, and by the xref:rg.adoc#_rg_services-api_manpage-WrapperFactory[`WrapperFactory`] domain service (provided the wrapper's execution mode is _not_ "skip rules").  However the Restful Objects viewer does _not_ currently support filtering.

[NOTE]
====
In order for the framework to perform this filtering of collections, be aware that the framework takes a _copy_ of the original collection, filters on the collection, and returns that filtered collection rather than the original.

There are no major side-effects from this algorithm, other than the fact that the referenced objects will (most likely) need to be resolved in order to determine if they are visible.  This could conceivably have a performance impact in some cases.
====

{'fraction_non_alphanumeric': 0.10278981112458846, 'fraction_numerical': 0.002425922717033443, 'mean_word_length': 5.796043334903438, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1796005', 'n_tokens_mistral': 8847, 'n_tokens_neox': 8433, 'n_words': 2950}