View Javadoc

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  }