Search in sources :

Example 1 with ValueChangeEvent

use of jakarta.faces.event.ValueChangeEvent in project myfaces by apache.

the class ExceptionTestCase method testValueChangeListenerException1_1.

@Test
public void testValueChangeListenerException1_1() throws Exception {
    UIViewRoot root = facesContext.getViewRoot();
    vdl.buildView(facesContext, root, "testValueChangeListenerException1.xhtml");
    root.invokeOnComponent(facesContext, "mainForm:input1", new ContextCallback() {

        public void invokeContextCallback(FacesContext context, UIComponent target) {
            Object submittedValue = "Hello!";
            ExceptionBean bean = EasyMock.createStrictMock(ExceptionBean.class);
            bean.valueChangeListenerMe((ValueChangeEvent) EasyMock.anyObject());
            EasyMock.expectLastCall().andThrow(new RuntimeException());
            // Setup is finished need to activate the mock
            EasyMock.replay(bean);
            UIInput input = (UIInput) target;
            input.setSubmittedValue(submittedValue);
            try {
                input.processValidators(facesContext);
            } catch (FacesException e) {
                Assert.fail("No exception expected");
            }
            request.setAttribute("bean", bean);
        }
    });
    try {
        root.processUpdates(facesContext);
    } catch (Throwable e) {
        // JSF 2.0: publish the executor's exception (if any).
        publishException(e, PhaseId.UPDATE_MODEL_VALUES, facesContext);
    }
    int i = 0;
    for (Iterator<ExceptionQueuedEvent> it = facesContext.getExceptionHandler().getUnhandledExceptionQueuedEvents().iterator(); it.hasNext(); ) {
        ExceptionQueuedEvent eqe = it.next();
        Throwable e = eqe.getContext().getException();
        if (e instanceof AbortProcessingException) {
            Assert.fail("Unexpected exception queued");
        } else {
            // Expected
            i++;
        }
    }
    Assert.assertEquals(1, i);
}
Also used : FacesContext(jakarta.faces.context.FacesContext) ExceptionQueuedEvent(jakarta.faces.event.ExceptionQueuedEvent) UIComponent(jakarta.faces.component.UIComponent) UIInput(jakarta.faces.component.UIInput) FacesException(jakarta.faces.FacesException) ValueChangeEvent(jakarta.faces.event.ValueChangeEvent) ContextCallback(jakarta.faces.component.ContextCallback) AbortProcessingException(jakarta.faces.event.AbortProcessingException) UIViewRoot(jakarta.faces.component.UIViewRoot) Test(org.junit.Test)

Example 2 with ValueChangeEvent

use of jakarta.faces.event.ValueChangeEvent in project myfaces by apache.

the class CompositeComponentValueChangeListenerTestCase method testCompositeValueChangeListenerTarget.

