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 220233c8 EMPIREDB-451 Move redirect from FacesUtils to WebAppliation 
and provided public access for InputControl.formatValue()
220233c8 is described below

commit 220233c8023c117854d8ee440b8fd6a10628d036
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Dec 12 14:11:38 2024 +0100

    EMPIREDB-451
    Move redirect from FacesUtils to WebAppliation and provided public access 
for InputControl.formatValue()
---
 .../org/apache/empire/jakarta/app/FacesUtils.java  | 25 ++---------
 .../apache/empire/jakarta/app/WebApplication.java  | 51 +++++++++++++++++++++-
 .../apache/empire/jakarta/components/LinkTag.java  | 16 ++-----
 .../empire/jakarta/controls/InputControl.java      | 48 +++++++++-----------
 .../empire/jakarta/controls/TextInputControl.java  | 19 +-------
 .../org/apache/empire/jsf2/app/FacesUtils.java     | 25 ++---------
 .../org/apache/empire/jsf2/app/WebApplication.java | 51 +++++++++++++++++++++-
 .../org/apache/empire/jsf2/components/LinkTag.java | 16 ++-----
 .../apache/empire/jsf2/controls/InputControl.java  | 48 +++++++++-----------
 .../empire/jsf2/controls/TextInputControl.java     | 19 +-------
 10 files changed, 154 insertions(+), 164 deletions(-)

diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/FacesUtils.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/FacesUtils.java
index 24206695..9bf88d1a 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/FacesUtils.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/FacesUtils.java
@@ -19,7 +19,6 @@
 package org.apache.empire.jakarta.app;
 
 import java.io.File;
-import java.io.IOException;
 import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -126,11 +125,13 @@ public class FacesUtils
         return "{No HttpServletRequest}";
     }
 
+    /* Should not be necessary
     public static String getRequestContextPath()
     {
         ExternalContext ec = 
FacesContext.getCurrentInstance().getExternalContext();
         return (ec!=null ? ec.getRequestContextPath() : null);
     }
+    */
 
     public static Object getRequestAttribute(final String key)
     {
@@ -194,30 +195,10 @@ public class FacesUtils
     }
 
     /* Navigation */
-    
-    public static void redirectDirectly(final FacesContext fc, final String 
url)
-    {
-        try
-        {   // log
-            if (log.isDebugEnabled())
-                log.debug("Redirecting directly to {}.", url);
-            if (fc.getResponseComplete())
-                log.warn("Redirecting although response is already complete!");
-            // redirectDirectly
-            fc.getExternalContext().redirect(url);
-            fc.responseComplete();
-        }
-        catch (IOException e)
-        {
-            log.error("Unable to redirect to " + url);
-        }
-    }
 
     public static void redirectDirectly(final FacesContext fc, final 
PageOutcome outcome)
     {
-        String ctxPath = fc.getExternalContext().getRequestContextPath();
-        String pageURI = ctxPath + outcome.toString();
-        FacesUtils.redirectDirectly(fc, pageURI);
+        getWebApplication().redirectDirectly(fc, outcome.toString());
     }
 
     public static void redirectDirectly(final FacesContext fc, final 
PageDefinition page)
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/WebApplication.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/WebApplication.java
index ac6b8293..728ab716 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/WebApplication.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/app/WebApplication.java
@@ -18,6 +18,7 @@
  */
 package org.apache.empire.jakarta.app;
 
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.text.MessageFormat;
@@ -37,6 +38,7 @@ import 
org.apache.empire.db.context.DBRollbackManager.ReleaseAction;
 import org.apache.empire.exceptions.EmpireException;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
+import org.apache.empire.exceptions.InvalidOperationException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.UnexpectedReturnValueException;
 import org.apache.empire.jakarta.controls.TextAreaInputControl;
@@ -53,6 +55,7 @@ import jakarta.faces.application.FacesMessage.Severity;
 import jakarta.faces.component.NamingContainer;
 import jakarta.faces.component.UIComponent;
 import jakarta.faces.component.UIViewRoot;
