1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.morph.transform.converters;
17
18 import net.sf.morph.transform.Converter;
19 import net.sf.morph.transform.Transformer;
20 import net.sf.morph.transform.transformers.SimpleDelegatingTransformer;
21 import net.sf.morph.util.ClassUtils;
22
23 /**
24 * Converts any object to a Boolean by delegating to
25 * {@link net.sf.morph.transform.converters.TextToBooleanConverter},
26 * {@link net.sf.morph.transform.converters.NumberToBooleanConverter} and
27 * {@link net.sf.morph.transform.converters.ObjectToBooleanConverter}.
28 *
29 * @author Matt Sgarlata
30 * @since Dec 29, 2004
31 * @see net.sf.morph.transform.transformers.SimpleDelegatingTransformer
32 * @see DefaultToBooleanConverter#COMPONENTS
33 * @see net.sf.morph.transform.converters.TextToBooleanConverter
34 * @see net.sf.morph.transform.converters.NumberToBooleanConverter
35 * @see net.sf.morph.transform.converters.ObjectToBooleanConverter
36 */
37 public class DefaultToBooleanConverter extends SimpleDelegatingTransformer {
38
39 private static final Class[] DESTINATION_TYPES = { Boolean.class, boolean.class };
40
41 /**
42 * {@inheritDoc}
43 */
44 protected Transformer[] createDefaultComponents() {
45 return new Converter[] {
46 new IdentityConverter(), new PrimitiveWrapperConverter(),
47 new TextToBooleanConverter(), new NumberToBooleanConverter(),
48 new ObjectToBooleanConverter() };
49 }
50
51 /**
52 * {@inheritDoc}
53 */
54 protected Class[] getDestinationClassesImpl() throws Exception {
55 return DESTINATION_TYPES;
56 }
57
58 /**
59 * {@inheritDoc}
60 */
61 protected boolean isTransformableImpl(Class destinationType,
62 Class sourceType) throws Exception {
63 return ClassUtils.inheritanceContains(DESTINATION_TYPES, destinationType);
64 }
65
66 }