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.facelets;
21
22 import org.apache.myfaces.tobago.component.Attributes;
23 import org.apache.myfaces.tobago.util.ComponentUtils;
24
25 import javax.el.ELException;
26 import javax.faces.component.UIComponent;
27 import javax.faces.view.facelets.ComponentHandler;
28 import javax.faces.view.facelets.FaceletContext;
29 import javax.faces.view.facelets.TagAttribute;
30 import javax.faces.view.facelets.TagConfig;
31 import javax.faces.view.facelets.TagException;
32 import javax.faces.view.facelets.TagHandler;
33
34 public final class DataAttributeHandler extends TagHandler {
35
36 private final TagAttribute name;
37
38 private final TagAttribute value;
39
40 public DataAttributeHandler(final TagConfig config) {
41 super(config);
42 this.name = getRequiredAttribute(Attributes.name.getName());
43 this.value = getRequiredAttribute(Attributes.value.getName());
44 }
45
46 @Override
47 public void apply(final FaceletContext faceletContext, final UIComponent parent) throws ELException {
48 if (parent == null) {
49 throw new TagException(tag, "Parent UIComponent was null");
50 }
51
52 if (ComponentHandler.isNew(parent)) {
53
54 final Object attributeName = name.isLiteral()
55 ? (Object) name.getValue(faceletContext)
56 : name.getValueExpression(faceletContext, Object.class);
57 final Object attributeValue = value.isLiteral()
58 ? (Object) value.getValue(faceletContext)
59 : value.getValueExpression(faceletContext, Object.class);
60 ComponentUtils.putDataAttribute(parent, attributeName, attributeValue);
61 }
62 }
63 }