1 /*
2 * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3 * the spring framework, http://el4j.sf.net
4 * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5 * 1000 Lausanne, Switzerland, http://www.elca.ch
6 *
7 * EL4J is published under the GNU Lesser General Public License (LGPL)
8 * Version 2.1. See http://www.gnu.org/licenses/
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * For alternative licensing, please contact info@elca.ch
16 */
17 package com.silvermindsoftware.hitch.binding;
18
19 import org.jdesktop.beansbinding.BeanProperty;
20 import org.jdesktop.beansbinding.ELProperty;
21 import org.jdesktop.beansbinding.ObjectProperty;
22 import org.jdesktop.beansbinding.Property;
23
24 /**
25 * This utility class unifies creating Properties.
26 *
27 * @svnLink $Revision: 3883 $;$Date: 2009-08-04 15:35:01 +0200 (Di, 04. Aug 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/swing/src/main/java/com/silvermindsoftware/hitch/binding/PropertyUtil.java $
28 *
29 * @author Stefan Wismer (SWI)
30 */
31 public final class PropertyUtil {
32 /**
33 * Util classes should not be instantiated.
34 */
35 private PropertyUtil() { }
36
37
38 /**
39 * Create a {@link Property}. If expression is empty, the property refers to the object itself.
40 * If expression contains a $, then it is parsed as {@link ELProperty}.
41 * Otherwise a simple {@link BeanProperty} is created.
42 *
43 * @param <S> the source type
44 * @param <V> the value type
45 * @param expression the expression to specify the property
46 * @return a {@link Property} according to the expression
47 */
48 @SuppressWarnings("unchecked")
49 public static <S, V> Property<S, V> create(String expression) {
50 if (expression == null || expression.length() == 0) {
51 return (Property<S, V>) ObjectProperty.create();
52 } else if (expression.contains("$")) {
53 return ELProperty.create(expression);
54 } else {
55 return BeanProperty.create(expression);
56 }
57 }
58
59 }