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

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new dd6ee65  EMPIREDB-320 improved solution for SelectInputControl 
validatein problem (inside UIData iteration). Solution for InputTag and 
ControlTag: Code previously in processDecodes() really belongs in 
processValidators()
dd6ee65 is described below

commit dd6ee654d9cb6213042b1e3e4116cfede05e2c49
Author: Rainer Döbele <[email protected]>
AuthorDate: Sat Nov 30 21:18:05 2019 +0100

    EMPIREDB-320
    improved solution for SelectInputControl validatein problem (inside UIData 
iteration).
    Solution for InputTag and ControlTag: Code previously in processDecodes() 
really belongs in processValidators()
---
 .../apache/empire/jsf2/components/ControlTag.java  | 92 +++++++++-------------
 .../apache/empire/jsf2/components/InputTag.java    | 66 ++++++----------
 .../apache/empire/jsf2/controls/InputControl.java  |  5 --
 .../empire/jsf2/utils/TagEncodingHelper.java       |  5 --
 pom.xml                                            |  6 +-
 5 files changed, 68 insertions(+), 106 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
index 52e1e23..04a6d54 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
@@ -229,7 +229,6 @@ public class ControlTag extends UIInput implements 
NamingContainer
     protected boolean                 hasRequiredFlagSet   = false;
     protected boolean                 encodeLabel          = true;
     private boolean                   creatingComponents   = false;
-    protected boolean                 processingValidators = false;
 
     public ControlTag()
     {
@@ -404,42 +403,6 @@ public class ControlTag extends UIInput implements 
NamingContainer
     }
 
     @Override
-    public void processDecodes(FacesContext context) 
-    {
-        if (helper.isInsideUIData())
-        {   // Check input controls
-            if (getChildCount()>1 && (getChildren().get(1) instanceof 
InputSeparatorComponent))
-            {   // Make sure all inputs are rendered
-                boolean hasChanged = false;
-                boolean readOnly = helper.isRecordReadOnly();
-                InputSeparatorComponent parent = 
(InputSeparatorComponent)getChildren().get(1);
-                // set rendered of children
-                for (UIComponent child : parent.getChildren())
-                {   // set rendered 
-                    boolean rendered = (child instanceof ValueOutputComponent) 
? readOnly : !readOnly;
-                    if (child.isRendered()!=rendered)
-                    {   child.setRendered(rendered);
-                        hasChanged = true;
-                    }    
-                }
-                // give control chance to update
-                if (hasChanged && log.isDebugEnabled())
-                    log.debug("Changing UIInput readOnly state for {} to {}", 
helper.getColumnName(), readOnly);
-                // check record
-                helper.prepareData();
-                if (this.control==null)
-                    this.control = helper.getInputControl();
-                if (this.inpInfo==null)
-                    this.inpInfo = helper.getInputInfo(context);
-                // update state
-                this.control.updateInputState(parent, inpInfo, context, false);
-            }
-        }
-        // default
-        super.processDecodes(context);
-    }
-
-    @Override
     public void setRequired(boolean required)
     {
         super.setRequired(required);
@@ -578,35 +541,56 @@ public class ControlTag extends UIInput implements 
NamingContainer
         ControlSeparatorComponent inputSepTag = (ControlSeparatorComponent) 
getChildren().get(1);
         return this.control.getConvertedValue(inputSepTag, this.inpInfo, 
newSubmittedValue);
     }
-    
-    @Override
-    public int getChildCount()
-    {
-        return (processingValidators ? 0 : super.getChildCount());
-    }
-    
+
     @Override
