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 ch.elca.el4j.services.gui.swing.cookswing.binding;
18
19 import cookxml.cookxml.setter.VarSetter;
20 import cookxml.core.DecodeEngine;
21 import cookxml.core.exception.SetterException;
22
23 /**
24 * This setter enhances the {@link VarSetter} so that it can set variables of
25 * type {@link NoAddValueHolder}.
26 *
27 * @svnLink $Revision: 3881 $;$Date: 2009-08-04 15:22:05 +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/ch/elca/el4j/services/gui/swing/cookswing/binding/NoAddVarSetter.java $
28 *
29 * @author Stefan Wismer (SWI)
30 */
31 public class NoAddVarSetter extends VarSetter {
32
33 /** {@inheritDoc} */
34 @SuppressWarnings("unchecked")
35 @Override
36 public void setAttribute(String ns, String tag, String attrNS, String attr,
37 Object obj, Object value, DecodeEngine decodeEngine)
38 throws SetterException {
39
40 if (obj instanceof NoAddValueHolder) {
41 if (value == null || !(value instanceof String)) {
42 return;
43 }
44 String str = (String) value;
45 if (str.length() == 0) {
46 return;
47 }
48 decodeEngine.getVarLookup().setVariable(
49 str, ((NoAddValueHolder) obj).getObject(), decodeEngine);
50 } else {
51 super.setAttribute(ns, tag, attrNS, attr, obj, value, decodeEngine);
52 }
53
54 }
55 }