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