01: /*
02: * (C) Copyright 2006 Nabh Information Systems, Inc.
03: *
04: * All copyright notices regarding Nabh's products MUST remain
05: * intact in the scripts and in the outputted HTML.
06: * This program is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public License
08: * as published by the Free Software Foundation; either version 2.1
09: * of the License, or (at your option) any later version.
10: *
11: * This program is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: * GNU Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public License
17: * along with this program; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19: *
20: */
21: package com.nabhinc.portlet.mvcportlet.beanutil;
22:
23: import java.lang.reflect.Method;
24:
25: import javax.portlet.PortletException;
26: import javax.portlet.PortletRequest;
27:
28: import org.apache.commons.logging.Log;
29: import org.apache.commons.logging.LogFactory;
30: import org.w3c.dom.Element;
31:
32: import com.nabhinc.portlet.mvcportlet.core.ControllerPortletConfig;
33: import com.nabhinc.portlet.mvcportlet.core.PropertySetter;
34: import com.nabhinc.util.StringUtil;
35:
36: /**
37: *
38: *
39: * @author Padmanabh Dabke
40: * (c) 2006 Nabh Information Systems, Inc. All Rights Reserved.
41: * @since 1.1
42: */
43: public abstract class BasePropertySetter implements PropertySetter {
44: protected Log bpsLogger = LogFactory.getLog(this .getClass());
45: protected Method bpsSetMethod = null;
46: protected boolean bpsSetNullProperty = true;
47:
48: public BasePropertySetter(Method m) {
49: bpsSetMethod = m;
50: }
51:
52: /* (non-Javadoc)
53: * @see com.nabhinc.portlet.mvcportlet.core.PropertySetter#setProperty(javax.portlet.PortletRequest, java.lang.Object, java.lang.String, java.lang.String)
54: */
55: public void setProperty(PortletRequest request, Object target,
56: String paramName, String propertyName)
57: throws PortletException {
58: try {
59: String valueStr = request.getParameter(paramName);
60: if (StringUtil.isNotNullOrEmpty(valueStr)) {
61: Object value = getValue(request, valueStr);
62: bpsSetMethod.invoke(target, new Object[] { value });
63: } else if (bpsSetNullProperty) {
64: bpsSetMethod.invoke(target, new Object[] { null });
65: }
66: } catch (Exception e) {
67: throw new PortletException("Failed to set object property "
68: + propertyName + ".", e);
69: }
70: }
71:
72: public void init(Element config, ControllerPortletConfig cpConfig)
73: throws PortletException {
74: // nothing to do.
75:
76: }
77:
78: }
|