View Javadoc

1   /*
2    * Copyright 2004-2005, 2007-2008 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
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  }