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 51b667fe EMPIREDB-404 code optimization
51b667fe is described below

commit 51b667fe6df1733c569f109bcf7af677ba2a8640
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Mar 21 21:53:54 2023 +0100

    EMPIREDB-404
    code optimization
---
 .../apache/empire/jsf2/components/ControlTag.java  | 13 +++------
 .../apache/empire/jsf2/components/InputTag.java    | 31 ++++++++--------------
 .../apache/empire/jsf2/components/ValueTag.java    | 30 +++++++++++++++++++++
 .../empire/jsf2/utils/TagEncodingHelper.java       | 20 ++++++++++++++
 .../org/apache/empire/commons/StringUtils.java     | 12 +++++++++
 5 files changed, 76 insertions(+), 30 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 e7ea9f51..543fb6ef 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
@@ -553,21 +553,14 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 child.setRendered((valueOutput ? renderValue : !renderValue));
             }
             // wrapperTag
-            String wrapperClass = 
helper.getTagAttributeStringEx("wrapperClass"); 
-            if (wrapperClass!=null)
-            {   // control wrapper tag
-                ResponseWriter writer = context.getResponseWriter();
-                writer.startElement(InputControl.HTML_TAG_DIV, this);
-                // style class
-                helper.writeStyleClass(writer, wrapperClass);
-            }
+            String wrapperTag = helper.writeWrapperTag(context, false, 
renderValue); 
             // render
             control.renderInput(parent, inpInfo, context);
             // wrapperTagEnd
-            if (wrapperClass!=null)
+            if (wrapperTag!=null)
             {   // control wrapper tag
                 ResponseWriter writer = context.getResponseWriter();
-                writer.endElement(InputControl.HTML_TAG_DIV);
+                writer.endElement(wrapperTag);
             }
         } finally {
             creatingComponents = false;
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 ca29c3e9..b2e632a3 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
@@ -189,16 +189,7 @@ public class InputTag extends UIInput implements 
NamingContainer
         setRenderInput(!renderValue);
 
         // wrapperTag
-        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass"); 
-        if (wrapperClass!=null)
-        {   // control wrapper tag
-            ResponseWriter writer = context.getResponseWriter();
-            writer.startElement(InputControl.HTML_TAG_DIV, this);
-            // render id
-            helper.writeComponentId(writer, false);
-            // style class
-            helper.writeStyleClass(writer, wrapperClass);
-        }
+        String wrapperTag = helper.writeWrapperTag(context, true, renderValue);
         // render components
         if (renderValue)
         {   // render value
@@ -212,22 +203,14 @@ public class InputTag extends UIInput implements 
NamingContainer
             control.renderInput(this, inpInfo, context);
         }
         // wrapperTagEnd
-        if (wrapperClass!=null)
+        if (wrapperTag!=null)
         {   // control wrapper tag
             ResponseWriter writer = context.getResponseWriter();
-            writer.endElement(InputControl.HTML_TAG_DIV);
+            writer.endElement(wrapperTag);
         }
         saveState();
     }
 
-    @Override
-    public void setId(String id)
-    {   // complete
-        id = helper.completeInputTagId(id); 
-        // setId
-        super.setId(id);
-    }
-
     @Override
     public String getId()
     {
@@ -239,6 +222,14 @@ public class InputTag extends UIInput implements 
NamingContainer
         return compId;
     }
 
+    @Override
+    public void setId(String id)
+    {   // complete
+        id = helper.completeInputTagId(id); 
+        // setId
+        super.setId(id);
+    }
+
     @Override
     public void setRequired(boolean required)
     {
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
index 2083ed00..02c2f169 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 
 import javax.faces.component.UIOutput;
 import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
 
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
@@ -50,6 +51,25 @@ public class ValueTag extends UIOutput // implements 
NamingContainer
         return "javax.faces.NamingContainer";
     }
 
+    @Override
+    public String getId()
+    {
+        String compId = super.getId();
+        // Mojarra-Patch since Id might have been set to "null"
+        if ("null".equals(compId))
+            compId =  helper.completeInputTagId(null);
+        // done
+        return compId;
+    }
+
+    @Override
+    public void setId(String id)
+    {   // complete
+        id = helper.completeInputTagId(id); 
+        // setId
+        super.setId(id);
+    }
+
     @Override
     public void encodeBegin(FacesContext context)
         throws IOException
@@ -62,7 +82,17 @@ public class ValueTag extends UIOutput // implements 
NamingContainer
         // render components
         InputControl control = helper.getInputControl();
         InputControl.ValueInfo vi = helper.getValueInfo(context);
+        
+        // wrapperTag
+        String wrapperTag = helper.writeWrapperTag(context, true, true); 
+        // render value
         renderControlValue(control, vi, context);
+        // wrapperTagEnd
+        if (wrapperTag!=null)
+        {   // control wrapper tag
+            ResponseWriter writer = context.getResponseWriter();
+            writer.endElement(wrapperTag);
+        }
     }
 
     protected void renderControlValue(InputControl control, 
InputControl.ValueInfo vi, FacesContext context)
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 c2989765..da88a608 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
@@ -1468,6 +1468,26 @@ public class TagEncodingHelper implements NamingContainer
         writeStyleClass(writer, this.cssStyleClass, userStyle);
     }
     
+    public String writeWrapperTag(FacesContext context, boolean renderId, 
boolean renderValue)
+        throws IOException
+    {
+        String wrapperClass = getTagAttributeStringEx("wrapperClass"); 
+        if (wrapperClass==null)
+            return null;
+        // start element
+        String tagName = InputControl.HTML_TAG_DIV;
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement(tagName, this.component);
+        // render id
+        if (renderId)
+            writeComponentId(writer, false);
+        // style class
+        String wrapCtxClass = (renderValue ? "eWrapVal" : "eWrapInp");
+        writeStyleClass(writer, wrapCtxClass, StringUtils.nullIf(wrapperClass, 
'-'));
+        // return tagName
+        return tagName;
+    }
+    
     /* ********************** FormGridTag ********************** */
 
     protected FormGridTag getFormGrid()
diff --git a/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java 
b/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
index b746c918..cc0aa687 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
@@ -139,6 +139,18 @@ public class StringUtils
         return ((strval.length()==0) ? null : strval);   
     }
 
+    /**
+     * Returns null if the string supplied is null, an empty String or a 
specific character 
+     * 
+     * @param value the value to check 
+     * @param nullChar the char that indicates null
+     * @return null if the value supplied is null, an empty String or the 
nullChar 
+     */
+    public static String nullIf(String value, char nullChar)
+    {
+        return (value==null || value.length()==0 || (value.length()==1 && 
value.charAt(0)==nullChar) ? null : value);   
+    }
+
     /**
      * Returns true if the given substring is part of the string provided by 
value 
      * 

Reply via email to