You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/10/12 07:34:33 UTC

[isis] branch master updated (813a313 -> 1e72339)

This is an automated email from the ASF dual-hosted git repository.

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


    from 813a313  ISIS-1974: fixes to ensure new algorithm generates same metamodel as previously.
     new 6452e9a  ISIS-1974: moves a couple more facet factory processing into the post-processor.
     new 1e72339  ISIS-1974: reinstates building metamodel in parallel; adds new configuration property to enable/disable

The 2 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:
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      | 25 +++++++++++
 .../_migration-notes_1.16.0-to-1.17.0.adoc}        | 10 +++--
 .../asciidoc/migration-notes/migration-notes.adoc  |  1 +
 ...notes_1.0.1.adoc => _release-notes_1.17.0.adoc} | 18 ++------
 .../main/asciidoc/release-notes/release-notes.adoc |  9 ++++
 ...onParameterDefaultsAndChoicesPostProcessor.java | 49 ++++++++++++++++++++++
 .../metamodel/specloader/SpecificationLoader.java  | 12 +++++-
 .../dflt/ProgrammingModelFacetsJava5.java          |  7 ++--
 8 files changed, 107 insertions(+), 24 deletions(-)
 copy adocs/documentation/src/main/asciidoc/{guides/ugfun/_ugfun_core-concepts_principles_isis-itself_full-stack-but-extensible.adoc => migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc} (83%)
 copy adocs/documentation/src/main/asciidoc/release-notes/{_release-notes_1.0.1.adoc => _release-notes_1.17.0.adoc} (78%)


[isis] 01/02: ISIS-1974: moves a couple more facet factory processing into the post-processor.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6452e9a0972df7912338437bcdd9e3bafd1a5e21
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 12 08:19:03 2018 +0100

    ISIS-1974: moves a couple more facet factory processing into the post-processor.
---
 ...onParameterDefaultsAndChoicesPostProcessor.java | 49 ++++++++++++++++++++++
 .../dflt/ProgrammingModelFacetsJava5.java          |  7 ++--
 2 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
index b9e79ea..f19ec3b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
@@ -40,9 +40,14 @@ import org.apache.isis.core.metamodel.facets.collections.disabled.fromimmutable.
 import org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType;
 import org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberFactory;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.immutableannot.CopyImmutableFacetOntoMembersFactory;
+import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject;
+import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromViewModelFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnPropertyDerivedFromRecreatableObject;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
@@ -136,6 +141,7 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
             derivePropertyDefaultsFromType(property);
             derivePropertyTypicalLengthFromType(property);
             derivePropertyOrCollectionDescribedAsFromType(property);
+            derivePropertyDisabledFromViewModel(property);
             derivePropertyOrCollectionImmutableFromSpec(property);
             derivePropertyDisabledFromImmutable(property);
         }
@@ -145,6 +151,7 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
         for (final OneToManyAssociation collection : collections) {
 
             derivePropertyOrCollectionDescribedAsFromType(collection);
+            deriveCollectionDisabledFromViewModel(collection);
             derivePropertyOrCollectionImmutableFromSpec(collection);
             deriveCollectionDisabledFromImmutable(collection);
 
@@ -196,6 +203,12 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
         }
     }
 
