public void handleComponentEvent(final ComponentEventRequestParameters parameters, final ComponentRequestHandler handler) throws IOException { String componentId = parameters.getNestedComponentId().equals("") ? parameters.getContainingPageName() : parameters.getContainingPageName() + ":" + parameters.getNestedComponentId(); tracker.perform(String.format("Handling %s '%s' component event request for %s.", request.isXHR() ? "Ajax" : "traditional", parameters.getEventType(), componentId), new IOOperation<Void>() { public Void perform() throws IOException { handler.handleComponentEvent(parameters); return null; } }); }
String eventType = parameters.getEventType(); String nestedComponentId = parameters.getNestedComponentId(); boolean hasComponentId = InternalUtils.isNonBlank(nestedComponentId);
@Override public void handleComponentEvent(ComponentEventRequestParameters parameters, ComponentRequestHandler handler) throws IOException { Page containerPage = cache.get(parameters.getContainingPageName()); try { containerPage.getComponentElementByNestedId(parameters.getNestedComponentId()); handler.handleComponentEvent(parameters); } catch (UnknownValueException ex) { request.setAttribute(InternalConstants.REFERENCED_COMPONENT_NOT_FOUND, true); } }
environment.push(TrackableComponentEventCallback.class, callback); ComponentPageElement element = containerPage.getComponentElementByNestedId(parameters.getNestedComponentId());
public Link transformComponentEventLink(Link defaultLink, ComponentEventRequestParameters parameters) { Link link = defaultLink.copyWithBasePath("/event"); for (String name : defaultLink.getParameterNames()) { link.removeParameter(name); } Locale locale = persistentLocale.get(); if (locale != null) { link.addParameter("x:locale", locale.toString()); } link.addParameter("x:type", parameters.getEventType()); addEventContext(link, "x:ec", parameters.getEventContext()); addEventContext(link, "x:pac", parameters.getPageActivationContext()); link.addParameter("x:page", parameters.getActivePageName()); link.addParameter("x:id", parameters.getNestedComponentId()); if (!parameters.getActivePageName().equals(parameters.getContainingPageName())) link.addParameter("x:container", parameters.getContainingPageName()); return link; }
@Test public void page_name_includes_dash_in_component_event_request() { ComponentClassResolver resolver = mockComponentClassResolver(); Request request = mockRequest(); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); expect(ls.isSupportedLocaleName("foo-bar")).andReturn(false); train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null); train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null); train_getLocale(request, Locale.ENGLISH); ls.setNonPersistentLocaleFromLocaleName("en"); String path = "/foo-bar/baz.biff"; train_getPath(request, path); train_isPageName(resolver, "foo-bar/baz", true); train_canonicalizePageName(resolver, "foo-bar/baz", "foo-bar/Baz"); replay(); ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, null); ComponentEventRequestParameters parameters = linkEncoder.decodeComponentEventRequest(request); assertEquals(parameters.getActivePageName(), "foo-bar/Baz"); assertEquals(parameters.getNestedComponentId(), "biff"); verify(); }
ComponentPageElement element = containerPage.getComponentElementByNestedId(parameters.getNestedComponentId());