You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by pa...@apache.org on 2018/04/13 12:05:15 UTC
svn commit: r1829063 - in /myfaces/core/branches/2.3.x/impl/src:
main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java
Author: paulnicolucci
Date: Fri Apr 13 12:05:15 2018
New Revision: 1829063
URL: http://svn.apache.org/viewvc?rev=1829063&view=rev
Log:
MYFACES-4222: ui:repeat update to work when step is updated
Modified:
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java?rev=1829063&r1=1829062&r2=1829063&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java Fri Apr 13 12:05:15 2018
@@ -943,6 +943,7 @@ public class UIRepeat extends UIComponen
throw new FacesException("on empty models, end cannot be greater than begin " +
"when the step is negative");
}
+ setStep(step);
}
else if (end >= 0)
{
@@ -980,7 +981,7 @@ public class UIRepeat extends UIComponen
if (!_emptyModel && (begin >= 0) && (begin > end))
{
throw new FacesException("begin cannot be greater " +
- "end");
+ "than end");
}
if (!_emptyModel && (size > -1) && (offset > end))
{
@@ -1005,7 +1006,6 @@ public class UIRepeat extends UIComponen
"to zero");
}
- setStep(step);
_end = end;
}
Modified: myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java?rev=1829063&r1=1829062&r2=1829063&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/view/facelets/tag/ui/RepeatTestCase.java Fri Apr 13 12:05:15 2018
@@ -882,4 +882,195 @@ public class RepeatTestCase extends Face
Assert.assertFalse(content.contains("Hello "));
}
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testInvokeModelStep_1() throws IOException
+ {
+ final List<String> values = Arrays.asList("User #0", "User #1", "User #2", "User #3", "User #4", "User #5", "User #6", "User #7", "User #8", "User #9", "User #10");
+ IterationBean iterationBean = new IterationBean(1, 7, 1, values);
+ facesContext.getExternalContext().getRequestMap().put("iterationBean", iterationBean);
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "ui_repeat_model_step.xhtml");
+
+ UIRepeat repeat = (UIRepeat) root.findComponent("form:repeat");
+ Assert.assertNotNull(repeat);
+
+ FastWriter fw = new FastWriter();
+ ResponseWriter rw = facesContext.getResponseWriter();
+ rw = rw.cloneWithWriter(fw);
+ facesContext.setResponseWriter(rw);
+
+ repeat.encodeAll(facesContext);
+
+ String content = fw.toString();
+
+ Assert.assertTrue(content.contains("User #1"));
+ Assert.assertTrue(content.contains("User #2"));
+ Assert.assertTrue(content.contains("User #3"));
+ Assert.assertTrue(content.contains("User #4"));
+ Assert.assertTrue(content.contains("User #5"));
+ Assert.assertTrue(content.contains("User #6"));
+ Assert.assertTrue(content.contains("User #7"));
+ Assert.assertFalse(content.contains("User #0"));
+ Assert.assertFalse(content.contains("User #8"));
+ Assert.assertFalse(content.contains("User #9"));
+ Assert.assertFalse(content.contains("User #10"));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testInvokeModelStep_2() throws IOException
+ {
+ final List<String> values = Arrays.asList("User #0", "User #1", "User #2", "User #3", "User #4", "User #5", "User #6", "User #7", "User #8", "User #9", "User #10");
+ IterationBean iterationBean = new IterationBean(1, 7, 2, values);
+ facesContext.getExternalContext().getRequestMap().put("iterationBean", iterationBean);
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "ui_repeat_model_step.xhtml");
+
+ UIRepeat repeat = (UIRepeat) root.findComponent("form:repeat");
+ Assert.assertNotNull(repeat);
+
+ FastWriter fw = new FastWriter();
+ ResponseWriter rw = facesContext.getResponseWriter();
+ rw = rw.cloneWithWriter(fw);
+ facesContext.setResponseWriter(rw);
+
+ repeat.encodeAll(facesContext);
+
+ String content = fw.toString();
+
+ Assert.assertTrue(content.contains("User #1"));
+ Assert.assertTrue(content.contains("User #3"));
+ Assert.assertTrue(content.contains("User #5"));
+ Assert.assertTrue(content.contains("User #7"));
+ Assert.assertFalse(content.contains("User #0"));
+ Assert.assertFalse(content.contains("User #2"));
+ Assert.assertFalse(content.contains("User #4"));
+ Assert.assertFalse(content.contains("User #6"));
+ Assert.assertFalse(content.contains("User #8"));
+ Assert.assertFalse(content.contains("User #9"));
+ Assert.assertFalse(content.contains("User #10"));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testInvokeModelStep_3() throws IOException
+ {
+ final List<String> values = Arrays.asList("User #0", "User #1", "User #2", "User #3", "User #4", "User #5", "User #6", "User #7", "User #8", "User #9", "User #10");
+ IterationBean iterationBean = new IterationBean(2, 7, 3, values);
+ facesContext.getExternalContext().getRequestMap().put("iterationBean", iterationBean);
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "ui_repeat_model_step.xhtml");
+
+ UIRepeat repeat = (UIRepeat) root.findComponent("form:repeat");
+ Assert.assertNotNull(repeat);
+
+ FastWriter fw = new FastWriter();
+ ResponseWriter rw = facesContext.getResponseWriter();
+ rw = rw.cloneWithWriter(fw);
+ facesContext.setResponseWriter(rw);
+
+ repeat.encodeAll(facesContext);
+
+ String content = fw.toString();
+
+ Assert.assertTrue(content.contains("User #2"));
+ Assert.assertTrue(content.contains("User #5"));
+ Assert.assertFalse(content.contains("User #0"));
+ Assert.assertFalse(content.contains("User #1"));
+ Assert.assertFalse(content.contains("User #3"));
+ Assert.assertFalse(content.contains("User #4"));
+ Assert.assertFalse(content.contains("User #6"));
+ Assert.assertFalse(content.contains("User #7"));
+ Assert.assertFalse(content.contains("User #8"));
+ Assert.assertFalse(content.contains("User #9"));
+ Assert.assertFalse(content.contains("User #10"));
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testInvokeModelChangeStep_3() throws IOException
+ {
+ final List<String> values = Arrays.asList("User #0", "User #1", "User #2", "User #3", "User #4", "User #5", "User #6", "User #7", "User #8", "User #9", "User #10");
+ IterationBean iterationBean = new IterationBean(2, 7, 3, values);
+ facesContext.getExternalContext().getRequestMap().put("iterationBean", iterationBean);
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "ui_repeat_model_step.xhtml");
+
+ UIRepeat repeat = (UIRepeat) root.findComponent("form:repeat");
+ Assert.assertNotNull(repeat);
+
+ FastWriter fw = new FastWriter();
+ ResponseWriter rw = facesContext.getResponseWriter();
+ rw = rw.cloneWithWriter(fw);
+ facesContext.setResponseWriter(rw);
+
+ repeat.encodeAll(facesContext);
+
+ String content = fw.toString();
+
+ Assert.assertTrue(content.contains("User #2"));
+ Assert.assertTrue(content.contains("User #5"));
+
+ Assert.assertFalse(content.contains("User #0"));
+ Assert.assertFalse(content.contains("User #1"));
+ Assert.assertFalse(content.contains("User #3"));
+ Assert.assertFalse(content.contains("User #4"));
+ Assert.assertFalse(content.contains("User #6"));
+ Assert.assertFalse(content.contains("User #7"));
+ Assert.assertFalse(content.contains("User #8"));
+ Assert.assertFalse(content.contains("User #9"));
+ Assert.assertFalse(content.contains("User #10"));
+
+ iterationBean.setStep(2);
+ fw = new FastWriter();
+ rw = facesContext.getResponseWriter();
+ rw = rw.cloneWithWriter(fw);
+ facesContext.setResponseWriter(rw);
+
+ repeat.encodeAll(facesContext);
+ content = fw.toString();
+
+ Assert.assertTrue(content.contains("User #2"));
+ Assert.assertTrue(content.contains("User #4"));
+ Assert.assertTrue(content.contains("User #6"));
+
+ Assert.assertFalse(content.contains("User #0"));
+ Assert.assertFalse(content.contains("User #1"));
+ Assert.assertFalse(content.contains("User #3"));
+ Assert.assertFalse(content.contains("User #5"));
+ Assert.assertFalse(content.contains("User #7"));
+ Assert.assertFalse(content.contains("User #8"));
+ Assert.assertFalse(content.contains("User #9"));
+ Assert.assertFalse(content.contains("User #10"));
+ }
+
+ public class IterationBean {
+ private int begin;
+ private int end;
+ private int step;
+ private List<String> values;
+ public IterationBean(int begin, int end, int step, List<String> values) {
+ this.begin = begin;
+ this.end = end;
+ this.step = step;
+ this.values = values;
+ }
+ public int getBegin() {
+ return begin;
+ }
+ public int getEnd() {
+ return end;
+ }
+ public int getStep() {
+ return step;
+ }
+ public void setStep(int step) {
+ this.step = step;
+ }
+ public List<String> getValues() {
+ return values;
+ }
+ }
}