-    public int getFacetCount()
+    public void processDecodes(FacesContext context) 
     {
-        return (processingValidators ? 0 : super.getFacetCount());
+        /*
+         * previous code moved to processValidators (below)
+         */
+        super.processDecodes(context);
     }
 
     @Override
     public void processValidators(FacesContext context)
     {
-        try {
-            processingValidators = helper.skipInputValidators();
-            super.processValidators(context);
-        } finally {
-            processingValidators = false;
+        // check UI-Data
+        if (helper.isInsideUIData())
+        {   // Check input controls
+            if (getChildCount()>1 && (getChildren().get(1) instanceof 
InputSeparatorComponent))
+            {   // Make sure all inputs are rendered
+                boolean hasChanged = false;
+                boolean readOnly = helper.isRecordReadOnly();
+                InputSeparatorComponent parent = 
(InputSeparatorComponent)getChildren().get(1);
+                // set rendered of children
+                for (UIComponent child : parent.getChildren())
+                {   // set rendered 
+                    boolean rendered = (child instanceof ValueOutputComponent) 
? readOnly : !readOnly;
+                    if (child.isRendered()!=rendered)
+                    {   child.setRendered(rendered);
+                        hasChanged = true;
+                    }    
+                }
+                // give control chance to update
+                if (hasChanged && log.isDebugEnabled())
+                    log.debug("Changing UIInput readOnly state for {} to {}", 
helper.getColumnName(), readOnly);
+                // check record
+                helper.prepareData();
+                if (this.control==null)
+                    this.control = helper.getInputControl();
+                if (this.inpInfo==null)
+                    this.inpInfo = helper.getInputInfo(context);
+                // update state
+                this.control.updateInputState(parent, inpInfo, context, false);
+            }
         }
+        // process all validators (including children)
+        super.processValidators(context);
     }
 
     @Override
     public void validate(FacesContext context)
-    {   // free Validators lock
-        processingValidators = false;
-        // init state
+    {   // init state
         if (initState(context) == false)
             return;
         // get submitted value and validate
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
index 123a8eb..5cf4a8e 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
@@ -55,7 +55,6 @@ public class InputTag extends UIInput implements 
NamingContainer
     protected InputControl            control              = null;
     protected InputControl.InputInfo  inpInfo              = null;
     protected boolean                 hasRequiredFlagSet   = false;
-    protected boolean                 processingValidators = false;
 
     /*
     private static int itemIdSeq = 0;
@@ -221,29 +220,6 @@ public class InputTag extends UIInput implements 
NamingContainer
         // done
         return compId;
     }
-    
-    @Override
-    public void processDecodes(FacesContext context) 
-    {
-        if (helper.isInsideUIData())
-        {   // Check input controls
-            if (getChildCount()>0)
-            {   // Set readOnly and disabled for each row
-                boolean readOnly = helper.isRecordReadOnly();
-                setRenderInput(!readOnly);
-                // get control
-                helper.prepareData();
-                if (control==null)
-                    control = helper.getInputControl();
-                if (inpInfo==null)
-                    inpInfo = helper.getInputInfo(context);
-                // update control
-                control.updateInputState(this, inpInfo, context, false);
-            }
-        }
-        // default
-        super.processDecodes(context);
-    }
 
     @Override
     public void setRequired(boolean required)
@@ -282,35 +258,43 @@ public class InputTag extends UIInput implements 
NamingContainer
         // parse and convert value
         return this.control.getConvertedValue(this, this.inpInfo, 
newSubmittedValue);
     }
-    
-    @Override
-    public int getChildCount()
-    {
-        return (processingValidators ? 0 : super.getChildCount());
-    }
-    
+
     @Override
-    public int getFacetCount()
+    public void processDecodes(FacesContext context) 
     {
-        return (processingValidators ? 0 : super.getFacetCount());
+        /*
+         * previous code moved to processValidators (below)
+         */
+        super.processDecodes(context);
     }
 
     @Override
     public void processValidators(FacesContext context)
     {
-        try {
-            processingValidators = helper.skipInputValidators();
-            super.processValidators(context);
-        } finally {
-            processingValidators = false;
+        // check UI-Data
+        if (helper.isInsideUIData())
+        {   // Check input controls
+            if (getChildCount()>0)
+            {   // Set readOnly and disabled for each row
+                boolean readOnly = helper.isRecordReadOnly();
+                setRenderInput(!readOnly);
+                // get control
+                helper.prepareData();
+                if (control==null)
+                    control = helper.getInputControl();
+                if (inpInfo==null)
+                    inpInfo = helper.getInputInfo(context);
+                // update control
+                control.updateInputState(this, inpInfo, context, false);
+            }
         }
+        // process all validators (including children)
+        super.processValidators(context);
     }
 
     @Override
     public void validate(FacesContext context)
-    {   // free Validators lock
-        processingValidators = false;
-        // init state
+    {   // init state
         if (initState(context) == false)
             return;
         // get submitted value and validate
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
index b8a3b01..fca3d70 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
@@ -672,11 +672,6 @@ public abstract class InputControl
         setInputStyleClass(input, styleClass);
     }
     
-    public boolean skipInputValidators()
-    {
-        return false;  /* was true: Undo change in order to clarify behaviour 
*/
-    }
-    
     /**
      * Returns the value formated as a string
      * this is a simple default implementation that does no type-secific 
formatting
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index c2d7625..9b9af08 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -1674,11 +1674,6 @@ public class TagEncodingHelper implements NamingContainer
         return this.insideUIData;
     }
     
-    public boolean skipInputValidators()
-    {
-        return (this.control!=null ? this.control.skipInputValidators() : 
false);
-    }
-    
     public void saveComponentId(UIComponent comp)
     {
         if (comp==null || comp.getId()==null)
diff --git a/pom.xml b/pom.xml
index 3ace06c..c6d64bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,7 @@
                                                        </execution>
                                                </executions>
                                        </plugin>
+                                       <!-- temporarily disable due to build 
problem 
                                        <plugin>
                                                
<groupId>org.apache.maven.plugins</groupId>
                                                
<artifactId>maven-javadoc-plugin</artifactId>
@@ -130,6 +131,7 @@
                                                        </execution>
                                                </executions>
                                        </plugin>
+                                        -->
                                </plugins>
                        </build>
                </profile>
@@ -791,11 +793,13 @@
                                <artifactId>maven-jxr-plugin</artifactId>
                                <version>2.4</version>
                        </plugin>
-                       <!-- maven-javadoc-plugin -->
+                       <!-- maven-javadoc-plugin
+                                temporarily disable due to build problem 
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-javadoc-plugin</artifactId>
                        </plugin>
+                       -->
                        <!-- maven-changelog-plugin -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>

Reply via email to