[isis] 02/05: ISIS-2050: moves introspectObjectSpecId() so called directly from constructor of ObjectSpec.

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit b66a4efbd11f18babf69037e437456e4e2706d4d
Author: danhaywood 
AuthorDate: Thu Dec 13 07:27:42 2018 +0100

ISIS-2050: moves introspectObjectSpecId() so called directly from 
constructor of ObjectSpec.
---
 .../isis/core/metamodel/specloader/SpecificationLoader.java|  1 -
 .../specloader/specimpl/ObjectSpecificationAbstract.java   |  7 ---
 .../specloader/specimpl/dflt/ObjectSpecificationDefault.java   |  2 ++
 .../standalonelist/ObjectSpecificationOnStandaloneList.java| 10 +++---
 4 files changed, 5 insertions(+), 15 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index b1b3450..0dc7c06 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -511,7 +511,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
 servicesInjector, facetProcessor, 
natureOfServiceIfAny, postProcessor);
 }
 
-objectSpec.introspectObjectSpecId();
 return objectSpec;
 }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 83ed039..df5d7a6 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -251,13 +251,6 @@ public abstract class ObjectSpecificationAbstract extends 
FacetHolderImpl implem
 
 //region > Introspection
 
-public void introspectObjectSpecId() {
-doIntrospectObjectSpecId();
-}
-
-protected void doIntrospectObjectSpecId() {
-facetProcessor.processObjectSpecId(correspondingClass, this);
-}
 
 /**
  * Keeps introspecting up to the level required.
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 5fbe7bb..81c289d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -106,6 +106,8 @@ public class ObjectSpecificationDefault extends 
ObjectSpecificationAbstract impl
 
 this.isService = natureOfServiceIfAny != null;
 this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, 
facetedMethodsBuilderContext);
+
+facetProcessor.processObjectSpecId(correspondingClass, this);
 }
 
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index 95cdb96..5ed83a5 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -54,6 +54,9 @@ public class ObjectSpecificationOnStandaloneList extends 
ObjectSpecificationAbst
 final PostProcessor postProcessor) {
 super(FreeStandingList.class, NAME, servicesInjector, facetProcessor, 
postProcessor);
 this.specId = new ObjectSpecId(getCorrespondingClass().getName());
+
+FacetUtil.addFacet(
+new ObjectSpecIdFacetOnStandaloneList(specId, this));
 }
 
 //endregion
@@ -61,13 +64,6 @@ public class ObjectSpecificationOnStandaloneList extends 
ObjectSpecificationAbst
 //region > Introspection
 
 @Override
-protected void doIntrospectObjectSpecId() {
-this.specId = new ObjectSpecId(getCorrespondingClass().getName());
-FacetUtil.addFacet(
-new ObjectSpecIdFacetOnStandaloneList(specId, this));
-}
-
-@Override
 protected void introspectTypeHierarchy() {
 loadSpecOfSuperclass(Object.class);
 



[isis] 04/05: ISIS-2050:

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 5326283cde5c2c02a934ed109ff890bcba233ef4
Author: danhaywood 
AuthorDate: Thu Dec 13 23:27:03 2018 +

ISIS-2050:

- 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
---
 .../java/org/apache/isis/applib/AppManifest.java   | 20 +
 .../commons/config/IsisConfigurationDefault.java   |  6 +-
 .../metamodel/specloader/SpecificationLoader.java  | 53 +++-
 .../specimpl/ObjectSpecificationAbstract.java  | 98 +-
 .../specimpl/dflt/ObjectSpecificationDefault.java  | 33 +---
 .../runner/opts/OptionHandlerInitParameters.java   |  4 +-
 .../IsisComponentProvider.java | 10 ---
 .../wicket/viewer/IsisWicketApplication.java   | 12 +--
 .../src/main/webapp/WEB-INF/logging.properties | 10 ++-
 9 files changed, 132 insertions(+), 114 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java 
b/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java
index 1316315..8bd09bb 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AppManifest.java
@@ -37,7 +37,6 @@ import org.reflections.vfs.SystemDir;
 import org.reflections.vfs.Vfs;
 
 import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 
 /**
@@ -200,7 +199,7 @@ public interface AppManifest {
 private Set> mixinTypes;
 
 /**
- * Along with {@link #getContributingDomainServiceTypes()}, these are 
introspected eagerly.
+ * Along with {@link #getDomainServiceTypes()}, these are introspected 
eagerly.
  *
  * @return null if no appManifest is defined
  */