+    static DisabledFacetAbstract.Semantics inferSemanticsFrom(final ViewModelFacet facet) {
+        return facet.isImplicitlyImmutable() ?
+                DisabledFacetAbstract.Semantics.DISABLED :
+                DisabledFacetAbstract.Semantics.ENABLED;
+    }
+
     private FacetedMethod facetedMethodFor(final ObjectMember objectMember) {
         // TODO: hacky, need to copy facet onto underlying peer, not to the action/association itself.
         final ObjectMemberAbstract objectActionImpl = (ObjectMemberAbstract) objectMember;
@@ -361,6 +374,24 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
     }
 
     /**
+     * Replaces {@link org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory}
+     * @param property
+     */
+    private void derivePropertyDisabledFromViewModel(final OneToOneAssociation property) {
+        if(property.containsDoOpFacet(DisabledFacet.class)){
+            return;
+        }
+
+        final ObjectSpecification propertySpec = property.getOnType();
+        final ViewModelFacet specFacet = propertySpec.getFacet(ViewModelFacet.class);
+        if(existsAndIsDoOp(specFacet)) {
+            final DisabledFacetAbstract.Semantics semantics = inferSemanticsFrom(specFacet);
+            FacetUtil.addFacet(new DisabledFacetOnPropertyDerivedFromRecreatableObject(facetedMethodFor(property), semantics));
+        }
+    }
+
+
+    /**
      * Replaces {@link DisabledFacetOnPropertyDerivedFromImmutableFactory}
      */
     private void derivePropertyDisabledFromImmutable(final OneToOneAssociation property) {
@@ -393,6 +424,24 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
 
 
     /**
+     * Replaces {@link DisabledFacetOnCollectionDerivedFromViewModelFacetFactory}
+     * @param collection
+     */
+    private void deriveCollectionDisabledFromViewModel(final OneToManyAssociation collection) {
+        if(collection.containsDoOpFacet(DisabledFacet.class)){
+            return;
+        }
+
+        final ObjectSpecification collectionSpec = collection.getOnType();
+        final ViewModelFacet specFacet = collectionSpec.getFacet(ViewModelFacet.class);
+        if(existsAndIsDoOp(specFacet)) {
+            final DisabledFacetAbstract.Semantics semantics = inferSemanticsFrom(specFacet);
+            FacetUtil.addFacet(new DisabledFacetOnCollectionDerivedFromRecreatableObject(facetedMethodFor(collection), semantics));
+        }
+
+    }
+
+    /**
      * Replaces {@link DisabledFacetOnCollectionDerivedFromImmutableFactory}
      */
     private void deriveCollectionDisabledFromImmutable(final OneToManyAssociation collection) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index ab64d00..574b8c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -118,8 +118,6 @@ import org.apache.isis.core.metamodel.facets.object.parented.aggregated.Aggregat
 import org.apache.isis.core.metamodel.facets.object.parseable.annotcfg.ParseableFacetAnnotationElseConfigurationFactory;
 import org.apache.isis.core.metamodel.facets.object.plural.annotation.PluralAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.plural.staticmethod.PluralFacetStaticMethodFactory;
-import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromViewModelFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
@@ -396,8 +394,9 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         addFactory(new ParameterAnnotationFacetFactory());
 
         // must come after DomainObjectAnnotationFacetFactory
-        addFactory(new DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory());
-        addFactory(new DisabledFacetOnCollectionDerivedFromViewModelFacetFactory());
+        //addFactory(new DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory()); ... moved to post-processor
+        //addFactory(new DisabledFacetOnCollectionDerivedFromViewModelFacetFactory()); ... moved to post-processor
+
         // must come after DomainObjectAnnotationFacetFactory & MixinFacetFactory
         addFactory(new NotContributedFacetDerivedFromMixinFacetFactory());
 


[isis] 02/02: ISIS-1974: reinstates building metamodel in parallel; adds new configuration property to enable/disable

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1e723393c9b3b86ff5e9d460f1f87f32b8653fce
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 12 08:34:06 2018 +0100

    ISIS-1974: reinstates building metamodel in parallel; adds new configuration property to enable/disable
---
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      | 25 ++++++++++++++++++++++
 ...adoc => _migration-notes_1.16.0-to-1.17.0.adoc} | 18 +++++-----------
 .../asciidoc/migration-notes/migration-notes.adoc  |  1 +
 .../release-notes/_release-notes_1.17.0.adoc       | 10 +++++++++
 .../main/asciidoc/release-notes/release-notes.adoc |  9 ++++++++
 .../metamodel/specloader/SpecificationLoader.java  | 12 ++++++++++-
 6 files changed, 61 insertions(+), 14 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
index f4fadc3..f0e05d0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
@@ -291,6 +291,31 @@ If the setting is changed to disabled then this may reduce application start-up
 
 
 
+[[__rgcfg_configuring-core_metamodel-introspection]]
+== MetaModel Introspection
+
+
+.Metamodel Introspection
+[cols="2a,1,3a", options="header"]
+|===
+|Property
+|Value +
+(default value)
+|Description
+
+|`isis.reflector.introspect.` +
+`parallelize`
+|`true`,`false` +
+(`true`)
+|Whether to build the metamodel in parallel (with multiple threads) or in serial (using a single thread).
+
+In general, parallelisation should result in faster bootstrap times.
+
+
+|===
+
+
+
 [[__rgcfg_configuring-core_metamodel-validation]]
 == MetaModel Validation
 
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
similarity index 52%
copy from adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
copy to adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
index 1e38b3a..70d788a 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-1.17.0.adoc
@@ -1,22 +1,14 @@
-[[migration-notes]]
-= Migration Notes
+[[_migration-notes_1.16.0-to-1.17.0]]
+= From v1.16.x to 1.17.0
 :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 ag [...]
 :_basedir: ../
 :_imagesdir: images/
 
 
 