+import jakarta.faces.context.ExternalContext;
 import jakarta.faces.context.FacesContext;
 import jakarta.faces.event.ExceptionQueuedEvent;
 import jakarta.faces.event.ExceptionQueuedEventContext;
@@ -164,6 +167,7 @@ public abstract class WebApplication
     public void onViewNotFound(final FacesContext fc, final HttpServletRequest 
req)
     {   // View not Found Error
         log.warn("No view found for request to '{}'. Use 
FacesUtils.redirectDirectly() to redirect to valid view.", req.getRequestURI());
+        redirectDirectly(fc, StringUtils.EMPTY);
     }
 
     /**
@@ -338,6 +342,50 @@ public abstract class WebApplication
         return false;
     }
     
+    /**
+     * Redirects to another page or url
+     * @param fc the FacesContext
+     * @param url the target url
+     */
+    public void redirectDirectly(final FacesContext fc, String url)
+    {
+        try
+        {   // check params
+            if (fc==null)
+                throw new InvalidArgumentException("fc", fc);
+            if (fc.getResponseComplete())
+                throw new InvalidOperationException("Unable to redirect. 
Response is already complete!");
+            if (url==null)
+                url = StringUtils.EMPTY; // redirect to root
+            // Prepend Context-Path
+            ExternalContext ec = fc.getExternalContext(); 
+            String ctxPath = ec.getRequestContextPath();
+            if (url.indexOf("://")>0)
+            {   // Should not contain the context-path
+                if (url.startsWith("http") && url.indexOf(ctxPath)>0)
+                    log.warn("Redirect url \"{}\" contains protokoll and 
context-path. Please remove.", url);
+                else
+                    log.info("Redirecting to absolute url {}", url);
+            }
+            else if (!url.startsWith(ctxPath))
+            {   // assemble url
+                String sep = (url.length()>0 && url.charAt(0)!='/' ? "/" : 
null);
+                url = StringUtils.concat(ctxPath, sep, url);
+                // relative
+                log.debug("Redirecting to relative url {}", url);
+            }
+            else
+                log.warn("Redirect url \"{}\" already contains context-path. 
Please remove.", url);
+            // redirectDirectly
+            ec.redirect(url);
+            fc.responseComplete();
+        }
+        catch (IOException e)
+        {   // What can we do now?
+            log.error("Failed to redirect to {}", url, e);
+        }
+    }
+    
     /**
      * Handles an exeption, that could not be handled on the page level
      * The application should redirect to the error page.
@@ -366,8 +414,7 @@ public abstract class WebApplication
         }
             
         // If all has failed, redirect to ContextPath (root)
-        String contextPath = 
context.getExternalContext().getRequestContextPath();
-        FacesUtils.redirectDirectly(context, contextPath);
+        redirectDirectly(context, StringUtils.EMPTY);
     }
     
     /**
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/LinkTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/LinkTag.java
index 872bc554..c0838135 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/LinkTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/LinkTag.java
@@ -30,7 +30,6 @@ import org.apache.empire.jakarta.app.FacesUtils;
 import org.apache.empire.jakarta.controls.InputControl;
 import org.apache.empire.jakarta.controls.InputControlManager;
 import org.apache.empire.jakarta.utils.ParameterMap;
-import org.apache.empire.jakarta.utils.StringResponseWriter;
 import org.apache.empire.jakarta.utils.TagEncodingHelper;
 import org.apache.empire.jakarta.utils.TagEncodingHelperFactory;
 import org.apache.empire.jakarta.utils.TagStyleClass;
@@ -278,18 +277,9 @@ public class LinkTag extends UIOutput // implements 
NamingContainer
             helper.prepareData();
             InputControl control = helper.getInputControl();
             InputControl.ValueInfo vi = 
helper.getValueInfo(FacesContext.getCurrentInstance());
-            // render value
-            StringResponseWriter srw = new StringResponseWriter();
-            try
-            {
-                Object value = vi.getValue(true);
-                control.renderValue(value, vi, srw);
-            }
-            catch (IOException e)
-            {   // Error rendering value
-                log.error("Failed to render value for 
"+vi.getColumn().getName()+" error is:"+e.getMessage(), e);
-            }
-            return srw.toString();
+            // return formatted value
+            Object value = vi.getValue(true);
+            return control.formatValue(value, vi, false);
         }
         else
         {   // An ordinary link
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/InputControl.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/InputControl.java
index b1641425..3234861d 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/InputControl.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/InputControl.java
@@ -242,6 +242,22 @@ public abstract class InputControl
         }
     }
     
+    /**
+     * Returns the formatted value
+     * Do not override this function, but override formatValue(Object, 
ValueInfo) instead.   
+     * @param value the value to format
+     * @param vi the valueInfo
+     * @param escapeHtml when true the value will be escaped for Html
+     * @return the formatted value
+     */
+    public String formatValue(Object value, ValueInfo vi, boolean escapeHtml)
+    {
+        String s = formatValue(value, vi);
+        if (escapeHtml)
+            s = HtmlUtils.getInstance().escapeText(s);
+        return s;
+    }
+    
     /**
      * Renders the control value with a surrounding HTML tag, if a tagName is 
supplied
      * @param comp the JSF component
@@ -291,7 +307,9 @@ public abstract class InputControl
     public void renderValue(Object value, ValueInfo vi, ResponseWriter writer)
         throws IOException
     {
-        String text = formatValue(value, vi);
+        // do we need this at all:
+        // boolean escapeHtml = !hasFormatOption(vi, "noencode"); 
+        String text = formatValue(value, vi, true);
         writer.append((StringUtils.isEmpty(text) ? HTML_EXPR_NBSP : text));
     }
 
@@ -787,11 +805,7 @@ public abstract class InputControl
         if (value == null)
             value = getFormatOption(vi, InputControl.FORMAT_NULL, 
InputControl.FORMAT_NULL_ATTRIBUTE);
         // Convert to String
-        String s = StringUtils.toString(value, StringUtils.EMPTY);
-        if (hasFormatOption(vi, "noencode"))
-            return s;
-        // Encode Html
-        return escapeHtml(s);
+        return StringUtils.toString(value, StringUtils.EMPTY);
     }
 
     /**
@@ -818,28 +832,6 @@ public abstract class InputControl
         return null; 
     }
 
-    /**
-     * Returns the value formated as a string
-     * This is a shortcut for formatString(vi.getValue(), vi)
-     * Derived classes may override formatString
-     
-    protected final String formatValue(ValueInfo vi)
-    {
-        // boolean hasError = ((vi instanceof InputInfo) && 
!((InputInfo)vi).isValid()); 
-        return formatValue(vi.getValue(true), vi);
-    }
-    */
-
-    /**
-     * Escapes a String for html
-     * @param text the text to escape
-     * @return the escaped html String
-     */
-    protected String escapeHtml(String text)
-    {
-        return HtmlUtils.getInstance().escapeText(text);
-    }
-
     /**
      * checks if a particular formating option has been specified.
      * 
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextInputControl.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextInputControl.java
index 24889175..9a621310 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextInputControl.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextInputControl.java
@@ -254,11 +254,6 @@ public class TextInputControl extends InputControl
 
     @Override
     protected String formatValue(Object value, ValueInfo vi)
-    {
-        return formatValue(value, vi, true);
-    }
-
-    protected String formatValue(Object value, ValueInfo vi, boolean 
escapeHTML)
     {
         // Lookup and return text
         Options options = vi.getOptions();
@@ -282,13 +277,7 @@ public class TextInputControl extends InputControl
         DataType dataType = getValueType(value, (column != null) ? 
column.getDataType() : DataType.UNKNOWN);
         if (dataType.isText() || dataType == DataType.UNKNOWN)
         { // String
-            String s = String.valueOf(value);
-            if (hasFormatOption(vi, "noencode"))
-                return s;
-            // Encoded text
-            if (escapeHTML)
-                s = escapeHtml(s);
-            return s;
+            return String.valueOf(value);
         }
         if (dataType == DataType.INTEGER || dataType == DataType.AUTOINC)
         { // Integer
@@ -314,10 +303,6 @@ public class TextInputControl extends InputControl
          *  }
          */
         // Convert to String
-        if (escapeHTML)
-        {
-            return escapeHtml(String.valueOf(value));
-        }
         return String.valueOf(value);
     }
 
@@ -347,7 +332,7 @@ public class TextInputControl extends InputControl
         if (options != null && !options.isEmpty())
             return value;
         // Format
-        return formatValue(value, ii, false);
+        return formatValue(value, ii);
     }
 
     // ------- render -------
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
index 3b1c37f3..272bf088 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
@@ -19,7 +19,6 @@
 package org.apache.empire.jsf2.app;
 
 import java.io.File;
-import java.io.IOException;
 import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -126,11 +125,13 @@ public class FacesUtils
         return "{No HttpServletRequest}";
     }
 
+    /* Should not be necessary
     public static String getRequestContextPath()
     {
         ExternalContext ec = 
FacesContext.getCurrentInstance().getExternalContext();
         return (ec!=null ? ec.getRequestContextPath() : null);
     }
+    */
 
     public static Object getRequestAttribute(final String key)
     {
@@ -194,30 +195,10 @@ public class FacesUtils
     }
 
     /* Navigation */
-    
-    public static void redirectDirectly(final FacesContext fc, final String 
url)
-    {
-        try
-        {   // log
-            if (log.isDebugEnabled())
-                log.debug("Redirecting directly to {}.", url);
-            if (fc.getResponseComplete())
-                log.warn("Redirecting although response is already complete!");
-            // redirectDirectly
-            fc.getExternalContext().redirect(url);
-            fc.responseComplete();
-        }
-        catch (IOException e)
-        {
-            log.error("Unable to redirect to " + url);
-        }
-    }
 
     public static void redirectDirectly(final FacesContext fc, final 
PageOutcome outcome)
     {
-        String ctxPath = fc.getExternalContext().getRequestContextPath();
-        String pageURI = ctxPath + outcome.toString();
-        FacesUtils.redirectDirectly(fc, pageURI);
+        getWebApplication().redirectDirectly(fc, outcome.toString());
     }
 
     public static void redirectDirectly(final FacesContext fc, final 
PageDefinition page)
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebApplication.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebApplication.java
index cb85d295..9ad6a06f 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebApplication.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebApplication.java
@@ -18,6 +18,7 @@
  */
 package org.apache.empire.jsf2.app;
 
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.text.MessageFormat;
@@ -33,6 +34,7 @@ import javax.faces.application.FacesMessage.Severity;
 import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.faces.event.ExceptionQueuedEvent;
 import javax.faces.event.ExceptionQueuedEventContext;
@@ -48,6 +50,7 @@ import 
org.apache.empire.db.context.DBRollbackManager.ReleaseAction;
 import org.apache.empire.exceptions.EmpireException;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
+import org.apache.empire.exceptions.InvalidOperationException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.UnexpectedReturnValueException;
 import org.apache.empire.jsf2.controls.TextAreaInputControl;
@@ -163,6 +166,7 @@ public abstract class WebApplication
     public void onViewNotFound(final FacesContext fc, final HttpServletRequest 
req)
     {   // View not Found Error
         log.warn("No view found for request to '{}'. Use 
FacesUtils.redirectDirectly() to redirect to valid view.", req.getRequestURI());
+        redirectDirectly(fc, StringUtils.EMPTY);
     }
 
     /**
@@ -337,6 +341,50 @@ public abstract class WebApplication
         return false;
     }
     
+    /**
+     * Redirects to another page or url
+     * @param fc the FacesContext
+     * @param url the target url
+     */
+    public void redirectDirectly(final FacesContext fc, String url)
+    {
+        try
+        {   // check params
+            if (fc==null)
+                throw new InvalidArgumentException("fc", fc);
+            if (fc.getResponseComplete())
+                throw new InvalidOperationException("Unable to redirect. 
Response is already complete!");
+            if (url==null)
+                url = StringUtils.EMPTY; // redirect to root
+            // Prepend Context-Path
+            ExternalContext ec = fc.getExternalContext(); 
+            String ctxPath = ec.getRequestContextPath();
+            if (url.indexOf("://")>0)
+            {   // Should not contain the context-path
+                if (url.startsWith("http") && url.indexOf(ctxPath)>0)
+                    log.warn("Redirect url \"{}\" contains protokoll and 
context-path. Please remove.", url);
+                else
+                    log.info("Redirecting to absolute url {}", url);
+            }
+            else if (!url.startsWith(ctxPath))
+            {   // assemble url
+                String sep = (url.length()>0 && url.charAt(0)!='/' ? "/" : 
null);
+                url = StringUtils.concat(ctxPath, sep, url);
+                // relative
+                log.debug("Redirecting to relative url {}", url);
+            }
+            else
+                log.warn("Redirect url \"{}\" already contains context-path. 
Please remove.", url);
+            // redirectDirectly
+            ec.redirect(url);
+            fc.responseComplete();
+        }
+        catch (IOException e)
+        {   // What can we do now?
+            log.error("Failed to redirect to {}", url, e);
+        }
+    }
+    
     /**
      * Handles an exeption, that could not be handled on the page level
      * The application should redirect to the error page.
@@ -365,8 +413,7 @@ public abstract class WebApplication
         }
             
         // If all has failed, redirect to ContextPath (root)
-        String contextPath = 
context.getExternalContext().getRequestContextPath();
-        FacesUtils.redirectDirectly(context, contextPath);
+        redirectDirectly(context, StringUtils.EMPTY);
     }
     
     /**
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
index 82800149..42221369 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
@@ -42,7 +42,6 @@ import org.apache.empire.jsf2.app.FacesUtils;
 import org.apache.empire.jsf2.controls.InputControl;
 import org.apache.empire.jsf2.controls.InputControlManager;
 import org.apache.empire.jsf2.utils.ParameterMap;
-import org.apache.empire.jsf2.utils.StringResponseWriter;
 import org.apache.empire.jsf2.utils.TagEncodingHelper;
 import org.apache.empire.jsf2.utils.TagEncodingHelperFactory;
 import org.apache.empire.jsf2.utils.TagStyleClass;
@@ -278,18 +277,9 @@ public class LinkTag extends UIOutput // implements 
NamingContainer
             helper.prepareData();
             InputControl control = helper.getInputControl();
             InputControl.ValueInfo vi = 
helper.getValueInfo(FacesContext.getCurrentInstance());
-            // render value
-            StringResponseWriter srw = new StringResponseWriter();
-            try
-            {
-                Object value = vi.getValue(true);
-                control.renderValue(value, vi, srw);
-            }
-            catch (IOException e)
-            {   // Error rendering value
-                log.error("Failed to render value for 
"+vi.getColumn().getName()+" error is:"+e.getMessage(), e);
-            }
-            return srw.toString();
+            // return formatted value
+            Object value = vi.getValue(true);
+            return control.formatValue(value, vi, false);
         }
         else
         {   // An ordinary link
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 c72ce4f8..6ab5a116 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
@@ -242,6 +242,22 @@ public abstract class InputControl
         }
     }
     
+    /**
+     * Returns the formatted value
+     * Do not override this function, but override formatValue(Object, 
ValueInfo) instead.   
+     * @param value the value to format
+     * @param vi the valueInfo
+     * @param escapeHtml when true the value will be escaped for Html
+     * @return the formatted value
+     */
+    public String formatValue(Object value, ValueInfo vi, boolean escapeHtml)
+    {
+        String s = formatValue(value, vi);
+        if (escapeHtml)
+            s = HtmlUtils.getInstance().escapeText(s);
+        return s;
+    }
+    
     /**
      * Renders the control value with a surrounding HTML tag, if a tagName is 
supplied
      * @param comp the JSF component
@@ -291,7 +307,9 @@ public abstract class InputControl
     public void renderValue(Object value, ValueInfo vi, ResponseWriter writer)
         throws IOException
     {
-        String text = formatValue(value, vi);
+        // do we need this at all:
+        // boolean escapeHtml = !hasFormatOption(vi, "noencode"); 
+        String text = formatValue(value, vi, true);
         writer.append((StringUtils.isEmpty(text) ? HTML_EXPR_NBSP : text));
     }
 
@@ -787,11 +805,7 @@ public abstract class InputControl
         if (value == null)
             value = getFormatOption(vi, InputControl.FORMAT_NULL, 
InputControl.FORMAT_NULL_ATTRIBUTE);
         // Convert to String
-        String s = StringUtils.toString(value, StringUtils.EMPTY);
-        if (hasFormatOption(vi, "noencode"))
-            return s;
-        // Encode Html
-        return escapeHtml(s);
+        return StringUtils.toString(value, StringUtils.EMPTY);
     }
 
     /**
@@ -818,28 +832,6 @@ public abstract class InputControl
         return null; 
     }
 
-    /**
-     * Returns the value formated as a string
-     * This is a shortcut for formatString(vi.getValue(), vi)
-     * Derived classes may override formatString
-     
-    protected final String formatValue(ValueInfo vi)
-    {
-        // boolean hasError = ((vi instanceof InputInfo) && 
!((InputInfo)vi).isValid()); 
-        return formatValue(vi.getValue(true), vi);
-    }
-    */
-
-    /**
-     * Escapes a String for html
-     * @param text the text to escape
-     * @return the escaped html String
-     */
-    protected String escapeHtml(String text)
-    {
-        return HtmlUtils.getInstance().escapeText(text);
-    }
-
     /**
      * checks if a particular formating option has been specified.
      * 
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
index af084acc..acac4d34 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
@@ -254,11 +254,6 @@ public class TextInputControl extends InputControl
 
     @Override
     protected String formatValue(Object value, ValueInfo vi)
-    {
-        return formatValue(value, vi, true);
-    }
-
-    protected String formatValue(Object value, ValueInfo vi, boolean 
escapeHTML)
     {
         // Lookup and return text
         Options options = vi.getOptions();
@@ -282,13 +277,7 @@ public class TextInputControl extends InputControl
         DataType dataType = getValueType(value, (column != null) ? 
column.getDataType() : DataType.UNKNOWN);
         if (dataType.isText() || dataType == DataType.UNKNOWN)
         { // String
-            String s = String.valueOf(value);
-            if (hasFormatOption(vi, "noencode"))
-                return s;
-            // Encoded text
-            if (escapeHTML)
-                s = escapeHtml(s);
-            return s;
+            return String.valueOf(value);
         }
         if (dataType == DataType.INTEGER || dataType == DataType.AUTOINC)
         { // Integer
@@ -314,10 +303,6 @@ public class TextInputControl extends InputControl
          *  }
          */
         // Convert to String
-        if (escapeHTML)
-        {
-            return escapeHtml(String.valueOf(value));
-        }
         return String.valueOf(value);
     }
 
@@ -347,7 +332,7 @@ public class TextInputControl extends InputControl
         if (options != null && !options.isEmpty())
             return value;
         // Format
-        return formatValue(value, ii, false);
+        return formatValue(value, ii);
     }
 
     // ------- render -------

Reply via email to