1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 }