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>