[isis] 02/05: ISIS-2050: moves introspectObjectSpecId() so called directly from constructor of ObjectSpec.
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:
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)
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
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
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
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 +