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 2013/02/13 11:25:44 UTC

[1/2] git commit: ISIS-330: call choices less often when rendering

ISIS-330: call choices less often when rendering


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c4d2893e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c4d2893e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c4d2893e

Branch: refs/heads/master
Commit: c4d2893eecd5c9c82dc21223a30df4b8fd9a412c
Parents: 92a6624
Author: Dan Haywood <da...@apache.org>
Authored: Wed Feb 13 08:13:38 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Wed Feb 13 08:13:38 2013 +0000

----------------------------------------------------------------------
 .../jdo/datanucleus/DataNucleusObjectStore.java    |    4 +-
 .../viewer/wicket/model/models/ScalarModel.java    |   24 +++++++++++++-
 .../scalars/ComponentFactoryScalarAbstract.java    |    7 +++-
 .../scalars/value/ValuePanelFactory.java           |    5 ++-
 .../widgets/entitylink/EntityLinkSelect2Panel.java |    9 ++++--
 .../ValueChoicesSelect2PanelComponentFactory.java  |    2 +-
 .../spec/feature/ObjectActionParameter.java        |   11 +++++++
 .../metamodel/spec/feature/ObjectAssociation.java  |   11 ++++---
 .../specimpl/ObjectActionParameterAbstract.java    |    7 ++++
 .../specimpl/OneToOneAssociationImpl.java          |    3 +-
 10 files changed, 65 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index c1974cd..17ef5fe 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -250,7 +250,7 @@ public class DataNucleusObjectStore implements ObjectStoreSpi {
     }
 
     public void abortTransaction() {
-        rollbackJpaTransaction();
+        rollbackJdoTransaction();
     }
 
     private void beginJdoTransaction() {
@@ -268,7 +268,7 @@ public class DataNucleusObjectStore implements ObjectStoreSpi {
         }
     }
 
