View Javadoc

1   /*
2    * Copyright 2004-2005, 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.copiers;
17  
18  import net.sf.morph.transform.ExplicitTransformer;
19  import net.sf.morph.transform.TransformationException;
20  import net.sf.morph.util.ClassUtils;
21  
22  /**
23   * TODO tests with 3-dimensional arrays
24   * 
25   * @author Matt Sgarlata
26   * @since Dec 11, 2004
27   */
28  public class ArrayCopier extends ContainerCopier implements ExplicitTransformer {
29  
30  	/**
31  	 * Create a new ArrayCopier.
32  	 */
33  	public ArrayCopier() {
34  		super();
35  	}
36  
37  	/**
38  	 * {@inheritDoc}
39  	 */
40  	protected boolean isTransformableImpl(Class destinationType,
41  		Class sourceType) throws Exception {
42  		return
43  			destinationType.isArray() &&
44  			(
45  				ClassUtils.inheritanceContains(getReflector().getReflectableClasses(), sourceType) ||
46  				destinationType.getComponentType().isAssignableFrom(sourceType)
47  			);
48  	}
49  
50  	/**
51  	 * {@inheritDoc}
52  	 */
53  	protected Class[] getDestinationClassesImpl() throws TransformationException {
54  		return ClassUtils.ARRAY_TYPES;
55  	}
56  
57  }