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 javax.faces.view.facelets.ConverterConfig;
22 import javax.faces.view.facelets.FaceletContext;
23 import javax.faces.view.facelets.MetaRuleset;
24 import javax.faces.view.facelets.TagAttribute;
25 import javax.faces.view.facelets.TagAttributeException;
26
27 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
28
29 @JSFFaceletTag(
30 name = "mcc:convertNumber",
31 bodyContent = "empty",
32 converterClass="org.apache.myfaces.commons.converter.TypedNumberConverter")
33 public class TypedNumberConverterTagHandler extends ConverterBaseTagHandler
34 {
35
36 private final TagAttribute destType;
37
38 public TypedNumberConverterTagHandler(ConverterConfig config)
39 {
40 super(config);
41 this.destType = this.getAttribute("destType");
42 }
43
44 public void setAttributes(FaceletContext ctx, Object obj)
45 {
46 super.setAttributes(ctx, obj);
47 AbstractTypedNumberConverter c = (AbstractTypedNumberConverter) obj;
48 if (this.destType != null)
49 {
50 if (this.destType.isLiteral())
51 {
52 try
53 {
54 c.setDestType(org.apache.myfaces.commons.util.ClassUtils.classForName(this.destType.getValue()));
55 }
56 catch (ClassNotFoundException e)
57 {
58 throw new TagAttributeException(this.destType,"Cannot find class assigned: "+this.destType.getValue(),e);
59 }
60 }
61 else
62 {
63 c.setValueExpression("destType", this.destType.getValueExpression(ctx, Object.class));
64 }
65 }
66 }
67
68 @Override
69 protected MetaRuleset createMetaRuleset(Class type)
70 {
71 MetaRuleset ruleSet = super.createMetaRuleset(type).ignore("destType");
72
73
74 ruleSet.addRule(_LocaleRule.Instance);
75
76 return ruleSet;
77 }
78 }