Search in sources :

Example 11 with ComponentEventCallback

use of org.apache.tapestry5.ComponentEventCallback in project tapestry-5 by apache.

the class ComponentEventImplTest method event_type_match_is_case_insensitive.

@Test
public void event_type_match_is_case_insensitive() {
    ComponentEventCallback handler = mockComponentEventHandler();
    EventContext context = mockEventContext();
    Logger logger = mockLogger();
    ComponentModel model = mockComponentModel();
    train_isDebugEnabled(logger, false);
    train_getCount(context, 0);
    replay();
    ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, model, logger);
    assertTrue(event.matches("EVENTTYPE", "someid", 0));
    verify();
}
Also used : EventContext(org.apache.tapestry5.EventContext) ComponentModel(org.apache.tapestry5.model.ComponentModel) ComponentEvent(org.apache.tapestry5.runtime.ComponentEvent) Logger(org.slf4j.Logger) ComponentEventCallback(org.apache.tapestry5.ComponentEventCallback) Test(org.testng.annotations.Test)

Example 12 with ComponentEventCallback

use of org.apache.tapestry5.ComponentEventCallback in project tapestry-5 by apache.

the class ComponentEventImplTest method coerce_when_not_enough_context.

@Test
public void coerce_when_not_enough_context() {
    ComponentEventCallback handler = mockComponentEventHandler();
    EventContext context = mockEventContext();
    Logger logger = mockLogger();
    ComponentModel model = mockComponentModel();
    train_isDebugEnabled(logger, true);
    logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
    train_getCount(context, 0);
    replay();
    ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, model, logger);
    event.setMethodDescription("foo.Bar.baz()");
    try {
        event.coerceContext(1, "java.lang.Integer");
    } catch (IllegalArgumentException ex) {
        assertEquals(ex.getMessage(), "Method foo.Bar.baz() has more parameters than there are context values for this component event.");
    }
    verify();
}
Also used : EventContext(org.apache.tapestry5.EventContext) ComponentModel(org.apache.tapestry5.model.ComponentModel) ComponentEvent(org.apache.tapestry5.runtime.ComponentEvent) Logger(org.slf4j.Logger) ComponentEventCallback(org.apache.tapestry5.ComponentEventCallback) Test(org.testng.annotations.Test)

Example 13 with ComponentEventCallback

use of org.apache.tapestry5.ComponentEventCallback in project tapestry-5 by apache.

the class ComponentEventImplTest method component_id_matches_are_case_insensitive.

@Test
public void component_id_matches_are_case_insensitive() {
    ComponentEventCallback handler = mockComponentEventHandler();
    EventContext context = mockEventContext();
    Logger logger = mockLogger();
    ComponentModel model = mockComponentModel();
    train_isDebugEnabled(logger, false);
    train_getCount(context, 0);
    replay();
    ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, false, model, logger);
    assertTrue(event.matches("eventtype", "SOMEID", 0));
    verify();
}
Also used : EventContext(org.apache.tapestry5.EventContext) ComponentModel(org.apache.tapestry5.model.ComponentModel) ComponentEvent(org.apache.tapestry5.runtime.ComponentEvent) Logger(org.slf4j.Logger) ComponentEventCallback(org.apache.tapestry5.ComponentEventCallback) Test(org.testng.annotations.Test)

Example 14 with ComponentEventCallback

use of org.apache.tapestry5.ComponentEventCallback in project tapestry-5 by apache.

the class ComponentEventImplTest method store_result_when_aborted_is_failure.

