Browse Source

jfinal 5.2.1 release ^_^

James 1 year ago
parent
commit
74dd3b4ec6
1 changed files with 21 additions and 8 deletions
  1. 21 8
      src/main/java/com/jfinal/core/paragetter/ParaProcessorBuilder.java

+ 21 - 8
src/main/java/com/jfinal/core/paragetter/ParaProcessorBuilder.java

@@ -56,7 +56,6 @@ public class ParaProcessorBuilder {
 		regist(java.lang.Long[].class, LongArrayGetter.class, null);
 		regist(com.jfinal.core.paragetter.RawData.class, RawDataGetter.class, null);
 		regist(com.jfinal.kit.Kv.class, KvGetter.class, null);
-
 	}
 
 	/**
@@ -66,10 +65,21 @@ public class ParaProcessorBuilder {
 	 * @param pgClass 参数获取器实现类,必须继承ParaGetter
 	 * @param defaultValue,默认值,比如int的默认值为0, java.lang.Integer的默认值为null
 	 */
-	public <T> void regist(Class<T> typeClass, Class<? extends ParaGetter<T>> pgClass, String defaultValue){
+	public <T> void regist(Class<T> typeClass, Class<? extends ParaGetter<T>> pgClass, String defaultValue) {
 		this.typeMap.put(typeClass, new Holder(pgClass, defaultValue));
 	}
 
+	/**
+	 * 移除参数获取器
+	 */
+	public void remove(Class<?> typeClass) {
+		typeMap.remove(typeClass);
+	}
+
+	public boolean contains(Class<?> typeClass) {
+		return typeMap.containsKey(typeClass);
+	}
+
 	public ParaProcessor build(Class<? extends Controller> controllerClass, Method method) {
 		final int paraCount = method.getParameterCount();
 
@@ -90,13 +100,13 @@ public class ParaProcessorBuilder {
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
-	private IParaGetter<?> createParaGetter(Class<? extends Controller> controllerClass, Method method,
-			Parameter p) {
+	private IParaGetter<?> createParaGetter(Class<? extends Controller> controllerClass, Method method, Parameter p) {
 		if(!p.isNamePresent()) {
 			log.warn("You should config compiler argument \"-parameters\" for parameter injection of action : " +
 					controllerClass.getName() + "." + method.getName() + "(...) \n" +
 					"Visit https://jfinal.com/doc/3-3 for details \n");
 		}
+
 		String parameterName = p.getName();
 		String defaultValue = null;
 		Class<?> typeClass = p.getType();
@@ -130,12 +140,12 @@ public class ParaProcessorBuilder {
 			}
 		}
 		//枚举
-		if(Enum.class.isAssignableFrom(typeClass)){
-			return new EnumGetter(typeClass,parameterName,defaultValue);
-		}else if (com.jfinal.plugin.activerecord.IBean.class.isAssignableFrom(typeClass)) {
+		if (Enum.class.isAssignableFrom(typeClass)) {
+			return new EnumGetter(typeClass, parameterName, defaultValue);
+		} else if (com.jfinal.plugin.activerecord.IBean.class.isAssignableFrom(typeClass)) {
 			//实现了IBean接口,优先按BeanGetter来处理。
 			return new BeanGetter(typeClass, parameterName, p);
-		}else if (com.jfinal.plugin.activerecord.Model.class.isAssignableFrom(typeClass)) {
+		} else if (com.jfinal.plugin.activerecord.Model.class.isAssignableFrom(typeClass)) {
 			return new ModelGetter(typeClass, parameterName);
 		} else {
 			return new BeanGetter(typeClass, parameterName, p);
@@ -143,6 +153,7 @@ public class ParaProcessorBuilder {
 	}
 
 	private static class Holder {
+
 		private final String defaultValue;
 		private final Class<? extends ParaGetter<?>> clazz;
 
@@ -150,9 +161,11 @@ public class ParaProcessorBuilder {
 			this.clazz = clazz;
 			this.defaultValue = defaultValue;
 		}
+
 		final String getDefaultValue() {
 			return defaultValue;
 		}
+
 		ParaGetter<?> born(String parameterName, String defaultValue) throws Exception {
 			Constructor<? extends ParaGetter<?>> con = clazz.getConstructor(String.class, String.class);
 			return con.newInstance(parameterName, defaultValue);