@Test
public void testCompositeValueChangeListenerTarget() throws Exception {
    MockAttributeBean bean = new MockAttributeBean();
    facesContext.getExternalContext().getRequestMap().put("bean", bean);
    UIViewRoot root = facesContext.getViewRoot();
    vdl.buildView(facesContext, root, "testCompositeAttributeValueChangeListenerTarget.xhtml");
    UIComponent panelGroup1 = root.findComponent("testGroup1");
    Assert.assertNotNull(panelGroup1);
    UINamingContainer compositeComponent1 = (UINamingContainer) panelGroup1.getChildren().get(0);
    Assert.assertNotNull(compositeComponent1);
    UINamingContainer compositeComponent1inner = (UINamingContainer) compositeComponent1.findComponent("simpleAttributeMethodExpressionTarget");
    Assert.assertNotNull(compositeComponent1inner);
    UIInput input1 = (UIInput) compositeComponent1inner.findComponent("testComponent");
    Assert.assertNotNull(input1);
    Assert.assertNotNull(input1.getValueChangeListeners());
    Assert.assertEquals(1, input1.getValueChangeListeners().length);
    bean.setValueChangeListener1Called(false);
    input1.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input1, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    UIComponent panelGroup2 = root.findComponent("testGroup2");
    Assert.assertNotNull(panelGroup2);
    UINamingContainer compositeComponent2 = (UINamingContainer) panelGroup2.getChildren().get(0);
    Assert.assertNotNull(compositeComponent2);
    UINamingContainer compositeComponent2inner = (UINamingContainer) compositeComponent2.findComponent("simpleAttributeMethodExpressionTarget");
    Assert.assertNotNull(compositeComponent2inner);
    UIInput input2 = (UIInput) compositeComponent2inner.findComponent("testComponent");
    Assert.assertNotNull(input2);
    Assert.assertNotNull(input2.getValueChangeListeners());
    Assert.assertEquals(1, input2.getValueChangeListeners().length);
    bean.setValueChangeListener2Called(false);
    input2.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input2, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
}
Also used : ValueChangeEvent(jakarta.faces.event.ValueChangeEvent) UIComponent(jakarta.faces.component.UIComponent) UINamingContainer(jakarta.faces.component.UINamingContainer) UIViewRoot(jakarta.faces.component.UIViewRoot) UIInput(jakarta.faces.component.UIInput) Test(org.junit.Test)

Example 3 with ValueChangeEvent

use of jakarta.faces.event.ValueChangeEvent in project myfaces by apache.

the class CompositeComponentValueChangeListenerTestCase method testCompositeValueChangeListenerTarget2.

