JBoss Rich Faces SVN: r18581 - trunk/core/impl/src/main/resources/META-INF/resources.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-08-11 20:10:10 -0400 (Wed, 11 Aug 2010)
New Revision: 18581
Modified:
trunk/core/impl/src/main/resources/META-INF/resources/richfaces.js
Log:
https://jira.jboss.org/browse/RF-9027
Modified: trunk/core/impl/src/main/resources/META-INF/resources/richfaces.js
===================================================================
--- trunk/core/impl/src/main/resources/META-INF/resources/richfaces.js 2010-08-11 23:28:17 UTC (rev 18580)
+++ trunk/core/impl/src/main/resources/META-INF/resources/richfaces.js 2010-08-12 00:10:10 UTC (rev 18581)
@@ -186,7 +186,7 @@
var levelSelect = console.children("select.rich-log-element");
if (levelSelect.length == 0) {
- levelSelect = jQuery("<select class='rich-log-element' />").appendTo(console);
+ levelSelect = jQuery("<select class='rich-log-element' name='richfaces.log' />").appendTo(console);
}
if (levelSelect.children().length == 0) {
15 years, 9 months
JBoss Rich Faces SVN: r18580 - in branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk: model/validator and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2010-08-11 19:28:17 -0400 (Wed, 11 Aug 2010)
New Revision: 18580
Added:
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/CallbackException.java
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/NamingConventionsCallback.java
Modified:
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
Log:
CODING IN PROGRESS - issue RF-8909: CDK: renderer-type is not written into .taglib.xml
https://jira.jboss.org/browse/RF-8909
Modified: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-08-11 22:59:48 UTC (rev 18579)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-08-11 23:28:17 UTC (rev 18580)
@@ -69,7 +69,7 @@
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">Infer component family by component type</p>
* @param componentType
* @return
* @throws InvalidNameException
@@ -85,35 +85,73 @@
*/
public ClassName inferTagHandlerClass(FacesId componentType, String markup) throws InvalidNameException;
+ /**
+ * <p class="changed_added_4_0">Infer VDL tag name by component type</p>
+ * @param componentType
+ * @return
+ * @throws InvalidNameException
+ */
public String inferTagName(FacesId componentType) throws InvalidNameException;
- public String inferRendererTypeByRendererClass(ClassName rendererClass);
+ /**
+ * <p class="changed_added_4_0">Determine renderer type by Java class</p>
+ * @param targetClass
+ * @return
+ */
+ public FacesId inferRendererType(ClassName targetClass);
- public String inferRendererTypeByComponentType(FacesId componentType);
- public String inferComponentFamily(FacesId type);
+ /**
+ * <p class="changed_added_4_0">Infer renderer family by renderer type</p>
+ * @param type
+ * @return
+ */
+ public FacesId inferRendererFamily(FacesId type);
- public String inferTemplate(FacesId type);
+ /**
+ * <p class="changed_added_4_0">Infer renderer type from template file path</p>
+ * @param templateName
+ * @return
+ */
+ public FacesId inferRendererTypeByTemplatePath(String templateName);
- public String inferRendererTypeByTemplatePath(String templateName);
+ /**
+ * <p class="changed_added_4_0">Infer Java class name by renderer type.</p>
+ * @param id
+ * @return
+ */
+ public ClassName inferRendererClass(FacesId id);
- public String inferRendererName(FacesId type);
- public String inferComponentTypeByRendererClass(String s);
-
- public String inferComponentFamilyByRendererClass(String s);
-
- public String inferRendererBaseName(FacesId type);
-
+ /**
+ * <p class="changed_added_4_0">Infer behavior type by class name</p>
+ * @param targetClass
+ * @return
+ */
public FacesId inferBehaviorType(ClassName targetClass);
+ /**
+ * <p class="changed_added_4_0">Infer name for generated behavior class by type</p>
+ * @param id
+ * @return
+ */
public ClassName inferBehaviorClass(FacesId id);
+ /**
+ * <p class="changed_added_4_0">Determine default taglib uri from library model.</p>
+ * @param library
+ * @return
+ */
public String inferTaglibUri(ComponentLibrary library);
+ /**
+ * <p class="changed_added_4_0">Infer short taglib name from URI</p>
+ * @param uri
+ * @return
+ */
public String inferTaglibName(String uri);
Modified: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-08-11 22:59:48 UTC (rev 18579)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-08-11 23:28:17 UTC (rev 18580)
@@ -1,9 +1,6 @@
package org.richfaces.cdk;
import java.net.URI;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import org.richfaces.cdk.model.ClassName;
import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.FacesId;
@@ -133,53 +130,14 @@
return baseName;
}
- public String inferRendererTypeByRendererClass(ClassName rendererClass) {
- Pattern pattern = Pattern.compile("^(.*).renderkit.(.*\\.)?(.*)RendererBase$");
- Matcher matcher = pattern.matcher(rendererClass.getName());
- if (matcher.matches()) {
- return matcher.group(1) + "." + matcher.group(3) + "Renderer";
- }
- return "";
- }
-
- @Override
- public String inferRendererTypeByComponentType(FacesId componentType) {
- return componentType + "Renderer";
- }
-
- public String inferComponentFamily(FacesId type) {
+ public FacesId inferRendererFamily(FacesId type) {
return null;
}
- public String inferTemplate(FacesId type) {
- return null;
+ public FacesId inferRendererTypeByTemplatePath(String templateName) {
+ return FacesId.parseId(templateName.replace('/', '.'));
}
- public String inferRendererTypeByTemplatePath(String templateName) {
- return null;
- }
-
- public String inferRendererName(FacesId type) {
- return null;
- }
-
- public String inferRendererBaseName(FacesId type) {
- return null;
- }
-
- public String inferComponentTypeByRendererClass(String s) {
- Pattern pattern = Pattern.compile("^(.*).renderkit.(.*\\.)?(.*)RendererBase$");
- Matcher matcher = pattern.matcher(s);
- if (matcher.matches()) {
- return matcher.group(1) + "." + matcher.group(3);
- }
- return "";
- }
-
- public String inferComponentFamilyByRendererClass(String s) {
- return inferComponentTypeByRendererClass(s);
- }
-
@Override
public ClassName inferBehaviorClass(FacesId id) {
if (null == id) {
@@ -269,4 +227,16 @@
// TODO infer name from library base names.
return "http://richfaces.org/a4j";
}
+
+ @Override
+ public ClassName inferRendererClass(FacesId id) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public FacesId inferRendererType(ClassName targetClass) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Added: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/CallbackException.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/CallbackException.java (rev 0)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/CallbackException.java 2010-08-11 23:28:17 UTC (rev 18580)
@@ -0,0 +1,38 @@
+/*
+ * $Id$
+ *
+ * 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.cdk.model.validator;
+
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+@SuppressWarnings("serial")
+public class CallbackException extends Exception {
+
+ public CallbackException(String message) {
+ super(message);
+ }
+
+}
Property changes on: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/CallbackException.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/NamingConventionsCallback.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/NamingConventionsCallback.java (rev 0)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/NamingConventionsCallback.java 2010-08-11 23:28:17 UTC (rev 18580)
@@ -0,0 +1,49 @@
+package org.richfaces.cdk.model.validator;
+
+import org.richfaces.cdk.model.ClassName;
+import org.richfaces.cdk.model.FacesId;
+
+/**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @author asmirnov(a)exadel.com
+ *
+ */
+interface NamingConventionsCallback {
+
+ /**
+ * <p class="changed_added_4_0">Infer JSF type by Java class name</p>
+ * @param targetClass
+ * @return
+ */
+ FacesId inferType(ClassName targetClass) throws CallbackException;
+
+ /**
+ * <p class="changed_added_4_0">Last resort - infer default JSF type</p>
+ * @return
+ */
+ FacesId inferType() throws CallbackException;
+
+ /**
+ * <p class="changed_added_4_0">Infer Java class name by JSF type</p>
+ * @param id
+ * @return
+ */
+ ClassName inferClass(FacesId id) throws CallbackException;
+
+ /**
+ * <p class="changed_added_4_0">Infer default base class for cenerated component.</p>
+ * @return
+ * @throws CallbackException
+ */
+ ClassName inferBaseClass() throws CallbackException;
+
+ /**
+ * <p class="changed_added_4_0">Infer default Java class name.</p>
+ * @return
+ * @throws CallbackException
+ */
+ ClassName inferClass() throws CallbackException;
+
+}
\ No newline at end of file
Property changes on: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/NamingConventionsCallback.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-08-11 22:59:48 UTC (rev 18579)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-08-11 23:28:17 UTC (rev 18580)
@@ -27,6 +27,10 @@
import java.util.HashSet;
import java.util.NoSuchElementException;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.render.Renderer;
import javax.faces.view.facelets.BehaviorHandler;
import javax.faces.view.facelets.ComponentHandler;
import javax.faces.view.facelets.ConverterHandler;
@@ -74,21 +78,6 @@
public static final ClassName DEFAULT_CONVERTER_HANDLER = new ClassName(ConverterHandler.class);
public static final ClassName DEFAULT_BEHAVIOR_HANDLER = new ClassName(BehaviorHandler.class);
- /**
- * <p class="changed_added_4_0">
- * </p>
- *
- * @author asmirnov(a)exadel.com
- *
- */
- interface NamingConventionsCallback {
-
- FacesId inferType(ClassName targetClass);
-
- ClassName inferClass(FacesId id);
-
- }
-
@Inject
private Logger log;
@@ -177,20 +166,33 @@
* @param library
*/
protected void verifyBehaviors(ComponentLibrary library) {
- for (BehaviorModel behavior : library.getBehaviors()) {
+ for (final BehaviorModel behavior : library.getBehaviors()) {
verifyTypes(behavior, new NamingConventionsCallback() {
@Override
public FacesId inferType(ClassName targetClass) {
- // TODO Auto-generated method stub
return namingConventions.inferBehaviorType(targetClass);
}
@Override
+ public FacesId inferType() throws CallbackException {
+ throw new CallbackException("Cannot infer type for behavior "+behavior);
+ }
+
+ @Override
public ClassName inferClass(FacesId id) {
- // TODO Auto-generated method stub
return namingConventions.inferBehaviorClass(id);
}
+
+ @Override
+ public ClassName inferBaseClass() throws CallbackException {
+ return ClassName.get(ClientBehaviorBase.class);
+ }
+
+ @Override
+ public ClassName inferClass() throws CallbackException {
+ throw new CallbackException("Cannot infer Java class name for behavior "+behavior);
+ }
});
for (TagModel tag : behavior.getTags()) {
verifyTag(tag, behavior.getId(), DEFAULT_BEHAVIOR_HANDLER);
@@ -203,19 +205,56 @@
for (RenderKitModel renderKit : library.getRenderKits()) {
// Check render kit name and class.
for (RendererModel renderer : renderKit.getRenderers()) {
-
vefifyRenderer(library, renderer);
}
}
}
- protected void vefifyRenderer(ComponentLibrary library, RendererModel renderer) {
+ protected void vefifyRenderer(ComponentLibrary library, final RendererModel renderer) {
// Check type.
+ verifyTypes(renderer, new NamingConventionsCallback() {
+
+ @Override
+ public FacesId inferType(ClassName targetClass) {
+ return namingConventions.inferRendererType(targetClass);
+ }
+
+ @Override
+ public FacesId inferType() throws CallbackException {
+ FacesId rendererType;
+ String templatePath = renderer.getTemplatePath();
+ if(null != templatePath){
+ rendererType = namingConventions.inferRendererTypeByTemplatePath(templatePath);
+ } else {
+ // lookup for renderer-specific component type.
+ String componentType = renderer.getComponentType();
+ throw new CallbackException("Cannot determine renderer type");
+ }
+ return rendererType;
+ }
+
+ @Override
+ public ClassName inferClass(FacesId id) {
+ return namingConventions.inferRendererClass(id);
+ }
+
+ @Override
+ public ClassName inferClass() throws CallbackException {
+ throw new CallbackException("Cannot determine renderer class name");
+ }
+
+ @Override
+ public ClassName inferBaseClass() throws CallbackException {
+ return ClassName.get(Renderer.class);
+ }
+ });
+ // Check component type.
// Check family.
- // Check generated class.
- // Check superclass.
- // Check component type.
+ if(null == renderer.getFamily()){
+// renderer.setFamily(namingConventions.inferRendererBaseName(renderer.getId()));
+ }
+ // Check attributes ( propagate descriptions from renderer-specific component ).
}
protected void verifyComponents(ComponentLibrary library) throws CdkException {
@@ -324,41 +363,65 @@
public ClassName inferClass(FacesId id) {
return namingConventions.inferUIComponentClass(id);
}
+
+ @Override
+ public ClassName inferBaseClass() throws CallbackException {
+ return ClassName.get(UIComponentBase.class);
+ }
+
+ @Override
+ public ClassName inferClass() throws CallbackException {
+ throw new CallbackException("Cannot determine component class name");
+ }
+
+ @Override
+ public FacesId inferType() throws CallbackException {
+ throw new CallbackException("Cannot determine component type");
+ }
+
}) && null == component.getFamily()) {
// Check family.
component.setFamily(namingConventions.inferUIComponentFamily(component.getId()));
}
}
+ /**
+ * <p class="changed_added_4_0">This method virifies type/family attributes for JSF objects ( components, renderers, validators, converters, behaviors )</p>
+ * @param component object to verify.
+ * @param callback callback to corresponding naming conventions.
+ * @return
+ */
protected boolean verifyTypes(FacesComponent component, NamingConventionsCallback callback) {
// Check JsfComponent type.
+ try {
if (null == component.getId()) {
if (null != component.getTargetClass()) {
component.setId(callback.inferType(component.getTargetClass()));
} else if (null != component.getBaseClass()) {
component.setId(callback.inferType(component.getBaseClass()));
} else {
- // No clue for component type, log error and return.
- log.error("No type information available for component: " + component);
- return false;
+ component.setId(callback.inferType());
}
}
// Check classes.
if (component.isGenerate()) {
if (null == component.getBaseClass()) {
- log.error("Base class for generated component is not set :" + component.getId());
+ component.setBaseClass(callback.inferBaseClass());
// return;
} else if (null == component.getTargetClass()) {
component.setTargetClass(callback.inferClass(component.getId()));
}
} else if (null == component.getTargetClass()) {
- if (null != component.getBaseClass()) {
- component.setTargetClass(component.getBaseClass());
- } else {
- log.error("No class information available for component: " + component);
- return false;
+ if (null == component.getBaseClass()) {
+ component.setBaseClass(callback.inferClass());
}
+ component.setTargetClass(component.getBaseClass());
+
}
+ } catch (CallbackException e) {
+ log.error(e.getMessage());
+ return false;
+ }
return true;
}
15 years, 9 months
JBoss Rich Faces SVN: r18579 - in trunk/ui: core/ui and 8 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-08-11 18:59:48 -0400 (Wed, 11 Aug 2010)
New Revision: 18579
Modified:
trunk/ui/common/ui/pom.xml
trunk/ui/core/ui/pom.xml
trunk/ui/dist/richfaces-components-api/pom.xml
trunk/ui/dist/richfaces-components-ui/pom.xml
trunk/ui/iteration/api/pom.xml
trunk/ui/iteration/ui/pom.xml
trunk/ui/misc/ui/pom.xml
trunk/ui/output/api/pom.xml
trunk/ui/output/ui/pom.xml
trunk/ui/parent/pom.xml
Log:
ui/common module build integration
Modified: trunk/ui/common/ui/pom.xml
===================================================================
--- trunk/ui/common/ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/common/ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -30,7 +30,7 @@
<relativePath>../../parent/pom.xml</relativePath>
</parent>
- <groupId>org.richfaces.ui.commmon</groupId>
+ <groupId>org.richfaces.ui.common</groupId>
<artifactId>richfaces-ui-common-ui</artifactId>
<name>Richfaces UI Components: Common UI</name>
<packaging>jar</packaging>
@@ -40,6 +40,12 @@
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<!-- runtime -->
<dependency>
<groupId>org.richfaces.core</groupId>
Modified: trunk/ui/core/ui/pom.xml
===================================================================
--- trunk/ui/core/ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/core/ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -49,6 +49,10 @@
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ </dependency>
<dependency>
<groupId>org.richfaces.cdk</groupId>
Modified: trunk/ui/dist/richfaces-components-api/pom.xml
===================================================================
--- trunk/ui/dist/richfaces-components-api/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/dist/richfaces-components-api/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -40,6 +40,10 @@
<dependencies>
<dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.richfaces.ui.iteration</groupId>
<artifactId>richfaces-ui-iteration-api</artifactId>
</dependency>
@@ -147,7 +151,7 @@
<configuration>
<classifier>sources</classifier>
- <includeGroupIds>org.richfaces.ui.iteration, org.richfaces.ui.output</includeGroupIds>
+ <includeGroupIds>org.richfaces.ui.common, org.richfaces.ui.iteration, org.richfaces.ui.output</includeGroupIds>
<useSubDirectoryPerArtifact>true</useSubDirectoryPerArtifact>
<excludeTransitive>true</excludeTransitive>
</configuration>
Modified: trunk/ui/dist/richfaces-components-ui/pom.xml
===================================================================
--- trunk/ui/dist/richfaces-components-ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/dist/richfaces-components-ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -41,6 +41,10 @@
<dependencies>
<!-- artifacts for aggregation -->
<dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.richfaces.ui.core</groupId>
<artifactId>richfaces-ui-core-ui</artifactId>
</dependency>
@@ -173,7 +177,7 @@
<configuration>
<classifier>sources</classifier>
- <includeGroupIds>${assembly.projects.group}.core, ${assembly.projects.group}.misc, ${assembly.projects.group}.iteration, ${assembly.projects.group}.output</includeGroupIds>
+ <includeGroupIds>${assembly.projects.group}.common, ${assembly.projects.group}.core, ${assembly.projects.group}.misc, ${assembly.projects.group}.iteration, ${assembly.projects.group}.output</includeGroupIds>
<useSubDirectoryPerArtifact>true</useSubDirectoryPerArtifact>
<excludeTransitive>true</excludeTransitive>
</configuration>
Modified: trunk/ui/iteration/api/pom.xml
===================================================================
--- trunk/ui/iteration/api/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/iteration/api/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -64,6 +64,10 @@
<groupId>org.richfaces.ui.core</groupId>
<artifactId>richfaces-ui-core-ui</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-api</artifactId>
+ </dependency>
<!-- tests -->
<dependency>
Modified: trunk/ui/iteration/ui/pom.xml
===================================================================
--- trunk/ui/iteration/ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/iteration/ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -63,6 +63,10 @@
<artifactId>richfaces-core-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ </dependency>
+ <dependency>
<!-- todo remove this dependency or move to test scope -->
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
Modified: trunk/ui/misc/ui/pom.xml
===================================================================
--- trunk/ui/misc/ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/misc/ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -69,9 +69,13 @@
<artifactId>annotations</artifactId>
</dependency>
<dependency>
- <groupId>org.richfaces.ui.core</groupId>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.ui.core</groupId>
<artifactId>richfaces-ui-core-ui</artifactId>
- </dependency>
+ </dependency>
<!-- JSF with dependencies -->
<dependency>
Modified: trunk/ui/output/api/pom.xml
===================================================================
--- trunk/ui/output/api/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/output/api/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -40,6 +40,10 @@
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-api</artifactId>
+ </dependency>
<!-- JSF with dependencies -->
<dependency>
Modified: trunk/ui/output/ui/pom.xml
===================================================================
--- trunk/ui/output/ui/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/output/ui/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -54,6 +54,10 @@
<artifactId>richfaces-core-impl</artifactId>
</dependency>
<dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ </dependency>
+ <dependency>
<!-- todo remove this dependency -->
<groupId>org.richfaces.ui.core</groupId>
<artifactId>richfaces-ui-core-ui</artifactId>
Modified: trunk/ui/parent/pom.xml
===================================================================
--- trunk/ui/parent/pom.xml 2010-08-11 21:21:57 UTC (rev 18578)
+++ trunk/ui/parent/pom.xml 2010-08-11 22:59:48 UTC (rev 18579)
@@ -40,6 +40,7 @@
<org.richfaces.cdk.version>4.0.0-SNAPSHOT</org.richfaces.cdk.version>
<org.richfaces.core.version>4.0.0-SNAPSHOT</org.richfaces.core.version>
<org.richfaces.commons.version>4.0.0-SNAPSHOT</org.richfaces.commons.version>
+ <org.richfaces.ui.common.version>4.0.0-SNAPSHOT</org.richfaces.ui.common.version>
<org.richfaces.ui.core.version>4.0.0-SNAPSHOT</org.richfaces.ui.core.version>
<org.richfaces.ui.misc.version>4.0.0-SNAPSHOT</org.richfaces.ui.misc.version>
<org.richfaces.ui.iteration.version>4.0.0-SNAPSHOT</org.richfaces.ui.iteration.version>
@@ -64,6 +65,17 @@
</dependency>
<dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.ui.common</groupId>
+ <artifactId>richfaces-ui-common-ui</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.richfaces.ui.core</groupId>
<artifactId>richfaces-ui-core-ui</artifactId>
<version>${project.version}</version>
15 years, 9 months
JBoss Rich Faces SVN: r18578 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: richDataScroller and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:21:57 -0400 (Wed, 11 Aug 2010)
New Revision: 18578
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java
Log:
refactored PaginationTester to make possible set DataScroller directly
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java 2010-08-11 21:21:10 UTC (rev 18577)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java 2010-08-11 21:21:57 UTC (rev 18578)
@@ -27,7 +27,6 @@
import javax.xml.bind.JAXBException;
-import org.jboss.test.selenium.locator.JQueryLocator;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
import org.richfaces.tests.metamer.ftest.annotations.Use;
import org.richfaces.tests.metamer.ftest.model.DataScroller;
@@ -43,10 +42,10 @@
public class TestPagination extends AbstractDataGridTest {
@Inject
- @Use("dataScrollerLocator*")
- JQueryLocator dataScrollerLocator;
- JQueryLocator dataScrollerLocator1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
- JQueryLocator dataScrollerLocator2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
+ @Use("dataScroller*")
+ DataScroller dataScroller;
+ DataScroller dataScroller1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
+ DataScroller dataScroller2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
PaginationTester paginationTester = new PaginationTester() {
@@ -56,21 +55,19 @@
@Override
protected void verifyAfterScrolling() {
- page = getDataScroller().getCurrentPage();
- lastPage = getDataScroller().getLastPage();
+ page = dataScroller.getCurrentPage();
+ lastPage = dataScroller.getLastPage();
verifyGrid();
}
};
- DataScroller dataScroller = paginationTester.getDataScroller();
-
public TestPagination() throws JAXBException {
super();
}
@BeforeMethod
public void setupDataScroller() {
- dataScroller.setRoot(dataScrollerLocator);
+ paginationTester.setDataScroller(dataScroller);
int lastPage = dataScroller.obtainLastPage();
dataScroller.setLastPage(lastPage);
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java 2010-08-11 21:21:10 UTC (rev 18577)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java 2010-08-11 21:21:57 UTC (rev 18578)
@@ -21,7 +21,7 @@
*******************************************************************************/
package org.richfaces.tests.metamer.ftest.richDataScroller;
-import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.model.AssertingDataScroller;
import org.richfaces.tests.metamer.ftest.model.DataScroller;
import static org.richfaces.tests.metamer.ftest.AbstractMetamerTest.pjq;
@@ -33,8 +33,10 @@
*/
public abstract class PaginationTester {
- public static final JQueryLocator DATA_SCROLLER_OUTSIDE_TABLE = pjq("span.rf-ds[id$=scroller1]");
- public static final JQueryLocator DATA_SCROLLER_IN_TABLE_FOOTER = pjq("span.rf-ds[id$=scroller2]");
+ public static final AssertingDataScroller DATA_SCROLLER_OUTSIDE_TABLE = new AssertingDataScroller(
+ "ds-outside-table", pjq("span.rf-ds[id$=scroller1]"));
+ public static final AssertingDataScroller DATA_SCROLLER_IN_TABLE_FOOTER = new AssertingDataScroller(
+ "ds-in-table-footer", pjq("span.rf-ds[id$=scroller2]"));
protected DataScroller dataScroller;
private int[] testPages;
@@ -47,10 +49,6 @@
}
}
- public DataScroller getDataScroller() {
- return dataScroller;
- }
-
public void setDataScroller(DataScroller dataScroller) {
this.dataScroller = dataScroller;
}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java 2010-08-11 21:21:10 UTC (rev 18577)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java 2010-08-11 21:21:57 UTC (rev 18578)
@@ -30,7 +30,6 @@
import java.net.URL;
import org.jboss.test.selenium.locator.IdLocator;
-import org.jboss.test.selenium.locator.JQueryLocator;
import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
import org.richfaces.tests.metamer.ftest.annotations.Use;
@@ -56,10 +55,10 @@
int maxPages;
@Inject
- @Use("dataScrollerLocator*")
- JQueryLocator dataScrollerLocator;
- JQueryLocator dataScrollerLocator1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
- JQueryLocator dataScrollerLocator2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
+ @Use("dataScroller*")
+ DataScroller dataScroller;
+ DataScroller dataScroller1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
+ DataScroller dataScroller2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
PaginationTester paginationTester = new PaginationTester() {
@@ -77,8 +76,7 @@
IdLocator attributeFastStep = id("form:attributes:fastStepInput");
IdLocator attributeMaxPages = id("form:attributes:maxPagesInput");
-
- DataScroller dataScroller = paginationTester.getDataScroller();
+
DataTable dataTable = new DataTable(pjq("table.rf-dt[id$=richDataTable]"));
String tableText;
@@ -93,7 +91,7 @@
guardHttp(selenium).type(attributeFastStep, String.valueOf(fastStep));
guardHttp(selenium).type(attributeMaxPages, String.valueOf(maxPages));
- dataScroller.setRoot(dataScrollerLocator);
+ paginationTester.setDataScroller(dataScroller);
dataScroller.setFastStep(fastStep);
int lastPage = dataScroller.obtainLastPage();
15 years, 9 months
JBoss Rich Faces SVN: r18577 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: model and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:21:10 -0400 (Wed, 11 Aug 2010)
New Revision: 18577
Added:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/ComponentControlDataScroller.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/TestDataScroller.java
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
Log:
added test case for testing DataScroller using ComponentControl
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java 2010-08-11 21:20:08 UTC (rev 18576)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java 2010-08-11 21:21:10 UTC (rev 18577)
@@ -41,7 +41,7 @@
protected static final String CLASS_DISABLED = "rf-ds-dis";
- AjaxSelenium selenium = AjaxSeleniumProxy.getInstance();
+ protected AjaxSelenium selenium = AjaxSeleniumProxy.getInstance();
ReferencedLocator<JQueryLocator> numberedPages = ref(root, "> .rf-ds-dtl");
ReferencedLocator<JQueryLocator> specificNumberedPage = ref(root, "> .rf-ds-dtl:textEquals('{0}')");
Added: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/ComponentControlDataScroller.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/ComponentControlDataScroller.java (rev 0)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/ComponentControlDataScroller.java 2010-08-11 21:21:10 UTC (rev 18577)
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.tests.metamer.ftest.richComponentControl;
+
+import org.jboss.test.selenium.dom.Event;
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.model.AssertingDataScroller;
+
+import static org.jboss.test.selenium.locator.LocatorFactory.*;
+import static org.jboss.test.selenium.guard.request.RequestTypeGuardFactory.*;
+import static org.testng.Assert.*;
+
+/**
+ * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public class ComponentControlDataScroller extends AssertingDataScroller {
+
+ JQueryLocator button = jq(":submit[id$=button]");
+ JQueryLocator selectOperation = jq(":radio[name$=operationInput][value={0}]");
+
+ public ComponentControlDataScroller() {
+ super(jq("span.rf-ds[id$=scroller]"));
+ }
+
+ @Override
+ public void clickFirstPageButton() {
+ doOperation("first");
+ }
+
+ @Override
+ public void clickFastRewind() {
+ doOperation("previous");
+ }
+
+ @Override
+ public void clickFastForward() {
+ doOperation("next");
+ }
+
+ @Override
+ public void clickLastPageButton() {
+ doOperation("last");
+ }
+
+ private void doOperation(String operation) {
+ JQueryLocator locator = selectOperation.format(operation);
+ if (!"on".equals(selenium.getValue(locator))) {
+ selenium.check(locator);
+ guardHttp(selenium).fireEvent(locator, Event.CHANGE);
+ }
+ guardXhr(selenium).click(button);
+ }
+
+ @Override
+ public void clickPageButton(int pageNumber) {
+ int lastPage = getCurrentPage();
+ while (pageNumber < lastPage) {
+ clickFastRewind();
+ int page = getCurrentPage();
+ assertEquals(page, lastPage - 1);
+ lastPage = page;
+ }
+ while (pageNumber > lastPage) {
+ clickFastForward();
+ int page = getCurrentPage();
+ assertEquals(page, lastPage + 1);
+ lastPage = page;
+ }
+ }
+}
Added: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/TestDataScroller.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/TestDataScroller.java (rev 0)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richComponentControl/TestDataScroller.java 2010-08-11 21:21:10 UTC (rev 18577)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.tests.metamer.ftest.richComponentControl;
+
+import static org.jboss.test.selenium.utils.URLUtils.buildUrl;
+
+import java.net.URL;
+
+import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
+import org.richfaces.tests.metamer.ftest.richDataScroller.PaginationTester;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public class TestDataScroller extends AbstractMetamerTest {
+
+ ComponentControlDataScroller dataScroller = new ComponentControlDataScroller();
+
+ PaginationTester paginationTester = new PaginationTester() {
+
+ @Override
+ protected void verifyBeforeScrolling() {
+
+ }
+
+ @Override
+ protected void verifyAfterScrolling() {
+
+ }
+ };
+
+ @Override
+ public URL getTestUrl() {
+ return buildUrl(contextPath, "faces/components/richComponentControl/simple.xhtml");
+ }
+
+ @BeforeMethod
+ public void setup() {
+ paginationTester.setDataScroller(dataScroller);
+ int lastPage = dataScroller.obtainLastPage();
+ dataScroller.setLastPage(lastPage);
+ paginationTester.initializeTestedPages(lastPage);
+ }
+
+ @Test
+ public void testScrollerPagination() {
+ paginationTester.testNumberedPages();
+ }
+}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java 2010-08-11 21:20:08 UTC (rev 18576)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java 2010-08-11 21:21:10 UTC (rev 18577)
@@ -22,7 +22,6 @@
package org.richfaces.tests.metamer.ftest.richDataScroller;
import org.jboss.test.selenium.locator.JQueryLocator;
-import org.richfaces.tests.metamer.ftest.model.AssertingDataScroller;
import org.richfaces.tests.metamer.ftest.model.DataScroller;
import static org.richfaces.tests.metamer.ftest.AbstractMetamerTest.pjq;
@@ -37,7 +36,7 @@
public static final JQueryLocator DATA_SCROLLER_OUTSIDE_TABLE = pjq("span.rf-ds[id$=scroller1]");
public static final JQueryLocator DATA_SCROLLER_IN_TABLE_FOOTER = pjq("span.rf-ds[id$=scroller2]");
- protected AssertingDataScroller dataScroller = new AssertingDataScroller(null);
+ protected DataScroller dataScroller;
private int[] testPages;
public void initializeTestedPages(int lastPage) {
@@ -52,6 +51,10 @@
return dataScroller;
}
+ public void setDataScroller(DataScroller dataScroller) {
+ this.dataScroller = dataScroller;
+ }
+
public void testNumberedPages() {
Integer lastNumber = null;
for (int pageNumber : testPages) {
15 years, 9 months
JBoss Rich Faces SVN: r18576 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: a4jPush and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:20:08 -0400 (Wed, 11 Aug 2010)
New Revision: 18576
Added:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestInterval.java
Removed:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPoll.java
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPush/TestInterval.java
Log:
stabilized TestPoll (now a4jPoll/TestInterval) and refactored + refactored a4jPush/TestInterval
Copied: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestInterval.java (from rev 18575, modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPoll.java)
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestInterval.java (rev 0)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestInterval.java 2010-08-11 21:20:08 UTC (rev 18576)
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * 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.tests.metamer.ftest.a4jPoll;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.commons.httpclient.HttpException;
+import org.jboss.test.selenium.dom.Event;
+import org.jboss.test.selenium.locator.Attribute;
+import org.jboss.test.selenium.locator.AttributeLocator;
+import org.jboss.test.selenium.locator.IdLocator;
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
+import org.richfaces.tests.metamer.ftest.annotations.Inject;
+import org.richfaces.tests.metamer.ftest.annotations.Templates;
+import org.richfaces.tests.metamer.ftest.annotations.Use;
+import org.testng.annotations.Test;
+
+import static org.jboss.test.selenium.utils.URLUtils.buildUrl;
+import static org.jboss.test.selenium.locator.LocatorFactory.*;
+import static org.testng.Assert.*;
+import static org.jboss.test.selenium.utils.text.SimplifiedFormat.format;
+import static org.jboss.test.selenium.utils.PrimitiveUtils.*;
+import static org.jboss.test.selenium.guard.request.RequestTypeGuardFactory.*;
+
+/**
+ * Tests the a4j:poll component.
+ *
+ * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public class TestInterval extends AbstractMetamerTest {
+
+ private static final int ITERATION_COUNT = 5;
+
+ @Inject
+ int interval;
+
+ IdLocator attributeEnabled = id("form:attributes:enabledInput");
+ IdLocator attributeInterval = id("form:attributes:intervalInput");
+ JQueryLocator time = pjq("span[id$=time]");
+ AttributeLocator<?> clientTime = pjq("span[id$=clientDate]").getAttribute(Attribute.TITLE);
+
+ long startTime;
+
+ long deviationTotal = 0;
+ long devicationCount = 0;
+
+ @Override
+ public URL getTestUrl() {
+ return buildUrl(contextPath, "faces/components/a4jPoll/simple.xhtml");
+ }
+
+ @Test
+ @Use(field = "interval", ints = { 1000 })
+ public void testClientAllTemplates() throws HttpException, IOException {
+ testClient();
+ }
+
+ @Test
+ @Use(field = "interval", ints = { 500, 5000 })
+ @Templates(value = "plain")
+ public void testClientDifferentIntervals() throws HttpException, IOException {
+ testClient();
+ }
+
+ /**
+ * <p>
+ * Test the progress of polling for 3 different values from client side.
+ * </p>
+ *
+ * <p>
+ * It defines the new interval value first for each iteration and then enable polling.
+ * </p>
+ *
+ * <p>
+ * Then, it waits for first poll event (zero iteration).
+ * </p>
+ *
+ * <p>
+ * For 5 following poll events it checks that runtime visible from client (output from JavaScript's new
+ * Date().getTime()) between the events haven't greater deviation from defined interval than defined
+ * {@link #MAX_DEVIATION}.
+ * </p>
+ *
+ * <p>
+ * Test also computes average value of deviation and checks that the average value of all obtained particular
+ * deviations isn't greater than {@link #MAX_AVERAGE_DEVIATION}.
+ * </p>
+ */
+ public void testClient() {
+ guardHttp(selenium).type(attributeInterval, String.valueOf(interval));
+
+ selenium.check(attributeEnabled);
+ guardHttp(selenium).fireEvent(attributeEnabled, Event.CHANGE);
+
+ waitForPoll();
+ for (int i = 0; i < ITERATION_COUNT; i++) {
+ startInterval();
+ waitForPoll();
+ validateInterval();
+ }
+
+ validateAverageDeviation();
+ }
+
+ private void startInterval() {
+ startTime = System.currentTimeMillis();
+ }
+
+ private void waitForPoll() {
+ selenium.getPageExtensions().install();
+ selenium.getRequestInterceptor().clearRequestTypeDone();
+ selenium.getRequestInterceptor().waitForRequestTypeChange();
+ }
+
+ private void validateInterval() {
+ long runTime = getClientTime() - startTime;
+ long deviation = Math.abs(interval - runTime);
+
+ if (seleniumDebug) {
+ System.out.println(format("deviation for interval {0}: {1}", interval, deviation));
+ }
+
+ assertTrue(deviation <= interval,
+ format("Deviation ({0}) is greater than one interval {1}", deviation, interval));
+
+ deviationTotal += deviation;
+ devicationCount += 1;
+ }
+
+ private void validateAverageDeviation() {
+ long maximumAvgDeviation = Math.min(interval / 4, 1000);
+ long averageDeviation = deviationTotal / devicationCount;
+
+ if (seleniumDebug) {
+ System.out.println("averageDeviation: " + averageDeviation);
+ }
+ assertTrue(
+ averageDeviation <= maximumAvgDeviation,
+ format("Average deviation for all the intervals ({0}) should not be greater than defined maximum {1}",
+ averageDeviation, maximumAvgDeviation));
+ }
+
+ /**
+ * Returns the time of poll event (the time when arrived the response from server)
+ *
+ * @return the time of poll event (the time when arrived the response from server)
+ */
+ private long getClientTime() {
+ return asLong(selenium.getAttribute(clientTime));
+ }
+}
Deleted: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPoll.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPoll.java 2010-08-11 21:19:18 UTC (rev 18575)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPoll.java 2010-08-11 21:20:08 UTC (rev 18576)
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * 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.tests.metamer.ftest.a4jPoll;
-
-import java.net.URL;
-
-import org.jboss.test.selenium.dom.Event;
-import org.jboss.test.selenium.locator.Attribute;
-import org.jboss.test.selenium.locator.AttributeLocator;
-import org.jboss.test.selenium.locator.IdLocator;
-import org.jboss.test.selenium.locator.JQueryLocator;
-import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
-import org.testng.annotations.Test;
-
-import static org.jboss.test.selenium.utils.URLUtils.buildUrl;
-import static org.jboss.test.selenium.locator.LocatorFactory.*;
-import static org.testng.Assert.*;
-import static org.jboss.test.selenium.SystemProperties.isSeleniumDebug;
-import static org.jboss.test.selenium.utils.text.SimplifiedFormat.format;
-import static org.jboss.test.selenium.utils.PrimitiveUtils.*;
-
-/**
- * Tests the a4j:poll component.
- *
- * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
- * @version $Revision$
- */
-public class TestPoll extends AbstractMetamerTest {
-
- private static final Attribute ATTRIBUTE_TITLE = new Attribute("title");
- private static final int[] TEST_INTERVAL_VALUES = new int[]{1000, 5000, 500};
- private static final int TEST_INTERVAL_ITERATIONS = 5;
- private static final int MAX_DEVIATION = 100;
- private static final int MAX_AVERAGE_DEVIATION = 50;
-
- IdLocator attributeEnabled = id("form:attributes:enabledInput");
- IdLocator attributeInterval = id("form:attributes:intervalInput");
- JQueryLocator time = pjq("span[id$=time]");
- AttributeLocator<?> clientTime = pjq("span[id$=clientDate]").getAttribute(ATTRIBUTE_TITLE);
-
- @Override
- public URL getTestUrl() {
- return buildUrl(contextPath, "faces/components/a4jPoll/simple.xhtml");
- }
-
- /**
- * <p>
- * Test the progress of polling for 3 different values from client side.
- * </p>
- *
- * <p>
- * It defines the new interval value first for each iteration and then enable polling.
- * </p>
- *
- * <p>
- * Then, it waits for first poll event (zero iteration).
- * </p>
- *
- * <p>
- * For 5 following poll events it checks that runtime visible from client (output from JavaScript's new
- * Date().getTime()) between the events haven't greater deviation from defined interval than defined
- * {@link #MAX_DEVIATION}.
- * </p>
- *
- * <p>
- * Test also computes average value of deviation and checks that the average value of all obtained particular
- * deviations isn't greater than {@link #MAX_AVERAGE_DEVIATION}.
- * </p>
- */
- @Test(groups = "client-side-perf")
- public void testIntervalFromClientPerspective() {
-
- long total = 0;
- long count = 0;
- for (int interval : TEST_INTERVAL_VALUES) {
- selenium.type(attributeInterval, String.valueOf(interval));
- selenium.waitForPageToLoad();
-
- selenium.check(attributeEnabled);
- selenium.fireEvent(attributeEnabled, Event.CHANGE);
- selenium.waitForPageToLoad();
-
- selenium.getPageExtensions().install();
-
- long currentTime = getClientTime();
-
- for (int i = 0; i <= TEST_INTERVAL_ITERATIONS; i++) {
- long runtime = System.currentTimeMillis();
- selenium.getRequestInterceptor().clearRequestTypeDone();
- selenium.getRequestInterceptor().waitForRequestTypeChange();
- runtime -= getClientTime();
- if (i > 0) {
-
- long deviation = Math.abs(interval - Math.abs(runtime));
- if (isSeleniumDebug()) {
- System.out.println(format("deviation for interval {0}: {1}", interval, deviation));
- }
- assertTrue(deviation <= MAX_DEVIATION, format(
- "Particular deviation ({2}) for interval {0} was greater than {1}", interval, MAX_DEVIATION,
- deviation));
- total += deviation;
- count += 1;
- }
- currentTime += runtime;
- }
-
- selenium.uncheck(attributeEnabled);
- selenium.fireEvent(attributeEnabled, Event.CHANGE);
- selenium.waitForPageToLoad();
- }
-
- long averageDeviation = total / count;
-
- if (isSeleniumDebug()) {
- System.out.println(format("total average deviation: {0}", averageDeviation));
- }
-
- assertTrue(averageDeviation <= MAX_AVERAGE_DEVIATION, format(
- "Average deviation ({1}) was greater than given maximum {0}", MAX_AVERAGE_DEVIATION, averageDeviation));
- }
-
- /**
- * Returns the time of poll event (the time when arrived the response from server)
- * @return the time of poll event (the time when arrived the response from server)
- */
- private long getClientTime() {
- return asLong(selenium.getAttribute(clientTime));
- }
-
-}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPush/TestInterval.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPush/TestInterval.java 2010-08-11 21:19:18 UTC (rev 18575)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPush/TestInterval.java 2010-08-11 21:20:08 UTC (rev 18576)
@@ -43,23 +43,22 @@
* @version $Revision$
*/
public class TestInterval extends AbstractPushTest {
-
- private static final Attribute ATTRIBUTE_TITLE = new Attribute("title");
+
private static final int DEFAULT_COUNTER_STEP = 2;
private static final int ITERATION_COUNT = 3;
private static final int MULTIPLE_PUSH_COUNT = 5;
- AttributeLocator<?> clientTime = pjq("span[id$=clientDate]").getAttribute(ATTRIBUTE_TITLE);
+ @Inject
+ int interval;
- private long startTime;
- private int counter;
- private int counterStep;
+ AttributeLocator<?> clientTime = pjq("span[id$=clientDate]").getAttribute(Attribute.TITLE);
- private long deviationTotal = 0;
- private long deviationCount = 0;
+ long startTime;
+ int counter;
+ int counterStep;
- @Inject
- private int interval;
+ long deviationTotal = 0;
+ long deviationCount = 0;
/**
* <p>
@@ -82,21 +81,7 @@
@Test
@Use(field = "interval", ints = { 1000 })
public void testClientAllTemplates() throws HttpException, IOException {
- counterStep = DEFAULT_COUNTER_STEP;
- pushAttributes.setInterval(interval);
-
- pushAndWait(1);
- for (int i = 0; i < ITERATION_COUNT; i++) {
- startIntervalAndCounter();
- pushAndWait(1);
- validateIntervalAndCounter(interval);
-
- startIntervalAndCounter();
- pushAndWait(MULTIPLE_PUSH_COUNT);
- validateIntervalAndCounter(interval);
- }
-
- validateAverageDeviation();
+ testClient();
}
/**
@@ -121,6 +106,10 @@
@Use(field = "interval", ints = { 500, 5000 })
@Templates(value = "plain")
public void testClientDifferentIntervals() throws HttpException, IOException {
+ testClient();
+ }
+
+ private void testClient() throws HttpException, IOException {
counterStep = DEFAULT_COUNTER_STEP;
pushAttributes.setInterval(interval);
@@ -128,11 +117,11 @@
for (int i = 0; i < ITERATION_COUNT; i++) {
startIntervalAndCounter();
pushAndWait(1);
- validateIntervalAndCounter(interval);
+ validateIntervalAndCounter();
startIntervalAndCounter();
pushAndWait(MULTIPLE_PUSH_COUNT);
- validateIntervalAndCounter(interval);
+ validateIntervalAndCounter();
}
validateAverageDeviation();
@@ -163,7 +152,7 @@
* Validates that counter have been increased by right value.
* </p>
*/
- private void validateIntervalAndCounter(int interval) {
+ private void validateIntervalAndCounter() {
long runTime = getClientTime() - startTime;
long deviation = Math.abs(interval - runTime);
15 years, 9 months
JBoss Rich Faces SVN: r18575 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: richDataGrid and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:19:18 -0400 (Wed, 11 Aug 2010)
New Revision: 18575
Added:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/AbstractDataGridTest.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestSimple.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java
Log:
derived general PaginationTester for use in new dataGrid's TestPagination; derived AbstractDataGridTest to use across dataGrid tests
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java 2010-08-11 21:16:21 UTC (rev 18574)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/DataScroller.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -24,6 +24,7 @@
import static org.jboss.test.selenium.guard.request.RequestTypeGuardFactory.guardXhr;
import static org.jboss.test.selenium.locator.reference.ReferencedLocator.ref;
+import static org.jboss.test.selenium.utils.text.SimplifiedFormat.format;
import org.jboss.test.selenium.framework.AjaxSelenium;
import org.jboss.test.selenium.framework.AjaxSeleniumProxy;
@@ -69,10 +70,18 @@
this.fastStep = fastStep;
}
+ public Integer getFastStep() {
+ return fastStep;
+ }
+
public void setLastPage(int pageNumber) {
this.lastPage = pageNumber;
}
+ public Integer getLastPage() {
+ return lastPage;
+ }
+
public void gotoFirstPage() {
if (!isFirstPage()) {
clickFirstPageButton();
@@ -86,18 +95,25 @@
}
public void gotoPage(int pageNumber) {
+ if (lastPage != null && (pageNumber < 1 || pageNumber > lastPage)) {
+ throw new IllegalStateException(format("The given pageNumber '{0}' is out of range of pages <1,{1}>", pageNumber, lastPage));
+ }
while (pageNumber > getLastVisiblePage()) {
- fastForward();
+ fastForward(pageNumber);
}
while (pageNumber < getFirstVisiblePage()) {
- fastRewind();
+ fastRewind(pageNumber);
}
+
+ if (pageNumber == getCurrentPage()) {
+ return;
+ }
clickPageButton(pageNumber);
}
- public void fastForward() {
+ public void fastForward(Integer pageNumber) {
if (selenium.belongsClass(fastForwardButton, CLASS_DISABLED)) {
if (fastStep != null && lastPage != null) {
if (getCurrentPage() + fastStep > lastPage) {
@@ -109,11 +125,21 @@
gotoPage(getLastVisiblePage());
}
} else {
+ if (pageNumber != null && lastPage != null) {
+ if (Math.abs(getLastVisiblePage() - pageNumber) > Math.abs(lastPage - pageNumber)) {
+ clickLastPageButton();
+ return;
+ }
+ }
+ if (fastStep == null) {
+ gotoPage(getLastVisiblePage());
+ return;
+ }
clickFastForward();
}
}
- public void fastRewind() {
+ public void fastRewind(Integer pageNumber) {
if (selenium.belongsClass(fastRewindButton, CLASS_DISABLED)) {
if (fastStep != null) {
if (getCurrentPage() - fastStep <= 0) {
@@ -125,7 +151,18 @@
gotoPage(getFirstVisiblePage());
}
} else {
+ if (pageNumber != null) {
+ if (Math.abs(getFirstVisiblePage() - pageNumber) > pageNumber) {
+ clickFirstPageButton();
+ return;
+ }
+ }
+ if (fastStep == null) {
+ gotoPage(getFirstVisiblePage());
+ return;
+ }
clickFastRewind();
+
}
}
@@ -151,7 +188,10 @@
return integer(selenium.getText(lastVisiblePage));
}
- public int getLastPage() {
+ public int obtainLastPage() {
+ if (!hasPages()) {
+ return 1;
+ }
int startPage = getCurrentPage();
clickLastPageButton();
int lastPage = getCurrentPage();
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/AbstractDataGridTest.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/AbstractDataGridTest.java 2010-08-11 21:16:21 UTC (rev 18574)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/AbstractDataGridTest.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -72,6 +72,13 @@
@Use(empty = true)
Integer first;
+ int expectedFirst;
+ int expectedElements;
+ int expectedColumns;
+ double expectedRows;
+ int page = 1;
+ int lastPage = 1;
+
@SuppressWarnings("restriction")
public AbstractDataGridTest() throws JAXBException {
capitals = Model.unmarshallCapitals();
@@ -89,31 +96,72 @@
guardHttp(selenium).type(inputLocator, v);
}
+ protected void verifyGrid() {
+ countExpectedValues();
+ verifyCounts();
+ verifyElements();
+ }
+
protected void verifyCounts() {
- int nFirst = first == null ? 0 : min(ELEMENTS_TOTAL, max(0, first));
- int nElements = (elements == null ? ELEMENTS_TOTAL : min(elements, ELEMENTS_TOTAL)) - nFirst;
- int nColumns = columns;
- double nRows = ceil((float) nElements / columns);
-
- assertEquals(dataGrid.getElementCount(), (int) nElements);
- assertEquals(dataGrid.getColumnCount(), (int) nColumns);
- assertEquals(dataGrid.getRowCount(), (int) nRows);
+ try {
+ assertEquals(dataGrid.getElementCount(), (int) expectedElements, "elements");
+ assertEquals(dataGrid.getColumnCount(), (int) expectedColumns, "columns");
+ assertEquals(dataGrid.getRowCount(), (int) expectedRows, "rows");
+ } catch (AssertionError e) {
+ throw e;
+ }
}
protected void verifyElements() {
- int nFirst = first == null ? 0 : min(ELEMENTS_TOTAL, max(0, first));
- int nElements = (elements == null ? ELEMENTS_TOTAL : min(elements, ELEMENTS_TOTAL)) - nFirst;
+ int elementNumber;
+ try {
+ Iterator<Capital> capitalIterator = getExpectedCapitalsIterator();
+ Iterator<JQueryLocator> elementIterator = dataGrid.iterateElements();
- Iterator<Capital> capitalIterator = capitals.subList(nFirst, nFirst + nElements).iterator();
- Iterator<JQueryLocator> elementIterator = dataGrid.iterateElements();
+ elementNumber = 1;
+ while (capitalIterator.hasNext()) {
+ final Capital capital = capitalIterator.next();
+ if (!elementIterator.hasNext()) {
+ fail("there should be next element for state name: " + capital.getState());
+ }
+ elementNumber += 1;
+ final JQueryLocator element = elementIterator.next().getChild(jq("span"));
+ assertEquals(selenium.getText(element), capital.getState());
+ }
+ } catch (AssertionError e) {
+ throw e;
+ }
+ }
- while (capitalIterator.hasNext()) {
- final Capital capital = capitalIterator.next();
- if (!elementIterator.hasNext()) {
- fail("there should be next element for state name: " + capital.getState());
+ protected void countExpectedValues() {
+ if (elements == null) {
+ elements = ELEMENTS_TOTAL;
+ }
+
+ if (first == null) {
+ first = 0;
+ }
+
+ int firstOnPage = ((page - 1) * elements);
+ int firstInRange = min(ELEMENTS_TOTAL, max(0, first));
+
+ expectedFirst = firstOnPage + firstInRange;
+
+ int elementsInRange = min(elements, ELEMENTS_TOTAL);
+ expectedElements = elementsInRange;
+ if (page == lastPage) {
+ if (elements == 0) {
+ expectedElements = ELEMENTS_TOTAL - expectedFirst;
+ } else {
+ expectedElements = min(elements, ELEMENTS_TOTAL - expectedFirst);
}
- final JQueryLocator element = elementIterator.next().getChild(jq("span"));
- assertEquals(selenium.getText(element), capital.getState());
}
+
+ expectedRows = ceil((float) expectedElements / columns);
+ expectedColumns = columns;
}
+
+ private Iterator<Capital> getExpectedCapitalsIterator() {
+ return capitals.subList(expectedFirst, expectedFirst + expectedElements).iterator();
+ }
}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java 2010-08-11 21:16:21 UTC (rev 18574)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestPagination.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -27,27 +27,77 @@
import javax.xml.bind.JAXBException;
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.annotations.Inject;
import org.richfaces.tests.metamer.ftest.annotations.Use;
+import org.richfaces.tests.metamer.ftest.model.DataScroller;
+import org.richfaces.tests.metamer.ftest.richDataScroller.PaginationTester;
+import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
* @version $Revision$
*/
-@Use(field = "elements", ints = { 7 })
+@Use(field = "elements", ints = 7)
public class TestPagination extends AbstractDataGridTest {
+ @Inject
+ @Use("dataScrollerLocator*")
+ JQueryLocator dataScrollerLocator;
+ JQueryLocator dataScrollerLocator1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
+ JQueryLocator dataScrollerLocator2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
+
+ PaginationTester paginationTester = new PaginationTester() {
+
+ @Override
+ protected void verifyBeforeScrolling() {
+ }
+
+ @Override
+ protected void verifyAfterScrolling() {
+ page = getDataScroller().getCurrentPage();
+ lastPage = getDataScroller().getLastPage();
+ verifyGrid();
+ }
+ };
+
+ DataScroller dataScroller = paginationTester.getDataScroller();
+
public TestPagination() throws JAXBException {
super();
}
+ @BeforeMethod
+ public void setupDataScroller() {
+ dataScroller.setRoot(dataScrollerLocator);
+
+ int lastPage = dataScroller.obtainLastPage();
+ dataScroller.setLastPage(lastPage);
+ paginationTester.initializeTestedPages(lastPage);
+ }
+
@Override
public URL getTestUrl() {
return buildUrl(contextPath, "faces/components/richDataGrid/scroller.xhtml");
}
@Test
- public void testPagination() {
-
+ @Use(field = "columns", ints = { 1, 3, 11, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL,
+ ELEMENTS_TOTAL + 1 })
+ public void testColumnsAttribute() {
+ paginationTester.testNumberedPages();
}
-}
\ No newline at end of file
+
+ @Test
+ @Use(field = "elements", ints = { 0, 1, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL, ELEMENTS_TOTAL + 1 })
+ public void testElementsAttribute() {
+ paginationTester.testNumberedPages();
+ }
+
+ @Test
+ @Use(field = "first", ints = { 0, 1, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL, ELEMENTS_TOTAL + 1 })
+ public void testFirstAttribute() {
+ paginationTester.testNumberedPages();
+ }
+}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestSimple.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestSimple.java 2010-08-11 21:16:21 UTC (rev 18574)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataGrid/TestSimple.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -49,21 +49,18 @@
@Use(field = "columns", ints = { 1, 3, 11, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL,
ELEMENTS_TOTAL + 1 })
public void testColumnsAttribute() {
- verifyCounts();
- verifyElements();
+ verifyGrid();
}
@Test
@Use(field = "elements", ints = { 0, 1, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL, ELEMENTS_TOTAL + 1 })
public void testElementsAttribute() {
- verifyCounts();
- verifyElements();
+ verifyGrid();
}
@Test
@Use(field = "first", ints = { 0, 1, ELEMENTS_TOTAL / 2, ELEMENTS_TOTAL - 1, ELEMENTS_TOTAL, ELEMENTS_TOTAL + 1 })
public void testFirstAttribute() {
- verifyCounts();
- verifyElements();
+ verifyGrid();
}
}
Added: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java (rev 0)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/PaginationTester.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.tests.metamer.ftest.richDataScroller;
+
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.model.AssertingDataScroller;
+import org.richfaces.tests.metamer.ftest.model.DataScroller;
+
+import static org.richfaces.tests.metamer.ftest.AbstractMetamerTest.pjq;
+import static java.lang.Math.*;
+
+/**
+ * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public abstract class PaginationTester {
+
+ public static final JQueryLocator DATA_SCROLLER_OUTSIDE_TABLE = pjq("span.rf-ds[id$=scroller1]");
+ public static final JQueryLocator DATA_SCROLLER_IN_TABLE_FOOTER = pjq("span.rf-ds[id$=scroller2]");
+
+ protected AssertingDataScroller dataScroller = new AssertingDataScroller(null);
+ private int[] testPages;
+
+ public void initializeTestedPages(int lastPage) {
+ int l = lastPage;
+ testPages = new int[] { 3, l, 1, l - 2, l, 2, l - 2, l - 1 };
+ for (int i = 0; i < testPages.length; i++) {
+ testPages[i] = min(l, max(1, testPages[i]));
+ }
+ }
+
+ public DataScroller getDataScroller() {
+ return dataScroller;
+ }
+
+ public void testNumberedPages() {
+ Integer lastNumber = null;
+ for (int pageNumber : testPages) {
+ if (lastNumber == (Integer) pageNumber) {
+ continue;
+ }
+ verifyBeforeScrolling();
+ dataScroller.gotoPage(pageNumber);
+ verifyAfterScrolling();
+ lastNumber = pageNumber;
+ }
+ }
+
+ protected abstract void verifyBeforeScrolling();
+
+ protected abstract void verifyAfterScrolling();
+}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java 2010-08-11 21:16:21 UTC (rev 18574)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richDataScroller/TestPagination.java 2010-08-11 21:19:18 UTC (rev 18575)
@@ -24,15 +24,17 @@
import static org.jboss.test.selenium.guard.request.RequestTypeGuardFactory.guardHttp;
import static org.jboss.test.selenium.locator.LocatorFactory.id;
import static org.jboss.test.selenium.utils.URLUtils.buildUrl;
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
import java.net.URL;
import org.jboss.test.selenium.locator.IdLocator;
+import org.jboss.test.selenium.locator.JQueryLocator;
import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
import org.richfaces.tests.metamer.ftest.annotations.Use;
-import org.richfaces.tests.metamer.ftest.model.AssertingDataScroller;
+import org.richfaces.tests.metamer.ftest.model.DataScroller;
import org.richfaces.tests.metamer.ftest.model.DataTable;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -45,51 +47,62 @@
*/
public class TestPagination extends AbstractMetamerTest {
- private static final int[] PAGES = new int[] { 3, 6, 1, 4, 6, 2, 4, 5 };
+ @Inject
+ @Use(ints = { 2, 3 })
+ int fastStep;
@Inject
- @Use(value = { "dataScroller*" })
- AssertingDataScroller dataScroller;
- AssertingDataScroller dataScroller1 = new AssertingDataScroller("outside-table", pjq("span.rf-ds[id$=scroller1]"));
- AssertingDataScroller dataScroller2 = new AssertingDataScroller("in-table-footer", pjq("span.rf-ds[id$=scroller2]"));
+ @Use(ints = { 3, 4 })
+ int maxPages;
+ @Inject
+ @Use("dataScrollerLocator*")
+ JQueryLocator dataScrollerLocator;
+ JQueryLocator dataScrollerLocator1 = PaginationTester.DATA_SCROLLER_OUTSIDE_TABLE;
+ JQueryLocator dataScrollerLocator2 = PaginationTester.DATA_SCROLLER_IN_TABLE_FOOTER;
+
+ PaginationTester paginationTester = new PaginationTester() {
+
+ @Override
+ protected void verifyBeforeScrolling() {
+ tableText = dataTable.getTableText();
+ }
+
+ @Override
+ protected void verifyAfterScrolling() {
+ assertFalse(tableText.equals(dataTable.getTableText()));
+ assertEquals(maxPages, dataScroller.getCountOfVisiblePages());
+ }
+ };
+
IdLocator attributeFastStep = id("form:attributes:fastStepInput");
IdLocator attributeMaxPages = id("form:attributes:maxPagesInput");
+ DataScroller dataScroller = paginationTester.getDataScroller();
DataTable dataTable = new DataTable(pjq("table.rf-dt[id$=richDataTable]"));
- @Inject
- @Use(ints = { 2, 3 })
- int fastStep;
+ String tableText;
- @Inject
- @Use(ints = { 3, 4 })
- int maxPages;
-
- public TestPagination() {
- }
-
@Override
public URL getTestUrl() {
return buildUrl(contextPath, "faces/components/richDataScroller/simple.xhtml");
}
@BeforeMethod
- public void prepareAttributes() {
+ public void prepareComponent() {
guardHttp(selenium).type(attributeFastStep, String.valueOf(fastStep));
guardHttp(selenium).type(attributeMaxPages, String.valueOf(maxPages));
- }
- @Test
- public void testNumberedPagesWithMaxPagesAndFastStep() {
+ dataScroller.setRoot(dataScrollerLocator);
dataScroller.setFastStep(fastStep);
- dataScroller.setLastPage(dataScroller.getLastPage());
- for (int pageNumber : PAGES) {
- String tableText = dataTable.getTableText();
- dataScroller.gotoPage(pageNumber);
- assertFalse(tableText.equals(dataTable.getTableText()));
- assertEquals(maxPages, dataScroller.getCountOfVisiblePages());
- }
+ int lastPage = dataScroller.obtainLastPage();
+ dataScroller.setLastPage(lastPage);
+ paginationTester.initializeTestedPages(lastPage);
}
+
+ @Test
+ public void testNumberedPages() {
+ paginationTester.testNumberedPages();
+ }
}
15 years, 9 months
JBoss Rich Faces SVN: r18574 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:16:21 -0400 (Wed, 11 Aug 2010)
New Revision: 18574
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerFailureLoggingTestListener.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerTestInfo.java
Log:
improved failure logging by separating template information as sub-directory for other test parameters and by sorting parameters by its length
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerFailureLoggingTestListener.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerFailureLoggingTestListener.java 2010-08-11 21:15:41 UTC (rev 18573)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerFailureLoggingTestListener.java 2010-08-11 21:16:21 UTC (rev 18574)
@@ -21,6 +21,10 @@
*******************************************************************************/
package org.richfaces.tests.metamer.ftest;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.StringUtils;
import org.jboss.test.selenium.listener.FailureLoggingTestListener;
import org.jboss.test.selenium.utils.testng.TestInfo;
import org.testng.ITestResult;
@@ -35,8 +39,18 @@
String packageName = TestInfo.getContainingPackageName(result);
String className = TestInfo.getClassName(result);
String methodName = TestInfo.getMethodName(result);
- String testInfo = MetamerTestInfo.getConfigurationInfo().replaceAll(" ", "");
+ String testInfo = MetamerTestInfo.getConfigurationInfo();
+ testInfo = StringUtils.replaceChars(testInfo, "\\/*?\"<>|", "");
+ testInfo = StringUtils.replaceChars(testInfo, "\r\n \t", "_");
+ testInfo = StringUtils.replaceChars(testInfo, ":", "-");
+
+ // derives template and sort it as sub-directory after other attributes
+ Matcher matcher = Pattern.compile("^(template-[^,]+),(.*)$").matcher(testInfo);
+ if (matcher.find()) {
+ testInfo = matcher.group(2) + "/" + matcher.group(1);
+ }
+
return packageName + "/" + className + "/" + methodName + "/" + testInfo;
}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerTestInfo.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerTestInfo.java 2010-08-11 21:15:41 UTC (rev 18573)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MetamerTestInfo.java 2010-08-11 21:16:21 UTC (rev 18574)
@@ -22,9 +22,15 @@
package org.richfaces.tests.metamer.ftest;
import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import org.apache.commons.lang.StringUtils;
+
/**
* @author <a href="mailto:ppitonak@redhat.com">Lukas Fryc</a>
* @version $Revision$
@@ -35,22 +41,32 @@
public static String getConfigurationInfo() {
Map<Field, Object> configuration = MatrixConfigurator.getCurrentConfiguration();
- StringBuffer info = new StringBuffer();
+
+ List<String> info = new LinkedList<String>();
if (!configuration.isEmpty()) {
for (Entry<Field, Object> entry : configuration.entrySet()) {
final String name = entry.getKey().getName();
final Object value = entry.getValue();
if (value != null) {
- if (info.length() > 0) {
- info.append(", ");
- }
- info.append(name + ": " + value);
+ info.add(name + ": " + value);
}
}
}
- return info.toString();
+ Collections.sort(info, new Comparator<String>() {
+ public int compare(String o1, String o2) {
+ if (o1.startsWith("template: ")) {
+ return -1;
+ }
+ if (o2.startsWith("template: ")) {
+ return 1;
+ }
+ return o1.length() - o2.length();
+ }
+ });
+
+ return StringUtils.join(info, ", ");
}
public static String getConfigurationInfoInParenthesses() {
15 years, 9 months
JBoss Rich Faces SVN: r18573 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:15:41 -0400 (Wed, 11 Aug 2010)
New Revision: 18573
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MatrixConfigurator.java
Log:
MatrixConfigurator - satisfies injection from all fields for class (instead of declared files - it is limited to declaring class' fields)
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MatrixConfigurator.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MatrixConfigurator.java 2010-08-11 21:15:03 UTC (rev 18572)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/MatrixConfigurator.java 2010-08-11 21:15:41 UTC (rev 18573)
@@ -283,11 +283,12 @@
Object testInstance = getTestInstance(testClass);
for (int i = 0; i < useAnnotation.value().length; i++) {
boolean satisfied = false;
- for (Field field : testClass.getDeclaredFields()) {
- String name = useAnnotation.value()[i];
- name = StringUtils.replace(name, "*", ".+");
- name = StringUtils.replace(name, "?", ".");
- Pattern pattern = Pattern.compile(name);
+ String namePattern = useAnnotation.value()[i];
+ namePattern = StringUtils.replace(namePattern, "*", ".+");
+ namePattern = StringUtils.replace(namePattern, "?", ".");
+
+ for (Field field : getAllFields(testClass)) {
+ Pattern pattern = Pattern.compile(namePattern);
if (pattern.matcher(field.getName()).matches()) {
boolean isArray = field.getType().isArray();
Class<?> representedType;
@@ -311,7 +312,7 @@
if (satisfied) {
continue;
}
- throw new IllegalStateException("cannot find the field satysfying injection point");
+ throw new IllegalStateException("cannot find the field satysfying injection point with name pattern: " + useAnnotation.value()[i]);
}
return result;
}
15 years, 9 months
JBoss Rich Faces SVN: r18572 - modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2010-08-11 17:15:03 -0400 (Wed, 11 Aug 2010)
New Revision: 18572
Modified:
modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataGridBean.java
Log:
marked relativeRowIndex from rich:dataGrid to hidden attributes
Modified: modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataGridBean.java
===================================================================
--- modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataGridBean.java 2010-08-11 21:14:25 UTC (rev 18571)
+++ modules/tests/metamer/trunk/application/src/main/java/org/richfaces/tests/metamer/bean/RichDataGridBean.java 2010-08-11 21:15:03 UTC (rev 18572)
@@ -78,6 +78,7 @@
attributes.remove("rowData");
attributes.remove("rowIndex");
attributes.remove("rowKey");
+ attributes.remove("relativeRowIndex");
}
public Attributes getAttributes() {
15 years, 9 months