-    private void rollbackJpaTransaction() {
+    private void rollbackJdoTransaction() {
         final javax.jdo.Transaction transaction = getPersistenceManager().currentTransaction();
         if (transaction.isActive()) {
             transaction.rollback();

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index f950771..d6bfa22 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -150,11 +150,18 @@ public class ScalarModel extends EntityModel {
             public List<ObjectAdapter> getChoices(final ScalarModel scalarModel) {
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty();
-                final ObjectAdapter[] choices = property.getChoices(scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK));
+                final ObjectAdapter[] choices = property.getChoices(scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK));
                 return choicesAsList(choices);
             }
 
             @Override
+            public boolean hasChoices(final ScalarModel scalarModel) {
+                final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
+                final OneToOneAssociation property = propertyMemento.getProperty();
+                return property.hasChoices();
+            }
+
+            @Override
             public void resetVersion(ScalarModel scalarModel) {
                 scalarModel.parentObjectAdapterMemento.resetVersion();
             }
@@ -240,11 +247,18 @@ public class ScalarModel extends EntityModel {
             public List<ObjectAdapter> getChoices(final ScalarModel scalarModel) {
                 final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento();
                 final ObjectActionParameter actionParameter = parameterMemento.getActionParameter();
-                final ObjectAdapter[] choices = actionParameter.getChoices(scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK));
+                final ObjectAdapter[] choices = actionParameter.getChoices(scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK));
                 return choicesAsList(choices);
             }
 
             @Override
+            public boolean hasChoices(final ScalarModel scalarModel) {
+                final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento();
+                final ObjectActionParameter actionParameter = parameterMemento.getActionParameter();
+                return actionParameter.hasChoices();
+            }
+
+            @Override
             public void resetVersion(ScalarModel scalarModel) {
                 // no-op?
             }
@@ -292,6 +306,8 @@ public class ScalarModel extends EntityModel {
         public abstract void resetVersion(ScalarModel scalarModel);
 
         public abstract String getDescribedAs(ScalarModel scalarModel);
+
+        public abstract boolean hasChoices(ScalarModel scalarModel);
     }
 
     private final Kind kind;
@@ -467,4 +483,8 @@ public class ScalarModel extends EntityModel {
         return kind.getDescribedAs(this);
     }
 
+    public boolean hasChoices() {
+        return kind.hasChoices(this);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
index 7abde95..d7da4d6 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
@@ -43,8 +43,11 @@ public abstract class ComponentFactoryScalarAbstract extends ComponentFactoryAbs
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ScalarModel scalarModel = (ScalarModel) model;
-        final boolean hasNoChoices = scalarModel.getChoices().isEmpty();
-        return appliesIf(hasNoChoices && scalarModel.isScalarTypeAnyOf(scalarTypes));
+        if(!scalarModel.isScalarTypeAnyOf(scalarTypes)) {
+            return ApplicationAdvice.DOES_NOT_APPLY;
+        }
+        final boolean hasNoChoices = !scalarModel.hasChoices();
+        return appliesIf(hasNoChoices);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
index ea62153..4ddbaf7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
@@ -45,7 +45,10 @@ public class ValuePanelFactory extends ComponentFactoryScalarAbstract {
         }
         final ScalarModel scalarModel = (ScalarModel) model;
         final ValueFacet valueFacet = scalarModel.getTypeOfSpecification().getFacet(ValueFacet.class);
-        return appliesIf(scalarModel.getChoices().isEmpty() && valueFacet != null);
+        if(valueFacet == null) {
+            return ApplicationAdvice.DOES_NOT_APPLY;
+        }
+        return appliesIf(scalarModel.hasChoices());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
index b6999e8..a239df0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
@@ -282,8 +282,12 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
             @Override
             protected List<ObjectAdapterMemento> obtainMementos(String term) {
                 final ScalarModel scalarModel = (ScalarModel) entityModel;
+                final boolean hasChoices = scalarModel.hasChoices();
+                if(!hasChoices) {
+                    return null;
+                }
                 final List<ObjectAdapter> choices = scalarModel.getChoices();
-                if (choices.size() == 0) {
+                if(choices.isEmpty()) {
                     return null;
                 }
                 // take a copy otherwise is only lazily evaluated
@@ -393,8 +397,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
             return false;
         } 
         final ScalarModel scalarModel = (ScalarModel) entityModel;
-        final List<ObjectAdapter> choices = scalarModel.getChoices();
-        return choices.size() == 0 ? false : true;
+        return scalarModel.hasChoices();
     }
 
     private boolean hasAutoComplete() {

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2PanelComponentFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2PanelComponentFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2PanelComponentFactory.java
index a77ee76..c4bfce3 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2PanelComponentFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2PanelComponentFactory.java
@@ -40,7 +40,7 @@ public class ValueChoicesSelect2PanelComponentFactory extends ComponentFactoryAb
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ScalarModel scalarModel = (ScalarModel) model;
-        final boolean hasChoices = !scalarModel.getChoices().isEmpty();
+        final boolean hasChoices = scalarModel.hasChoices();
         return appliesIf(hasChoices);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
index 75e5395..5679ffe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
@@ -95,8 +95,19 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
      */
     String isValid(ObjectAdapter adapter, Object proposedValue, Localization localization);
 
+    /**
+     * Returns a list of possible references/values for this parameter, which the
+     * user can choose from.
+     */
     ObjectAdapter[] getChoices(ObjectAdapter adapter);
 
+    /**
+     * Whether there are any choices provided (eg <tt>choicesXxx</tt> supporting
+     * method) for the parameter.
+     */
+    boolean hasChoices();
+    
     ObjectAdapter getDefault(ObjectAdapter adapter);
 
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index f28e99d..e6c98d1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -48,6 +48,12 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
     public ObjectAdapter[] getChoices(ObjectAdapter object);
 
     /**
+     * Whether there are any choices provided (eg <tt>choicesXxx</tt> supporting
+     * method) for the association.
+     */
+    public boolean hasChoices();
+
+    /**
      * Returns true if calculated from other data in the object, that is, should
      * not be persisted.
      */
@@ -65,10 +71,5 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
      */
     boolean isMandatory();
 
-    /**
-     * Whether there are any choices provided (eg <tt>choicesXxx</tt> supporting
-     * method) for the association.
-     */
-    public boolean hasChoices();
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index f86b8f2..ea86b46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -258,6 +258,13 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         return parameterChoices.toArray(new ObjectAdapter[0]);
     }
 
+    @Override
+    public boolean hasChoices() {
+        final ActionParameterChoicesFacet choicesFacet = getFacet(ActionParameterChoicesFacet.class);
+
+        return choicesFacet != null || BoundedFacetUtils.isBoundedSet(getSpecification());
+    }
+
     private <T> void addParameterChoicesForBounded(final List<ObjectAdapter> parameterChoices) {
         final Query<T> query = new QueryFindAllInstances<T>(getSpecification().getFullIdentifier());
         final List<ObjectAdapter> allInstancesAdapter = getQuerySubmitter().allMatchingQuery(query);

http://git-wip-us.apache.org/repos/asf/isis/blob/c4d2893e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
index d423c7a..f0fd603 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
@@ -231,8 +231,7 @@ public class OneToOneAssociationImpl extends ObjectAssociationAbstract implement
     @Override
     public boolean hasChoices() {
         final PropertyChoicesFacet propertyChoicesFacet = getFacet(PropertyChoicesFacet.class);
-        final boolean optionEnabled = propertyChoicesFacet != null;
-        return BoundedFacetUtils.isBoundedSet(getSpecification()) || optionEnabled;
+        return propertyChoicesFacet != null || BoundedFacetUtils.isBoundedSet(getSpecification());
     }
 
     @Override