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