Java tutorial
/***************************************************************************************** * *** BEGIN LICENSE BLOCK ***** * * Version: MPL 2.0 * * echocat RedPrecursor, Copyright (c) 2011-2012 echocat * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * *** END LICENSE BLOCK ***** ****************************************************************************************/ package org.echocat.redprecursor.annotations.utils; import org.springframework.expression.AccessException; import org.springframework.expression.EvaluationContext; import org.springframework.expression.PropertyAccessor; import org.springframework.expression.TypedValue; import java.util.Map; public class MapPropertyAccessor implements PropertyAccessor { @Override public Class<?>[] getSpecificTargetClasses() { return new Class<?>[] { Map.class }; } @Override public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException { return target instanceof Map; } @Override public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException { final Object plainValue = target instanceof Map ? ((Map) target).get(name) : null; return plainValue != null ? new TypedValue(plainValue) : TypedValue.NULL; } @Override public boolean canWrite(EvaluationContext context, Object target, String name) throws AccessException { return target instanceof Map; } @Override public void write(EvaluationContext context, Object target, String name, Object newValue) throws AccessException { if (target instanceof Map) { // noinspection unchecked ((Map) target).put(name, newValue); } } }