Author: nbelaevski
Date: 2008-11-21 13:33:23 -0500 (Fri, 21 Nov 2008)
New Revision: 11298
Added:
trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueParallelTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSimilarityTest.java
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-parallel.xhtml
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-similarity.xhtml
Modified:
trunk/ui/core/src/main/config/component/queue.xml
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/QueueRenderer.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/AbstractQueueComponentTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/AjaxFormQueuesTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/ImplicitQueuesTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueDiscoveryTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueScriptedTest.java
trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSizeTest.java
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-ajax-form.xhtml
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-discovery-base.xhtml
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-legacy.xhtml
trunk/ui/core/src/test/resources/org/ajax4jsf/component/simulation.js
Log:
https://jira.jboss.org/jira/browse/RF-4972
Modified: trunk/ui/core/src/main/config/component/queue.xml
===================================================================
--- trunk/ui/core/src/main/config/component/queue.xml 2008-11-21 18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/main/config/component/queue.xml 2008-11-21 18:33:23 UTC (rev 11298)
@@ -24,10 +24,6 @@
<classname>org.ajax4jsf.taglib.html.facelets.QueueHandler</classname>
</taghandler>
-->
- <property>
- <name>enabled</name>
- <classname>java.lang.Boolean</classname>
- </property>
<property>
<name>size</name>
<classname>java.lang.Integer</classname>
@@ -38,10 +34,6 @@
<defaultvalue>""</defaultvalue>
</property>
- <property>
- <name>limitToList</name>
- <classname>java.lang.Boolean</classname>
- </property>
<property >
<name>requestDelay</name>
<classname>java.lang.Integer</classname>
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/QueueRenderer.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/QueueRenderer.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/QueueRenderer.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -34,6 +34,7 @@
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.ajax4jsf.renderkit.html.scripts.QueueScript;
import org.ajax4jsf.resource.InternetResource;
+import org.richfaces.component.util.MessageUtil;
/**
* @author Nick Belaevski
@@ -41,6 +42,10 @@
*/
public class QueueRenderer extends HeaderResourcesRendererBase {
+ private static final String SIZE_EXCEEDED_BEHAVIOR = "sizeExceededBehavior";
+
+ private static final String SIZE = "size";
+
private static final String QUEUE_ONSUBMIT_ATTRIBUTE = "queueonsubmit";
private static final String QUEUE_ONBEFOREDOMUPDATE_ATTRIBUTE =
"queueonbeforedomupdate";
@@ -49,11 +54,14 @@
private static final String QUEUE_ONERROR_ATTRIBUTE = "queueonerror";
- private static final String[] QUEUE_ATTRIBUTES = new String[] {
- "size",
- "sizeExceededBehavior"
- };
+ public static final String BEHAVIOR_DROP_NEXT = "dropNext";
+
+ public static final String BEHAVIOR_DROP_NEW = "dropNew";
+ public static final String BEHAVIOR_FIRE_NEXT = "fireNext";
+
+ public static final String BEHAVIOR_FIRE_NEW = "fireNew";
+
private static final String[] REQUEST_ATTRIBUTES = new String[] {
"requestDelay",
"timeout",
@@ -99,18 +107,32 @@
return true;
}
+ private boolean isValidBehaviorValue(String value) {
+ return BEHAVIOR_DROP_NEW.equals(value) || BEHAVIOR_DROP_NEXT.equals(value) ||
+ BEHAVIOR_FIRE_NEW.equals(value) || BEHAVIOR_FIRE_NEXT.equals(value);
+ }
+
private QueueRendererData createRendererData(FacesContext context, UIQueue queue) {
Map<String, Object> attributes = queue.getAttributes();
QueueRendererData data = new QueueRendererData();
- for (String attributeName : QUEUE_ATTRIBUTES) {
- Object value = attributes.get(attributeName);
- if (isNotEmpty(value)) {
- data.addQueueAttribute(attributeName, value);
+ Integer size = (Integer) attributes.get(SIZE);
+ if (size != null) {
+ data.addQueueAttribute(SIZE, size);
+ }
+
+ String sizeExceededBehavior = (String) attributes.get(SIZE_EXCEEDED_BEHAVIOR);
+ if (isNotEmpty(sizeExceededBehavior)) {
+ if (!isValidBehaviorValue(sizeExceededBehavior)) {
+ throw new IllegalArgumentException(sizeExceededBehavior + " value of " +
+ SIZE_EXCEEDED_BEHAVIOR + " attribute is not a legal one for component: " +
+ MessageUtil.getLabel(context, queue));
}
+
+ data.addQueueAttribute(SIZE_EXCEEDED_BEHAVIOR, sizeExceededBehavior);
}
-
+
for (String attributeName : REQUEST_ATTRIBUTES) {
Object value = attributes.get(attributeName);
if (isNotEmpty(value)) {
Modified:
trunk/ui/core/src/test/java/org/ajax4jsf/component/AbstractQueueComponentTest.java
===================================================================
---
trunk/ui/core/src/test/java/org/ajax4jsf/component/AbstractQueueComponentTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++
trunk/ui/core/src/test/java/org/ajax4jsf/component/AbstractQueueComponentTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -42,9 +42,7 @@
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
-import org.ajax4jsf.javascript.JSLiteral;
import org.ajax4jsf.javascript.JSReference;
-import org.ajax4jsf.javascript.ScriptUtils;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.renderkit.UserResourceRenderer2;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
@@ -105,7 +103,8 @@
JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(component,
facesContext);
Map<String, Object> options = AjaxRendererUtils.buildEventOptions(facesContext,
component);
options.put("requestDelay", new
JSReference("options.requestDelay"));
- options.put("requestId", new JSReference("options.requestId ||
'" + component.getClientId(facesContext) + "'"));
+ options.put("similarityGroupingId", new
JSReference("options.similarityGroupingId || '" +
+ component.getClientId(facesContext) + "'"));
options.put("data", new JSReference("data"));
options.put("requestTime", new
JSReference("options.requestTime"));
options.put("timeout", new JSReference("options.timeout"));
@@ -177,8 +176,8 @@
public ParametersBuilder requestDelay(double value) {
return new ParametersBuilder(this.parameters).put("requestDelay", value);
}
- public ParametersBuilder requestId(Object id) {
- return new ParametersBuilder(this.parameters).put("requestId", id);
+ public ParametersBuilder similarityGroupingId(Object id) {
+ return new ParametersBuilder(this.parameters).put("similarityGroupingId",
id);
}
public ParametersBuilder requestTime(double value) {
return new ParametersBuilder(this.parameters).put("requestTime", value);
@@ -319,6 +318,17 @@
page.executeJavaScript(function.toScript());
}
+ private String buildClickExpression(String id) {
+ return "document.getElementById('" + id + "').click()";
+ }
+
+ protected void clickOnTime(int time, String id) {
+ JSFunction function = new JSFunction("simulationContext.executeOnTime",
+ time, new JSFunctionDefinition().addToBody(buildClickExpression(id)));
+
+ page.executeJavaScript(function.toScript());
+ }
+
protected String getRootContextPath() {
return this.getClass().getPackage().getName().replace('.', '/');
}
@@ -415,6 +425,10 @@
return this.page;
}
+ protected void click(String id) {
+ executeJavaScript(buildClickExpression(id));
+ }
+
protected Object executeJavaScript(String expression) {
return page.executeJavaScript(expression).getJavaScriptResult();
}
Modified: trunk/ui/core/src/test/java/org/ajax4jsf/component/AjaxFormQueuesTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/AjaxFormQueuesTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/AjaxFormQueuesTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -40,7 +40,7 @@
protected void checkForm(String formName) throws Exception {
renderView("/queue-ajax-form.xhtml");
- executeJavaScript("$('" + formName + ":link').click()");
+ click(formName + ":link");
executeTimer();
Object resultObject = executeJavaScript("window.testResults." + formName);
Modified: trunk/ui/core/src/test/java/org/ajax4jsf/component/ImplicitQueuesTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/ImplicitQueuesTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/ImplicitQueuesTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -63,9 +63,9 @@
public void testLegacyQueuesRequestDelay() throws Exception {
renderView("/queue-legacy.xhtml");
- executeOnTime(0, "$('form:buttonDelayed').click()");
- executeOnTime(500, "$('form:buttonDelayed').click()");
- executeOnTime(750, "$('form:buttonDelayed').click()");
+ clickOnTime(0, "form:buttonDelayed");
+ clickOnTime(500, "form:buttonDelayed");
+ clickOnTime(750, "form:buttonDelayed");
TestsResult result = getTestsResult();
List<RequestData> dataList = result.getDataList();
@@ -73,7 +73,7 @@
//request time set to 5000 in .xhtml file
RequestData data = dataList.get(0);
- checkRequestData(data, null, 1750, 6750, false);
+ checkRequestData(data, "form:buttonDelayed", 1750, 6750, false);
assertEquals(6750d, result.getCurrentTime());
}
@@ -81,9 +81,9 @@
public void testLegacyQueuesIgnoreDupResponces() throws Exception {
renderView("/queue-legacy.xhtml");
- executeOnTime(0, "$('form:buttonIgnoreDupResponces').click()");
- executeOnTime(500, "$('form:buttonIgnoreDupResponces').click()");
- executeOnTime(750, "$('form:buttonIgnoreDupResponces').click()");
+ clickOnTime(0, "form:buttonIgnoreDupResponces");
+ clickOnTime(500, "form:buttonIgnoreDupResponces");
+ clickOnTime(750, "form:buttonIgnoreDupResponces");
executeTimer();
TestsResult result = getTestsResult();
@@ -91,9 +91,9 @@
assertEquals(3, dataList.size());
//request time set to 5000 in .xhtml file
- checkRequestData(dataList.get(0), null, 0, 5000, false);
- checkRequestData(dataList.get(1), null, 500, 5500, false);
- checkRequestData(dataList.get(2), null, 750, 5750, false);
+ checkRequestData(dataList.get(0), "form:buttonIgnoreDupResponces", 0, 5000,
false);
+ checkRequestData(dataList.get(1), "form:buttonIgnoreDupResponces", 500, 5500,
false);
+ checkRequestData(dataList.get(2), "form:buttonIgnoreDupResponces", 750, 5750,
false);
assertEquals(5750d, result.getCurrentTime());
Modified: trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueDiscoveryTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueDiscoveryTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueDiscoveryTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -26,7 +26,6 @@
import org.mozilla.javascript.NativeArray;
-import com.gargoylesoftware.htmlunit.ScriptResult;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
@@ -47,18 +46,14 @@
protected void assertListsEqual(List<String> list1, List<String> list2)
throws Exception {
- System.out.println(list1);
- System.out.println(list2);
- System.out.println("xxx");
- assertEquals(list1, list2);
+ assertEquals(list1 + ":" + list2, list1, list2);
}
protected List<String> getResults(HtmlPage page) {
List<String> result = new ArrayList<String>();
- page.executeJavaScript("Timer.execute()");
- ScriptResult scriptResult = page.executeJavaScript("window.testResult");
- NativeArray array = (NativeArray) scriptResult.getJavaScriptResult();
+ executeJavaScript("Timer.execute()");
+ NativeArray array = (NativeArray) executeJavaScript("window.testResult");
for (int i = 0; i < array.getLength(); i++) {
result.add((String) array.get(i, array));
}
@@ -73,24 +68,24 @@
assertListsEqual(list, getResults(page));
list.add("button");
- page.executeJavaScript("$('form:button').click()");
+ click("form:button");
assertListsEqual(list, getResults(page));
list.add("implicitQueue");
- page.executeJavaScript("$('form:implicitQueue').click()");
+ click("form:implicitQueue");
assertListsEqual(list, getResults(page));
list.add("alternativeQueueButton");
list.add("alt:alternativeQueueButton");
- page.executeJavaScript("$('form:alternativeQueueButton').click()");
+ click("form:alternativeQueueButton");
assertListsEqual(list, getResults(page));
list.add("function");
- page.executeJavaScript("ajaxFunction()");
+ executeJavaScript("ajaxFunction()");
assertListsEqual(list, getResults(page));
list.add("implicitDelayedQueue");
- page.executeJavaScript("$('form2:implicitDelayedQueue').click()");
+ click("form2:implicitDelayedQueue");
assertListsEqual(list, getResults(page));
}
@@ -102,36 +97,36 @@
list.add("alternativeQueueButton");
list.add("alt:alternativeQueueButton");
- page.executeJavaScript("$('form2:alternativeQueueButton').click()");
+ click("form2:alternativeQueueButton");
assertListsEqual(list, getResults(page));
list.add("alternativeQueueButton");
- page.executeJavaScript("$('form:alternativeQueueButton').click()");
+ click("form:alternativeQueueButton");
assertListsEqual(list, getResults(page));
list.add("buttonFormQueue");
- page.executeJavaScript("$('form:button').click()");
+ click("form:button");
assertListsEqual(list, getResults(page));
list.add("implicitQueue");
- page.executeJavaScript("$('form:implicitQueue').click()");
+ click("form:implicitQueue");
assertListsEqual(list, getResults(page));
list.add("alternativeQueue1Button");
list.add("alt1:alternativeQueue1Button");
- page.executeJavaScript("$('form:alternativeQueue1Button').click()");
+ click("form:alternativeQueue1Button");
assertListsEqual(list, getResults(page));
list.add("buttonForm2Queue");
- page.executeJavaScript("$('form2:button').click()");
+ click("form2:button");
assertListsEqual(list, getResults(page));
list.add("implicitDelayedQueue");
- page.executeJavaScript("$('form2:implicitDelayedQueue').click()");
+ click("form2:implicitDelayedQueue");
assertListsEqual(list, getResults(page));
list.add("ajaxFunction");
- page.executeJavaScript("ajaxFunction()");
+ executeJavaScript("ajaxFunction()");
assertListsEqual(list, getResults(page));
}
@@ -142,35 +137,35 @@
assertListsEqual(list, getResults(page));
list.add("buttonFormQueue");
- page.executeJavaScript("$('form:button').click()");
+ click("form:button");
assertListsEqual(list, getResults(page));
list.add("implicitDelayedQueue");
- page.executeJavaScript("$('form:implicitDelayedQueue').click()");
+ click("form:implicitDelayedQueue");
assertListsEqual(list, getResults(page));
list.add("implicitQueue");
- page.executeJavaScript("$('form2:implicitQueue').click()");
+ click("form2:implicitQueue");
assertListsEqual(list, getResults(page));
list.add("viewQueue:viewQueueButton");
- page.executeJavaScript("$('form:viewQueueButton').click()");
+ click("form:viewQueueButton");
assertListsEqual(list, getResults(page));
list.add("form2Button");
- page.executeJavaScript("$('form2:button').click()");
+ click("form2:button");
assertListsEqual(list, getResults(page));
list.add("anotherImplicitQueue");
- page.executeJavaScript("$('form3:anotherImplicitQueue').click()");
+ click("form3:anotherImplicitQueue");
assertListsEqual(list, getResults(page));
list.add("form3Button");
- page.executeJavaScript("$('form3:button').click()");
+ click("form3:button");
assertListsEqual(list, getResults(page));
list.add("functionFormQueue");
- page.executeJavaScript("ajaxFunction()");
+ executeJavaScript("ajaxFunction()");
assertListsEqual(list, getResults(page));
}
@@ -181,34 +176,34 @@
assertListsEqual(list, getResults(page));
list.add("button");
- page.executeJavaScript("$('form:button').click()");
+ click("form:button");
assertListsEqual(list, getResults(page));
list.add("formQueueButton");
- page.executeJavaScript("$('form:formQueueButton').click()");
+ click("form:formQueueButton");
assertListsEqual(list, getResults(page));
list.add("button2");
list.add("form2-global:button2");
- page.executeJavaScript("$('form2:button2').click()");
+ click("form2:button2");
assertListsEqual(list, getResults(page));
list.add("formQueueButton2");
list.add("form2-queue:formQueueButton2");
- page.executeJavaScript("$('form2:formQueueButton2').click()");
+ click("form2:formQueueButton2");
assertListsEqual(list, getResults(page));
list.add("global");
- page.executeJavaScript("$('form3:global').click()");
+ click("form3:global");
assertListsEqual(list, getResults(page));
list.add("globalNamed");
- page.executeJavaScript("$('form3:globalNamed').click()");
+ click("form3:globalNamed");
assertListsEqual(list, getResults(page));
list.add("globalNamedX");
list.add("viewNamedX:globalNamedX");
- page.executeJavaScript("$('form3:globalNamedX').click()");
+ click("form3:globalNamedX");
assertListsEqual(list, getResults(page));
}
Added: trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueParallelTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueParallelTest.java
(rev 0)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueParallelTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -0,0 +1,47 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.component;
+
+/**
+ * @author Nick Belaevski
+ * @since 3.3.0
+ */
+
+public class QueueParallelTest extends AbstractQueueComponentTest {
+
+ /**
+ * @param name
+ */
+ public QueueParallelTest(String name) {
+ super(name);
+ }
+
+ public void testParallel() throws Exception {
+ renderView("/queue-parallel.xhtml");
+
+ clickOnTime(0, "form:asyncButton");
+ clickOnTime(0, "form:asyncButton1");
+ clickOnTime(0, "form:asyncButton2");
+
+
+ }
+}
Modified: trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueScriptedTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueScriptedTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueScriptedTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -87,8 +87,8 @@
eventsQueue("queueTimeout").requestDelay(0);
ajax(0, "a", parametersBuilder.requestTime(4999));
- ajax(10000, "b",
parametersBuilder.requestTime(5001).requestId("b"));
- ajax(10000, "c",
parametersBuilder.requestTime(100).requestId("c"));
+ ajax(10000, "b",
parametersBuilder.requestTime(5001).similarityGroupingId("b"));
+ ajax(10000, "c",
parametersBuilder.requestTime(100).similarityGroupingId("c"));
ajax(20000, "d", parametersBuilder.requestTime(10000).timeout(10000));
ajax(40000, "e", parametersBuilder.requestTime(10001).timeout(10000));
@@ -111,10 +111,10 @@
ParametersBuilder parametersBuilder = createAjaxParameters().
eventsQueue("queueIgnoreDupResponses").requestDelay(0).requestTime(1000);
- ajax(0, "a", parametersBuilder.requestId("a"));
- ajax(500, "b", parametersBuilder.requestId("a"));
- ajax(2000, "c", parametersBuilder.requestId("a"));
- ajax(2500, "d",
parametersBuilder.requestId("a").ignoreDupResponses(false));
+ ajax(0, "a", parametersBuilder.similarityGroupingId("a"));
+ ajax(500, "b", parametersBuilder.similarityGroupingId("a"));
+ ajax(2000, "c", parametersBuilder.similarityGroupingId("a"));
+ ajax(2500, "d",
parametersBuilder.similarityGroupingId("a").ignoreDupResponses(false));
TestsResult result = getTestsResult();
List<RequestData> dataList = result.getDataList();
@@ -175,8 +175,8 @@
renderView(VIEW_NAME);
ParametersBuilder queueParameters =
createAjaxParameters().requestTime(500).eventsQueue(QUEUE_NAME);
- ajax(50, "a", queueParameters.requestId(0));
- ajax(250, "b", queueParameters.requestId(1));
+ ajax(50, "a", queueParameters.similarityGroupingId(0));
+ ajax(250, "b", queueParameters.similarityGroupingId(1));
TestsResult result = getTestsResult();
List<RequestData> dataList = result.getDataList();
Added: trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSimilarityTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSimilarityTest.java
(rev 0)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSimilarityTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -0,0 +1,161 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.component;
+
+import java.util.List;
+
+/**
+ * @author Nick Belaevski
+ * @since 3.3.0
+ */
+
+public class QueueSimilarityTest extends AbstractQueueComponentTest {
+
+ /**
+ * @param name
+ */
+ public QueueSimilarityTest(String name) {
+ super(name);
+ }
+
+ private static final String VIEW_NAME = "/queue-similarity.xhtml";
+
+ public void testDefaultBehavior() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "form:button3");
+ clickOnTime(100, "form:button3");
+ clickOnTime(200, "form:button4");
+ clickOnTime(400, "form:button3");
+
+ clickOnTime(4000, "form:button3");
+ clickOnTime(4300, "form:button3");
+ clickOnTime(4500, "form:button3");
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(4, dataList.size());
+
+ checkRequestData(dataList.get(0), "form:button3", 200, 1200, false);
+ checkRequestData(dataList.get(1), "form:button4", 1200, 2200, false);
+ checkRequestData(dataList.get(2), "form:button3", 2200, 3200, false);
+ checkRequestData(dataList.get(3), "form:button3", 5000, 6000, false);
+ }
+
+ public void testGrouping() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "form:button1");
+ clickOnTime(100, "form:button1");
+ clickOnTime(200, "form:button2");
+ clickOnTime(300, "form:button1");
+
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(1, dataList.size());
+
+ checkRequestData(dataList.get(0), "form:button1", 700, 1700, false);
+ }
+
+ public void testSizeExceededGroupingDropNext() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "dropNext:button1");
+ clickOnTime(100, "dropNext:button2");
+ clickOnTime(200, "dropNext:button1");
+ clickOnTime(300, "dropNext:button2");
+ clickOnTime(2000, "dropNext:button1");
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(4, dataList.size());
+
+ checkRequestData(dataList.get(0), "dropNext:button1", 100, 1100, false);
+ checkRequestData(dataList.get(1), "dropNext:button1", 1100, 2100, false);
+ checkRequestData(dataList.get(2), "dropNext:button2", 2100, 3100, false);
+ checkRequestData(dataList.get(3), "dropNext:button1", 3100, 4100, false);
+ }
+
+ public void testSizeExceededGroupingDropNew() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "dropNew:button1");
+ clickOnTime(100, "dropNew:button2");
+ clickOnTime(200, "dropNew:button1");
+ clickOnTime(300, "dropNew:button2");
+ clickOnTime(2000, "dropNew:button1");
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(4, dataList.size());
+ checkRequestData(dataList.get(0), "dropNew:button1", 100, 1100, false);
+ checkRequestData(dataList.get(1), "dropNew:button2", 1100, 2100, false);
+ checkRequestData(dataList.get(2), "dropNew:button1", 2100, 3100, false);
+ checkRequestData(dataList.get(3), "dropNew:button1", 3100, 4100, false);
+ }
+
+ public void testSizeExceededGroupingFireNext() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "fireNext:button1");
+ clickOnTime(100, "fireNext:button2");
+ clickOnTime(200, "fireNext:button1");
+ clickOnTime(300, "fireNext:button2");
+ clickOnTime(2000, "fireNext:button1");
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(5, dataList.size());
+ checkRequestData(dataList.get(0), "fireNext:button1", 100, 1100, false);
+ checkRequestData(dataList.get(1), "fireNext:button2", 300, 1300, false);
+ checkRequestData(dataList.get(2), "fireNext:button1", 1100, 2100, false);
+ checkRequestData(dataList.get(3), "fireNext:button2", 2100, 3100, false);
+ checkRequestData(dataList.get(4), "fireNext:button1", 3100, 4100, false);
+ }
+
+ public void testSizeExceededGroupingFireNew() throws Exception {
+ renderView(VIEW_NAME);
+
+ clickOnTime(0, "fireNew:button1");
+ clickOnTime(100, "fireNew:button2");
+ clickOnTime(200, "fireNew:button1");
+ clickOnTime(300, "fireNew:button2");
+ clickOnTime(2000, "fireNew:button1");
+
+ TestsResult testsResult = getTestsResult();
+ List<RequestData> dataList = testsResult.getDataList();
+
+ assertEquals(5, dataList.size());
+ checkRequestData(dataList.get(0), "fireNew:button1", 100, 1100, false);
+ checkRequestData(dataList.get(1), "fireNew:button2", 300, 1300, false);
+
+ checkRequestData(dataList.get(2), "fireNew:button2", 1100, 2100, false);
+ checkRequestData(dataList.get(3), "fireNew:button1", 2100, 3100, false);
+ checkRequestData(dataList.get(4), "fireNew:button1", 3100, 4100, false);
+ }
+}
Modified: trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSizeTest.java
===================================================================
--- trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSizeTest.java 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/java/org/ajax4jsf/component/QueueSizeTest.java 2008-11-21
18:33:23 UTC (rev 11298)
@@ -69,7 +69,7 @@
int requestTime = processTimeGenerator.next();
time += userDelay;
- ajax(time, numberFormat.format(i),
parametersBuilder.requestId(requestIdGenerator.next()).
+ ajax(time, numberFormat.format(i),
parametersBuilder.similarityGroupingId(requestIdGenerator.next()).
requestTime(requestTime));
}
@@ -195,12 +195,12 @@
ParametersBuilder parametersBuilder = createAjaxParameters().eventsQueue(queueName).
requestDelay(300).requestTime(300);
- ajax(0, "a", parametersBuilder.requestId("a"));
- ajax(100, "b", parametersBuilder.requestId("b"));
- ajax(200, "c", parametersBuilder.requestId("c"));
- ajax(300, "d", parametersBuilder.requestId("d"));
- ajax(500, "e", parametersBuilder.requestId("e"));
- ajax(600, "f", parametersBuilder.requestId("f"));
+ ajax(0, "a", parametersBuilder.similarityGroupingId("a"));
+ ajax(100, "b", parametersBuilder.similarityGroupingId("b"));
+ ajax(200, "c", parametersBuilder.similarityGroupingId("c"));
+ ajax(300, "d", parametersBuilder.similarityGroupingId("d"));
+ ajax(500, "e", parametersBuilder.similarityGroupingId("e"));
+ ajax(600, "f", parametersBuilder.similarityGroupingId("f"));
TestsResult result = getTestsResult();
return result;
@@ -212,11 +212,11 @@
ParametersBuilder parametersBuilder = createAjaxParameters().eventsQueue(queueName).
requestTime(300).requestDelay(200);
- ajax(0, "a", parametersBuilder.requestId("a"));
- ajax(100, "b", parametersBuilder.requestId("b"));
- ajax(400, "c", parametersBuilder.requestId("c"));
- ajax(500, "d", parametersBuilder.requestId("d"));
- ajax(700, "e", parametersBuilder.requestId("e"));
+ ajax(0, "a", parametersBuilder.similarityGroupingId("a"));
+ ajax(100, "b", parametersBuilder.similarityGroupingId("b"));
+ ajax(400, "c", parametersBuilder.similarityGroupingId("c"));
+ ajax(500, "d", parametersBuilder.similarityGroupingId("d"));
+ ajax(700, "e", parametersBuilder.similarityGroupingId("e"));
TestsResult result = getTestsResult();
return result;
@@ -364,7 +364,7 @@
renderView("/queue-size.xhtml");
for (int i = 0; i <= 3; i++) {
- executeOnTime(i, "document.getElementById('form:button" + i +
"').click()");
+ clickOnTime(i, "form:button" + i);
}
TestsResult result = getTestsResult();
@@ -373,8 +373,8 @@
assertEquals(2, dataList.size());
//dropNext is default
- checkRequestData(dataList.get(0), null, 0, DEFAULT_REQUEST_TIME, false);
- checkRequestData(dataList.get(1), null, DEFAULT_REQUEST_TIME, DEFAULT_REQUEST_TIME * 2,
false);
+ checkRequestData(dataList.get(0), "form:button0", 0, DEFAULT_REQUEST_TIME,
false);
+ checkRequestData(dataList.get(1), "form:button3", DEFAULT_REQUEST_TIME,
DEFAULT_REQUEST_TIME * 2, false);
NativeArray handlersData = (NativeArray)
executeJavaScript("defaultExceededQueueResults");
assertEquals(2, handlersData.getLength());
Modified: trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-ajax-form.xhtml
===================================================================
---
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-ajax-form.xhtml 2008-11-21
18:32:34 UTC (rev 11297)
+++
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-ajax-form.xhtml 2008-11-21
18:33:23 UTC (rev 11298)
@@ -9,10 +9,6 @@
<body>
<f:view>
<script type="text/javascript">
- function $(name) {
- return document.getElementById(name);
- }
-
window.testResults = {};
</script>
Modified:
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-discovery-base.xhtml
===================================================================
---
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-discovery-base.xhtml 2008-11-21
18:32:34 UTC (rev 11297)
+++
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-discovery-base.xhtml 2008-11-21
18:33:23 UTC (rev 11298)
@@ -4,10 +4,6 @@
xmlns:a4j="http://richfaces.org/a4j">
<script type="text/javascript">
- function $(id) {
- return document.getElementById(id);
- }
-
window.testResult = new Array();
function addResult(value) {
Modified: trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-legacy.xhtml
===================================================================
--- trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-legacy.xhtml 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-legacy.xhtml 2008-11-21
18:33:23 UTC (rev 11298)
@@ -8,10 +8,6 @@
<script type="text/javascript">
XMLHttpRequest.defaultRequestTime = 5000;
- function $(id) {
- return document.getElementById(id);
- }
-
var counter = 0;
var time = 0;
</script>
Added: trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-parallel.xhtml
===================================================================
--- trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-parallel.xhtml
(rev 0)
+++
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-parallel.xhtml 2008-11-21
18:33:23 UTC (rev 11298)
@@ -0,0 +1,24 @@
+<html
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:c="http://java.sun.com/jstl/core">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <f:view>
+ <a4j:status startText="...running..." stopText="stopped"
startStyle="color: green" />
+
+ <h:form id="form">
+ <a4j:queue name="queue" />
+
+ <a4j:commandButton id="asyncButton" />
+
+ <a4j:commandButton id="syncButton1" eventsQueue="queue" />
+ <a4j:commandButton id="syncButton2" eventsQueue="queue" />
+ </h:form>
+ </f:view>
+ </body>
+</html>
Added: trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-similarity.xhtml
===================================================================
--- trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-similarity.xhtml
(rev 0)
+++
trunk/ui/core/src/test/resources/org/ajax4jsf/component/queue-similarity.xhtml 2008-11-21
18:33:23 UTC (rev 11298)
@@ -0,0 +1,50 @@
+<html
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:c="http://java.sun.com/jstl/core">
+ <body>
+ <f:view>
+ <h:form id="form">
+ <a4j:queue name="queue" />
+
+ <a4j:commandButton requestDelay="400" value="Button 1"
id="button1" eventsQueue="queue"
+ similarityGroupingId="buttons" />
+
+ <a4j:commandButton requestDelay="400" value="Button 2"
id="button2" eventsQueue="queue"
+ similarityGroupingId="buttons" />
+
+ <a4j:commandButton value="Button 3" requestDelay="500"
id="button3" eventsQueue="queue" />
+ <a4j:commandButton value="Button 4" requestDelay="500"
id="button4" eventsQueue="queue" />
+
+ </h:form>
+
+ <h:form id="dropNext">
+ <a4j:queue name="dropNextQueue" size="3"
sizeExceededBehavior="dropNext" />
+
+ <a4j:commandButton value="Button 1" requestDelay="500"
id="button1" eventsQueue="dropNextQueue" />
+ <a4j:commandButton value="Button 2" requestDelay="500"
id="button2" eventsQueue="dropNextQueue" />
+ </h:form>
+ <h:form id="dropNew">
+ <a4j:queue name="dropNewQueue" size="3"
sizeExceededBehavior="dropNew" />
+
+ <a4j:commandButton value="Button 1" requestDelay="500"
id="button1" eventsQueue="dropNewQueue" />
+ <a4j:commandButton value="Button 2" requestDelay="500"
id="button2" eventsQueue="dropNewQueue" />
+ </h:form>
+ <h:form id="fireNext">
+ <a4j:queue name="fireNextQueue" size="3"
sizeExceededBehavior="fireNext" />
+
+ <a4j:commandButton value="Button 1" requestDelay="500"
id="button1" eventsQueue="fireNextQueue" />
+ <a4j:commandButton value="Button 2" requestDelay="500"
id="button2" eventsQueue="fireNextQueue" />
+ </h:form>
+ <h:form id="fireNew">
+ <a4j:queue name="fireNewQueue" size="3"
sizeExceededBehavior="fireNew" />
+
+ <a4j:commandButton value="Button 1" requestDelay="500"
id="button1" eventsQueue="fireNewQueue" />
+ <a4j:commandButton value="Button 2" requestDelay="500"
id="button2" eventsQueue="fireNewQueue" />
+ </h:form>
+
+ </f:view>
+ </body>
+</html>
Modified: trunk/ui/core/src/test/resources/org/ajax4jsf/component/simulation.js
===================================================================
--- trunk/ui/core/src/test/resources/org/ajax4jsf/component/simulation.js 2008-11-21
18:32:34 UTC (rev 11297)
+++ trunk/ui/core/src/test/resources/org/ajax4jsf/component/simulation.js 2008-11-21
18:33:23 UTC (rev 11298)
@@ -197,7 +197,7 @@
A4J.AJAX.SubmitQuery = function(query, options) {
XMLHttpRequest.requestTime = options.requestTime || XMLHttpRequest.defaultRequestTime ||
DEFAULT_REQUEST_TIME;
- XMLHttpRequest.data = options.data;
+ XMLHttpRequest.data = options.data || (query._event &&
query._event.srcElement.id);
try {
var req = oldSubmitQuery.apply(this, arguments);