FAQ
Author: lofwyr
Date: Wed Jun 15 12:15:45 2016
New Revision: 1748568

URL: http://svn.apache.org/viewvc?rev=1748568&view=rev
Log:
TOBAGO-1567: Clean up: consolidate getFormattedValue() and other methods.
* more robust type detection (there was a problem with parameters in EL)
* QUnit Tests

Modified:
     myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIDate.java
     myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/RendererBase.java
     myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
     myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java
     myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.test.js
     myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml
     myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIDate.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIDate.java?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIDate.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIDate.java Wed Jun 15 12:15:45 2016
@@ -35,7 +35,7 @@ public abstract class AbstractUIDate ext
    public String getPattern() {
      String pattern = null;
      final FacesContext facesContext = getFacesContext();
- final Converter converter = ComponentUtils.getConverter(facesContext, this);
+ final Converter converter = ComponentUtils.getConverter(facesContext, this, getSubmittedValue());
      if (converter instanceof DateTimeConverter) {
        pattern = DateFormatUtils.findPattern((DateTimeConverter) converter);
      }

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/RendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/RendererBase.java?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/RendererBase.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/RendererBase.java Wed Jun 15 12:15:45 2016
@@ -79,7 +79,7 @@ public class RendererBase extends Render
      if (!(submittedValue instanceof String)) {
        return submittedValue;
      }
- final Converter converter = ComponentUtils.getConverter(context, component);
+ final Converter converter = ComponentUtils.getConverter(context, component, submittedValue);
      if (converter != null) {
        return converter.getAsObject(context, component, (String) submittedValue);
      } else {

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java Wed Jun 15 12:15:45 2016
@@ -821,7 +821,8 @@ public final class ComponentUtils {
      return map != null ? map.get(name) : null;
    }

- public static Converter getConverter(final FacesContext facesContext, final UIComponent component) {
+ public static Converter getConverter(
+ final FacesContext facesContext, final UIComponent component, final Object value) {

      Converter converter = null;
      if (component instanceof ValueHolder) {
@@ -831,7 +832,16 @@ public final class ComponentUtils {
      if (converter == null) {
        final ValueExpression valueExpression = component.getValueExpression("value");
        if (valueExpression != null) {
- final Class converterType = valueExpression.getType(facesContext.getELContext());
+ Class converterType = null;
+ if (value != null) {
+ converterType = value.getClass();
+ } else {
+ try {
+ converterType = valueExpression.getType(facesContext.getELContext());
+ } catch (Exception e) {
+ // ignore, seems not to be possible, when EL is a funktion like #{bean.getName(item.id)}
+ }
+ }
          if (converterType != null && converterType != String.class && converterType != Object.class) {
            converter = facesContext.getApplication().createConverter(converterType);
          }
@@ -849,7 +859,7 @@ public final class ComponentUtils {
        return "";
      }

- final Converter converter = ComponentUtils.getConverter(facesContext, component);
+ final Converter converter = ComponentUtils.getConverter(facesContext, component, currentValue);
      if (converter != null) {
        return converter.getAsString(facesContext, component, currentValue);
      } else {

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/CurrentValueController.java Wed Jun 15 12:15:45 2016
@@ -6,32 +6,60 @@ import org.slf4j.LoggerFactory;
  import javax.inject.Named;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Currency;
  import java.util.Date;
+import java.util.GregorianCalendar;

  @Named
  public class CurrentValueController {

    private static final Logger LOG = LoggerFactory.getLogger(CurrentValueController.class);

+ public String string;
    public Date date;
+ public Currency currency;

    public CurrentValueController() {
+
+ string = "simple string";
+
      try {
        this.date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1969-07-24 16:50:35");
      } catch (ParseException e) {
        LOG.error("", e);
      }
+
+ currency = Currency.getInstance("TTD");
+ }
+
+ public String toUpperCase(final String text) {
+ return text != null ? text.toUpperCase() : null;
+ }
+
+ public Date plus50(final Date base) {
+ if (date == null) {
+ return null;
+ }
+ final GregorianCalendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.add(Calendar.YEAR, 50);
+ return calendar.getTime();
+ }
+
+ public Currency toCurrency(String string) {
+ return Currency.getInstance(string);
    }

    public String getString() {
- return "simple string";
+ return string;
    }

    public Date getDate() {
      return date;
    }

- public String toUpperCase(final String text) {
- return text != null ? text.toUpperCase() : null;
+ public Currency getCurrency() {
+ return currency;
    }
  }

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.test.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.test.js?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.test.js (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.test.js Wed Jun 15 12:15:45 2016
@@ -19,18 +19,31 @@ function jQueryFrame(expression) {
    return document.getElementById("page:testframe").contentWindow.jQuery(expression);
  }

+function test(assert, idSuffix, expectedText) {
+ var $out = jQueryFrame("#page\\:" + idSuffix);
+ assert.equal($out.text().trim(), expectedText);
+}
+
  QUnit.test("formatted values: out string", function (assert) {
- var $out = jQueryFrame("#page\\:outString");
- assert.equal($out.text().trim(), "simple string");
+ test(assert, "outString", "simple string");
+});
+
+QUnit.test("formatted values: out string from method", function (assert) {
+ test(assert, "outStringFromMethod", "HELLO WORLD!");
  });

  QUnit.test("formatted values: out date", function (assert) {
- var $out = jQueryFrame("#page\\:outDate");
- assert.equal($out.text().trim(), "24.07.1969");
+ test(assert, "outDate", "24.07.1969");
+});
+
+QUnit.test("formatted values: out date from method", function (assert) {
+ test(assert, "outDateFromMethod", "24.07.2019");
+});
+
+QUnit.test("formatted values: out currency", function (assert) {
+ test(assert, "outCurrency", "TTD");
  });

-// TODO: we may need not trim() below, if we have a labelLayout="skip" freature to skip the sourounging container.
-QUnit.test("formatted values: out method", function (assert) {
- var $out = jQueryFrame("#page\\:outMethod");
- assert.equal($out.text().trim(), "HELLO WORLD!");
+QUnit.test("formatted values: out currency from method", function (assert) {
+ test(assert, "outCurrencyFromMethod", "ISK");
  });

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml Wed Jun 15 12:15:45 2016
@@ -19,14 +19,20 @@

  <ui:composition template="/main.xhtml"
                  xmlns:tc="http://myfaces.apache.org/tobago/component"
- xmlns:ui="http://java.sun.com/jsf/facelets">
+ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">

    <ui:param name="title" value="Test: RendererBase.getCurrentValue()"/>

    <tc:out id="outString" labelLayout="none" value="#{currentValueController.string}"/>

+ <tc:out id="outStringFromMethod" labelLayout="none" value="#{currentValueController.toUpperCase('Hello world!')}"/>
+
    <tc:out id="outDate" labelLayout="none" value="#{currentValueController.date}"/>

- <tc:out id="outMethod" labelLayout="none" value="#{currentValueController.toUpperCase('Hello world!')}"/>
+ <tc:out id="outDateFromMethod" labelLayout="none" value="#{currentValueController.plus50(currentValueController.date)}"/>
+
+ <tc:out id="outCurrency" labelLayout="none" value="#{currentValueController.currency}"/>
+
+ <tc:out id="outCurrencyFromMethod" labelLayout="none" value="#{currentValueController.toCurrency('ISK')}"/>

  </ui:composition>

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java?rev=1748568&r1=1748567&r2=1748568&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/test/java/org/apache/myfaces/tobago/example/demo/QUnitTests.java Wed Jun 15 12:15:45 2016
@@ -106,7 +106,7 @@ public class QUnitTests {

    @Test
    public void allPages() {
-
+ LOG.warn("Not implemented yet!");
    }

    @Test
@@ -126,4 +126,10 @@ public class QUnitTests {
      String page = "content/40-test/1040-date/date.xhtml";
      checkResults(page);
    }
+
+ @Test
+ public void rendererBase_getCurrentValue() {
+ String page = "content/40-test/50000-java/10-rendererBase-getCurrentValue/rendererBase-getCurrentValue.xhtml";
+ checkResults(page);
+ }
  }

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommits @
categoriesmyfaces
postedJun 15, '16 at 12:15p
activeJun 15, '16 at 12:15p
posts1
users1
websitemyfaces.apache.org

1 user in discussion

Lofwyr: 1 post

People

Translate

site design / logo © 2018 Grokbase