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/02/12 17:38:05 UTC

[isis] branch maint-1.16.1 updated (cb59722 -> c2026ee)

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

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


    from cb59722  ISIS-1813: fixes CSS for action drop-down alignment
     new 655dd28  ISIS-1585: fixes for mixins, and not honouring associateWith
     new 8c440ba  ISIS-1569: fixes NPE for downloading command DTOs if xactn can't be found
     new c2026ee  ISIS-1569: suppresses possible concurrency exceptions when auditing pre-commit.

The 3 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:
 .../conmap/ContentMappingServiceForCommandDto.java |  3 ++
 ...onParameterDefaultsAndChoicesPostProcessor.java |  8 +++-
 ...arameterChoicesFacetFromParentedCollection.java | 16 ++++++-
 .../metamodel/specloader/SpecificationLoader.java  |  2 +
 .../changes/ChangedObjectsServiceInternal.java     | 52 ++++++++++++----------
 5 files changed, 56 insertions(+), 25 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 02/03: ISIS-1569: fixes NPE for downloading command DTOs if xactn can't be found

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

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

commit 8c440ba37119aade294bc8e2777b88318a479fd0
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Feb 12 17:37:04 2018 +0000

    ISIS-1569: fixes NPE for downloading command DTOs if xactn can't be found
---
 .../apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java  | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
