1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.commons.converter;
20
21 import com.sun.facelets.FaceletContext;
22 import com.sun.facelets.el.LegacyValueBinding;
23 import com.sun.facelets.tag.MetaRule;
24 import com.sun.facelets.tag.Metadata;
25 import com.sun.facelets.tag.MetadataTarget;
26 import com.sun.facelets.tag.TagAttribute;
27
28 final class _DateTimeConverterRule extends MetaRule {
29
30 final static class ValueBindingMetadata extends Metadata {
31
32 private final String name;
33
34 private final TagAttribute attr;
35
36 private final Class type;
37
38 public ValueBindingMetadata(String name, Class type, TagAttribute attr) {
39 this.name = name;
40 this.attr = attr;
41 this.type = type;
42 }
43
44 public void applyMetadata(FaceletContext ctx, Object instance) {
45 ((DateTimeConverter) instance).setValueBinding(this.name,
46 new LegacyValueBinding(this.attr.getValueExpression(ctx,
47 this.type)));
48 }
49
50 }
51
52 public final static _DateTimeConverterRule Instance = new _DateTimeConverterRule();
53
54 public _DateTimeConverterRule() {
55 super();
56 }
57
58 public Metadata applyRule(String name, TagAttribute attribute,
59 MetadataTarget meta) {
60 if (meta.isTargetInstanceOf(DateTimeConverter.class)) {
61
62
63 if (!attribute.isLiteral()) {
64 Class type = meta.getPropertyType(name);
65 if (type == null) {
66 type = Object.class;
67 }
68 return new ValueBindingMetadata(name, type, attribute);
69 }
70 }
71 return null;
72 }
73 }