-Consult these notes when migrating to new versions of the framework.
 
+TODO
 
+* parallelized introspection
+* new `MetaModelService#exportMetaModel(Config)`
 
-include::_migration-notes_1.15.0-to-1.16.0.adoc[leveloffset=+1]
-include::_migration-notes_1.14.0-to-1.15.0.adoc[leveloffset=+1]
-include::_migration-notes_1.13.0-to-1.14.0.adoc[leveloffset=+1]
-include::_migration-notes_1.12.0-to-1.13.0.adoc[leveloffset=+1]
-include::_migration-notes_1.11.0-to-1.12.0.adoc[leveloffset=+1]
-include::_migration-notes_1.10.0-to-1.11.0.adoc[leveloffset=+1]
-include::_migration-notes_1.9.0-to-1.10.0.adoc[leveloffset=+1]
-include::_migration-notes_1.8.0-to-1.9.0.adoc[leveloffset=+1]
-include::_migration-notes_1.7.0-to-1.8.0.adoc[leveloffset=+1]
-include::_migration-notes_1.6.0-to-1.7.0.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc b/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
index 1e38b3a..ff93b86 100644
--- a/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc
@@ -10,6 +10,7 @@ Consult these notes when migrating to new versions of the framework.
 
 
 
+include::_migration-notes_1.16.0-to-1.17.0.adoc[leveloffset=+1]
 include::_migration-notes_1.15.0-to-1.16.0.adoc[leveloffset=+1]
 include::_migration-notes_1.14.0-to-1.15.0.adoc[leveloffset=+1]
 include::_migration-notes_1.13.0-to-1.14.0.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc
new file mode 100644
index 0000000..d91e862
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.17.0.adoc
@@ -0,0 +1,10 @@
+[[_release-notes_1.17.0]]
+= 1.17.0
+: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 ag [...]
+:_basedir: ../
+:_imagesdir: images/
+:toc: right
+
+
+This release ...
+
diff --git a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
index 9766c86..e916674 100644
--- a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
@@ -21,6 +21,14 @@ This table summarises all releases of Apache Isis to date.
 | Bugs
 | JIRA relnotes
 
+| xref:release-notes.adoc#_release-notes_1.17.0[1.17.0]
+| dd-mm-yyyy
+| TODO
+|
+|
+|
+| TODO
+
 | xref:release-notes.adoc#_release-notes_1.16.2[1.16.2]
 | 05-03-2018
 | RO viewer support, performance improvement, fix of severe bug for parented checkboxes
@@ -321,6 +329,7 @@ This table summarises all releases of Apache Isis to date.
 
 
 
+include::_release-notes_1.17.0.adoc[leveloffset=+1]
 include::_release-notes_1.16.2.adoc[leveloffset=+1]
 include::_release-notes_1.16.1.adoc[leveloffset=+1]
 include::_release-notes_1.16.0.adoc[leveloffset=+1]
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 2ce4dbc..fefa1ab 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
@@ -91,6 +91,9 @@ 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;
+
     //region > constructor, fields
     private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
 
@@ -242,7 +245,14 @@ public class SpecificationLoader implements ApplicationScopedComponent {
             callables.add(callable);
         }
         ThreadPoolSupport threadPoolSupport = ThreadPoolSupport.getInstance();
-        List<Future<Object>> futures = threadPoolSupport.invokeAllSequential(callables);
+        final boolean parallelize =
+                configuration.getBoolean(INTROSPECTOR_PARALLELIZE_KEY, INTROSPECTOR_PARALLELIZE_DEFAULT);
+        List<Future<Object>> futures;
+        if(parallelize) {
+            futures = threadPoolSupport.invokeAll(callables);
+        } else {
+            futures = threadPoolSupport.invokeAllSequential(callables);
+        }
         threadPoolSupport.joinGatherFailures(futures);