1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.renderkit.renderer;
21
22 import org.apache.myfaces.tobago.internal.component.AbstractUICommandBase;
23 import org.apache.myfaces.tobago.renderkit.RendererBase;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import javax.faces.context.FacesContext;
28 import javax.faces.event.ActionEvent;
29 import java.lang.invoke.MethodHandles;
30
31 public abstract class DecodingCommandRendererBase<T extends AbstractUICommandBase> extends RendererBase<T> {
32
33 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
34
35 @Override
36 public void decodeInternal(final FacesContext facesContext, final T component) {
37
38 if (component.isDisabled()) {
39 return;
40 }
41 final String sourceId = facesContext.getExternalContext().getRequestParameterMap().get("javax.faces.source");
42 final String clientId = component.getClientId(facesContext);
43 if (LOG.isDebugEnabled()) {
44 LOG.debug("sourceId = '{}", sourceId);
45 LOG.debug("clientId = '{}'", clientId);
46 }
47 if (clientId.equals(sourceId)) {
48 if (LOG.isDebugEnabled()) {
49 LOG.debug("queueEvent = '{}'", clientId);
50 }
51 commandActivated(component);
52 }
53
54 decodeClientBehaviors(facesContext, component);
55
56 }
57
58 protected void commandActivated(final T component) {
59 component.queueEvent(new ActionEvent(component));
60 }
61 }