KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > inheritance > SimpleFieldInheriter


1 /* ************************************************************************** *
2  * Copyright (C) 2004 NightLabs GmbH, Marco Schulze *
3  * All rights reserved. *
4  * http://www.NightLabs.de *
5  * *
6  * This program and the accompanying materials are free software; you can re- *
7  * distribute it and/or modify it under the terms of the GNU General Public *
8  * License as published by the Free Software Foundation; either ver 2 of the *
9  * License, or any later version. *
10  * *
11  * This module is distributed in the hope that it will be useful, but WITHOUT *
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FIT- *
13  * NESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more *
14  * details. *
15  * *
16  * You should have received a copy of the GNU General Public License along *
17  * with this module; if not, write to the Free Software Foundation, Inc.: *
18  * 59 Temple Place, Suite 330 *
19  * Boston MA 02111-1307 *
20  * USA *
21  * *
22  * Or get it online: *
23  * http://www.opensource.org/licenses/gpl-license.php *
24  * *
25  * In case, you want to use this module or parts of it in a proprietary pro- *
26  * ject, you can purchase it under the NightLabs Commercial License. Please *
27  * contact NightLabs GmbH under info AT nightlabs DOT com for more infos or *
28  * visit http://www.NightLabs.com *
29  * ************************************************************************** */

30
31 /*
32  * Created on 17.10.2004
33  */

34 package com.nightlabs.inheritance;
35
36 import java.lang.reflect.Field JavaDoc;
37 import java.util.Collection JavaDoc;
38 import java.util.Iterator JavaDoc;
39
40 /**
41  * @author Marco Schulze - marco at nightlabs dot de
42  */

43 public class SimpleFieldInheriter implements FieldInheriter
44 {
45
46     /**
47      * @see com.nightlabs.inheritance.FieldInheriter#copyFieldValue(com.nightlabs.inheritance.Inheritable, com.nightlabs.inheritance.Inheritable, java.lang.Class, java.lang.Class, java.lang.reflect.Field, com.nightlabs.inheritance.FieldMetaData, com.nightlabs.inheritance.FieldMetaData)
48      */

49     public void copyFieldValue(
50             Inheritable mother, Inheritable child,
51             Class JavaDoc motherClass, Class JavaDoc childClass,
52             Field JavaDoc field,
53             FieldMetaData motherFieldMetaData,
54             FieldMetaData childFieldMetaData)
55     {
56         try {
57             field.setAccessible(true);
58             if (Collection JavaDoc.class.isAssignableFrom(field.getType())) {
59                 Collection JavaDoc motherCol = (Collection JavaDoc)field.get(mother);
60                 Collection JavaDoc childCol = (Collection JavaDoc)field.get(child);
61                 childCol.clear();
62                 for (Iterator JavaDoc iter = motherCol.iterator(); iter.hasNext();) {
63                     childCol.add(iter.next());
64                 }
65             }
66             else
67                 field.set(child, field.get(mother));
68         } catch (IllegalArgumentException JavaDoc e) {
69             throw e;
70         } catch (IllegalAccessException JavaDoc e) {
71             throw new RuntimeException JavaDoc(e);
72         }
73     }
74
75 }
76
Popular Tags