index 00f7541..c3b055e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
@@ -71,6 +71,9 @@ public class ContentMappingServiceForCommandDto implements ContentMappingService
     }
 
     private CommandDto asProcessedDto(final CommandWithDto commandWithDto) {
+        if(commandWithDto == null) {
+            return null;
+        }
         CommandDto commandDto = commandWithDto.asDto();
 
         // global processors

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 03/03: ISIS-1569: suppresses possible concurrency exceptions when auditing pre-commit.

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

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

commit c2026ee3cbbbdf6e6a413017a8cd4440bca72c4a
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Feb 12 17:37:47 2018 +0000

    ISIS-1569: suppresses possible concurrency exceptions when auditing pre-commit.
---
 .../changes/ChangedObjectsServiceInternal.java     | 52 ++++++++++++----------
 1 file changed, 29 insertions(+), 23 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/changes/ChangedObjectsServiceInternal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/changes/ChangedObjectsServiceInternal.java
index 3611706..e704874 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/changes/ChangedObjectsServiceInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/changes/ChangedObjectsServiceInternal.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.runtime.services.changes;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.Callable;
 
 import javax.enterprise.context.RequestScoped;
 
@@ -34,6 +35,7 @@ import org.apache.isis.applib.annotation.PublishedObject;
 import org.apache.isis.applib.services.HasTransactionId;
 import org.apache.isis.applib.services.WithTransactionScope;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -226,31 +228,35 @@ public class ChangedObjectsServiceInternal implements WithTransactionScope {
     }
 
     private Set<Map.Entry<AdapterAndProperty, PreAndPostValues>> capturePostValuesAndDrain(final Map<AdapterAndProperty, PreAndPostValues> changedObjectProperties) {
-        final Map<AdapterAndProperty, PreAndPostValues> processedObjectProperties = Maps.newLinkedHashMap();
-
-        while(!changedObjectProperties.isEmpty()) {
-
-            final Set<AdapterAndProperty> keys = Sets.newLinkedHashSet(changedObjectProperties.keySet());
-            for (final AdapterAndProperty aap : keys) {
-
-                final PreAndPostValues papv = changedObjectProperties.remove(aap);
-
-                final ObjectAdapter adapter = aap.getAdapter();
-                if(adapter.isDestroyed()) {
-                    // don't touch the object!!!
-                    // JDO, for example, will complain otherwise...
-                    papv.setPost(IsisTransaction.Placeholder.DELETED);
-                } else {
-                    papv.setPost(aap.getPropertyValue());
+        return AdapterManager.ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(new Callable<Set<Map.Entry<AdapterAndProperty, PreAndPostValues>>>() {
+            @Override
+            public Set<Map.Entry<AdapterAndProperty, PreAndPostValues>> call() {
+                final Map<AdapterAndProperty, PreAndPostValues> processedObjectProperties = Maps.newLinkedHashMap();
+
+                while(!changedObjectProperties.isEmpty()) {
+
+                    final Set<AdapterAndProperty> keys = Sets.newLinkedHashSet(changedObjectProperties.keySet());
+                    for (final AdapterAndProperty aap : keys) {
+
+                        final PreAndPostValues papv = changedObjectProperties.remove(aap);
+
+                        final ObjectAdapter adapter = aap.getAdapter();
+                        if(adapter.isDestroyed()) {
+                            // don't touch the object!!!
+                            // JDO, for example, will complain otherwise...
+                            papv.setPost(IsisTransaction.Placeholder.DELETED);
+                        } else {
+                            papv.setPost(aap.getPropertyValue());
+                        }
+
+                        // if we encounter the same objectProperty again, this will simply overwrite it
+                        processedObjectProperties.put(aap, papv);
+                    }
                 }
 
-                // if we encounter the same objectProperty again, this will simply overwrite it
-                processedObjectProperties.put(aap, papv);
-            }
-        }
-
-        return Collections.unmodifiableSet(
-                Sets.filter(processedObjectProperties.entrySet(), PreAndPostValues.Predicates.SHOULD_AUDIT));
+                return Collections.unmodifiableSet(
+                        Sets.filter(processedObjectProperties.entrySet(), PreAndPostValues.Predicates.SHOULD_AUDIT));            }
+        });
     }
 
     protected boolean shouldIgnore(final ObjectAdapter adapter) {

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 01/03: ISIS-1585: fixes for mixins, and not honouring associateWith

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

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

commit 655dd28110f9e7dfbbc86767d8c97bea5f31660e
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Feb 12 17:36:38 2018 +0000

    ISIS-1585: fixes for mixins, and not honouring associateWith
    
    The logic to set up choices for action parameters was not (!) in fact filtering on the associated with collections, resulting in ChoicesFacet being installed where it shouldna been.
    And, for choices installed on a mixin action, need to disambiguate the target.
    
    Also:
    - metamodel validation error resulting in non-@Programmatic public methods in SpecificationLoader (now made @Programmatic).
---
 ...llectionParameterDefaultsAndChoicesPostProcessor.java |  8 +++++++-
 ...ctionParameterChoicesFacetFromParentedCollection.java | 16 +++++++++++++++-
 .../core/metamodel/specloader/SpecificationLoader.java   |  2 ++
 3 files changed, 24 insertions(+), 2 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 a3d1c20..75e177c 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
@@ -71,6 +71,8 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
         // for each collection, ...
         for (final OneToManyAssociation otma : oneToManyAssociations) {
 
+            final String collectionId = otma.getId();
+
             // ... see if any of its actions has a collection parameter of the same type
             //
             // eg Order#getItems() and Order#removeItems(List<OrderItem>)
@@ -80,7 +82,11 @@ public class ActionCollectionParameterDefaultsAndChoicesPostProcessor implements
             final ObjectActionParameter.Predicates.CollectionParameter whetherCollectionParamOfType =
                     new ObjectActionParameter.Predicates.CollectionParameter(specification);
 
-            for (final ObjectAction action : objectActions) {
+            final ImmutableList<ObjectAction> actions = FluentIterable.from(objectActions)
+                    .filter(ObjectAction.Predicates.associatedWith(collectionId))
+                    .toList();
+
+            for (final ObjectAction action : actions) {
 
                 final List<ObjectActionParameter> parameters = action.getParameters();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
index 3515f67..b89be1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -52,9 +53,22 @@ public class ActionParameterChoicesFacetFromParentedCollection extends ActionPar
             final ObjectAdapter target,
             final List<ObjectAdapter> arguments,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final ObjectAdapter objectAdapter = otma.get(target, interactionInitiatedBy);
+        final ObjectAdapter parentAdapter = determineParentAdapter(target);
+        final ObjectAdapter objectAdapter = otma.get(parentAdapter, interactionInitiatedBy);
         final List<ObjectAdapter> objectAdapters = CollectionFacet.Utils.convertToAdapterList(objectAdapter);
         return ObjectAdapter.Util.unwrap(objectAdapters.toArray(new ObjectAdapter[0]));
     }
 
+    /**
+     * in the case of a mixin action, the target passed to the facet is actually the mixin itself, not the mixee.
+     */
+    private ObjectAdapter determineParentAdapter(final ObjectAdapter target) {
+        final MixinFacet mixinFacet = target.getSpecification().getFacet(MixinFacet.class);
+        ObjectAdapter mixedInTarget = null;
+        if(mixinFacet != null) {
+            mixedInTarget = mixinFacet.mixedIn(target, MixinFacet.Policy.FAIL_FAST);
+        }
+        return mixedInTarget != null ? mixedInTarget : target;
+    }
+
 }
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 df881cb..ca81150 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
@@ -463,6 +463,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
         specSpi.setIntrospectionState(ObjectSpecificationAbstract.IntrospectionState.INTROSPECTED);
     }
 
+    @Programmatic
     public void postProcess() {
 
         final Collection<ObjectSpecification> specs = allSpecifications();
@@ -472,6 +473,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     }
 
+    @Programmatic
     public void postProcess(final ObjectSpecification spec) {
         postProcessor.postProcess(spec);
     }

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.