JBoss Rich Faces SVN: r16559 - in root/ui/trunk: components/core/src/test/java and 5 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-03-11 10:40:10 -0500 (Thu, 11 Mar 2010)
New Revision: 16559
Added:
root/ui/trunk/components/core/src/test/java/
root/ui/trunk/components/core/src/test/java/org/
root/ui/trunk/components/core/src/test/java/org/richfaces/
root/ui/trunk/components/core/src/test/java/org/richfaces/component/
root/ui/trunk/components/core/src/test/java/org/richfaces/component/AbstractQueueComponentTest.java
root/ui/trunk/components/core/src/test/java/org/richfaces/component/DummyQueueTest.java
root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/queue-ajax.js
root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/test.xhtml
Modified:
root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/simulation.js
root/ui/trunk/version-matrix/pom.xml
Log:
DummyQueueTest.java + related files committed
Added: root/ui/trunk/components/core/src/test/java/org/richfaces/component/AbstractQueueComponentTest.java
===================================================================
--- root/ui/trunk/components/core/src/test/java/org/richfaces/component/AbstractQueueComponentTest.java (rev 0)
+++ root/ui/trunk/components/core/src/test/java/org/richfaces/component/AbstractQueueComponentTest.java 2010-03-11 15:40:10 UTC (rev 16559)
@@ -0,0 +1,494 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * 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.richfaces.component;
+
+import static org.junit.Assert.assertEquals;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.faces.view.facelets.ResourceResolver;
+
+import net.sourceforge.htmlunit.corejs.javascript.FunctionObject;
+import net.sourceforge.htmlunit.corejs.javascript.NativeArray;
+import net.sourceforge.htmlunit.corejs.javascript.NativeObject;
+import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;
+import net.sourceforge.htmlunit.corejs.javascript.Undefined;
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.jboss.test.faces.ApplicationServer;
+import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.junit.After;
+import org.junit.Before;
+
+import com.gargoylesoftware.htmlunit.ScriptPreProcessor;
+import com.gargoylesoftware.htmlunit.ScriptResult;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+/**
+ * @author Nick Belaevski
+ * @since 3.3.0
+ */
+public abstract class AbstractQueueComponentTest {
+
+ private static final String AJAX_SUBMIT = "ajaxSubmit";
+ public static final int DEFAULT_REQUEST_TIME = 1000;
+ private static final String SIMULATION_SCRIPT_NAME = "simulation.js";
+ private static final String QUEUEAJAX_SCRIPT_NAME = "queue-ajax.js";
+
+ private static final ScriptableObject systemOut = new ScriptableObject() {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -8574162538513136625L;
+
+ @Override
+ public String getClassName() {
+ return "systemOut";
+ }
+
+ @SuppressWarnings("unused")
+ public void println(String s) {
+ System.out.println("Client log: " + s);
+ }
+ };
+
+ static {
+ try {
+ systemOut.defineProperty("println", new FunctionObject(null, systemOut.getClass().getMethod("println",
+ String.class), systemOut), ScriptableObject.READONLY);
+ } catch (SecurityException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ } catch (NoSuchMethodException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ protected HtmlPage page;
+
+ protected HtmlUnitEnvironment facesEnvironment;
+
+ private StringBuilder loggedJavaScript = new StringBuilder();
+
+ @Before
+ public void setUp() throws Exception {
+ facesEnvironment = new HtmlUnitEnvironment();
+
+ ApplicationServer facesServer = facesEnvironment.getServer();
+ facesServer.addResource("/resources/" + SIMULATION_SCRIPT_NAME, "org/ajax4jsf/component/" + SIMULATION_SCRIPT_NAME);
+ facesServer.addResource("/resources/" + QUEUEAJAX_SCRIPT_NAME, "org/ajax4jsf/component/" + QUEUEAJAX_SCRIPT_NAME);
+ facesServer.addResource("/test.xhtml", "org/ajax4jsf/component/test.xhtml");
+
+ facesEnvironment.start();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ this.page = null;
+ this.facesEnvironment.release();
+ this.facesEnvironment = null;
+ }
+
+ protected ParametersBuilder createAjaxParameters() {
+ return new ParametersBuilder();
+ }
+
+ protected void checkRequestData(RequestData requestData, String data, double startTime, double endTime,
+ boolean aborted) {
+ assertEquals("Data check failed for " + requestData, data, requestData.getData());
+ assertEquals("Start time check failed for " + requestData, startTime, requestData.getStartTime());
+ assertEquals("End time check failed for " + requestData, endTime, requestData.getEndTime());
+ assertEquals("Aborted check failed for " + requestData, aborted, requestData.isAborted());
+ }
+
+ protected HtmlPage renderView(String url) throws Exception {
+ page = facesEnvironment.getPage(url);
+ postRenderView();
+ return page;
+ }
+
+ /**
+ * Execute simulated ajax request starting on given time and having data and paramaters passed as arguments. For
+ * simulated requests defaut value of data is id of the element firing request and default request time is 1000
+ *
+ * @param time
+ * @param data
+ * @param builder
+ */
+ protected void ajax(int time, String data, ParametersBuilder builder) {
+ JSFunction function = new JSFunction("simulationContext.ajax", time, data, builder.getParameters());
+ executeJavaScriptLogged(function.toScript());
+ }
+
+ protected void executeOnTime(int time, String expression) {
+ JSFunction function = new JSFunction("simulationContext.executeOnTime", time, new JSFunctionDefinition()
+ .addToBody(expression));
+
+ executeJavaScriptLogged(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)));
+
+ executeJavaScriptLogged(function.toScript());
+ }
+
+ protected String getRootContextPath() {
+ return this.getClass().getPackage().getName().replace('.', '/');
+ }
+
+ protected ResourceResolver createResourceResolver() {
+ return new ResourceResolver() {
+ public URL resolveUrl(String path) {
+ return Thread.currentThread().getContextClassLoader().getResource(getRootContextPath() + path);
+ }
+ };
+ }
+
+ protected void postRenderView() throws Exception {
+ ScriptableObject scriptableObject = (ScriptableObject) page.executeJavaScript("window").getJavaScriptResult();
+ scriptableObject.defineProperty("sysOut", systemOut, ScriptableObject.READONLY);
+ }
+
+ protected void click(String id) {
+ executeJavaScriptLogged(buildClickExpression(id));
+ }
+
+ protected Object executeJavaScriptLogged(String expression) {
+ if (loggedJavaScript.length() != 0) {
+ loggedJavaScript.append(System.getProperty("line.separator"));
+ }
+ loggedJavaScript.append(expression);
+ if (!expression.endsWith(";")) {
+ loggedJavaScript.append(";");
+ }
+
+ return page.executeJavaScript(expression).getJavaScriptResult();
+ }
+
+ protected Object executeJavaScript(String expression) {
+ return page.executeJavaScript(expression).getJavaScriptResult();
+ }
+
+ protected void executeTimer() {
+ executeJavaScriptLogged("Timer.execute();");
+ }
+
+ protected TestsResult getTestsResult() {
+ TestsResult result = new TestsResult();
+
+ executeTimer();
+
+ ScriptResult scriptResult = page.executeJavaScript("window.simulationContext.results");
+ NativeArray array = (NativeArray) scriptResult.getJavaScriptResult();
+
+ for (int i = 0; i < array.getLength(); i++) {
+ NativeObject object = (NativeObject) array.get(i, array);
+ String data = null;
+ Object dataObject = object.get("data", object);
+
+ if (!(dataObject instanceof Undefined)) {
+ data = (String) dataObject;
+ }
+
+ Double startTime = (Double) object.get("startTime", object);
+ Double endTime = (Double) object.get("endTime", object);
+ Object aborted = object.get("aborted", object);
+ boolean abortedBoolean = aborted instanceof Boolean && (Boolean) aborted;
+
+ result.addData(new RequestData(data, startTime, endTime, abortedBoolean));
+ }
+
+ scriptResult = page.executeJavaScript("Timer.currentTime");
+ result.setCurrentTime((Double) scriptResult.getJavaScriptResult());
+
+ System.out.println();
+ System.out.println("Logged Javascript statements:");
+ System.out.println("*****************************");
+ System.out.println(loggedJavaScript.toString());
+ System.out.println("*****************************");
+ loggedJavaScript.setLength(0);
+
+ System.out.println("Test execution result:");
+ System.out.println(result);
+ System.out.println();
+
+ return result;
+ }
+
+ // @Override
+ // protected void setupWebClient() {
+ // super.setupWebClient();
+ // webClient.setJavaScriptEngine(new JavaScriptEngine(webClient));
+ // webClient.setScriptPreProcessor(new UnescapingScriptPreprocessor());
+ // webClient.setThrowExceptionOnScriptError(true);
+ // webClient.setAlertHandler(new AlertHandler() {
+ // public void handleAlert(Page page, String message) {
+ // fail(message);
+ // }
+ // });
+ // }
+
+ protected static final class ParametersBuilder {
+ private Map<String, Object> parameters;
+
+ private ParametersBuilder() {
+ this.parameters = new HashMap<String, Object>();
+ }
+
+ private ParametersBuilder(Map<String, Object> parameters) {
+ this.parameters = new HashMap<String, Object>(parameters);
+ }
+
+ private ParametersBuilder put(String key, Object value) {
+ this.parameters.put(key, value);
+
+ return this;
+ }
+
+ protected Map<String, Object> getParameters() {
+ return parameters;
+ }
+
+ /**
+ * Sets value of requestDelay parameter
+ *
+ * @param value
+ * @return
+ */
+ public ParametersBuilder requestDelay(double value) {
+ return new ParametersBuilder(this.parameters).put("requestDelay", value);
+ }
+
+ /**
+ * Sets value of similarityGroupingId parameter
+ *
+ * @param id
+ * @return
+ */
+ public ParametersBuilder similarityGroupingId(Object id) {
+ return new ParametersBuilder(this.parameters).put("similarityGroupingId", id);
+ }
+
+ /**
+ * Defines how long this request will be executed on server
+ *
+ * @param value
+ * @return
+ */
+ public ParametersBuilder requestTime(double value) {
+ return new ParametersBuilder(this.parameters).put("requestTime", value);
+ }
+
+ /**
+ * Sets value of timeout parameter
+ *
+ * @param value
+ * @return
+ */
+ public ParametersBuilder timeout(double value) {
+ return new ParametersBuilder(this.parameters).put("timeout", value);
+ }
+
+ /**
+ * Sets value of eventsQueue parameter
+ *
+ * @param name
+ * @return
+ */
+ public ParametersBuilder eventsQueue(String name) {
+ return new ParametersBuilder(this.parameters).put("eventsQueue", name);
+ }
+
+ /**
+ * Sets value of implicitEventsQueue parameter
+ *
+ * @param name
+ * @return
+ */
+ public ParametersBuilder implicitEventsQueue(String name) {
+ return new ParametersBuilder(this.parameters).put("implicitEventsQueue", name);
+ }
+
+ /**
+ * Sets value of ignoreDupResponses parameter
+ *
+ * @param value
+ * @return
+ */
+ public ParametersBuilder ignoreDupResponses(boolean value) {
+ return new ParametersBuilder(this.parameters).put("ignoreDupResponses", value);
+ }
+ }
+
+ protected static final class RequestData {
+ private boolean aborted;
+ private String data;
+ private double endTime;
+ private double startTime;
+
+ public RequestData(String data, double startTime, double endTime, boolean aborted) {
+ super();
+ this.data = data;
+ this.startTime = startTime;
+ this.endTime = endTime;
+ this.aborted = aborted;
+ }
+
+ public boolean isAborted() {
+ return aborted;
+ }
+
+ public double getStartTime() {
+ return startTime;
+ }
+
+ public double getEndTime() {
+ return endTime;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("data: ");
+ builder.append(data);
+ builder.append(", ");
+ builder.append("startTime: ");
+ builder.append(startTime);
+ builder.append(", ");
+ builder.append("endTime: ");
+ builder.append(endTime);
+
+ if (isAborted()) {
+ builder.append(", aborted: ");
+ builder.append(true);
+ }
+
+ return builder.toString();
+ }
+ }
+
+ protected static final class TestsResult {
+ private List<RequestData> dataList = new ArrayList<RequestData>();
+ private double currentTime;
+
+ public void addData(RequestData data) {
+ this.dataList.add(data);
+ }
+
+ public List<RequestData> getDataList() {
+ return dataList;
+ }
+
+ public void setCurrentTime(double number) {
+ this.currentTime = number;
+ }
+
+ public double getCurrentTime() {
+ return currentTime;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+
+ builder.append("[\n");
+
+ for (RequestData data : dataList) {
+ builder.append(" ");
+ builder.append(data);
+ builder.append("\n");
+ }
+
+ builder.append("]\n");
+ builder.append("Current time: " + this.currentTime);
+
+ return builder.toString();
+ }
+ }
+
+ ;
+}
+
+class UnescapingScriptPreprocessor implements ScriptPreProcessor {
+ private static final Map<String, String> ENTITIES_MAP = new HashMap<String, String>();
+ private static final Pattern ENTITIES_PATTERN;
+
+ static {
+ ENTITIES_MAP.put("'", "\"");
+ ENTITIES_MAP.put(""", "'");
+ ENTITIES_MAP.put("&", "&");
+ ENTITIES_MAP.put("<", "<");
+ ENTITIES_MAP.put(">", ">");
+ }
+
+ static {
+ StringBuilder sb = new StringBuilder();
+
+ for (String entity : ENTITIES_MAP.keySet()) {
+ if (sb.length() != 0) {
+ sb.append('|');
+ }
+
+ sb.append(Pattern.quote(entity));
+ }
+
+ ENTITIES_PATTERN = Pattern.compile("(" + sb.toString() + ")");
+ }
+
+ public String preProcess(HtmlPage htmlPage, String sourceCode, String sourceName, HtmlElement htmlElement) {
+ if (sourceName != null && !sourceName.startsWith("http:/")) {
+ Matcher m = ENTITIES_PATTERN.matcher(sourceCode);
+ StringBuffer sb = new StringBuffer();
+
+ while (m.find()) {
+ String entity = m.group(1);
+
+ m.appendReplacement(sb, ENTITIES_MAP.get(entity));
+ }
+
+ m.appendTail(sb);
+
+ return sb.toString();
+ } else {
+ return sourceCode;
+ }
+ }
+}
Added: root/ui/trunk/components/core/src/test/java/org/richfaces/component/DummyQueueTest.java
===================================================================
--- root/ui/trunk/components/core/src/test/java/org/richfaces/component/DummyQueueTest.java (rev 0)
+++ root/ui/trunk/components/core/src/test/java/org/richfaces/component/DummyQueueTest.java 2010-03-11 15:40:10 UTC (rev 16559)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.richfaces.component;
+
+import org.junit.Test;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class DummyQueueTest extends AbstractQueueComponentTest {
+
+ @Test
+ public void testFoo() throws Exception {
+ renderView("/test.jsf");
+ ajax(10, "test data X", createAjaxParameters());
+ ajax(1030, "test data Y", createAjaxParameters());
+ TestsResult result = getTestsResult();
+ System.out.println(result.getCurrentTime());
+ }
+}
Added: root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/queue-ajax.js
===================================================================
--- root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/queue-ajax.js (rev 0)
+++ root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/queue-ajax.js 2010-03-11 15:40:10 UTC (rev 16559)
@@ -0,0 +1,22 @@
+RichFaces.QueueTest = {
+ ajax: function(data, options) {
+ with (RichFaces) {
+ log.info("QueueTest.ajax is called with data: '" + data + "' and options: '" + "'");
+
+ // var defaultRequestTime = XMLHttpRequest.defaultRequestTime;
+ // if (typeof defaultRequestTime == "function") {
+ // defaultRequestTime = defaultRequestTime(query, options, event);
+ // }
+
+ XMLHttpRequest.requestTime = options.requestTime || /*defaultRequestTime || */ DEFAULT_REQUEST_TIME;
+ XMLHttpRequest.data = data || /*(event && event.srcElement.id) || */options.pollId;
+
+ try {
+ ajax("form", null, {});
+ } finally {
+ XMLHttpRequest.requestTime = undefined;
+ XMLHttpRequest.data = undefined;
+ }
+ }
+ }
+};
\ No newline at end of file
Modified: root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/simulation.js
===================================================================
--- root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/simulation.js 2010-03-11 15:20:29 UTC (rev 16558)
+++ root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/simulation.js 2010-03-11 15:40:10 UTC (rev 16559)
@@ -1,11 +1,19 @@
-LOG.LEVEL = LOG.INFO;
-LOG._logToConsole = function(message, level) {
- //TODO deal with this nasty message
- if (message != "No information in response about elements to replace") {
- LOG.out.println(level.name + ': ' + message)
+var createLog = function(log) {
+ return function(message) {
+ if (window.sysOut) {
+ window.sysOut.println(message);
+ } else {
+ log(message);
+ }
}
-};
+}
+var levels = ["debug", "info", "warn", "error"];
+for (var n = 0; n < levels.length; n++) {
+ var oldLog = RichFaces.log[levels[n]];
+ RichFaces.log[levels[n]] = createLog(oldLog);
+}
+
var Timer = {
_eventCounter: 0,
@@ -66,11 +74,11 @@
}
};
-window.setTimeout = function(callback, delay) {
+window.setTimeout = document.setTimeout = function(callback, delay) {
return Timer.addEventToTimer(callback, delay);
}
-window.clearTimeout = function(timerId) {
+window.clearTimeout = document.clearTimeout = function(timerId) {
Timer.removeEventFromTimer(timerId);
}
@@ -103,7 +111,6 @@
window.XMLHttpRequest = function() {
this.requestTime = XMLHttpRequest.requestTime || 0;
this.data = XMLHttpRequest.data;
-
this.responseText = null;
this.responseXML = null;
@@ -150,7 +157,8 @@
_this.readyState = window.XMLHttpRequest.DONE;
var responseTextArray = new Array();
- responseTextArray.push("<html><head></head><body>");
+
+ responseTextArray.push("<?xml version='1.0' encoding='UTF-8'?><partial-response><changes><extension>");
if (_this.data) {
responseTextArray.push("<span id='_ajax:data'>");
@@ -163,23 +171,33 @@
}
responseTextArray.push("</span>");
}
- responseTextArray.push("</body></html>");
+ responseTextArray.push("</extension></changes></partial-response>");
_this.responseText = responseTextArray.join('');
+
+ var doc;
- var doc = new ActiveXObject("MSXML.DOMDocument");
- doc.loadXML(_this.responseText);
-
- //hack to make it work with current HTMLUnit
- delete doc.getElementById;
- doc.getElementById = function(id){
- var nodes = this.selectNodes("//*");
- for (var i = 0; i < nodes.length; i++) {
- if (nodes[i].getAttribute("id") == id) {
- return nodes[i];
- }
+ if (typeof ActiveXObject != 'undefined') {
+ doc = new ActiveXObject("MSXML.DOMDocument");
+ doc.loadXML(_this.responseText);
+ try {
+ //hack to make it work with current HTMLUnit
+ delete doc.getElementById;
+ doc.getElementById = function(id){
+ var nodes = this.selectNodes("//*");
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].getAttribute("id") == id) {
+ return nodes[i];
+ }
+ }
+ };
+ } catch (e) {
+ //TODO
}
- };
+ } else {
+ var parser = new DOMParser();
+ doc = parser.parseFromString(_this.responseText, "text/xml");
+ }
_this.responseXML = doc;
@@ -192,26 +210,26 @@
};
-var oldSubmitQuery = A4J.AJAX.SubmitQuery;
var DEFAULT_REQUEST_TIME;
-A4J.AJAX.SubmitQuery = function(query, options, event) {
- var defaultRequestTime = XMLHttpRequest.defaultRequestTime;
- if (typeof defaultRequestTime == "function") {
- defaultRequestTime = defaultRequestTime(query, options, event);
- }
-
- XMLHttpRequest.requestTime = options.requestTime || defaultRequestTime || DEFAULT_REQUEST_TIME;
- XMLHttpRequest.data = options.data || (event && event.srcElement.id) || options.pollId;
+//var oldSubmitQuery = A4J.AJAX.SubmitQuery;
+//A4J.AJAX.SubmitQuery = function(query, options, event) {
+//// var defaultRequestTime = XMLHttpRequest.defaultRequestTime;
+//// if (typeof defaultRequestTime == "function") {
+//// defaultRequestTime = defaultRequestTime(query, options, event);
+//// }
+//
+// XMLHttpRequest.requestTime = options.requestTime || /*defaultRequestTime || */ DEFAULT_REQUEST_TIME;
+// XMLHttpRequest.data = options.data || (event && event.srcElement.id) || options.pollId;
+//
+// try {
+// var req = oldSubmitQuery.apply(this, arguments);
+//
+// return req;
+// } finally {
+// XMLHttpRequest.requestTime = undefined;
+// XMLHttpRequest.data = undefined;
+// }
+//}
- try {
- var req = oldSubmitQuery.apply(this, arguments);
-
- return req;
- } finally {
- XMLHttpRequest.requestTime = undefined;
- XMLHttpRequest.data = undefined;
- }
-}
-
Added: root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/test.xhtml
===================================================================
--- root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/test.xhtml (rev 0)
+++ root/ui/trunk/components/core/src/test/resources/org/ajax4jsf/component/test.xhtml 2010-03-11 15:40:10 UTC (rev 16559)
@@ -0,0 +1,26 @@
+<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">
+
+ <h:head>
+ <title>Test page</title>
+
+ <h:outputScript name="jsf.js" library="javax.faces" />
+ <h:outputScript name="jquery.js" />
+ <h:outputScript name="richfaces.js" />
+
+ <h:outputScript name="simulation.js" />
+ <h:outputScript name="queue-ajax.js" />
+
+ <script type="text/javascript">
+ DEFAULT_REQUEST_TIME = 1000;
+ window.simulationContext = new SimulationContext(RichFaces.QueueTest.ajax);
+ </script>
+ </h:head>
+ <h:body>
+ <f:view>
+ <h:form id="form"></h:form>
+ <div id="richfaces.log"></div>
+ </f:view>
+ </h:body>
+</html>
Modified: root/ui/trunk/version-matrix/pom.xml
===================================================================
--- root/ui/trunk/version-matrix/pom.xml 2010-03-11 15:20:29 UTC (rev 16558)
+++ root/ui/trunk/version-matrix/pom.xml 2010-03-11 15:40:10 UTC (rev 16559)
@@ -105,17 +105,17 @@
<dependency>
<groupId>org.jboss.test-jsf</groupId>
<artifactId>htmlunit-client</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.jboss.test-jsf</groupId>
<artifactId>jsf-mock</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.jboss.test-jsf</groupId>
<artifactId>jsf-test-stage</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
15 years
JBoss Rich Faces SVN: r16558 - in root/cdk/trunk/plugins/generator/src: main/resources/META-INF/templates/taglib and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-03-11 10:20:29 -0500 (Thu, 11 Mar 2010)
New Revision: 16558
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/behavior.ftl
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/converter.ftl
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taglib/validator.ftl
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/validator.ftl
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java
Log:
Fixes for failing CDK tests
Modified: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/behavior.ftl
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/behavior.ftl 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/behavior.ftl 2010-03-11 15:20:29 UTC (rev 16558)
@@ -1,6 +1,6 @@
<#include "_copyright.ftl">
-package ${behaviorClass.package};
+package ${targetClass.package};
import javax.annotation.Generated;
import javax.faces.component.PartialStateHolder;
@@ -14,7 +14,7 @@
* ${description?if_exists}
**/
@Generated({"RichFaces CDK", "4.0.0-SNAPSHOT"})
-public class ${behaviorClass.simpleName} extends ${baseClass} implements Behavior, PartialStateHolder {
+public class ${targetClass.simpleName} extends ${baseClass} implements Behavior, PartialStateHolder {
@Override
public void broadcast(BehaviorEvent event) {
Modified: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/converter.ftl
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/converter.ftl 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/converter.ftl 2010-03-11 15:20:29 UTC (rev 16558)
@@ -1,6 +1,6 @@
<#include "_copyright.ftl">
-package ${converterClass.package};
+package ${targetClass.package};
import javax.annotation.Generated;
import javax.faces.component.PartialStateHolder;
@@ -15,7 +15,7 @@
* ${description?if_exists}
**/
@Generated({"RichFaces CDK", "4.0.0-SNAPSHOT"})
-public class ${converterClass.simpleName} extends ${baseClass} implements Converter, PartialStateHolder {
+public class ${targetClass.simpleName} extends ${baseClass} implements Converter, PartialStateHolder {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Modified: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-03-11 15:20:29 UTC (rev 16558)
@@ -1,17 +1,17 @@
<#include "_copyright.ftl">
-package ${handler.package};
+package ${targetClass.package};
import javax.faces.view.facelets.*;
import org.richfaces.MethodMetadata;
-import ${model.generatedClass};
+import ${model.targetClass};
-public class ${handler.simpleName} extends ${handler.parent.simpleName} {
+public class ${targetClass.simpleName} extends ${baseClass.simpleName} {
- private static final ${handler.simpleName}MetaRule metaRule = new ${handler.simpleName}MetaRule();
+ private static final ${targetClass.simpleName}MetaRule metaRule = new ${targetClass.simpleName}MetaRule();
- public ${handler.simpleName}(${objectType}Config config) {
+ public ${targetClass.simpleName}(${objectType}Config config) {
super(config);
}
@@ -21,15 +21,15 @@
return m;
}
- static class ${handler.simpleName}MetaRule extends MetaRule{
+ static class ${targetClass.simpleName}MetaRule extends MetaRule{
public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
- if (meta.isTargetInstanceOf(${model.generatedClass.simpleName}.class)) {
+ if (meta.isTargetInstanceOf(${model.targetClass.simpleName}.class)) {
<#list generatedAttributes as prop>
if ("${prop.name}".equals(name)) {
return new MethodMetadata(attribute) {
public void applyMetadata(FaceletContext ctx, Object instance) {
- ((${model.generatedClass.simpleName}) instance).${prop.setterName}(<#if (prop.isBinging)>getMethodBinding(ctx));<#else>getMethodExpression(ctx));</#if>
+ ((${model.targetClass.simpleName}) instance).${prop.setterName}(<#if (prop.isBinging)>getMethodBinding(ctx));<#else>getMethodExpression(ctx));</#if>
}
};
}
Modified: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taglib/validator.ftl
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taglib/validator.ftl 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taglib/validator.ftl 2010-03-11 15:20:29 UTC (rev 16558)
@@ -1,8 +1,8 @@
<tag>
- <tag-name>${validatorClass}</tag-name>
+ <tag-name>${targetClass}</tag-name>
<validator>
- <validator-id>${validatorId}</validator-id>
- <handler-class>${validatorClass}</handler-class>
+ <validator-id>${id}</validator-id>
+ <handler-class>${targetClass}</handler-class>
</validator>
<#list attributes as attribute>
Modified: root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/validator.ftl
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/validator.ftl 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/validator.ftl 2010-03-11 15:20:29 UTC (rev 16558)
@@ -1,6 +1,6 @@
<#include "_copyright.ftl">
-package ${validatorClass.package};
+package ${targetClass.package};
import javax.annotation.Generated;
import javax.faces.component.UIComponent;
@@ -15,7 +15,7 @@
* ${description?if_exists}
**/
@Generated({"RichFaces CDK", "4.0.0-SNAPSHOT"})
-public class ${validatorClass.simpleName} extends ${baseClass} implements Validator, PartialStateHolder {
+public class ${targetClass.simpleName} extends ${baseClass} implements Validator, PartialStateHolder {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
Modified: root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java 2010-03-11 13:38:09 UTC (rev 16557)
+++ root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java 2010-03-11 15:20:29 UTC (rev 16558)
@@ -22,17 +22,28 @@
package org.richfaces.cdk.generate.java;
-import com.google.inject.Inject;
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import java.io.StringWriter;
+
+import javax.faces.view.facelets.ComponentHandler;
+
import org.junit.Test;
import org.junit.runner.RunWith;
-import static org.easymock.EasyMock.*;
-import static org.easymock.EasyMock.verify;
-import org.richfaces.cdk.model.*;
import org.richfaces.cdk.CdkTestRunner;
+import org.richfaces.cdk.Mock;
+import org.richfaces.cdk.NamingConventions;
import org.richfaces.cdk.generate.java.taghandler.TagHandlerClassGenerator;
+import org.richfaces.cdk.model.ClassName;
+import org.richfaces.cdk.model.ComponentModel;
+import org.richfaces.cdk.model.TagModel;
+import org.richfaces.cdk.model.validator.ValidatorImpl;
-import javax.faces.view.facelets.ComponentHandler;
-import java.io.StringWriter;
+import com.google.inject.Inject;
/**
* @author akolonitsky
@@ -41,9 +52,15 @@
@RunWith(CdkTestRunner.class)
public class TagHandlerClassGeneratorTest extends AbstractClassGeneratorTest {
+ @Mock
+ private NamingConventions namiingConventions;
+
@Inject
private TagHandlerClassGenerator generator;
+ @Inject
+ private ValidatorImpl validator;
+
@Test
public void testGetOutputFileBehavior() throws Exception {
final StringWriter outputWriter = new StringWriter();
@@ -58,7 +75,11 @@
tagModel.setName("mytag");
tagModel.setModel(model);
tagModel.setTargetClass(ClassName.parseName("org.richfaces.cdk.generate.java.GeneratedTagHandler"));
- tagModel.setTargetClass(ClassName.parseName(ComponentHandler.class.getName()));
+ tagModel.setBaseClass(ClassName.parseName(ComponentHandler.class.getName()));
+
+ //TODO nick - review
+ validator.verify();
+
generator.process(tagModel);
// System.out.println(outputWriter);
15 years
JBoss Rich Faces SVN: r16557 - branches/community/3.3.X/test-applications/regressionArea.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-03-11 08:38:09 -0500 (Thu, 11 Mar 2010)
New Revision: 16557
Modified:
branches/community/3.3.X/test-applications/regressionArea/pom.xml
Log:
regressionArea - removed OpenQA repositories dependency
Modified: branches/community/3.3.X/test-applications/regressionArea/pom.xml
===================================================================
--- branches/community/3.3.X/test-applications/regressionArea/pom.xml 2010-03-11 13:35:05 UTC (rev 16556)
+++ branches/community/3.3.X/test-applications/regressionArea/pom.xml 2010-03-11 13:38:09 UTC (rev 16557)
@@ -32,30 +32,6 @@
<id>repository.jboss.org</id>
<url>http://repository.jboss.org/maven2</url>
</repository>
- <repository>
- <id>openqa</id>
- <name>OpenQA Repository</name>
- <url>http://archiva.openqa.org/repository/releases</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- <repository>
- <id>openqa-snapshots</id>
- <name>OpenQA Snapshots Repository</name>
- <url>http://archiva.openqa.org/repository/snapshots</url>
- <layout>default</layout>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
</repositories>
<properties>
<contextroot>regressionArea</contextroot>
15 years
JBoss Rich Faces SVN: r16556 - branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-03-11 08:35:05 -0500 (Thu, 11 Mar 2010)
New Revision: 16556
Modified:
branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml
Log:
regressionArea - dependencies on selenium 1.0.1 downgraded to 1.0-beta-2 (changes in API), selenium-server-coreless replaced with regular selenium-server
Modified: branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml
===================================================================
--- branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml 2010-03-11 06:35:51 UTC (rev 16555)
+++ branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml 2010-03-11 13:35:05 UTC (rev 16556)
@@ -38,20 +38,14 @@
<dependency>
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
<artifactId>selenium-java-client-driver</artifactId>
- <version>1.0.1</version>
+ <version>1.0-beta-2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium.server</groupId>
- <artifactId>selenium-server-coreless</artifactId>
- <version>1.0.1</version>
+ <artifactId>selenium-server</artifactId>
+ <version>1.0-beta-2</version>
<scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>jetty</groupId>
- <artifactId>org.mortbay.jetty</artifactId>
- </exclusion>
- </exclusions>
</dependency>
</dependencies>
<build>
15 years
JBoss Rich Faces SVN: r16555 - branches/community/3.3.X/test-applications/seleniumTest.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-03-11 01:35:51 -0500 (Thu, 11 Mar 2010)
New Revision: 16555
Modified:
branches/community/3.3.X/test-applications/seleniumTest/pom.xml
Log:
seleniumTest - missing dependency org.seleniumhq.selenium.client-drivers:selenium-client-drivers:pom:1.0-SNAPSHOT
Modified: branches/community/3.3.X/test-applications/seleniumTest/pom.xml
===================================================================
--- branches/community/3.3.X/test-applications/seleniumTest/pom.xml 2010-03-11 06:24:29 UTC (rev 16554)
+++ branches/community/3.3.X/test-applications/seleniumTest/pom.xml 2010-03-11 06:35:51 UTC (rev 16555)
@@ -160,7 +160,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
- <version>1.0-beta-2</version>
+ <version>1.0</version>
<executions>
<!--
<execution>
@@ -209,19 +209,19 @@
<dependency>
<groupId>org.seleniumhq.selenium.core</groupId>
<artifactId>selenium-core</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
<artifactId>selenium-java-client-driver</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium.server</groupId>
<artifactId>selenium-server-coreless</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1</version>
<scope>test</scope>
<!--exclusions>
<exclusion>
@@ -251,4 +251,4 @@
<version>1.4.2</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
15 years
JBoss Rich Faces SVN: r16554 - branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-03-11 01:24:29 -0500 (Thu, 11 Mar 2010)
New Revision: 16554
Modified:
branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml
Log:
Missing dependency of org.openqa.selenium.client-drivers:selenium-java-client-driver:jar:1.0-SNAPSHOT
Modified: branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml
===================================================================
--- branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml 2010-03-11 01:24:27 UTC (rev 16553)
+++ branches/community/3.3.X/test-applications/regressionArea/regressionArea-tests/pom.xml 2010-03-11 06:24:29 UTC (rev 16554)
@@ -36,15 +36,15 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.openqa.selenium.client-drivers</groupId>
+ <groupId>org.seleniumhq.selenium.client-drivers</groupId>
<artifactId>selenium-java-client-driver</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.openqa.selenium.server</groupId>
+ <groupId>org.seleniumhq.selenium.server</groupId>
<artifactId>selenium-server-coreless</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1</version>
<scope>test</scope>
<exclusions>
<exclusion>
@@ -92,4 +92,4 @@
</plugin>
</plugins>
</build>
-</project>
\ No newline at end of file
+</project>
15 years
JBoss Rich Faces SVN: r16553 - branches/community/3.3.X/framework/impl/src/main/javascript/ajaxjsf.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-03-10 20:24:27 -0500 (Wed, 10 Mar 2010)
New Revision: 16553
Modified:
branches/community/3.3.X/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
Log:
https://jira.jboss.org/jira/browse/RF-8430
Modified: branches/community/3.3.X/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
===================================================================
--- branches/community/3.3.X/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js 2010-03-10 18:07:48 UTC (rev 16552)
+++ branches/community/3.3.X/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js 2010-03-11 01:24:27 UTC (rev 16553)
@@ -1205,10 +1205,10 @@
LOG.debug("Input in response: "+newinput.getAttribute("name"));
for(var j = 0 ; j < inputs.length; j++){
var input = inputs[j];
- input.setAttribute("autocomplete", "off");
if(input.name == newinput.getAttribute("name")){
LOG.debug("Found same input on page with type: "+input.type);
+ input.setAttribute("autocomplete", "off");
input.value = newinput.getAttribute("value");
}
}
15 years
JBoss Rich Faces SVN: r16552 - root/ui-sandbox/trunk/components/datascroller/ui/src/main/resources/META-INF/resources/script.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-03-10 13:07:48 -0500 (Wed, 10 Mar 2010)
New Revision: 16552
Modified:
root/ui-sandbox/trunk/components/datascroller/ui/src/main/resources/META-INF/resources/script/datascroller.js
Log:
apply baseComponent strategy
Modified: root/ui-sandbox/trunk/components/datascroller/ui/src/main/resources/META-INF/resources/script/datascroller.js
===================================================================
--- root/ui-sandbox/trunk/components/datascroller/ui/src/main/resources/META-INF/resources/script/datascroller.js 2010-03-10 18:06:44 UTC (rev 16551)
+++ root/ui-sandbox/trunk/components/datascroller/ui/src/main/resources/META-INF/resources/script/datascroller.js 2010-03-10 18:07:48 UTC (rev 16552)
@@ -3,18 +3,27 @@
richfaces.ui = richfaces.ui || {};
richfaces.ui.DataScroller = function(id, options) {
- this.id = id;
+ $super.constructor.call(this);
+
+ this.id = id;
this.options = options;
+
+ RichFaces.Event.bindById(this.id, 'rich:datascroller:onscroll', this.submitFunction, this);
+
this.init(options);
};
+
+
+
+ var $super = richfaces.BaseComponent.extend(richfaces.BaseComponent, richfaces.ui.DataScroller);
+
+ jQuery.extend(richfaces.ui.DataScroller.prototype, (function (options) {
+
- jQuery.extend(richfaces.ui.DataScroller.prototype, ( function () {
-
return {
- init: function(options) {
- RichFaces.Event.bindById(this.id, 'rich:datascroller:onscroll', this.submitFunction, this);
- },
+ name: "RichFaces.ui.DataScroller",
+
submitFunction: function(event) {
alert(test);
},
15 years
JBoss Rich Faces SVN: r16551 - in root/ui-sandbox/trunk/components/datascroller/ui/src/main: templates and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-03-10 13:06:44 -0500 (Wed, 10 Mar 2010)
New Revision: 16551
Modified:
root/ui-sandbox/trunk/components/datascroller/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java
root/ui-sandbox/trunk/components/datascroller/ui/src/main/templates/datascroller.template.xml
Log:
add client js script encoding
Modified: root/ui-sandbox/trunk/components/datascroller/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/datascroller/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java 2010-03-10 15:28:56 UTC (rev 16550)
+++ root/ui-sandbox/trunk/components/datascroller/ui/src/main/java/org/richfaces/renderkit/DataScrollerBaseRenderer.java 2010-03-10 18:06:44 UTC (rev 16551)
@@ -34,16 +34,21 @@
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UIDataScroller;
import org.richfaces.event.DataScrollerEvent;
@ResourceDependencies( {@ResourceDependency(library = "javax.faces", name = "jsf-uncompressed.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name="richfaces-queue.js"),
+ @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "richfaces-queue.js"),
+ @ResourceDependency(name = "richfaces-base-component.js"),
@ResourceDependency(name = "script/datascroller.js"),
- @ResourceDependency(name = "css/datascroller.css")})
+ @ResourceDependency(name = "css/datascroller.css")
+
+})
public class DataScrollerBaseRenderer extends Renderer {
public void doDecode(FacesContext context, UIComponent component) {
@@ -158,14 +163,16 @@
return controlsState;
}
- public void renderPager(FacesContext context,ResponseWriter out, UIComponent component) throws IOException {
+ public Map<String,String> renderPager(ResponseWriter out, FacesContext context, UIComponent component) throws IOException {
int currentPage = (Integer)component.getAttributes().get("page");
int maxPages = (Integer)component.getAttributes().get("maxPages");
int pageCount = (Integer)component.getAttributes().get("pageCount");
-
+
+ Map<String,String> digital = new HashMap<String, String>();
+
if (pageCount <= 1) {
- return;
+ return digital;
}
if (maxPages <= 1) {
@@ -176,6 +183,7 @@
int pages;
int start;
+
if (pageCount > maxPages && currentPage > delta) {
pages = maxPages;
start = currentPage - pages / 2 - 1;
@@ -192,13 +200,15 @@
boolean isCurrentPage = (i + 1 == currentPage);
String styleClass;
String style;
- if (isCurrentPage) {
+
+ if (isCurrentPage) {
styleClass = (String)component.getAttributes().get("selectedStyleClass");
style = (String)component.getAttributes().get("selectedStyle");
} else {
styleClass = (String)component.getAttributes().get("inactiveStyleClass");
style = (String)component.getAttributes().get("inactiveStyle");
}
+
if (styleClass==null){
styleClass="";
}
@@ -215,19 +225,59 @@
out.writeAttribute(HTML.ONMOUSEUP_ATTRIBUTE, "this.className='ds_digital ds_over'", null);
out.writeAttribute(HTML.ONMOUSEDOWN_ATTRIBUTE, "this.className='ds_digital ds_press'", null);
- out.writeAttribute(HTML.ONCLICK_ATTRIBUTE, getOnClick(context, component, Integer.toString(i + 1)), null);
+ out.writeAttribute(HTML.ONCLICK_ATTRIBUTE, getOnClick(context, component, Integer.toString(i + 1)), null);
}
if (null != style) {
out.writeAttribute(HTML.STYLE_ATTRIBUTE, style, null);
}
- out.writeText(Integer.toString(i + 1), null);
+
+ String page = Integer.toString(i + 1);
+ out.writeText(page, null);
+ digital.put("ds_" + page, page);
out.endElement(HTML.SPAN_ELEM);
}
+
+ return digital;
}
+ public Map<String, String> getControls(FacesContext context, UIComponent component, ControlsState controlsState) {
+ //will be refactored
+ Map<String, String> controls = new HashMap<String, String>();
+
+ if(controlsState.getFirstRendered() && controlsState.getFirstEnabled()) {
+ controls.put("ds_f", "first");
+ }
+
+ if(controlsState.getFastRewindRendered()&& controlsState.getFastRewindEnabled()) {
+ controls.put("ds_fr", "fastRewind");
+ }
+
+ if(controlsState.getFastForwardRendered()&& controlsState.getFastForwardEnabled()) {
+ controls.put("ds_ff", "fastForward");
+ }
+
+ if(controlsState.getLastRendered()&& controlsState.getLastEnabled()) {
+ controls.put("ds_l", "last");
+ }
+
+ return controls;
+ }
-
+ public void buildScript(ResponseWriter writer, FacesContext context, UIComponent component, Map buttons, Map controls) throws IOException {
+
+ JSFunction function = new JSFunction("new RichFaces.ui.DataScroller");
+ function.addParameter(component.getClientId(context));
+
+ Map<String, Object> options = new HashMap<String, Object>();
+ options.put("buttons", buttons);
+ options.put("controls", controls);
+
+ function.addParameter(options);
+
+ writer.writeText(function.toScript(),null);
+ }
+
public Object getOnClick(FacesContext facesContext, UIComponent component, String string) {
String id = component.getClientId(facesContext);
return "RichFaces.Event.callHandlerById('" + id + "', 'rich:datascroller:onscroll', {'page': '" + string + "'});";
Modified: root/ui-sandbox/trunk/components/datascroller/ui/src/main/templates/datascroller.template.xml
===================================================================
--- root/ui-sandbox/trunk/components/datascroller/ui/src/main/templates/datascroller.template.xml 2010-03-10 15:28:56 UTC (rev 16550)
+++ root/ui-sandbox/trunk/components/datascroller/ui/src/main/templates/datascroller.template.xml 2010-03-10 18:06:44 UTC (rev 16551)
@@ -47,9 +47,9 @@
</c:otherwise>
</c:choose>
</c:if>
+
+ <cdk:object type="java.util.Map" name="buttons" value="#{renderPager(responseWriter, facesContext, component)}" />
- <cdk:call expression="renderPager(facesContext, responseWriter, component);"/>
-
<c:if test="#{controlsState.fastForwardRendered}">
<c:choose>
<c:when test="#{controlsState.fastForwardEnabled}">
@@ -80,5 +80,11 @@
</c:choose>
</c:if>
</span>
+
+ <cdk:object type="java.util.Map" name="controls" value="#{getControls(facesContext, component, controlsState)}" />
+
+ <script type="text/javascript">
+ <cdk:call expression="buildScript(responseWriter, facesContext, component, buttons, controls);"/>
+ </script>
</cc:implementation>
</cdk:root>
\ No newline at end of file
15 years
JBoss Rich Faces SVN: r16550 - in root/ui-sandbox/trunk/components/tables/impl/src/test/java: org and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2010-03-10 10:28:56 -0500 (Wed, 10 Mar 2010)
New Revision: 16550
Added:
root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/
root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/
root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/model/
root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/model/ArrangeableModelTest.java
Log:
RF-8118 RF-8119 unit test
Added: root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/model/ArrangeableModelTest.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/model/ArrangeableModelTest.java (rev 0)
+++ root/ui-sandbox/trunk/components/tables/impl/src/test/java/org/richfaces/model/ArrangeableModelTest.java 2010-03-10 15:28:56 UTC (rev 16550)
@@ -0,0 +1,250 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright ${year}, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.richfaces.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.model.ArrayDataModel;
+import javax.faces.model.DataModelEvent;
+import javax.faces.model.DataModelListener;
+import javax.swing.SortOrder;
+
+import junit.framework.Assert;
+
+import org.ajax4jsf.model.DataVisitResult;
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.SequenceDataModel;
+import org.ajax4jsf.model.SequenceRange;
+import org.jboss.test.faces.AbstractFacesTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public class ArrangeableModelTest extends AbstractFacesTest {
+
+ public class User {
+
+ private String fname;
+ private String lname;
+
+ public User(String fname, String lname) {
+ super();
+ this.fname = fname;
+ this.lname = lname;
+ }
+
+ public String getFname() {
+ return fname;
+ }
+
+ public String getLname() {
+ return lname;
+ }
+ }
+
+ private static final int ROW_KEY = 4;
+ private static final List<Integer> FILTERD_AND_SORTED_ROW_KEYS = Arrays.asList(5, 3, 2, 0);
+
+ private User[] users = {new User("C", "A"), new User("a", "a"), new User("B", "B"),
+ new User("B", "C"), new User("b", "b"), new User("A", "A") };
+ private ExtendedDataModel<User> extendedDataModel;
+ private ArrangeableModel arrangeableModel;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ setupFacesRequest();
+ extendedDataModel = new SequenceDataModel<User>(new ArrayDataModel<User>(users));
+ arrangeableModel = new ArrangeableModel(extendedDataModel, "var", "filterVar");
+ ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
+ ELContext elContext = facesContext.getELContext();
+ FilterField[] filterFields = {new FilterField(null, new Filter<User>() {
+ @Override
+ public boolean accept(User t) {
+ return t.getFname().indexOf('a') == -1;
+ }
+ }, null), new FilterField(expressionFactory
+ .createValueExpression(elContext, "#{var.lname != filterVar}", Object.class), null, "b")};
+ SortField[] sortFields = {new SortField(expressionFactory
+ .createValueExpression(elContext, "#{var.fname}", Object.class), null, SortOrder.ASCENDING),
+ new SortField(null, new Comparator<User>() {
+ @Override
+ public int compare(User o1, User o2) {
+ return o1.getLname().compareTo(o2.getLname());
+ }
+ }, SortOrder.DESCENDING)};
+ arrangeableModel.arrange(facesContext, new ArrangeableStateDefaultImpl(Arrays.asList(filterFields),
+ Arrays.asList(sortFields), null));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ extendedDataModel = null;
+ arrangeableModel = null;
+ super.tearDown();
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#isRowAvailable()}.
+ */
+ @Test
+ public void testIsRowAvailable() {
+ arrangeableModel.setRowKey(null);
+ Assert.assertFalse(extendedDataModel.isRowAvailable());
+ arrangeableModel.setRowKey(ROW_KEY);
+ Assert.assertTrue(extendedDataModel.isRowAvailable());
+ arrangeableModel.setRowKey(extendedDataModel.getRowCount());
+ Assert.assertFalse(extendedDataModel.isRowAvailable());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#getRowCount()}.
+ */
+ @Test
+ public void testGetRowCount() {
+ Assert.assertEquals(ROW_KEY, arrangeableModel.getRowCount());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#setRowIndex(int)} and
+ * {@link org.richfaces.model.ArrangeableModel#getRowIndex()}.
+ */
+ @Test
+ public void testRowIndex() {
+ arrangeableModel.setRowIndex(-1);
+ Assert.assertNull(extendedDataModel.getRowKey());
+ Assert.assertEquals(arrangeableModel.getRowIndex(), -1);
+ arrangeableModel.setRowIndex(arrangeableModel.getRowCount() - 1);
+ Assert.assertEquals(0, extendedDataModel.getRowKey());
+ Assert.assertEquals(arrangeableModel.getRowIndex(), arrangeableModel.getRowCount() - 1);
+ arrangeableModel.setRowIndex(extendedDataModel.getRowCount());
+ Assert.assertNull(extendedDataModel.getRowKey());
+ Assert.assertEquals(arrangeableModel.getRowIndex(), -1);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#setRowKey(java.lang.Object)} and
+ * {@link org.richfaces.model.ArrangeableModel#getRowKey()}.
+ */
+ @Test
+ public void testRowKey() {
+ arrangeableModel.setRowKey(null);
+ Assert.assertNull(extendedDataModel.getRowKey());
+ arrangeableModel.setRowKey(ROW_KEY);
+ Assert.assertEquals(ROW_KEY, extendedDataModel.getRowKey());
+ arrangeableModel.setRowKey(extendedDataModel.getRowCount());
+ Assert.assertEquals(extendedDataModel.getRowCount(), extendedDataModel.getRowKey());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#walk(javax.faces.context.FacesContext,
+ * org.ajax4jsf.model.DataVisitor, org.ajax4jsf.model.Range, java.lang.Object)}.
+ */
+ @Test
+ public void testWalk() {
+
+ final List<Object> rowKeys = new ArrayList<Object>();
+ arrangeableModel.walk(facesContext, new DataVisitor() {
+ @Override
+ public DataVisitResult process(FacesContext context, Object rowKey, Object argument) {
+ arrangeableModel.setRowKey(rowKey);
+ if (arrangeableModel.isRowAvailable()) {
+ rowKeys.add(rowKey);
+ }
+ return DataVisitResult.CONTINUE;
+ }
+ }, new SequenceRange(0, -1), null);
+ Assert.assertEquals(FILTERD_AND_SORTED_ROW_KEYS, rowKeys);
+ }
+
+ /**
+ * Test method for
+ * {@link org.richfaces.model.ArrangeableModel#addDataModelListener(javax.faces.model.DataModelListener)}
+ * {@link org.richfaces.model.ArrangeableModel#removeDataModelListener(javax.faces.model.DataModelListener)} and
+ * {@link org.richfaces.model.ArrangeableModel#getDataModelListeners()}.
+ */
+ @Test
+ public void testDataModelListener() {
+ Assert.assertEquals(0, extendedDataModel.getDataModelListeners().length);
+ DataModelListener listener = new DataModelListener() {
+ @Override
+ public void rowSelected(DataModelEvent event) {
+
+ }
+ };
+ arrangeableModel.addDataModelListener(listener);
+ Assert.assertSame(listener, extendedDataModel.getDataModelListeners()[0]);
+ arrangeableModel.removeDataModelListener(listener);
+ Assert.assertEquals(0, extendedDataModel.getDataModelListeners().length);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#getRowData()}.
+ */
+ @Test
+ public void testGetRowData() {
+ boolean caught = false;
+ arrangeableModel.setRowKey(null);
+ try {
+ arrangeableModel.getRowData();
+ } catch (IllegalArgumentException e) {
+ caught = true;
+ } finally {
+ Assert.assertTrue(caught);
+ }
+ arrangeableModel.setRowKey(ROW_KEY);
+ Assert.assertEquals(arrangeableModel.getRowData(), extendedDataModel.getRowData());
+ caught = false;
+ arrangeableModel.setRowKey(extendedDataModel.getRowCount());
+ try {
+ arrangeableModel.getRowData();
+ } catch (IllegalArgumentException e) {
+ caught = true;
+ } finally {
+ Assert.assertTrue(caught);
+ }
+ }
+
+ /**
+ * Test method for {@link org.richfaces.model.ArrangeableModel#setWrappedData(java.lang.Object)} and
+ * {@link org.richfaces.model.ArrangeableModel#getWrappedData()}.
+ */
+ @Test
+ public void testWrappedData() {
+ Assert.assertSame(users, arrangeableModel.getWrappedData());
+ Object[] objects = new Object[0];
+ arrangeableModel.setWrappedData(objects);
+ Assert.assertSame(objects, arrangeableModel.getWrappedData());
+ }
+}
15 years