// Path: src/org/dazzle/common/exception/BaseException.java
// public class BaseException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 7369919371075409501L;
// 	
// 	private String code = null;
// 
// 	/** 获取异常编码 
// 	 * @author hcqt@qq.com*/
// 	public String getCode() {
// 		if(null != code) {
// 			return code;
// 		}
// 		return code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException() {
// 		super();
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg));
// 		this.code = code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Throwable cause, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg), cause);
// 		this.code = code;
// 	}
// 
// }


import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.dazzle.common.exception.BaseException;
	}

	/**从map当中获取指定key相应的value，解决多层嵌套map取值的需求，避免了书写重复代码，且健壮性差的问题<br />
	 * 注意，如果你的map嵌套只有3层，但是你书写的表达式有10层，那么是取不到值的，将返回null
	 * @param clazz 取值以何种数据类型返回
	 * @param express 格式：“keyx.keyxx.keyxxx”每一层key之间以“.”分隔
	 * @author hcqt@qq.com */
	@SuppressWarnings("unchecked")
	public static final <T> T get(Class<T> clazz, Map<String, ?> map, String express) {
		if(map == null || map.isEmpty()) {
			return null;
		}
		if(clazz == null) {
			return null;
		}
		String[] keys = null;
		if(express == null) {
			return null;
		} else {
			keys = express.split("\\.");
		}
		if(keys == null || keys.length <= 0) {
			return null;
		}
		for (int i = 0; i < keys.length; i++) {
			if(i == keys.length - 1) {
				return DTU.convert(clazz, map.get(keys[i]));
			} else {
				try {
					map = DTU.convert(Map.class, map.get(keys[i]));
// Path: src/org/dazzle/common/exception/BaseException.java
// public class BaseException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 7369919371075409501L;
// 	
// 	private String code = null;
// 
// 	/** 获取异常编码 
// 	 * @author hcqt@qq.com*/
// 	public String getCode() {
// 		if(null != code) {
// 			return code;
// 		}
// 		return code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException() {
// 		super();
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg));
// 		this.code = code;
// 	}
// 
// 	/** @author hcqt@qq.com */
// 	public BaseException(
// 			final String code, 
// 			final String message, 
// 			final Throwable cause, 
// 			final Object... msgArg) {
// 		super(MsgI18n.getMsg(code, message, msgArg), cause);
// 		this.code = code;
// 	}
// 
// }


// Path: src/org/dazzle/utils/MapUtils.java
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.dazzle.common.exception.BaseException;

	}

	/**从map当中获取指定key相应的value，解决多层嵌套map取值的需求，避免了书写重复代码，且健壮性差的问题<br />
	 * 注意，如果你的map嵌套只有3层，但是你书写的表达式有10层，那么是取不到值的，将返回null
	 * @param clazz 取值以何种数据类型返回
	 * @param express 格式：“keyx.keyxx.keyxxx”每一层key之间以“.”分隔
	 * @author hcqt@qq.com */
	@SuppressWarnings("unchecked")
	public static final <T> T get(Class<T> clazz, Map<String, ?> map, String express) {
		if(map == null || map.isEmpty()) {
			return null;
		}
		if(clazz == null) {
			return null;
		}
		String[] keys = null;
		if(express == null) {
			return null;
		} else {
			keys = express.split("\\.");
		}
		if(keys == null || keys.length <= 0) {
			return null;
		}
		for (int i = 0; i < keys.length; i++) {
			if(i == keys.length - 1) {
				return DTU.convert(clazz, map.get(keys[i]));
			} else {
				try {
					map = DTU.convert(Map.class, map.get(keys[i]));
				} catch(BaseException e) {