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.InputSuggest;
23 import org.apache.myfaces.tobago.component.UIIn;
24
25 import javax.faces.view.facelets.FaceletContext;
26 import javax.faces.view.facelets.MetaRule;
27 import javax.faces.view.facelets.Metadata;
28 import javax.faces.view.facelets.MetadataTarget;
29 import javax.faces.view.facelets.TagAttribute;
30
31 public class SuggestMethodRule extends MetaRule {
32 static final Class[] SUGGEST_METHOD = new Class[]{javax.faces.component.UIInput.class};
33 public static final SuggestMethodRule INSTANCE = new SuggestMethodRule();
34
35 public Metadata applyRule(String name, TagAttribute attribute,
36 MetadataTarget metadataTarget) {
37 if (metadataTarget.isTargetInstanceOf(InputSuggest.class)) {
38 if ("suggestMethod".equals(name)) {
39 return new SuggestMethodMapper(attribute);
40 }
41 }
42 return null;
43 }
44
45 static final class SuggestMethodMapper extends Metadata {
46 private final TagAttribute attribute;
47
48 public SuggestMethodMapper(TagAttribute attribute) {
49 this.attribute = attribute;
50 }
51
52 public void applyMetadata(FaceletContext ctx, Object instance) {
53 ((UIIn) instance).setSuggestMethodExpression(
54 attribute.getMethodExpression(ctx, null, SuggestMethodRule.SUGGEST_METHOD));
55 }
56 }
57 }