@@ -239,23 +238,6 @@ public interface AppManifest {
 }
 //endregion
 
-//region > contributingDomainServiceTypes
-private Set> contributingDomainServiceTypes;
-/**
- * A subset of {@link #getDomainServiceTypes()}, whose nature is either
- * {@link 
org.apache.isis.applib.annotation.NatureOfService#VIEW_CONTRIBUTIONS_ONLY} or
- * {@link NatureOfService#VIEW}.
- *
- * Along with {@link #getMixinTypes()}, these are introspected eagerly.
- */
-public Set> getContributingDomainServiceTypes() {
-return contributingDomainServiceTypes;
-}
-public void setContributingDomainServiceTypes(final Set> 
contributingDomainServiceTypes) {
-this.contributingDomainServiceTypes = 
contributingDomainServiceTypes;
-}
-//endregion
-
 //region > urlTypes
 public List getUrlTypes() {
 final List urlTypes = Lists.newArrayList();
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
index acd2d76..9235c23 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationDefault.java
@@ -161,10 +161,10 @@ public class IsisConfigurationDefault implements 
ConfigurationServiceInternal {
 if (properties.containsKey(key)) {
 switch (policy) {
 case IGNORE:
-LOG.info("ignoring {}={} as value already set (with {})", key, 
value, properties.get(key));
+LOG.debug("ignoring {}={} as value already set (with {})", 
key, value, properties.get(key));
 break;
 case OVERWRITE:
-LOG.info("overwriting {}={} (previous value was {})", key, 
value, properties.get(key));
+LOG.debug("overwriting {}={} (previous value was {})", key, 
value, properties.get(key));
 properties.put(key, value);
 break;
 case EXCEPTION:
@@ -172,7 +172,7 @@ public class IsisConfigurationDefault implements 
ConfigurationServiceInternal {
 "Configuration already has a key {}, value of {}%s, 
value of %s", key, properties.get(key)));
 }
 } else {
-LOG.info("adding {} = {}", key , safe(key, value));
+LOG.debug("adding {} = {}", key , safe(key, value));
 

[isis] branch ISIS-2050 updated (aae73f3 -> 3c24239)

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git.


from aae73f3  ISIS-2050: passes PostProcessor into 
ObjectSpecificationAbstract's constructor
 new fc453c2  ISIS-2050: postProcessor now called by ObjectSpecAbstract 
after fully introspected, rather than by SpecificationLoader
 new b66a4ef  ISIS-2050: moves introspectObjectSpecId() so called directly 
from constructor of ObjectSpec.
 new 37964d8  ISIS-2050: introduces config property to enable/disable full 
introspection of metamodel
 new 5326283  ISIS-2050:
 new 3c24239  ISIS-2050: adds ValueFacet for Joda LocalTime

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/isis/applib/AppManifest.java   |  20 +---
 .../isis/core/commons/config/ConfigProperty.java   |   5 +
 .../commons/config/ConfigPropertyAbstract.java |  11 ++
 .../core/commons/config/ConfigPropertyBoolean.java |  10 ++
 .../commons/config/IsisConfigurationDefault.java   |   6 +-
 .../ValueFacetSimple.java} |  25 +++--
 .../JodaLocalTimeValueFacetSimpleFactory.java} |  16 +--
 .../metamodel/MetaModelServiceDefault.java |   6 +-
 .../metamodel/specloader/SpecificationLoader.java  | 123 +++--
 .../specimpl/ObjectSpecificationAbstract.java  | 114 ++-
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  31 +-
 .../ObjectSpecificationOnStandaloneList.java   |  10 +-
 .../dflt/ProgrammingModelFacetsJava5.java  |   2 +
 .../runner/opts/OptionHandlerInitParameters.java   |   4 +-
 .../system/session/IsisSessionFactoryBuilder.java  |   2 -
 .../IsisComponentProvider.java |  10 --
 .../wicket/viewer/IsisWicketApplication.java   |  12 +-
 .../src/main/webapp/WEB-INF/logging.properties |  10 +-
 18 files changed, 231 insertions(+), 186 deletions(-)
 create mode 100644 
core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigProperty.java
 create mode 100644 
core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyAbstract.java
 create mode 100644 
core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyBoolean.java
 copy 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/{title/TitleFacetAbstract.java
 => value/ValueFacetSimple.java} (66%)
 copy 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/{datejodalocal/JodaLocalDateValueFacetUsingSemanticsProviderFactory.java
 => timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java} (71%)



[isis] 05/05: ISIS-2050: adds ValueFacet for Joda LocalTime

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 3c242398f1cf78f221e223ee816f7faabe23f0a4
Author: danhaywood 
AuthorDate: Thu Dec 13 23:27:46 2018 +

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...
---
 .../facets/object/value/ValueFacetSimple.java  | 50 ++
 .../JodaLocalTimeValueFacetSimpleFactory.java  | 47 
 .../dflt/ProgrammingModelFacetsJava5.java  |  2 +
 3 files changed, 99 insertions(+)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
new file mode 100644
index 000..5b50363
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
@@ -0,0 +1,50 @@
+/*
+ *  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.
+ */
+
+package org.apache.isis.core.metamodel.facets.object.value;
+
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public class ValueFacetSimple extends FacetAbstract implements ValueFacet {
+
+public static Class type() {
+return ValueFacet.class;
+}
+
+public ValueFacetSimple(final FacetHolder holder) {
+super(type(), holder, Derivation.NOT_DERIVED);
+}
+
+@Override
+public Class[] facetTypes() {
+return new Class[]{ValueFacet.class};
+}
+
+@Override
+public  T getFacet(final Class facet) {
+return (T)this;
+}
+
+@Override
+public boolean containsFacetTypeOf(final Class facetType) 
{
+return facetType == ValueFacet.class;
+}
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java
new file mode 100644
index 000..31ce6e3
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java
@@ -0,0 +1,47 @@
+/*
+ *  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.
+ */
+
+package org.apache.isis.core.metamodel.facets.value.timejodalocal;
+
+import org.joda.time.LocalDate;
+import org.joda.time.LocalTime;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facets.object.value.ValueFacetSimple;
+import 
org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+
+public class JodaLocalTimeValueFacetSimpleFactory extends 
ValueFacetUsingSemanticsProviderFactory {
+
+public JodaLocalTimeValueFacetSimpleFactory() {
+super();
+}
+
+@Override
+public void process(final ProcessClassContext processClassContext) {
+final Class type = processClassContext.getCls();
+final FacetHolder holder = processClassC

[isis] 01/05: ISIS-2050: postProcessor now called by ObjectSpecAbstract after fully introspected, rather than by SpecificationLoader

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fc453c29b9d94f290df03af6693e9283777cbfc7
Author: danhaywood 
AuthorDate: Thu Dec 13 07:22:02 2018 +0100

ISIS-2050: postProcessor now called by ObjectSpecAbstract after fully 
introspected, rather than by SpecificationLoader
---
 .../services/metamodel/MetaModelServiceDefault.java   |  6 +-
 .../core/metamodel/specloader/SpecificationLoader.java| 15 ---
 .../specloader/specimpl/ObjectSpecificationAbstract.java  |  9 -
 .../specimpl/dflt/ObjectSpecificationDefault.java |  6 ++
 .../runtime/system/session/IsisSessionFactoryBuilder.java |  2 --
 5 files changed, 11 insertions(+), 27 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 4148a45..609b119 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -101,12 +101,8 @@ public class MetaModelServiceDefault implements 
MetaModelService6 {
 public void rebuild(final Class domainType) {
 specificationLookup.invalidateCache(domainType);
 gridService.remove(domainType);
-final ObjectSpecification objectSpecification = 
specificationLookup.loadSpecification(domainType,
+specificationLookup.loadSpecification(domainType,
 IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
-// ensure the spec is fully rebuilt
-objectSpecification.getObjectActions(Contributed.INCLUDED);
-objectSpecification.getAssociations(Contributed.INCLUDED);
-specificationLookup.postProcess(objectSpecification);
 }
 
 // //
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index b2a805e..b1b3450 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -531,21 +531,6 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
 }
 
 
-@Programmatic
-public void postProcess() {
-
-final Collection specs = allSpecifications();
-for (final ObjectSpecification spec : specs) {
-postProcess(spec);
-}
-
-}
-
-@Programmatic
-public void postProcess(final ObjectSpecification spec) {
-postProcessor.postProcess(spec);
-}
-
 //endregion
 
 //region > allSpecifications
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 1c7c361..83ed039 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -247,13 +247,9 @@ public abstract class ObjectSpecificationAbstract extends 
FacetHolderImpl implem
 return fullName;
 }
 
-protected boolean isNotIntrospected() {
-return !(introspectionState == 
IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
-}
-
 //endregion
 
-//region > Introspection (part 1)
+//region > Introspection
 
 public void introspectObjectSpecId() {
 doIntrospectObjectSpecId();
@@ -398,6 +394,9 @@ public abstract class ObjectSpecificationAbstract extends 
FacetHolderImpl implem
 }
 }
 
+protected void postProcess() {
+postProcessor.postProcess(this);
+}
 //endregion
 
 //region > Title, Icon
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 871fd73..5fbe7bb 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -176,6 +176,12 @@ public class ObjectSpecificationDefault extends 
ObjectSpecificationAbstract impl
 final List actions = createActions(metadataProperties);
 sortCacheA

[isis] 03/05: ISIS-2050: introduces config property to enable/disable full introspection of metamodel

2018-12-13 Thread danhaywood
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2050
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 37964d814bdf2ceb05bf2af1a1302f95302e2bff
Author: danhaywood 
AuthorDate: Thu Dec 13 07:53:32 2018 +0100

ISIS-2050: introduces config property to enable/disable full introspection 
of metamodel

If disabled, then metamodel validation is skipped
---
 .../isis/core/commons/config/ConfigProperty.java   |  5 ++
 .../commons/config/ConfigPropertyAbstract.java | 11 
 .../core/commons/config/ConfigPropertyBoolean.java | 10 
 .../metamodel/specloader/SpecificationLoader.java  | 62 ++
 4 files changed, 66 insertions(+), 22 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigProperty.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigProperty.java
new file mode 100644
index 000..bfd44a7
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigProperty.java
@@ -0,0 +1,5 @@
+package org.apache.isis.core.commons.config;
+
+public interface ConfigProperty {
+T from(final IsisConfiguration configuration);
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyAbstract.java
new file mode 100644
index 000..40d9487
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyAbstract.java
@@ -0,0 +1,11 @@
+package org.apache.isis.core.commons.config;
+
+public abstract class ConfigPropertyAbstract implements ConfigProperty {
+final String key;
+final boolean defaultValue;
+public ConfigPropertyAbstract(final String key, final boolean 
defaultValue) {
+this.key = key;
+this.defaultValue = defaultValue;
+}
+public abstract T from(final IsisConfiguration configuration);
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyBoolean.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyBoolean.java
new file mode 100644
index 000..044fa35
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/ConfigPropertyBoolean.java
@@ -0,0 +1,10 @@
+package org.apache.isis.core.commons.config;
+
+public class ConfigPropertyBoolean extends ConfigPropertyAbstract {
+public ConfigPropertyBoolean(final String key, final boolean defaultValue) 
{
+super(key, defaultValue);
+}
+public Boolean from(final IsisConfiguration configuration) {
+return configuration.getBoolean(key, defaultValue);
+}
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 0dc7c06..628370d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
+import org.apache.isis.core.commons.config.ConfigPropertyBoolean;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
@@ -90,9 +91,12 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
 
 private final static Logger LOG = 
LoggerFactory.getLogger(SpecificationLoader.class);
 
-public static final String INTROSPECTOR_PARALLELIZE_KEY = 
"isis.reflector.introspector.parallelize";
-//public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = true;
-public static final boolean INTROSPECTOR_PARALLELIZE_DEFAULT = false;
+public static final ConfigPropertyBoolean CONFIG_PROPERTY_PARALLELIZE =
+new 
ConfigPropertyBoolean("isis.reflector.introspector.parallelize", true);
+
+public static final ConfigPropertyBoolean 
CONFIG_PROPERTY_FULL_INTROSPECTION =
+new 
ConfigPropertyBoolean("isis.reflector.introspector.fullIntrospection", true);
+
 
 //region > constructor, fields
 private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
@@ -201,9 +205,28 @@ public class SpecificationLoader implements 
ApplicationScopedComponent {
 specificationsFromRegistry, IntrospectionState.NOT_INTROSPECTED
 );
 
+cache.init();
+
 final Collection cachedSpecifications = 
allCachedSpecifications();
 
-// for debugging only
+