1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.convert;
21
22 import org.apache.myfaces.tobago.config.TobagoConfig;
23 import org.apache.myfaces.tobago.context.Theme;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import javax.faces.component.UIComponent;
28 import javax.faces.context.FacesContext;
29 import javax.faces.convert.Converter;
30 import javax.faces.convert.ConverterException;
31 import java.lang.invoke.MethodHandles;
32
33 @org.apache.myfaces.tobago.apt.annotation.Converter(forClass = "org.apache.myfaces.tobago.context.Theme")
34 public class ThemeConverter implements Converter<Theme> {
35
36 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
37
38 public static final String CONVERTER_ID = "org.apache.myfaces.tobago.Theme";
39
40 @Override
41 public String getAsString(
42 final FacesContext facesContext, final UIComponent component, final Theme theme)
43 throws ConverterException {
44 try {
45 return theme.getName();
46 } catch (final ClassCastException e) {
47 throw new ConverterException("object='" + theme + "'", e);
48 }
49 }
50
51 @Override
52 public Theme getAsObject(
53 final FacesContext facesContext, final UIComponent component, final String string)
54 throws ConverterException {
55 try {
56 return TobagoConfig.getInstance(facesContext).getTheme(string);
57 } catch (final Exception e) {
58 LOG.error("string='" + string + "'", e);
59 throw new ConverterException("string='" + string + "'", e);
60 }
61 }
62
63 }