JBoss Rich Faces SVN: r21953 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: a4jQueue and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:29:58 -0500 (Sat, 26 Feb 2011)
New Revision: 21953
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPollInterval.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jQueue/QueueModel.java
Log:
slightly increased minimal value of maxDeviation for queue and poll tests
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPollInterval.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPollInterval.java 2011-02-26 15:29:13 UTC (rev 21952)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jPoll/TestPollInterval.java 2011-02-26 15:29:58 UTC (rev 21953)
@@ -151,7 +151,7 @@
}
private void validateAverageDeviation() {
- long maximumAvgDeviation = Math.min(interval / 3, 1000);
+ long maximumAvgDeviation = Math.max(300, Math.min(interval / 3, 1000));
long averageDeviation = deviationTotal / deviationCount;
if (seleniumDebug) {
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jQueue/QueueModel.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jQueue/QueueModel.java 2011-02-26 15:29:13 UTC (rev 21952)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jQueue/QueueModel.java 2011-02-26 15:29:58 UTC (rev 21953)
@@ -153,7 +153,7 @@
long beginTime = waitAjax.waitForChangeAndReturn(retrieveBeginTime);
long actualDelay = beginTime - eventTime;
long deviation = Math.abs(actualDelay - requestDelay);
- long maxDeviation = Math.max(100, requestDelay / 2);
+ long maxDeviation = Math.max(300, requestDelay / 2);
checkDeviation(deviation, maxDeviation);
13 years, 2 months
JBoss Rich Faces SVN: r21952 - in modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest: richExtendedDataTable and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:29:13 -0500 (Sat, 26 Feb 2011)
New Revision: 21952
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/abstractions/DataTableFacetsTest.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richExtendedDataTable/TestExtendedDataTableFacets.java
Log:
added issue tracking for RF-10627
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/abstractions/DataTableFacetsTest.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/abstractions/DataTableFacetsTest.java 2011-02-26 15:28:20 UTC (rev 21951)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/abstractions/DataTableFacetsTest.java 2011-02-26 15:29:13 UTC (rev 21952)
@@ -48,7 +48,7 @@
attributes.setShowData(false);
facets.setNoData(EMPTY_STRING);
attributes.setNoDataLabel(SAMPLE_STRING);
- assertEquals(selenium.getText(model.getNoData()), EMPTY_STRING);
+ assertEquals(selenium.getText(model.getNoData()), SAMPLE_STRING);
}
public void testHeaderInstantChange() {
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richExtendedDataTable/TestExtendedDataTableFacets.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richExtendedDataTable/TestExtendedDataTableFacets.java 2011-02-26 15:28:20 UTC (rev 21951)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richExtendedDataTable/TestExtendedDataTableFacets.java 2011-02-26 15:29:13 UTC (rev 21952)
@@ -60,7 +60,7 @@
}
@Test
- @IssueTracking("https://issues.jboss.org/browse/RFPL-1193")
+ @IssueTracking({ "https://issues.jboss.org/browse/RFPL-1193", "https://issues.jboss.org/browse/RF-10627" })
public void testNoDataLabelWithEmptyNoDataFacet() {
super.testNoDataLabelWithEmptyNoDataFacet();
}
13 years, 2 months
JBoss Rich Faces SVN: r21951 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richCalendar.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:28:20 -0500 (Sat, 26 Feb 2011)
New Revision: 21951
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richCalendar/TestRichCalendarModel.java
Log:
added issue tracking for RFPL-1222
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richCalendar/TestRichCalendarModel.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richCalendar/TestRichCalendarModel.java 2011-02-26 15:27:40 UTC (rev 21950)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richCalendar/TestRichCalendarModel.java 2011-02-26 15:28:20 UTC (rev 21951)
@@ -31,6 +31,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
+import org.richfaces.tests.metamer.ftest.annotations.IssueTracking;
import org.testng.annotations.Test;
/**
@@ -47,6 +48,7 @@
}
@Test
+ @IssueTracking("https://issues.jboss.org/browse/RFPL-1222")
public void testClasses() {
selenium.click(input);
String month = selenium.getText(monthLabel);
@@ -74,6 +76,7 @@
@Test
@Override
+ @IssueTracking("https://issues.jboss.org/browse/RFPL-1222")
public void testApplyButton() {
selenium.click(input);
String month = selenium.getText(monthLabel);
@@ -84,6 +87,7 @@
String day = selenium.getText(cellDay.format(17));
month = selenium.getText(monthLabel);
+ @SuppressWarnings("unused")
String selectedDate = null;
try {
Date date = new SimpleDateFormat("d MMMM, yyyy hh:mm").parse(day + " " + month + " 12:00");
13 years, 2 months
JBoss Rich Faces SVN: r21950 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richAccordion.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:27:40 -0500 (Sat, 26 Feb 2011)
New Revision: 21950
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richAccordion/TestRichAccordion.java
Log:
accordion - fixed test for active item - if disabled item is set in model, first item is activated instead
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richAccordion/TestRichAccordion.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richAccordion/TestRichAccordion.java 2011-02-26 15:26:53 UTC (rev 21949)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richAccordion/TestRichAccordion.java 2011-02-26 15:27:40 UTC (rev 21950)
@@ -124,8 +124,11 @@
accordionDisplayed = selenium.isDisplayed(itemHeaders[i]);
assertTrue(accordionDisplayed, "Item" + (i + 1) + "'s header should be visible.");
}
+
+ accordionDisplayed = selenium.isDisplayed(itemContents[0]);
+ assertTrue(accordionDisplayed, "Content of item1 should be visible.");
- for (int i = 0; i < 5; i++) {
+ for (int i = 1; i < 5; i++) {
accordionDisplayed = selenium.isDisplayed(itemContents[i]);
assertFalse(accordionDisplayed, "Item" + (i + 1) + "'s content should not be visible.");
}
13 years, 2 months
JBoss Rich Faces SVN: r21949 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenuItem.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:26:53 -0500 (Sat, 26 Feb 2011)
New Revision: 21949
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenuItem/TestPanelMenuItemClientSideHandlers.java
Log:
added issue tracking RF-10486
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenuItem/TestPanelMenuItemClientSideHandlers.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenuItem/TestPanelMenuItemClientSideHandlers.java 2011-02-26 15:26:12 UTC (rev 21948)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenuItem/TestPanelMenuItemClientSideHandlers.java 2011-02-26 15:26:53 UTC (rev 21949)
@@ -30,6 +30,7 @@
import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
+import org.richfaces.tests.metamer.ftest.annotations.IssueTracking;
import org.richfaces.tests.metamer.ftest.annotations.Use;
import org.richfaces.tests.metamer.ftest.model.PanelMenu;
import org.testng.annotations.Test;
@@ -38,6 +39,7 @@
* @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
* @version $Revision$
*/
+@IssueTracking("https://issues.jboss.org/browse/RF-10486")
public class TestPanelMenuItemClientSideHandlers extends AbstractMetamerTest {
PanelMenuItemAttributes attributes = new PanelMenuItemAttributes();
13 years, 2 months
JBoss Rich Faces SVN: r21948 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenu.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:26:12 -0500 (Sat, 26 Feb 2011)
New Revision: 21948
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenu/TestPanelMenuSimple.java
Log:
added issue tracking for RF-10626
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenu/TestPanelMenuSimple.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenu/TestPanelMenuSimple.java 2011-02-26 15:25:37 UTC (rev 21947)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richPanelMenu/TestPanelMenuSimple.java 2011-02-26 15:26:12 UTC (rev 21948)
@@ -28,6 +28,7 @@
import org.jboss.test.selenium.css.CssProperty;
import org.richfaces.PanelMenuMode;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
+import org.richfaces.tests.metamer.ftest.annotations.IssueTracking;
import org.richfaces.tests.metamer.ftest.annotations.RegressionTest;
import org.richfaces.tests.metamer.ftest.annotations.Use;
import org.testng.annotations.Test;
@@ -40,7 +41,7 @@
@Inject
@Use(empty = true)
- Boolean expandSingle;
+ Boolean expandSingle = true;
@Test
@RegressionTest("https://issues.jboss.org/browse/RF-10158")
@@ -59,6 +60,7 @@
@Test
@Use(field = "expandSingle", booleans = { true, false })
+ @IssueTracking("https://issues.jboss.org/browse/RF-10626")
public void testExpandSingle() {
attributes.setExpandSingle(expandSingle);
13 years, 2 months
JBoss Rich Faces SVN: r21947 - modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2011-02-26 10:25:37 -0500 (Sat, 26 Feb 2011)
New Revision: 21947
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/PanelMenu.java
Log:
panelMenu - fixed selected group/item locators
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/PanelMenu.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/PanelMenu.java 2011-02-26 11:16:17 UTC (rev 21946)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/model/PanelMenu.java 2011-02-26 15:25:37 UTC (rev 21947)
@@ -24,8 +24,8 @@
private ReferencedLocator<JQueryLocator> topItems = ref(root, "> .rf-pm-top-itm");
private ReferencedLocator<JQueryLocator> topGroups = ref(root, "> .rf-pm-top-gr");
- private ReferencedLocator<JQueryLocator> anySelectedItem = ref(root, ".rf-pm-itm-sel");
- private ReferencedLocator<JQueryLocator> anySelectedGroup = ref(root, ".rf-pm-gr-sel");
+ private ReferencedLocator<JQueryLocator> anySelectedItem = ref(root, "div[class*=rf-pm][class*=-itm-sel]");
+ private ReferencedLocator<JQueryLocator> anySelectedGroup = ref(root, "div[class*=rf-pm][class*=-gr-sel]");
private ReferencedLocator<JQueryLocator> anyDisabledItem = ref(root, "div[class*=rf-pm-][class*=-itm-dis]");
private ReferencedLocator<JQueryLocator> anyDisabledGroup = ref(root, "div[class*=rf-pm-][class*=-gr-dis]");
@@ -84,16 +84,16 @@
return new Group(topGroups.getReferenced());
}
- public Group getAnySelectedItem() {
- return new Group(anySelectedItem.getReferenced());
+ public Item getAnySelectedItem() {
+ return new Item(anySelectedItem.getReferenced());
}
public Group getAnySelectedGroup() {
return new Group(anySelectedGroup.getReferenced());
}
- public Group getAnyDisabledItem() {
- return new Group(anyDisabledItem.getReferenced());
+ public Item getAnyDisabledItem() {
+ return new Item(anyDisabledItem.getReferenced());
}
public Group getAnyDisabledGroup() {
13 years, 2 months
JBoss Rich Faces SVN: r21946 - in branches/4.0.0.CR1/ui: output/ui/src/main/java/org/richfaces/renderkit/html and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2011-02-26 06:16:17 -0500 (Sat, 26 Feb 2011)
New Revision: 21946
Modified:
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractCollapsiblePanel.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTabPanel.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/CollapsiblePanelRenderer.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java
Log:
RF-10586 togglePanel : ignores validation on ajax switching
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -23,7 +23,12 @@
package org.richfaces.component;
-import org.richfaces.cdk.annotations.*;
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.cdk.annotations.Tag;
+import org.richfaces.cdk.annotations.TagType;
/**
* @author akolonitsky
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractCollapsiblePanel.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractCollapsiblePanel.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractCollapsiblePanel.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -27,6 +27,7 @@
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.FacesEvent;
+import javax.faces.event.PhaseId;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.EventName;
@@ -212,9 +213,13 @@
@Override
public void broadcast(FacesEvent event) throws AbortProcessingException {
+ if (event instanceof PanelToggleEvent) {
+ setExpanded(((PanelToggleEvent)event).getExpanded());
+ setSubmittedActiveItem(null);
+ if (event.getPhaseId() != PhaseId.UPDATE_MODEL_VALUES) {
+ FacesContext.getCurrentInstance().renderResponse();
+ }
+ }
super.broadcast(event);
- if (event instanceof PanelToggleEvent && isImmediate()) {
- FacesContext.getCurrentInstance().renderResponse();
- }
}
}
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -75,58 +75,66 @@
//TODO nick - is component immediate = true only?
//TODO nick - processValue should be executed in context of component, i.e. when 'component' EL variable is set
- processValue(context);
+ ItemChangeEvent event = createItemChangeEvent(context);
+ if (event != null) {
+ event.queue();
+ }
}
-
- private void processValue(FacesContext context) {
- try {
- if (context == null) {
- throw new NullPointerException();
+
+ public void queueEvent(FacesEvent event) {
+ if ((event instanceof ItemChangeEvent) && (event.getComponent() == this)) {
+ setEventPhase((ItemChangeEvent)event);
+ }
+ super.queueEvent(event);
+ }
+
+ public void setEventPhase(FacesEvent event) {
+ if (event instanceof ItemChangeEvent) {
+ AbstractPanelMenuItem actItm = (AbstractPanelMenuItem) ((ItemChangeEvent)event).getNewItem();
+ if (isImmediate() || (actItm != null && actItm.isImmediate())) {
+ event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+ } else if (actItm!= null && actItm.isBypassUpdates()) {
+ event.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
+ } else {
+ event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
}
+ }
+ }
- // Submitted value == null means "the component was not submitted at all".
- String activeItem = getSubmittedActiveItem();
- if (activeItem == null) {
- return;
- }
+ private ItemChangeEvent createItemChangeEvent(FacesContext context) {
- String previous = (String) getValue();
- setActiveItem(activeItem);
- setSubmittedActiveItem(null);
+ // Submitted value == null means "the component was not submitted at all".
+ String activeItem = getSubmittedActiveItem();
+ if (activeItem == null) {
+ return null;
+ }
- if (previous == null || !previous.equalsIgnoreCase(activeItem)) {
- AbstractPanelMenuItem prevItm = null;
- AbstractPanelMenuItem actItm = null;
- if (previous != null) {
- prevItm = getItem(previous);
- }
- if (activeItem != null) {
- actItm = getItem(activeItem);
- }
-
- ItemChangeEvent event = new ItemChangeEvent(this, previous,prevItm, activeItem, actItm);
- if (isImmediate() || (actItm != null && actItm.isImmediate())) {
- event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
- } else if (actItm!= null && actItm.isBypassUpdates()) {
- event.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
- } else {
- event.setPhaseId(PhaseId.INVOKE_APPLICATION);
- }
- event.queue();
+ String previous = (String) getValue();
+ if (previous == null || !previous.equalsIgnoreCase(activeItem)) {
+ AbstractPanelMenuItem prevItm = null;
+ AbstractPanelMenuItem actItm = null;
+ if (previous != null) {
+ prevItm = getItem(previous);
}
- } catch (RuntimeException e) {
- context.renderResponse();
- throw e;
+ if (activeItem != null) {
+ actItm = getItem(activeItem);
+ }
+
+ return new ItemChangeEvent(this, previous, prevItm, activeItem, actItm);
}
+ return null;
}
@Override
public void broadcast(FacesEvent event) throws AbortProcessingException {
- super.broadcast(event);
-
if (event instanceof ItemChangeEvent) {
- getFacesContext().renderResponse();
+ setValue(((ItemChangeEvent) event).getNewItemName());
+ setSubmittedActiveItem(null);
+ if (event.getPhaseId() != PhaseId.UPDATE_MODEL_VALUES) {
+ FacesContext.getCurrentInstance().renderResponse();
+ }
}
+ super.broadcast(event);
}
public String getSubmittedActiveItem() {
@@ -155,6 +163,7 @@
}
}
+ @Attribute(generate = false)
public boolean isImmediate() {
return (Boolean) getStateHelper().eval(PropertyKeys.immediate, false);
}
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTabPanel.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTabPanel.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTabPanel.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -25,7 +25,11 @@
import org.richfaces.HeaderAlignment;
import org.richfaces.HeaderPosition;
-import org.richfaces.cdk.annotations.*;
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.cdk.annotations.Tag;
+import org.richfaces.cdk.annotations.TagType;
/**
* @author akolonitsky
@@ -88,9 +92,6 @@
public abstract String getTabHeaderClass();
@Attribute(hidden = true)
- public abstract boolean isBypassUpdates();
-
- @Attribute(hidden = true)
public abstract boolean isLimitRender();
@Attribute(hidden = true)
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -22,16 +22,10 @@
package org.richfaces.component;
-import com.google.common.base.Strings;
-import org.richfaces.application.MessageFactory;
-import org.richfaces.application.ServiceTracker;
-import org.richfaces.appplication.FacesMessages;
-import org.richfaces.cdk.annotations.*;
-import org.richfaces.component.util.MessageUtil;
-import org.richfaces.event.ItemChangeEvent;
-import org.richfaces.event.ItemChangeListener;
-import org.richfaces.event.ItemChangeSource;
-import org.richfaces.renderkit.util.RendererUtils;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import javax.el.ELException;
import javax.el.MethodExpression;
@@ -41,21 +35,48 @@
import javax.faces.component.UIComponent;
import javax.faces.component.UIOutput;
import javax.faces.component.UpdateModelException;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitResult;
import javax.faces.context.FacesContext;
-import javax.faces.event.*;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PostValidateEvent;
+import javax.faces.event.PreValidateEvent;
+import org.richfaces.application.MessageFactory;
+import org.richfaces.application.ServiceTracker;
+import org.richfaces.appplication.FacesMessages;
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.cdk.annotations.Tag;
+import org.richfaces.cdk.annotations.TagType;
+import org.richfaces.component.util.MessageUtil;
+import org.richfaces.context.ExtendedVisitContext;
+import org.richfaces.context.ExtendedVisitContextMode;
+import org.richfaces.event.ItemChangeEvent;
+import org.richfaces.event.ItemChangeListener;
+import org.richfaces.event.ItemChangeSource;
+import org.richfaces.renderkit.MetaComponentRenderer;
+import org.richfaces.renderkit.util.RendererUtils;
+
+import com.google.common.base.Strings;
+
/**
* @author akolonitsky
* @version 1.0
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets, handler = "org.richfaces.view.facelets.html.TogglePanelTagHandler"),
renderer = @JsfRenderer(type = "org.richfaces.TogglePanelRenderer"))
-public abstract class AbstractTogglePanel extends UIOutput implements AbstractDivPanel, ItemChangeSource {
+public abstract class AbstractTogglePanel extends UIOutput implements AbstractDivPanel, ItemChangeSource, MetaComponentResolver, MetaComponentEncoder {
+ public static final String ACTIVE_ITEM_META_COMPONENT = "activeItem";
+
public static final String COMPONENT_TYPE = "org.richfaces.TogglePanel";
public static final String COMPONENT_FAMILY = "org.richfaces.TogglePanel";
@@ -204,7 +225,10 @@
popComponentFromEL(context);
}
- createItemChangeEvent(context);
+ ItemChangeEvent event = createItemChangeEvent(context);
+ if (event != null) {
+ event.queue();
+ }
}
/**
@@ -372,7 +396,7 @@
}
}
- private void createItemChangeEvent(FacesContext context) {
+ private ItemChangeEvent createItemChangeEvent(FacesContext context) {
if (context == null) {
throw new NullPointerException();
}
@@ -380,12 +404,10 @@
// Submitted value == null means "the component was not submitted at all".
String activeItem = getSubmittedActiveItem();
if (activeItem == null) {
- return;
+ return null;
}
String previous = (String) getValue();
- setValue(activeItem);
- setSubmittedActiveItem(null);
if (previous == null || !previous.equalsIgnoreCase(activeItem)) {
UIComponent prevComp = null;
UIComponent actvComp = null;
@@ -397,8 +419,9 @@
actvComp = (UIComponent)getItem(activeItem);
}
- new ItemChangeEvent(this, previous, prevComp, activeItem, actvComp).queue();
+ return new ItemChangeEvent(this, previous, prevComp, activeItem, actvComp);
}
+ return null;
}
@Override
@@ -414,10 +437,10 @@
RendererUtils.getInstance().isBooleanAttribute(event.getNewItem(), "immediate"))) {
event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
} else {
- event.setPhaseId(PhaseId.INVOKE_APPLICATION);
+ event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
}
}
-
+
protected void setEventPhase(FacesEvent event) {
if (isImmediate()) {
event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
@@ -428,11 +451,14 @@
@Override
public void broadcast(FacesEvent event) throws AbortProcessingException {
- super.broadcast(event);
-
if (event instanceof ItemChangeEvent) {
- FacesContext.getCurrentInstance().renderResponse();
+ setValue(((ItemChangeEvent) event).getNewItemName());
+ setSubmittedActiveItem(null);
+ if (event.getPhaseId() != PhaseId.UPDATE_MODEL_VALUES) {
+ FacesContext.getCurrentInstance().renderResponse();
+ }
}
+ super.broadcast(event);
}
// -------------------------------------------------- Panel Items Managing
@@ -657,4 +683,66 @@
removeFacesListener(listener);
}
+ public String resolveClientId(FacesContext facesContext, UIComponent contextComponent, String metaComponentId) {
+ if (ACTIVE_ITEM_META_COMPONENT.equals(metaComponentId)) {
+ return getClientId(facesContext) + MetaComponentResolver.META_COMPONENT_SEPARATOR_CHAR + metaComponentId;
+ }
+ return null;
+ }
+
+ public String substituteUnresolvedClientId(FacesContext facesContext, UIComponent contextComponent,
+ String metaComponentId) {
+ return null;
+ }
+
+ public void encodeMetaComponent(FacesContext context, String metaComponentId) throws IOException {
+ ((MetaComponentRenderer) getRenderer(context)).encodeMetaComponent(context, this, metaComponentId);
+ }
+
+ @Override
+ public boolean visitTree(VisitContext context, VisitCallback callback) {
+ if (!isVisitable(context)) {
+ return false;
+ }
+
+ FacesContext facesContext = context.getFacesContext();
+ pushComponentToEL(facesContext, null);
+
+ try {
+ VisitResult result = context.invokeVisitCallback(this, callback);
+
+ if (result == VisitResult.COMPLETE) {
+ return true;
+ }
+
+ if (result == VisitResult.ACCEPT) {
+ if (context instanceof ExtendedVisitContext) {
+ ExtendedVisitContext extendedVisitContext = (ExtendedVisitContext) context;
+ if (extendedVisitContext.getVisitMode() == ExtendedVisitContextMode.RENDER) {
+
+ result = extendedVisitContext.invokeMetaComponentVisitCallback(this, callback, ACTIVE_ITEM_META_COMPONENT);
+ if (result == VisitResult.COMPLETE) {
+ return true;
+ }
+ }
+ }
+ }
+
+ if (result == VisitResult.ACCEPT) {
+ Iterator<UIComponent> kids = this.getFacetsAndChildren();
+
+ while(kids.hasNext()) {
+ boolean done = kids.next().visitTree(context, callback);
+
+ if (done) {
+ return true;
+ }
+ }
+ }
+ } finally {
+ popComponentFromEL(facesContext);
+ }
+
+ return false;
+ }
}
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/CollapsiblePanelRenderer.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/CollapsiblePanelRenderer.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/CollapsiblePanelRenderer.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -102,29 +102,6 @@
};
@Override
- protected void doDecode(FacesContext context, UIComponent component) {
- AbstractTogglePanel panel = (AbstractTogglePanel) component;
-
- Map<String, String> requestMap =
- context.getExternalContext().getRequestParameterMap();
-
- // Don't overwrite the value unless you have to!
- String newValue = requestMap.get(getValueRequestParamName(context, component));
- if (newValue != null) {
- panel.setSubmittedActiveItem(newValue);
- }
-
- String compClientId = component.getClientId(context);
- String clientId = requestMap.get(compClientId);
- if (clientId != null && clientId.equals(compClientId)) {
- context.getPartialViewContext().getRenderIds().add(clientId);
-
- //TODO nick - this should be done on encode, not on decode
- addOnCompleteParam(context, newValue, panel.getClientId(context));
- }
- }
-
- @Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
super.doEncodeBegin(writer, context, component);
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -23,23 +23,24 @@
package org.richfaces.renderkit.html;
-import org.ajax4jsf.javascript.JSObject;
-import org.richfaces.cdk.annotations.JsfRenderer;
-import org.richfaces.component.AbstractPanelMenu;
-import org.richfaces.component.util.HtmlUtil;
-import org.richfaces.renderkit.HtmlConstants;
+import static org.richfaces.renderkit.html.TogglePanelRenderer.getAjaxOptions;
+import static org.richfaces.renderkit.html.TogglePanelRenderer.getValueRequestParamName;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import static org.richfaces.renderkit.html.TogglePanelRenderer.getAjaxOptions;
-import static org.richfaces.renderkit.html.TogglePanelRenderer.getValueRequestParamName;
+import org.ajax4jsf.javascript.JSObject;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.component.AbstractPanelMenu;
+import org.richfaces.component.util.HtmlUtil;
+import org.richfaces.renderkit.HtmlConstants;
/**
* @author akolonitsky
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -22,25 +22,39 @@
package org.richfaces.renderkit.html;
-import org.ajax4jsf.javascript.JSObject;
-import org.richfaces.cdk.annotations.JsfRenderer;
-import org.richfaces.component.*;
-import org.richfaces.component.util.HtmlUtil;
-import org.richfaces.context.ExtendedPartialViewContext;
-import org.richfaces.renderkit.HtmlConstants;
-import org.richfaces.renderkit.RenderKitUtils;
+import static org.richfaces.component.AbstractTogglePanelTitledItem.HeaderStates.active;
+import static org.richfaces.component.AbstractTogglePanelTitledItem.HeaderStates.disabled;
+import static org.richfaces.component.AbstractTogglePanelTitledItem.HeaderStates.inactive;
+import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
+import static org.richfaces.renderkit.HtmlConstants.DIV_ELEM;
+import static org.richfaces.renderkit.HtmlConstants.ID_ATTRIBUTE;
+import static org.richfaces.renderkit.HtmlConstants.SPAN_ELEM;
+import static org.richfaces.renderkit.HtmlConstants.STYLE_ATTRIBUTE;
+import static org.richfaces.renderkit.HtmlConstants.TBODY_ELEMENT;
+import static org.richfaces.renderkit.HtmlConstants.TD_ELEM;
+import static org.richfaces.renderkit.HtmlConstants.TR_ELEMENT;
+import static org.richfaces.renderkit.RenderKitUtils.renderPassThroughAttributes;
+import java.io.IOException;
+import java.util.Map;
+
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import java.io.IOException;
-import java.util.Map;
-import static org.richfaces.component.AbstractTogglePanelTitledItem.HeaderStates.*;
-import static org.richfaces.renderkit.HtmlConstants.*;
-import static org.richfaces.renderkit.RenderKitUtils.renderPassThroughAttributes;
+import org.ajax4jsf.javascript.JSObject;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.component.AbstractTab;
+import org.richfaces.component.AbstractTabPanel;
+import org.richfaces.component.AbstractTogglePanel;
+import org.richfaces.component.AbstractTogglePanelItemInterface;
+import org.richfaces.component.AbstractTogglePanelTitledItem;
+import org.richfaces.component.util.HtmlUtil;
+import org.richfaces.context.ExtendedPartialViewContext;
+import org.richfaces.renderkit.HtmlConstants;
+import org.richfaces.renderkit.RenderKitUtils;
/**
* @author akolonitsky
@@ -70,33 +84,6 @@
private static final String STYLE = STYLE_ATTRIBUTE;
private static final String CLASS = CLASS_ATTRIBUTE;
-// @Override
-// protected void doDecode(FacesContext context, UIComponent component) {
-// AbstractTogglePanel panel = (AbstractTogglePanel) component;
-//
-// Map<String, String> requestMap =
-// context.getExternalContext().getRequestParameterMap();
-//
-// // Don't overwrite the value unless you have to!
-// String newValue = requestMap.get(getValueRequestParamName(context, component));
-// if (newValue != null) {
-// panel.setSubmittedActiveItem(newValue);
-// }
-//
-// String tabClientId = component.getClientId(context);
-// if (requestMap.get(tabClientId) != null) {
-// new ActionEvent(component).queue();
-//
-// if (context.getPartialViewContext().isPartialRequest()) {
-// //TODO nick - why render item by default?
-// context.getPartialViewContext().getRenderIds().add(tabClientId);
-//
-// //TODO nick - this should be done on encode, not on decode
-// AbstractTab tab = (AbstractTab) component;
-// addOnCompleteParam(context, tab.getName(), tab.getTabPanel().getClientId(context));
-// }
-// }
-// }
protected static void addOnCompleteParam(FacesContext context, String newValue, String panelId) {
StringBuilder onComplete = new StringBuilder();
Modified: branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
===================================================================
--- branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -22,29 +22,33 @@
package org.richfaces.renderkit.html;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialViewContext;
+import javax.faces.context.ResponseWriter;
+
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSObject;
import org.ajax4jsf.javascript.JSReference;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.component.AbstractTogglePanel;
import org.richfaces.component.AbstractTogglePanelItemInterface;
+import org.richfaces.component.MetaComponentResolver;
import org.richfaces.component.util.HtmlUtil;
import org.richfaces.context.ExtendedPartialViewContext;
import org.richfaces.renderkit.AjaxOptions;
import org.richfaces.renderkit.HtmlConstants;
+import org.richfaces.renderkit.MetaComponentRenderer;
import org.richfaces.renderkit.util.AjaxRendererUtils;
import org.richfaces.renderkit.util.FormUtil;
import org.richfaces.renderkit.util.HandlersChain;
-import javax.faces.application.ResourceDependencies;
-import javax.faces.application.ResourceDependency;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* @author akolonitsky
*/
@@ -56,7 +60,7 @@
@ResourceDependency(name = "richfaces-base-component.js"),
@ResourceDependency(library = "org.richfaces", name = "togglePanel.js")})
@JsfRenderer(type = "org.richfaces.TogglePanelRenderer", family = AbstractTogglePanel.COMPONENT_FAMILY)
-public class TogglePanelRenderer extends DivPanelRenderer {
+public class TogglePanelRenderer extends DivPanelRenderer implements MetaComponentRenderer {
public static final String VALUE_POSTFIX = "-value";
@@ -76,17 +80,14 @@
String newValue = requestMap.get(getValueRequestParamName(context, component));
if (newValue != null) {
panel.setSubmittedActiveItem(newValue);
-
- //Retrieve the child item from the panel
- AbstractTogglePanelItemInterface panelItem = panel.getItem(newValue);
- if (panelItem != null) {
- //Set the active panel to be rendered
- context.getPartialViewContext().getRenderIds().add(((UIComponent) panelItem).getClientId(context));
-
- //TODO nick - this should be done on encode, not on decode
- addOnCompleteParam(context, newValue, panel.getClientId(context));
- }
}
+
+ if (requestMap.get("javax.faces.partial.ajax") != null) {
+ PartialViewContext pvc = context.getPartialViewContext();
+ pvc.getRenderIds().add(
+ component.getClientId(context) + MetaComponentResolver.META_COMPONENT_SEPARATOR_CHAR
+ + AbstractTogglePanel.ACTIVE_ITEM_META_COMPONENT);
+ }
}
protected static void addOnCompleteParam(FacesContext context, String newValue, String panelId) {
@@ -100,7 +101,7 @@
static String getValueRequestParamName(FacesContext context, UIComponent component) {
return component.getClientId(context) + VALUE_POSTFIX;
}
-
+
@Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
FormUtil.throwEnclFormReqExceptionIfNeed(context, component);
@@ -114,7 +115,7 @@
writer.writeAttribute(HtmlConstants.TYPE_ATTR, HtmlConstants.INPUT_TYPE_HIDDEN, null);
writer.writeAttribute(HtmlConstants.VALUE_ATTRIBUTE, panel.getActiveItem(), null);
writer.endElement(HtmlConstants.INPUT_ELEM);
-
+
writeJavaScript(writer, context, component);
}
@@ -179,5 +180,39 @@
protected Class<? extends UIComponent> getComponentClass() {
return AbstractTogglePanel.class;
}
+
+ public void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId)
+ throws IOException {
+ if (AbstractTogglePanel.ACTIVE_ITEM_META_COMPONENT.equals(metaComponentId)) {
+ AbstractTogglePanel panel = (AbstractTogglePanel)component;
+ AbstractTogglePanelItemInterface item = panel.getItem(panel.getActiveItem());
+
+ if (item != null) {
+ partialStart(context, ((UIComponent)item).getClientId(context));
+ ((UIComponent)item).encodeAll(context);
+ partialEnd(context);
+ addOnCompleteParam(context, item.getName(), panel.getClientId(context));
+ } else {
+ partialStart(context, component.getClientId(context));
+ component.encodeAll(context);
+ partialEnd(context);
+ addOnCompleteParam(context, panel.getActiveItem(), panel.getClientId(context));
+ }
+ } else {
+ throw new IllegalArgumentException(metaComponentId);
+ }
+ }
+
+ public void decodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId) {
+ // TODO Auto-generated method stub
+ }
+
+ protected void partialStart(FacesContext facesContext, String id) throws IOException {
+ facesContext.getPartialViewContext().getPartialResponseWriter().startUpdate(id);
+ }
+
+ protected void partialEnd(FacesContext facesContext) throws IOException {
+ facesContext.getPartialViewContext().getPartialResponseWriter().endUpdate();
+ }
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java 2011-02-26 00:50:53 UTC (rev 21945)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java 2011-02-26 11:16:17 UTC (rev 21946)
@@ -5,7 +5,6 @@
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.faces.application.Resource;
13 years, 2 months
JBoss Rich Faces SVN: r21945 - in branches/4.0.0.CR1/ui/validator: ui/src/main/java/org/richfaces/javascript and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2011-02-25 19:50:53 -0500 (Fri, 25 Feb 2011)
New Revision: 21945
Modified:
branches/4.0.0.CR1/ui/validator/api/src/main/java/org/richfaces/javascript/ScriptNotFoundException.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java
Log:
RESOLVED - issue RF-10062: CSV: cache results in services
https://issues.jboss.org/browse/RF-10062
Modified: branches/4.0.0.CR1/ui/validator/api/src/main/java/org/richfaces/javascript/ScriptNotFoundException.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/api/src/main/java/org/richfaces/javascript/ScriptNotFoundException.java 2011-02-25 23:29:51 UTC (rev 21944)
+++ branches/4.0.0.CR1/ui/validator/api/src/main/java/org/richfaces/javascript/ScriptNotFoundException.java 2011-02-26 00:50:53 UTC (rev 21945)
@@ -1,24 +1,21 @@
package org.richfaces.javascript;
-public class ScriptNotFoundException extends Exception {
+public class ScriptNotFoundException extends RuntimeException {
public ScriptNotFoundException() {
- // TODO Auto-generated constructor stub
+ super();
}
public ScriptNotFoundException(String message) {
super(message);
- // TODO Auto-generated constructor stub
}
public ScriptNotFoundException(Throwable cause) {
super(cause);
- // TODO Auto-generated constructor stub
}
public ScriptNotFoundException(String message, Throwable cause) {
super(message, cause);
- // TODO Auto-generated constructor stub
}
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java 2011-02-25 23:29:51 UTC (rev 21944)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/javascript/ClientScriptServiceImpl.java 2011-02-26 00:50:53 UTC (rev 21945)
@@ -5,6 +5,8 @@
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import javax.faces.application.Resource;
import javax.faces.application.ResourceDependency;
@@ -14,7 +16,10 @@
import org.richfaces.component.util.Strings;
import org.richfaces.resource.ResourceKey;
+import com.google.common.base.Function;
+import com.google.common.collect.ComputationException;
import com.google.common.collect.Lists;
+import com.google.common.collect.MapMaker;
/**
* @author asmirnov
@@ -26,10 +31,30 @@
private static final String ORG_RICHFACES_CSV = "org.richfaces.csv";
+ private static final Function<Class<?>, ? extends LibraryFunction> RESOURCE_SCRIPT_FUNCTION = new Function<Class<?>, LibraryFunction>() {
+
+ public LibraryFunction apply(Class<?> arg0) {
+ return getScriptResource(FacesContext.getCurrentInstance(), arg0);
+ }
+ };
+
+ private static final Function<Class<?>, ? extends LibraryFunction> ANNOTATION_SCRIPT_FUNCTION = new Function<Class<?>, LibraryFunction>() {
+
+ public LibraryFunction apply(Class<?> arg0) {
+ return getScriptFromAnnotation(arg0);
+ }
+ };
+
+ private final ConcurrentMap<Class<?>, LibraryFunction> resourcesMapping;
+
+ private final ConcurrentMap<Class<?>, LibraryFunction> annotationsMapping;
+
private final Map<Class<?>, LibraryFunction> defaultMapping;
public ClientScriptServiceImpl(Map<Class<?>, LibraryFunction> defaultMapping) {
this.defaultMapping = defaultMapping;
+ resourcesMapping = new MapMaker().initialCapacity(10).makeComputingMap(RESOURCE_SCRIPT_FUNCTION);
+ annotationsMapping = new MapMaker().initialCapacity(10).makeComputingMap(ANNOTATION_SCRIPT_FUNCTION);
}
/*
@@ -43,18 +68,31 @@
}
LibraryFunction function;
try {
- function = getScriptResource(facesContext, javaClass);
+ function = getFromComputationMap(resourcesMapping, javaClass);
} catch (ScriptNotFoundException e) {
if (defaultMapping.containsKey(javaClass)) {
function = defaultMapping.get(javaClass);
} else {
- function = getScriptFromAnnotation(javaClass);
+ function = getFromComputationMap(annotationsMapping, javaClass);
}
}
return function;
}
+
+ private LibraryFunction getFromComputationMap(ConcurrentMap<Class<?>, LibraryFunction> map, Class<?> clazz) throws ScriptNotFoundException {
+ try {
+ return map.get(clazz);
+ } catch (ComputationException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof ScriptNotFoundException) {
+ ScriptNotFoundException snfe = (ScriptNotFoundException) cause;
+ throw snfe;
+ }
+ throw e;
+ }
+ }
- private LibraryFunction getScriptFromAnnotation(Class<?> javaClass) throws ScriptNotFoundException {
+ private static LibraryFunction getScriptFromAnnotation(Class<?> javaClass) throws ScriptNotFoundException {
if (javaClass.isAnnotationPresent(ClientSideScript.class)) {
ClientSideScript clientSideScript = javaClass.getAnnotation(ClientSideScript.class);
List<ResourceKey> resources = Lists.newArrayList();
@@ -67,7 +105,7 @@
}
}
- private LibraryFunction getScriptResource(FacesContext facesContext, Class<?> javaClass)
+ private static LibraryFunction getScriptResource(FacesContext facesContext, Class<?> javaClass)
throws ScriptNotFoundException {
ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
String resourceName = javaClass.getSimpleName() + ".js";
13 years, 2 months
JBoss Rich Faces SVN: r21944 - in branches/4.0.0.CR1/ui/validator/ui/src/main: java/org/richfaces/component/behavior and 4 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2011-02-25 18:29:51 -0500 (Fri, 25 Feb 2011)
New Revision: 21944
Added:
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/MessageUpdateScript.java
Modified:
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/AbstractGraphValidator.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/AjaxOnlyScript.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientAndAjaxScript.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientOnlyScript.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/BeanValidatorServiceImpl.java
branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/FacesBeanValidator.java
branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/csv.xml
branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js
Log:
https://issues.jboss.org/browse/RF-10591
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/AbstractGraphValidator.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/AbstractGraphValidator.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/AbstractGraphValidator.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -33,14 +33,17 @@
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
+import org.richfaces.application.ServiceTracker;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.TagType;
import org.richfaces.el.CapturingELResolver;
import org.richfaces.el.ELContextWrapper;
+import org.richfaces.log.Logger;
+import org.richfaces.log.RichfacesLogger;
+import org.richfaces.validator.BeanValidatorService;
import org.richfaces.validator.FacesBeanValidator;
-import org.richfaces.validator.GraphValidator;
import org.richfaces.validator.GraphValidatorState;
/**
@@ -53,6 +56,8 @@
public static final String COMPONENT_TYPE = "org.richfaces.GraphValidator";
public static final String COMPONENT_FAMILY = "org.richfaces.GraphValidator";
+
+ private static final Logger LOG = RichfacesLogger.COMPONENTS.getLogger();
/**
* Get object for validation
@@ -204,24 +209,17 @@
private void validateObject(FacesContext context, Object value) {
if (null != value) {
- Validator validator = context.getApplication().createValidator(getType());
- if (validator instanceof GraphValidator) {
- GraphValidator graphValidator = (GraphValidator) validator;
- Collection<String> messages = graphValidator.validateGraph(context, this, value, getGroups());
- if (null != messages) {
- context.renderResponse();
- // send all validation messages.
- String clientId = getClientId(context);
- for (String msg : messages) {
- // TODO - create Summary message ?
- String summary = null != getSummary() ? getSummary() + msg : msg;
- context.addMessage(clientId, new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, msg));
- }
+ Collection<String> messages;
+ BeanValidatorService validatorService = ServiceTracker.getService(BeanValidatorService.class);
+ messages = validatorService.validateObject(context, value, getGroups());
+ if (!messages.isEmpty()) {
+ context.renderResponse();
+ // send all validation messages.
+ String clientId = getClientId(context);
+ for (String msg : messages) {
+ String summary = null != getSummary() ? getSummary() : msg;
+ context.addMessage(clientId, new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, msg));
}
-
- } else {
- throw new FacesException("Validator " + FacesBeanValidator.BEAN_VALIDATOR_TYPE
- + " does not implement GraphValidator");
}
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -31,6 +31,7 @@
import javax.el.ValueExpression;
import javax.faces.FacesException;
import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
import javax.faces.component.ActionSource;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.NamingContainer;
@@ -54,6 +55,7 @@
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.TagType;
import org.richfaces.component.ClientSideMessage;
+import org.richfaces.javascript.JavaScriptService;
import org.richfaces.log.Logger;
import org.richfaces.log.RichfacesLogger;
import org.richfaces.renderkit.html.ClientValidatorRenderer;
@@ -116,12 +118,10 @@
if(partialViewContext.isAjaxRequest()){
UIComponent component = event.getComponent();
if(component instanceof EditableValueHolder){
- EditableValueHolder input = (EditableValueHolder) component;
- Set<UIComponent> messages = getMessages(facesContext, component);
- Collection<String> renderIds = partialViewContext.getRenderIds();
- for (UIComponent uiComponent : messages) {
- renderIds.add(uiComponent.getClientId(facesContext));
- }
+ String clientId = component.getClientId(facesContext);
+ Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
+ JavaScriptService javaScriptService = ServiceTracker.getService(JavaScriptService.class);
+ javaScriptService.addPageReadyScript(facesContext, new MessageUpdateScript(clientId,messages));
}
}
super.broadcast(event);
@@ -282,15 +282,17 @@
Validator[] facesValidators = input.getValidators();
FacesContext facesContext = context.getFacesContext();
if (facesValidators.length > 0) {
+ boolean beanValidatorsProcessed = false;
FacesValidatorService facesValidatorService = ServiceTracker.getService(facesContext,
FacesValidatorService.class);
for (Validator validator : facesValidators) {
if (validator instanceof BeanValidator || validator instanceof FacesBeanValidator) {
ValueExpression valueExpression = component.getValueExpression(VALUE);
- if (null != valueExpression) {
+ if (null != valueExpression && !beanValidatorsProcessed) {
BeanValidatorService beanValidatorService = ServiceTracker.getService(facesContext,
BeanValidatorService.class);
validators.addAll(beanValidatorService.getConstrains(facesContext, valueExpression, getGroups()));
+ beanValidatorsProcessed = true;
}
} else {
validators.add(facesValidatorService.getValidatorDescription(facesContext, input, validator));
Added: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/MessageUpdateScript.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/MessageUpdateScript.java (rev 0)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/MessageUpdateScript.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -0,0 +1,45 @@
+package org.richfaces.component.behavior;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.faces.application.FacesMessage;
+
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.ScriptString;
+import org.ajax4jsf.javascript.ScriptStringBase;
+import org.richfaces.javascript.Message;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterators;
+
+public class MessageUpdateScript extends ScriptStringBase implements ScriptString {
+
+ private static final Function<? super FacesMessage, Message> MESSAGES_TRANSFORMER = new Function<FacesMessage, Message>() {
+
+ public Message apply(FacesMessage msg) {
+ return new Message(msg);
+ }
+ };
+ private final ImmutableList<Message> messages;
+ private final String clientId;
+
+ public MessageUpdateScript(String clientId,Iterator<FacesMessage> messages) {
+ this.clientId = clientId;
+ this.messages = ImmutableList.copyOf(Iterators.transform(messages, MESSAGES_TRANSFORMER));
+ }
+
+ public void appendScript(Appendable target) throws IOException {
+ JSFunction resetMessages = new JSFunction("RichFaces.csv.clearMessage",clientId);
+ resetMessages.appendScript(target);
+ target.append(';');
+ for (Message message : messages) {
+ JSFunction sendMessage = new JSFunction("RichFaces.csv.sendMessage",clientId,message);
+ sendMessage.appendScript(target);
+ target.append(';');
+ }
+ }
+
+}
Property changes on: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/component/behavior/MessageUpdateScript.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/AjaxOnlyScript.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/AjaxOnlyScript.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/AjaxOnlyScript.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -1,15 +1,18 @@
package org.richfaces.renderkit.html;
import java.io.IOException;
-import java.util.Collections;
import org.richfaces.resource.ResourceKey;
+import com.google.common.collect.ImmutableSet;
+
public class AjaxOnlyScript extends ValidatorScriptBase {
- public static final Iterable<ResourceKey> AJAX_LIBRARIES = Collections.singleton(ResourceKey.create("ajax.reslib",
- "org.richfaces"));
+ public static final ResourceKey AJAX_RESOURCE = ResourceKey.create("ajax.reslib",
+ "org.richfaces");
+ public static final Iterable<ResourceKey> AJAX_LIBRARIES = ImmutableSet.of(AJAX_RESOURCE,ClientOnlyScript.CSV_RESOURCE);
+
private final String ajaxScript;
public AjaxOnlyScript(String ajaxScript) {
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientAndAjaxScript.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientAndAjaxScript.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientAndAjaxScript.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -5,7 +5,8 @@
import org.richfaces.resource.ResourceKey;
-import com.google.common.collect.Iterables;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSet.Builder;
public class ClientAndAjaxScript extends ClientOnlyScript{
@@ -19,7 +20,10 @@
Collection<? extends LibraryScriptFunction> validatorScripts, String ajaxScript) {
super(clientSideConverterScript,validatorScripts);
this.ajaxScript = ajaxScript;
- resources = Iterables.concat(AjaxOnlyScript.AJAX_LIBRARIES,super.getResources());
+ Builder<ResourceKey> builder = ImmutableSet.<ResourceKey>builder();
+ builder.add(AjaxOnlyScript.AJAX_RESOURCE);
+ builder.addAll(super.getResources());
+ resources = builder.build();
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientOnlyScript.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientOnlyScript.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/ClientOnlyScript.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -15,7 +15,7 @@
public class ClientOnlyScript extends ValidatorScriptBase {
- private static final ResourceKey CSV_RESOURCE = ResourceKey.create("csv.reslib", "org.richfaces");
+ public static final ResourceKey CSV_RESOURCE = ResourceKey.create("csv.reslib", "org.richfaces");
protected final LibraryScriptFunction converter;
protected final ImmutableList<? extends LibraryScriptFunction> validators;
private final ImmutableSet<ResourceKey> resources;
@@ -26,13 +26,13 @@
this.converter = clientSideConverterScript;
this.validators = ImmutableList.copyOf(validatorScripts);
LinkedHashSet<ResourceKey> resources = Sets.newLinkedHashSet();
+ resources.add(CSV_RESOURCE);
if (null != converter) {
Iterables.addAll(resources, converter.getResources());
}
for (LibraryScriptFunction scriptString : validators) {
Iterables.addAll(resources, scriptString.getResources());
}
- resources.add(CSV_RESOURCE);
this.resources = ImmutableSet.copyOf(resources);
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/BeanValidatorServiceImpl.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/BeanValidatorServiceImpl.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/BeanValidatorServiceImpl.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -450,13 +450,15 @@
}
private Collection<String> extractMessages(Set<ConstraintViolation<Object>> violations) {
- Collection<String> messages = null;
+ Collection<String> messages;
if (null != violations && violations.size() > 0) {
messages = new ArrayList<String>(violations.size());
for (ConstraintViolation<? extends Object> constraintViolation : violations) {
messages.add(constraintViolation.getMessage());
}
+ } else {
+ messages = Collections.emptySet();
}
return messages;
}
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/FacesBeanValidator.java
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2011-02-25 23:29:51 UTC (rev 21944)
@@ -37,8 +37,6 @@
import org.richfaces.application.ServiceTracker;
import org.richfaces.cdk.annotations.JsfValidator;
-import org.richfaces.cdk.annotations.Tag;
-import org.richfaces.cdk.annotations.TagType;
import com.google.common.base.Strings;
@@ -48,7 +46,7 @@
* @author asmirnov
*
*/
-@JsfValidator(id=FacesBeanValidator.BEAN_VALIDATOR_TYPE,tag=(a)Tag(name="beanValidator",type=TagType.Facelets))
+(a)JsfValidator(id=FacesBeanValidator.BEAN_VALIDATOR_TYPE)
public class FacesBeanValidator implements Serializable, Validator, GraphValidator {
public static final String BEAN_VALIDATOR_TYPE = "org.richfaces.BeanValidator";
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/csv.xml
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/csv.xml 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/csv.xml 2011-02-25 23:29:51 UTC (rev 21944)
@@ -176,4 +176,20 @@
</resource>
<function>RichFaces.csv.validateMax</function>
</component>
+ <component>
+ <type>javax.validation.constraints.AssertTrue</type>
+ <resource>
+ <name>csv.reslib</name>
+ <library>org.richfaces</library>
+ </resource>
+ <function>RichFaces.csv.validateTrue</function>
+ </component>
+ <component>
+ <type>javax.validation.constraints.AssertFalse</type>
+ <resource>
+ <name>csv.reslib</name>
+ <library>org.richfaces</library>
+ </resource>
+ <function>RichFaces.csv.validateFalse</function>
+ </component>
</scripts>
\ No newline at end of file
Modified: branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js
===================================================================
--- branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js 2011-02-25 20:48:14 UTC (rev 21943)
+++ branches/4.0.0.CR1/ui/validator/ui/src/main/resources/META-INF/resources/org.richfaces/richfaces-csv.js 2011-02-25 23:29:51 UTC (rev 21944)
@@ -81,31 +81,33 @@
} else {
convertedValue = value;
}
+ var result = true
var validators = params.v;
if (validators) {
var validatorFunction,validator;
- try {
for (i=0;i<validators.length;i++) {
- validator=validators[i];
- validatorFunction = validator.f;
- if (validatorFunction) {
- validatorFunction(convertedValue,getLabel(validator,id), validator.p,validator.m);
+ try {
+ validator=validators[i];
+ validatorFunction = validator.f;
+ if (validatorFunction) {
+ validatorFunction(convertedValue,getLabel(validator,id), validator.p,validator.m);
+ }
+ } catch (e) {
+ e.severity=2;
+ rf.csv.sendMessage(id, e);
+ result = false;
}
}
- } catch (e) {
- e.severity=2;
- rf.csv.sendMessage(id, e);
- return false;
- }
}
- if(!params.da && params.a){
+ if(!result && !params.da && params.a){
params.a.call(element,event,id);
}
- return true;
+ return result;
},
});
- /* convert all natural number formats
+ /*
+ * convert all natural number formats
*
*/
var _convertNatural = function(value,label,msg,min,max,sample){
@@ -172,8 +174,8 @@
});
var validateRange = function(value,label,params,msg) {
- var isMinSet = typeof params.min === "number" ;//&& params.min >0;
- var isMaxSet = typeof params.max === "number" ;//&& params.max >0;
+ var isMinSet = typeof params.min === "number" ;// && params.min >0;
+ var isMaxSet = typeof params.max === "number" ;// && params.max >0;
if (isMaxSet && value > params.max) {
throw rf.csv.interpolateMessage(msg,isMinSet?[params.min,params.max,label]:[params.max,label]);
@@ -252,6 +254,16 @@
throw rf.csv.interpolateMessage(msg, [label]);
}
},
+ "validateTrue": function (value,label,params,msg) {
+ if (!value ) {
+ throw msg;
+ }
+ },
+ "validateFalse": function (value,label,params,msg) {
+ if (value ) {
+ throw msg;
+ }
+ },
"validateMax": function (value,label,params,msg) {
if (value > params.value ) {
throw msg;
13 years, 2 months