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 2017/04/27 12:32:50 UTC

[04/35] isis git commit: ISIS-1603: trivial refactoring of password panel, date picker panel (remove duplicate validation)

ISIS-1603: trivial refactoring of password panel, date picker panel (remove duplicate validation)


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

Branch: refs/heads/ISIS-1603
Commit: 4d79170dad239e8ddbfc2b1f11de66daae942ebb
Parents: cf9ad00
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Apr 21 14:40:22 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Apr 27 13:25:36 2017 +0100

----------------------------------------------------------------------
 .../scalars/ScalarPanelTextFieldAbstract.java   | 44 +++++++++-----------
 .../ScalarPanelTextFieldDatePickerAbstract.java | 29 -------------
 .../scalars/isisapplib/IsisPasswordPanel.java   |  5 ---
 3 files changed, 20 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4d79170d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index bb22641..fd371d6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -39,12 +39,14 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
+import org.apache.wicket.validation.validator.StringValidator;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -93,7 +95,7 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
     }
 
-    protected AbstractTextComponent<T> getTextField() {
+    AbstractTextComponent<T> getTextField() {
         return textField;
     }
 
@@ -101,21 +103,20 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         return createTextField(id);
     }
 
-    protected TextField<T> createTextField(final String id) {
-        return new TextField<>(id, newTextFieldValueModel(), cls);
-    }
-
     protected TextFieldValueModel<T> newTextFieldValueModel() {
         return new TextFieldValueModel<>(this);
     }
 
+    protected TextField<T> createTextField(final String id) {
+        return new TextField<>(id, newTextFieldValueModel(), cls);
+    }
+
     @Override
     protected MarkupContainer addComponentForRegular() {
         textField = createTextFieldForRegular(ID_SCALAR_VALUE);
         textField.setOutputMarkupId(true);
 
         addStandardSemantics();
-        addSemantics();
 
         final MarkupContainer labelIfRegular = createFormComponentLabel();
         scalarTypeContainer.add(labelIfRegular);
@@ -157,14 +158,6 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
     protected abstract IModel<String> getScalarPanelType();
 
-    /**
-     * Optional hook method
-     */
-    protected void addSemantics() {
-        // we don't call textField.setType(), since we want more control 
-        // over the parsing (using custom subclasses of TextField etc)
-    }
-
     private void addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(final Component component) {
         if(!getSettings().isReplaceDisabledTagWithReadonlyTag()) {
             return;
@@ -180,13 +173,12 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
     private MarkupContainer createFormComponentLabel() {
         Fragment textFieldFragment = createTextFieldFragment("scalarValueContainer");
-        final AbstractTextComponent<T> textField = getTextField();
         final String name = getModel().getName();
         textField.setLabel(Model.of(name));
         
-        final FormGroup scalarNameAndValue = new FormGroup(ID_SCALAR_IF_REGULAR, textField);
+        final FormGroup scalarNameAndValue = new FormGroup(ID_SCALAR_IF_REGULAR, this.textField);
 
-        textFieldFragment.add(textField);
+        textFieldFragment.add(this.textField);
         scalarNameAndValue.add(textFieldFragment);
 
         return scalarNameAndValue;
@@ -198,12 +190,13 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
     protected void addStandardSemantics() {
         textField.setRequired(getModel().isRequired());
-        setTextFieldSizeAndMaxLengthIfSpecified(textField);
+        setTextFieldSizeAndMaxLengthIfSpecified();
 
-        addValidator();
+        addValidatorForIsisValidation();
     }
 
-    protected void addValidator() {
+
+    private void addValidatorForIsisValidation() {
         final ScalarModel scalarModel = getModel();
 
         textField.add(new IValidator<T>() {
@@ -223,25 +216,26 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         });
     }
 
-    protected void setTextFieldSizeAndMaxLengthIfSpecified(AbstractTextComponent<T> textField) {
+    private void setTextFieldSizeAndMaxLengthIfSpecified() {
 
         final Integer maxLength = getValueOf(getModel(), MaxLengthFacet.class);
         Integer typicalLength = getValueOf(getModel(), TypicalLengthFacet.class);
 
-        // doesn't make sense for typical length to be > maxLength 
+        // doesn't make sense for typical length to be > maxLength
         if(typicalLength != null && maxLength != null && typicalLength > maxLength) {
             typicalLength = maxLength;
         }
-        
+
         if (typicalLength != null) {
             textField.add(new AttributeModifier("size", Model.of("" + typicalLength)));
         }
-        
+
         if(maxLength != null) {
             textField.add(new AttributeModifier("maxlength", Model.of("" + maxLength)));
         }
     }
 
+
     private static Integer getValueOf(ScalarModel model, Class<? extends SingleIntValueFacet> facetType) {
         final SingleIntValueFacet facet = model.getFacet(facetType);
         return facet != null ? facet.value() : null;
@@ -263,9 +257,11 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         return labelIfCompact;
     }
 
+
     @Override
     protected void onBeforeRenderWhenViewMode() {
         super.onBeforeRenderWhenViewMode();
+
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/4d79170d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
index 45c3c1b..fd947bc 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
@@ -76,14 +76,7 @@ public abstract class ScalarPanelTextFieldDatePickerAbstract<T extends Serializa
         return new Fragment(id, "date", ScalarPanelTextFieldDatePickerAbstract.this);
     }
 
-    @Override
-    protected void addSemantics() {
-        super.addSemantics();
-
-        addObjectAdapterValidator();
-    }
 
-    
     protected Component addComponentForCompact() {
         Fragment compactFragment = getCompactFragment(CompactType.SPAN);
         final Label label = new Label(ID_SCALAR_IF_COMPACT, newTextFieldValueModel()) {
@@ -114,25 +107,6 @@ public abstract class ScalarPanelTextFieldDatePickerAbstract<T extends Serializa
         return null;
     }
 
-    private void addObjectAdapterValidator() {
-        final AbstractTextComponent<T> textField = getTextField();
-
-        textField.add(new IValidator<T>() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public void validate(final IValidatable<T> validatable) {
-                final T proposed = validatable.getValue();
-                final ObjectAdapter proposedAdapter = adapterFor(proposed);
-                String reasonIfAny = scalarModel.validate(proposedAdapter);
-                if (reasonIfAny != null) {
-                    final ValidationError error = new ValidationError();
-                    error.setMessage(reasonIfAny);
-                    validatable.error(error);
-                }
-            }
-        });
-    }
 
     
     @com.google.inject.Inject
@@ -141,8 +115,5 @@ public abstract class ScalarPanelTextFieldDatePickerAbstract<T extends Serializa
         return settings;
     }
 
-    private ObjectAdapter adapterFor(final Object pojo) {
-        return getPersistenceSession().adapterFor(pojo);
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/4d79170d/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisPasswordPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisPasswordPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisPasswordPanel.java
index 3e549cd..28e4ad7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisPasswordPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisPasswordPanel.java
@@ -43,10 +43,6 @@ public class IsisPasswordPanel extends ScalarPanelTextFieldParseableAbstract {
         super(id, scalarModel);
     }
 
-    @Override
-    protected void addSemantics() {
-        super.addSemantics();
-    }
 
     @Override
     protected AbstractTextComponent<String> createTextFieldForRegular(String id) {
@@ -68,5 +64,4 @@ public class IsisPasswordPanel extends ScalarPanelTextFieldParseableAbstract {
     protected IModel<String> getScalarPanelType() {
         return Model.of("isisPasswordPanel");
     }
-
 }