/* * $Id: MapProperty.java,v 1.1 2007-02-27 12:45:29 eugen Exp $ * * Copyright (C) 2002 by Brockmann Consult (info@brockmann-consult.de) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation. This program is distributed in the hope it will * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package com.bc.util.prop; import com.bc.util.string.StringUtils; import java.util.Map; /** * A property access for properties originating from a java.util.Map. */ public class MapProperty implements Property { private String name; private Class type; private boolean nameJavaIdentifier; public MapProperty(String name) { this.name = name; this.type = UNKNOWN_TYPE; this.nameJavaIdentifier = StringUtils.isJavaIdentifier(name); } public String getName() { return name; } public Class getType() { return type; } public boolean isNameJavaIdentifier() { return nameJavaIdentifier; } public Object getValue(Object beanInstance) { return ((Map) beanInstance).get(getName()); } public void setValue(Object beanInstance, Object value) { type = value != null ? value.getClass() : UNKNOWN_TYPE; ((Map) beanInstance).put(getName(), value); } public boolean isAssignable(Object beanInstance) { return true; } public void makeAssignable(Object beanInstance) { // ok, is already assignable } public String getTreeAsString() { return "MapProperty['" + name + "'," + type + "]"; } }