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