code: public static void addCustomAgreementType(Map<String, String> prop) throws XsonException {
  		if (null == prop) {
  			return;
  		}
  		try {
  			for (Map.Entry<String, String> entry : prop.entrySet()) {
  				String key = entry.getKey();
  				String val = entry.getValue();
  
  				if (null == key || null == val) {
  					throw new XsonException("key or val Can not be null");
  				}
  				key = key.trim();
  				val = val.trim();
  				if (0 == key.length() || 0 == val.length()) {
  					throw new XsonException("key or val Can not be empty");
  				}
  				Class<?> clazz = XsonTypeUtils.findClass(key);
  				String oldVal = XsonConst.CUSTOM_AGREEMENT_TYPE_MAP.get(clazz);
  				if (null == oldVal) {
  					XsonConst.CUSTOM_AGREEMENT_TYPE_MAP.put(clazz, val);
  					XsonConst.CUSTOM_AGREEMENT_KEY_MAP.put(val, clazz);
  				} else if (!oldVal.equals(val)) {
  					throw new XsonException("Type found in already existing : type = '" + key + "', old key = " + oldVal + ", new key = " + val);
  				}
  			}
  		} catch (Exception e) {
  			throw new XsonException(e);
  		}
  	}
docs: 添加用户自定义的的协定类型