@SuppressWarnings("unchecked")
@Test
public void store_result_when_aborted_is_failure() {
    Object result = new Object();
    ComponentEventCallback handler = mockComponentEventHandler();
    Logger logger = mockLogger();
    ComponentPageElementResources resources = mockResources();
    ComponentModel model = mockComponentModel();
    train_isDebugEnabled(logger, true);
    EasyMock.expectLastCall().atLeastOnce();
    logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
    EasyMock.expectLastCall().atLeastOnce();
    expect(handler.handleResult(result)).andReturn(true);
    replay();
    ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, resources, false, model, logger);
    event.setMethodDescription("foo.Bar.baz()");
    event.storeResult(result);
    try {
        event.setMethodDescription("foo.Bar.biff()");
        event.storeResult(null);
        unreachable();
    } catch (IllegalStateException ex) {
        assertEquals(ex.getMessage(), String.format("Can not store result from invoking method %s, because an event result value has already been obtained from some other event handler method.", "foo.Bar.biff()"));
    }
    verify();
}
Also used : ComponentModel(org.apache.tapestry5.model.ComponentModel) ComponentPageElementResources(org.apache.tapestry5.internal.structure.ComponentPageElementResources) ComponentEvent(org.apache.tapestry5.runtime.ComponentEvent) Logger(org.slf4j.Logger) ComponentEventCallback(org.apache.tapestry5.ComponentEventCallback) Test(org.testng.annotations.Test)

Example 15 with ComponentEventCallback

use of org.apache.tapestry5.ComponentEventCallback in project tapestry-5 by apache.

the class Autocomplete method onAutocomplete.

Object onAutocomplete(final EventContext context, @RequestParameter("t:input") final String input) {
    final Holder<List> matchesHolder = Holder.create();
    // Default it to an empty list.
    matchesHolder.put(Collections.emptyList());
    ComponentEventCallback callback = new ComponentEventCallback() {

        public boolean handleResult(Object result) {
            List matches = coercer.coerce(result, List.class);
            matchesHolder.put(matches);
            return true;
        }
    };
    EventContext newContext = new AbstractEventContext() {

        @Override
        public int getCount() {
            return context.getCount() + 1;
        }

        @Override
        public <T> T get(Class<T> desiredType, int index) {
            if (index == 0) {
                return coercer.coerce(input, desiredType);
            }
            return context.get(desiredType, index - 1);
        }
    };
    resources.triggerContextEvent(EventConstants.PROVIDE_COMPLETIONS, newContext, callback);
    JSONObject reply = new JSONObject();
    reply.put("matches", JSONArray.from(matchesHolder.get()));
    // A JSONObject response is always preferred, as that triggers the whole partial page render pipeline.
    return reply;
}
Also used : AbstractEventContext(org.apache.tapestry5.internal.AbstractEventContext) AbstractEventContext(org.apache.tapestry5.internal.AbstractEventContext) JSONObject(org.apache.tapestry5.json.JSONObject) List(java.util.List) JSONObject(org.apache.tapestry5.json.JSONObject)

Aggregations

ComponentEventCallback (org.apache.tapestry5.ComponentEventCallback)14 ComponentModel (org.apache.tapestry5.model.ComponentModel)14 Logger (org.slf4j.Logger)13 ComponentEvent (org.apache.tapestry5.runtime.ComponentEvent)12 Test (org.testng.annotations.Test)12 EventContext (org.apache.tapestry5.EventContext)8 ComponentPageElementResources (org.apache.tapestry5.internal.structure.ComponentPageElementResources)6 AbstractEventContext (org.apache.tapestry5.internal.AbstractEventContext)2 ComponentPageElement (org.apache.tapestry5.internal.structure.ComponentPageElement)2 Page (org.apache.tapestry5.internal.structure.Page)2 JSONObject (org.apache.tapestry5.json.JSONObject)2 List (java.util.List)1 Location (org.apache.tapestry5.commons.Location)1 TapestryException (org.apache.tapestry5.commons.internal.util.TapestryException)1 UnknownValueException (org.apache.tapestry5.commons.util.UnknownValueException)1 ComponentEventImpl (org.apache.tapestry5.internal.services.ComponentEventImpl)1 NotificationEventCallback (org.apache.tapestry5.internal.util.NotificationEventCallback)1 PartialMarkupRenderer (org.apache.tapestry5.services.PartialMarkupRenderer)1 PartialMarkupRendererFilter (org.apache.tapestry5.services.PartialMarkupRendererFilter)1 IAnswer (org.easymock.IAnswer)1