@Test
public void testCompositeValueChangeListenerTarget2() throws Exception {
    MockAttributeBean bean = new MockAttributeBean();
    facesContext.getExternalContext().getRequestMap().put("bean", bean);
    UIViewRoot root = facesContext.getViewRoot();
    vdl.buildView(facesContext, root, "testCompositeAttributeValueChangeListenerTarget2.xhtml");
    UIComponent panelGroup1 = root.findComponent("testGroup1");
    Assert.assertNotNull(panelGroup1);
    UINamingContainer compositeComponent1 = (UINamingContainer) panelGroup1.getChildren().get(0);
    Assert.assertNotNull(compositeComponent1);
    UINamingContainer compositeComponent1target = (UINamingContainer) compositeComponent1.findComponent("simpleAttributeMethodExpressionTarget");
    Assert.assertNotNull(compositeComponent1target);
    UIInput input1target = (UIInput) compositeComponent1target.findComponent("testComponent");
    Assert.assertNotNull(input1target);
    Assert.assertNotNull(input1target.getValueChangeListeners());
    Assert.assertEquals(1, input1target.getValueChangeListeners().length);
    bean.setValueChangeListener1Called(false);
    input1target.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input1target, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    UIInput input1notarget = (UIInput) compositeComponent1target.findComponent("testComponentNoTarget");
    Assert.assertNotNull(input1notarget);
    Assert.assertNotNull(input1notarget.getValueChangeListeners());
    Assert.assertEquals(1, input1notarget.getValueChangeListeners().length);
    compositeComponent1.pushComponentToEL(facesContext, compositeComponent1);
    compositeComponent1target.pushComponentToEL(facesContext, compositeComponent1target);
    bean.setValueChangeListener1Called(false);
    input1notarget.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input1notarget, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    compositeComponent1target.popComponentFromEL(facesContext);
    compositeComponent1.popComponentFromEL(facesContext);
    UINamingContainer compositeComponent1notarget = (UINamingContainer) compositeComponent1.findComponent("simpleAttributeMethodExpressionNoTarget");
    Assert.assertNotNull(compositeComponent1notarget);
    UIInput inputnotarget1target = (UIInput) compositeComponent1notarget.findComponent("testComponent");
    Assert.assertNotNull(inputnotarget1target);
    Assert.assertNotNull(inputnotarget1target.getValueChangeListeners());
    Assert.assertEquals(1, inputnotarget1target.getValueChangeListeners().length);
    compositeComponent1.pushComponentToEL(facesContext, compositeComponent1);
    compositeComponent1notarget.pushComponentToEL(facesContext, compositeComponent1notarget);
    bean.setValueChangeListener1Called(false);
    inputnotarget1target.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(inputnotarget1target, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    compositeComponent1notarget.popComponentFromEL(facesContext);
    compositeComponent1.popComponentFromEL(facesContext);
    UIInput inputnotarget1notarget = (UIInput) compositeComponent1notarget.findComponent("testComponentNoTarget");
    Assert.assertNotNull(inputnotarget1notarget);
    Assert.assertNotNull(inputnotarget1notarget.getValueChangeListeners());
    Assert.assertEquals(1, inputnotarget1notarget.getValueChangeListeners().length);
    compositeComponent1.pushComponentToEL(facesContext, compositeComponent1);
    compositeComponent1notarget.pushComponentToEL(facesContext, compositeComponent1notarget);
    bean.setValueChangeListener1Called(false);
    inputnotarget1notarget.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(inputnotarget1notarget, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    compositeComponent1notarget.popComponentFromEL(facesContext);
    compositeComponent1.popComponentFromEL(facesContext);
    UIComponent panelGroup2 = root.findComponent("testGroup2");
    Assert.assertNotNull(panelGroup2);
    UINamingContainer compositeComponent2 = (UINamingContainer) panelGroup2.getChildren().get(0);
    Assert.assertNotNull(compositeComponent2);
    UINamingContainer compositeComponent2target = (UINamingContainer) compositeComponent2.findComponent("simpleAttributeMethodExpressionTarget");
    Assert.assertNotNull(compositeComponent2target);
    UIInput input2target = (UIInput) compositeComponent2target.findComponent("testComponent");
    Assert.assertNotNull(input2target);
    Assert.assertNotNull(input2target.getValueChangeListeners());
    Assert.assertEquals(1, input2target.getValueChangeListeners().length);
    bean.setValueChangeListener2Called(false);
    input2target.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input2target, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
    UIInput input2notarget = (UIInput) compositeComponent2target.findComponent("testComponentNoTarget");
    Assert.assertNotNull(input2notarget);
    Assert.assertNotNull(input2notarget.getValueChangeListeners());
    Assert.assertEquals(1, input2notarget.getValueChangeListeners().length);
    compositeComponent2.pushComponentToEL(facesContext, compositeComponent2);
    compositeComponent2target.pushComponentToEL(facesContext, compositeComponent2target);
    bean.setValueChangeListener2Called(false);
    input2notarget.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input2notarget, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
    compositeComponent2target.popComponentFromEL(facesContext);
    compositeComponent2.popComponentFromEL(facesContext);
    UINamingContainer compositeComponent2notarget = (UINamingContainer) compositeComponent2.findComponent("simpleAttributeMethodExpressionNoTarget");
    Assert.assertNotNull(compositeComponent2notarget);
    UIInput inputnotarget2target = (UIInput) compositeComponent2notarget.findComponent("testComponent");
    Assert.assertNotNull(inputnotarget2target);
    Assert.assertNotNull(inputnotarget2target.getValueChangeListeners());
    Assert.assertEquals(1, inputnotarget2target.getValueChangeListeners().length);
    compositeComponent2.pushComponentToEL(facesContext, compositeComponent2);
    compositeComponent2notarget.pushComponentToEL(facesContext, compositeComponent2notarget);
    bean.setValueChangeListener2Called(false);
    inputnotarget2target.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(inputnotarget2target, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
    compositeComponent2notarget.popComponentFromEL(facesContext);
    compositeComponent2.popComponentFromEL(facesContext);
    UIInput inputnotarget2notarget = (UIInput) compositeComponent2notarget.findComponent("testComponentNoTarget");
    Assert.assertNotNull(inputnotarget2notarget);
    Assert.assertNotNull(inputnotarget2notarget.getValueChangeListeners());
    Assert.assertEquals(1, inputnotarget2notarget.getValueChangeListeners().length);
    compositeComponent2.pushComponentToEL(facesContext, compositeComponent2);
    compositeComponent2notarget.pushComponentToEL(facesContext, compositeComponent2notarget);
    bean.setValueChangeListener2Called(false);
    inputnotarget2notarget.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(inputnotarget2notarget, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
    compositeComponent2notarget.popComponentFromEL(facesContext);
    compositeComponent2.popComponentFromEL(facesContext);
}
Also used : ValueChangeEvent(jakarta.faces.event.ValueChangeEvent) UIComponent(jakarta.faces.component.UIComponent) UINamingContainer(jakarta.faces.component.UINamingContainer) UIViewRoot(jakarta.faces.component.UIViewRoot) UIInput(jakarta.faces.component.UIInput) Test(org.junit.Test)

Example 4 with ValueChangeEvent

use of jakarta.faces.event.ValueChangeEvent in project myfaces by apache.

the class CompositeComponentValueChangeListenerTestCase method testCompositeValueChangeListenerNoTarget.

@Test
public void testCompositeValueChangeListenerNoTarget() throws Exception {
    MockAttributeBean bean = new MockAttributeBean();
    facesContext.getExternalContext().getRequestMap().put("bean", bean);
    UIViewRoot root = facesContext.getViewRoot();
    vdl.buildView(facesContext, root, "testCompositeAttributeValueChangeListenerNoTarget.xhtml");
    UIComponent panelGroup1 = root.findComponent("testGroup1");
    Assert.assertNotNull(panelGroup1);
    UINamingContainer compositeComponent1 = (UINamingContainer) panelGroup1.getChildren().get(0);
    Assert.assertNotNull(compositeComponent1);
    UINamingContainer compositeComponent1inner = (UINamingContainer) compositeComponent1.findComponent("simpleAttributeActionMethodExpressionNoTarget");
    Assert.assertNotNull(compositeComponent1inner);
    UIInput testComponentNoTarget1 = (UIInput) compositeComponent1inner.findComponent("testComponentNoTarget");
    Assert.assertNotNull(testComponentNoTarget1);
    Assert.assertNotNull(testComponentNoTarget1.getValueChangeListeners());
    Assert.assertEquals(1, testComponentNoTarget1.getValueChangeListeners().length);
    compositeComponent1.pushComponentToEL(facesContext, compositeComponent1);
    compositeComponent1.pushComponentToEL(facesContext, compositeComponent1inner);
    bean.setValueChangeListener1Called(false);
    testComponentNoTarget1.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(testComponentNoTarget1, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    compositeComponent1inner.popComponentFromEL(facesContext);
    compositeComponent1.popComponentFromEL(facesContext);
    UIComponent panelGroup2 = root.findComponent("testGroup2");
    Assert.assertNotNull(panelGroup2);
    UINamingContainer compositeComponent2 = (UINamingContainer) panelGroup2.getChildren().get(0);
    Assert.assertNotNull(compositeComponent2);
    UINamingContainer compositeComponent2inner = (UINamingContainer) compositeComponent2.findComponent("simpleAttributeActionMethodExpressionNoTarget");
    Assert.assertNotNull(compositeComponent2inner);
    UIInput testComponentNoTarget2 = (UIInput) compositeComponent2inner.findComponent("testComponentNoTarget");
    Assert.assertNotNull(testComponentNoTarget2);
    Assert.assertNotNull(testComponentNoTarget2.getValueChangeListeners());
    Assert.assertEquals(1, testComponentNoTarget2.getValueChangeListeners().length);
    compositeComponent2.pushComponentToEL(facesContext, compositeComponent2);
    compositeComponent2.pushComponentToEL(facesContext, compositeComponent2inner);
    bean.setValueChangeListener2Called(false);
    testComponentNoTarget2.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(testComponentNoTarget2, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
    compositeComponent2inner.popComponentFromEL(facesContext);
    compositeComponent2.popComponentFromEL(facesContext);
}
Also used : ValueChangeEvent(jakarta.faces.event.ValueChangeEvent) UIComponent(jakarta.faces.component.UIComponent) UINamingContainer(jakarta.faces.component.UINamingContainer) UIViewRoot(jakarta.faces.component.UIViewRoot) UIInput(jakarta.faces.component.UIInput) Test(org.junit.Test)

Example 5 with ValueChangeEvent

use of jakarta.faces.event.ValueChangeEvent in project myfaces by apache.

the class CompositeComponentValueChangeListenerTestCase method testSimpleValueChangeListenerTarget.

@Test
public void testSimpleValueChangeListenerTarget() throws Exception {
    MockAttributeBean bean = new MockAttributeBean();
    facesContext.getExternalContext().getRequestMap().put("bean", bean);
    UIViewRoot root = facesContext.getViewRoot();
    vdl.buildView(facesContext, root, "testSimpleAttributeValueChangeListenerTarget.xhtml");
    UIComponent panelGroup1 = root.findComponent("testGroup1");
    Assert.assertNotNull(panelGroup1);
    UINamingContainer compositeComponent1 = (UINamingContainer) panelGroup1.getChildren().get(0);
    Assert.assertNotNull(compositeComponent1);
    UIInput input1 = (UIInput) compositeComponent1.findComponent("testComponent");
    Assert.assertNotNull(input1);
    Assert.assertNotNull(input1.getValueChangeListeners());
    Assert.assertEquals(1, input1.getValueChangeListeners().length);
    bean.setValueChangeListener1Called(false);
    input1.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input1, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener1Called());
    UIComponent panelGroup2 = root.findComponent("testGroup2");
    Assert.assertNotNull(panelGroup2);
    UINamingContainer compositeComponent2 = (UINamingContainer) panelGroup2.getChildren().get(0);
    Assert.assertNotNull(compositeComponent2);
    UIInput input2 = (UIInput) compositeComponent2.findComponent("testComponent");
    Assert.assertNotNull(input2);
    Assert.assertNotNull(input2.getValueChangeListeners());
    Assert.assertEquals(1, input2.getValueChangeListeners().length);
    bean.setValueChangeListener2Called(false);
    input2.getValueChangeListeners()[0].processValueChange(new ValueChangeEvent(input2, "x", "y"));
    Assert.assertTrue(bean.isValueChangeListener2Called());
}
Also used : ValueChangeEvent(jakarta.faces.event.ValueChangeEvent) UIComponent(jakarta.faces.component.UIComponent) UINamingContainer(jakarta.faces.component.UINamingContainer) UIViewRoot(jakarta.faces.component.UIViewRoot) UIInput(jakarta.faces.component.UIInput) Test(org.junit.Test)

Aggregations

ValueChangeEvent (jakarta.faces.event.ValueChangeEvent)28 UIInput (jakarta.faces.component.UIInput)18 UIViewRoot (jakarta.faces.component.UIViewRoot)18 UIComponent (jakarta.faces.component.UIComponent)14 PrintWriter (java.io.PrintWriter)13 FacesContext (jakarta.faces.context.FacesContext)10 Test (org.junit.Test)10 TCKValueChangeListener (com.sun.ts.tests.jsf.api.jakarta_faces.component.common.TCKValueChangeListener)8 UINamingContainer (jakarta.faces.component.UINamingContainer)8 MethodExpression (jakarta.el.MethodExpression)5 MethodExpressionValueChangeListener (jakarta.faces.event.MethodExpressionValueChangeListener)4 FacesException (jakarta.faces.FacesException)2 ContextCallback (jakarta.faces.component.ContextCallback)2 UICommand (jakarta.faces.component.UICommand)2 ConverterException (jakarta.faces.convert.ConverterException)2 AbortProcessingException (jakarta.faces.event.AbortProcessingException)2 ExceptionQueuedEvent (jakarta.faces.event.ExceptionQueuedEvent)2 ELContext (jakarta.el.ELContext)1 FacesMessage (jakarta.faces.application.FacesMessage)1 UIForm (jakarta.faces.component.UIForm)1