1 /*
2 * Copyright (c) 2005 Regents of the University of California (Regents). Created
3 * by TELS, Graduate School of Education, University of California at Berkeley.
4 *
5 * This software is distributed under the GNU Lesser General Public License, v2.
6 *
7 * Permission is hereby granted, without written agreement and without license
8 * or royalty fees, to use, copy, modify, and distribute this software and its
9 * documentation for any purpose, provided that the above copyright notice and
10 * the following two paragraphs appear in all copies of this software.
11 *
12 * REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
13 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
14 * PURPOSE. THE SOFTWAREAND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
15 * HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
16 * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 *
18 * IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
19 * SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
20 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
21 * REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23 package net.sf.sail.core.beans.assembly;
24
25 import java.beans.DefaultPersistenceDelegate;
26 import java.lang.reflect.InvocationTargetException;
27
28 import org.apache.commons.beanutils.PropertyUtils;
29
30 /**
31 * Reference to a bean's property that maintains over long-term persistance.
32 *
33 * @author turadg
34 */
35 public class PropertyRef {
36
37 final static DefaultPersistenceDelegate PR_DELEGATE = new DefaultPersistenceDelegate(
38 new String[] { "target", "propertyName" });
39
40 Object target;
41
42 String propertyName;
43
44 /**
45 * @param target the target bean
46 * @param propertyName the name of the property of target bean that this references
47 */
48 public PropertyRef(Object target, String propertyName) {
49 this.target = target;
50 this.propertyName = propertyName;
51 }
52
53 public Object getTarget() {
54 return target;
55 }
56
57 public String getPropertyName() {
58 return propertyName;
59 }
60
61 public void set(Object value) throws IllegalAccessException,
62 InvocationTargetException, NoSuchMethodException {
63 PropertyUtils.setSimpleProperty(target, propertyName, value);
64 }
65
66 public Object getCurrentValue() throws IllegalAccessException,
67 InvocationTargetException, NoSuchMethodException {
68 return PropertyUtils.getSimpleProperty(target, propertyName);
69 }
70
71 /* (non-Javadoc)
72 * @see java.lang.Object#toString()
73 */
74 @Override
75 public String toString() {
76 return "PropertyRef(\"" + target + "\".\"" + propertyName+"\")";
77 }
78 }