ICEfaces
  1. ICEfaces
  2. ICE-8385

Support for String global converters

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.0.0.GA, 3.1
    • Fix Version/s: EE-3.0.0.GA_P01, 3.2
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      N/A

      Description

      Currently DomBasicRenderer.java class does not support detection of global String converters in an application. It is designed in such way that it always returns a String value before detecting a global custom String converter. (line 205@ DomBasicRenderer.java)

      201 if (converter == null) {
      202 if (currentValue == null) {
      203 return "";
      204 } else if (currentValue instanceof String) {
      205 return (String) currentValue;
      206 }
      207
      208 converter = getConverterForClass(currentValue.getClass());
      209
      210 if (converter == null) {
      211 return currentValue.toString();
      212 }
      213 }

      a fix below is proposed by one of our clients to allow detection of such converters in application:

      ...
      if (converter == null) {
      if (currentValue == null) {
      return "";
      } else if (currentValue instanceof String) {

      // Addition for global String converter detection.

      converter = getConverterForClass(currentValue.getClass());
      if (converter == null) {
      return (String) currentValue;
      } else {
      return converter.getAsString(facesContext, uiComponent, currentValue);
      }
      }

      converter = getConverterForClass(currentValue.getClass());

      if (converter == null) {
      return currentValue.toString();
      }
      }
      ...

      We need to review proposed fix and determine if it can be safely incorporated into our code.

        Activity

        Evgheni Sadovoi created issue -
        Evgheni Sadovoi made changes -
        Field Original Value New Value
        Salesforce Case [5007000000NGgTm]
        Evgheni Sadovoi made changes -
        Description Currently DomBasicRenderer.java class does not support multiple spaces in a String:

        201 if (converter == null) {
        202 if (currentValue == null) {
        203 return "";
        204 } else if (currentValue instanceof String) {
        205 return (String) currentValue;
        206 }
        207
        208 converter = getConverterForClass(currentValue.getClass());
        209
        210 if (converter == null) {
        211 return currentValue.toString();
        212 }
        213 }

        a fix below is proposed to fix it:

        ...
        if (converter == null) {
        if (currentValue == null) {
        return "";
        } else if (currentValue instanceof String) {
        // Additional overriding for ATOM String converter.
        // TODO : Remove it later.
        converter = getConverterForClass(currentValue.getClass());
        if (converter == null) {
        return (String) currentValue;
        } else {
        return converter.getAsString(facesContext, uiComponent, currentValue);
        }
        }

        converter = getConverterForClass(currentValue.getClass());

        if (converter == null) {
        return currentValue.toString();
        }
        }
        ...

        NOTE: This JIRA is under construction. I will update it once I get more feedback from a client.
        Currently DomBasicRenderer.java class does not support detection of global String converters in an application. It is designed in such way that it is always returns String value before detecting a global custom String converter. (line 205@ . DomBasicRenderer.java)

        201 if (converter == null) {
        202 if (currentValue == null) {
        203 return "";
        204 } else if (currentValue instanceof String) {
        205 return (String) currentValue;
        206 }
        207
        208 converter = getConverterForClass(currentValue.getClass());
        209
        210 if (converter == null) {
        211 return currentValue.toString();
        212 }
        213 }

        a fix below is proposed to allow detection of such converters in application:

        ...
        if (converter == null) {
        if (currentValue == null) {
        return "";
        } else if (currentValue instanceof String) {
        // Additional overriding for ATOM String converter.
        // TODO : Remove it later.
        converter = getConverterForClass(currentValue.getClass());
        if (converter == null) {
        return (String) currentValue;
        } else {
        return converter.getAsString(facesContext, uiComponent, currentValue);
        }
        }

        converter = getConverterForClass(currentValue.getClass());

        if (converter == null) {
        return currentValue.toString();
        }
        }
        ...

        We need to review proposed fix and determine if it can be safely incorporated into our code.
        Evgheni Sadovoi made changes -
        Description Currently DomBasicRenderer.java class does not support detection of global String converters in an application. It is designed in such way that it is always returns String value before detecting a global custom String converter. (line 205@ . DomBasicRenderer.java)

        201 if (converter == null) {
        202 if (currentValue == null) {
        203 return "";
        204 } else if (currentValue instanceof String) {
        205 return (String) currentValue;
        206 }
        207
        208 converter = getConverterForClass(currentValue.getClass());
        209
        210 if (converter == null) {
        211 return currentValue.toString();
        212 }
        213 }

        a fix below is proposed to allow detection of such converters in application:

        ...
        if (converter == null) {
        if (currentValue == null) {
        return "";
        } else if (currentValue instanceof String) {
        // Additional overriding for ATOM String converter.
        // TODO : Remove it later.
        converter = getConverterForClass(currentValue.getClass());
        if (converter == null) {
        return (String) currentValue;
        } else {
        return converter.getAsString(facesContext, uiComponent, currentValue);
        }
        }

        converter = getConverterForClass(currentValue.getClass());

        if (converter == null) {
        return currentValue.toString();
        }
        }
        ...

        We need to review proposed fix and determine if it can be safely incorporated into our code.
        Currently DomBasicRenderer.java class does not support detection of global String converters in an application. It is designed in such way that it always returns a String value before detecting a global custom String converter. (line 205@ DomBasicRenderer.java)

        201 if (converter == null) {
        202 if (currentValue == null) {
        203 return "";
        204 } else if (currentValue instanceof String) {
        205 return (String) currentValue;
        206 }
        207
        208 converter = getConverterForClass(currentValue.getClass());
        209
        210 if (converter == null) {
        211 return currentValue.toString();
        212 }
        213 }

        a fix below is proposed by one of our clients to allow detection of such converters in application:

        ...
        if (converter == null) {
        if (currentValue == null) {
        return "";
        } else if (currentValue instanceof String) {

        // Addition for global String converter detection.

        converter = getConverterForClass(currentValue.getClass());
        if (converter == null) {
        return (String) currentValue;
        } else {
        return converter.getAsString(facesContext, uiComponent, currentValue);
        }
        }

        converter = getConverterForClass(currentValue.getClass());

        if (converter == null) {
        return currentValue.toString();
        }
        }
        ...

        We need to review proposed fix and determine if it can be safely incorporated into our code.
        Evgheni Sadovoi made changes -
        Issue Type Improvement [ 4 ] Bug [ 1 ]
        Ken Fyten made changes -
        Fix Version/s EE-3.0.0.GA_P01 [ 10327 ]
        Fix Version/s 3.2 [ 10338 ]
        Assignee Priority P1
        Affects Version/s 3.1 [ 10312 ]
        Affects Version/s 3.1.0.RC1 [ 10337 ]
        Assignee Deryk Sinotte [ deryk.sinotte ]
        Deryk Sinotte made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Assignee Priority P1 [ 10010 ]

          People

          • Assignee:
            Deryk Sinotte
            Reporter:
            Evgheni Sadovoi
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: