1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.custom.graphicimagedynamic;
21
22 import org.apache.myfaces.component.html.ext.HtmlGraphicImage;
23 import org.apache.myfaces.custom.graphicimagedynamic.util.ImageRenderer;
24 import org.apache.myfaces.shared_tomahawk.util.ClassUtils;
25
26 import javax.faces.context.FacesContext;
27 import javax.faces.el.EvaluationException;
28 import javax.faces.el.ValueBinding;
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 public class GraphicImageDynamic extends HtmlGraphicImage
64 {
65 public static final String COMPONENT_TYPE = "org.apache.myfaces.GraphicImageDynamic";
66 public static final String COMPONENT_FAMILY = "javax.faces.Graphic";
67 public static final String RENDERER_PARAM = "_renderer";
68 public static final String VALUE_PARAM = "_value";
69 public static final String WIDTH_PARAM = "_width";
70 public static final String HEIGHT_PARAM = "_height";
71 private static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.GraphicImageDynamicRenderer";
72
73
74 public GraphicImageDynamic()
75 {
76 setRendererType(DEFAULT_RENDERER_TYPE);
77 }
78
79 private Class _imageRendererClass;
80
81 public Object saveState(FacesContext context)
82 {
83 Object[] values = new Object[2];
84 values[0] = super.saveState(context);
85 values[1] = _imageRendererClass;
86 return values;
87 }
88
89 public void restoreState(FacesContext context, Object state)
90 {
91 Object values[] = (Object[]) state;
92 super.restoreState(context, values[0]);
93 _imageRendererClass = (Class) values[1];
94 }
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 public void setImageRendererClass(Class imageRendererClass)
110 {
111 if (imageRendererClass != null && !ImageRenderer.class.isAssignableFrom(imageRendererClass))
112 {
113 throw new IllegalArgumentException(
114 "imageRendererClass must be null or a class which implements "
115 + ImageRenderer.class.getName());
116 }
117 _imageRendererClass = imageRendererClass;
118 }
119
120 public Class getImageRendererClass()
121 {
122 if (_imageRendererClass != null)
123 {
124 return _imageRendererClass;
125 }
126 ValueBinding vb = getValueBinding("imageRendererClass");
127 if (vb != null)
128 {
129 Object value = vb.getValue(getFacesContext());
130 if (value == null)
131 {
132 return null;
133 }
134 Class clazz;
135 if (value instanceof Class)
136 {
137 clazz = (Class) value;
138 }
139 else
140 {
141 try
142 {
143 clazz = ClassUtils.classForName(value.toString());
144 }
145 catch (ClassNotFoundException e)
146 {
147 throw new EvaluationException("Could not load imageRendererClass for "
148 + vb.getExpressionString(), e);
149 }
150 }
151 if (!ImageRenderer.class.isAssignableFrom(clazz))
152 {
153 throw new EvaluationException("Expected value for " + vb.getExpressionString()
154 + " must be one of null, a fully qualified class name or "
155 + "an instance of a class which implements "
156 + ImageRenderer.class.getName());
157 }
158 return clazz;
159 }
160 return null;
161 }
162
163
164
165
166
167
168
169 public Object getValue()
170 {
171 return super.getValue();
172 }
173 }