Browse Source

jfinal 3.5

James 7 years ago
parent
commit
6c9d9ab46d
2 changed files with 33 additions and 208 deletions
  1. 15 71
      src/main/java/com/jfinal/aop/Duang.java
  2. 18 137
      src/main/java/com/jfinal/aop/Enhancer.java

+ 15 - 71
src/main/java/com/jfinal/aop/Duang.java

@@ -18,87 +18,31 @@ package com.jfinal.aop;
 
 /**
  * duang duang duang
+ * 
+ * <pre>
+ * 自 jfinal 3.5 开始,新增了更强大的 Aop 工具,建议使用 Aop.get(...) 以及
+ * Aop.inject(...) 来代替 Duang 的功能
+ * 
+ * 下一个版本所有 Aop 功能将会被 Aop.java 取代,并且为了拦截器的整体缓存不会再支持
+ * Inject Interceptor 参数,所以删除了 Duang 中所有带 injectInters 参数
+ * 的方法
+ * 
+ * 下一个版本的 Singleton 判别将由 @Singleton 注解以及 AopFactory 中的默认值决定,
+ * 所以删除了 Duang 中所有带 singletonKey 参数的方法
+ * </pre>
  */
-@SuppressWarnings("unchecked")
 public class Duang {
 	
-	private Duang(){}
-
+	private Duang() {}
+	
 	public static <T> T duang(Class<T> targetClass) {
 		return (T)Enhancer.enhance(targetClass);
 	}
 	
+	@SuppressWarnings("deprecation")
 	public static <T> T duang(Class<T> targetClass, Interceptor... injectInters) {
 		return (T)Enhancer.enhance(targetClass, injectInters);
 	}
-	
-	public static <T> T duang(Class<T> targetClass, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)Enhancer.enhance(targetClass, injectIntersClasses);
-	}
-	
-	public static <T> T duang(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass) {
-		return (T)Enhancer.enhance(targetClass, injectIntersClass);
-	}
-	
-	public static <T> T duang(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2) {
-		return (T)Enhancer.enhance(targetClass, injectIntersClass1, injectIntersClass2);
-	}
-	
-	public static <T> T duang(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2, Class<? extends Interceptor> injectIntersClass3) {
-		return (T)Enhancer.enhance(targetClass, injectIntersClass1, injectIntersClass2, injectIntersClass3);
-	}
-	
-	public static <T> T getTarget(String singletonKey) {
-		return (T)Enhancer.getTarget(singletonKey);
-	}
-	
-	public static <T> T duang(String singletonKey, Class<T> targetClass) {
-		return (T)Enhancer.enhance(singletonKey, targetClass);
-	}
-	
-	public static <T> T duang(String singletonKey, Class<T> targetClass, Interceptor... injectInters) {
-		return (T)Enhancer.enhance(singletonKey, targetClass, injectInters);
-	}
-	
-	public static <T> T duang(String singletonKey, Class<T> targetClass, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)Enhancer.enhance(singletonKey, targetClass, injectIntersClasses);
-	}
-	
-	public static <T> T duang(Object target) {
-		return (T)Enhancer.enhance(target);
-	}
-	
-	public static <T> T duang(Object target, Interceptor... injectInters) {
-		return (T)Enhancer.enhance(target, injectInters);
-	}
-	
-	public static <T> T duang(Object target, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)Enhancer.enhance(target, injectIntersClasses);
-	}
-	
-	public static <T> T duang(Object target, Class<? extends Interceptor> injectIntersClass) {
-		return (T)Enhancer.enhance(target, injectIntersClass);
-	}
-	
-	public static <T> T duang(Object target, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2) {
-		return (T)Enhancer.enhance(target, injectIntersClass1, injectIntersClass2);
-	}
-	
-	public static <T> T duang(Object target, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2, Class<? extends Interceptor> injectIntersClass3) {
-		return (T)Enhancer.enhance(target, injectIntersClass1, injectIntersClass2, injectIntersClass3);
-	}
-	
-	public static <T> T duang(String singletonKey, Object target) {
-		return (T)Enhancer.enhance(singletonKey, target);
-	}
-	
-	public static <T> T duang(String singletonKey, Object target, Interceptor... injectInters) {
-		return (T)Enhancer.enhance(singletonKey, target, injectInters);
-	}
-	
-	public static <T> T duang(String singletonKey, Object target, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)Enhancer.enhance(singletonKey, target, injectIntersClasses);
-	}
 }
 
 

+ 18 - 137
src/main/java/com/jfinal/aop/Enhancer.java

@@ -16,157 +16,38 @@
 
 package com.jfinal.aop;
 
-import java.util.concurrent.ConcurrentHashMap;
-
 /**
  * Enhancer
+ * 
+ * <pre>
+ * 自 jfinal 3.5 开始,新增了更强大的 Aop 工具,建议使用 Aop.get(...) 以及
+ * Aop.inject(...) 来代替 Enhancer 的功能
+ * 
+ * 下一个版本所有 Aop 功能将会被 Aop.java 取代,并且为了拦截器的整体缓存不会再支持
+ * Inject Interceptor 参数,所以删除了 Enhancer 中所有带 injectInters 参数
+ * 的方法
+ * 
+ * 下一个版本的 Singleton 判别将由 @Singleton 注解以及 AopFactory 中的默认值决定,
+ * 所以删除了 Enhancer 中所有带 singletonKey 参数的方法
+ * </pre>
  */
 @SuppressWarnings("unchecked")
 public class Enhancer {
 	
-	private static final ConcurrentHashMap<String, Object> singleton = new ConcurrentHashMap<String, Object>(32, 0.5F);
+	private Enhancer() {}
 	
-	private Enhancer(){}
-
 	public static <T> T enhance(Class<T> targetClass) {
 		return (T)net.sf.cglib.proxy.Enhancer.create(targetClass, new Callback());
 	}
 	
+	/**
+	 * 下一个版本 jfinal 的 enhance 动作将由 @Before 注解来决定,不再需要显示调用 enhance 方法,
+	 * 所以本方法被 Deprecated
+	 */
+	@Deprecated
 	public static <T> T enhance(Class<T> targetClass, Interceptor... injectInters) {
 		return (T)net.sf.cglib.proxy.Enhancer.create(targetClass, new Callback(injectInters));
 	}
-	
-	public static <T> T enhance(Class<T> targetClass, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)enhance(targetClass, createInjectInters(injectIntersClasses));
-	}
-	
-	public static <T> T enhance(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass) {
-		return (T)enhance(targetClass, createInjectInters(injectIntersClass));
-	}
-	
-	public static <T> T enhance(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2) {
-		return (T)enhance(targetClass, createInjectInters(injectIntersClass1, injectIntersClass2));
-	}
-	
-	public static <T> T enhance(Class<T> targetClass, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2, Class<? extends Interceptor> injectIntersClass3) {
-		return (T)enhance(targetClass, createInjectInters(injectIntersClass1, injectIntersClass2, injectIntersClass3));
-	}
-	
-	public static <T> T getTarget(String singletonKey) {
-		return (T)singleton.get(singletonKey);
-	}
-	
-	public static <T> T enhance(String singletonKey, Class<T> targetClass) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(targetClass);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	public static <T> T enhance(String singletonKey, Class<T> targetClass, Interceptor... injectInters) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(targetClass, injectInters);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	public static <T> T enhance(String singletonKey, Class<T> targetClass, Class<? extends Interceptor>... injectIntersClasses) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(targetClass, injectIntersClasses);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	public static <T> T enhance(Object target) {
-		return (T)net.sf.cglib.proxy.Enhancer.create(target.getClass(), new Callback(target));
-	}
-	
-	public static <T> T enhance(Object target, Interceptor... injectInters) {
-		return (T)net.sf.cglib.proxy.Enhancer.create(target.getClass(), new Callback(target, injectInters));
-	}
-	
-	public static <T> T enhance(Object target, Class<? extends Interceptor>... injectIntersClasses) {
-		return (T)enhance(target, createInjectInters(injectIntersClasses));
-	}
-	
-	public static <T> T enhance(Object target, Class<? extends Interceptor> injectIntersClass) {
-		return (T)enhance(target, createInjectInters(injectIntersClass));
-	}
-	
-	public static <T> T enhance(Object target, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2) {
-		return (T)enhance(target, createInjectInters(injectIntersClass1, injectIntersClass2));
-	}
-	
-	public static <T> T enhance(Object target, Class<? extends Interceptor> injectIntersClass1, Class<? extends Interceptor> injectIntersClass2, Class<? extends Interceptor> injectIntersClass3) {
-		return (T)enhance(target, createInjectInters(injectIntersClass1, injectIntersClass2, injectIntersClass3));
-	}
-	
-	public static <T> T enhance(String singletonKey, Object target) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(target);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	public static <T> T enhance(String singletonKey, Object target, Interceptor... injectInters) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(target, injectInters);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	public static <T> T enhance(String singletonKey, Object target, Class<? extends Interceptor>... injectIntersClasses) {
-		Object ret = singleton.get(singletonKey);
-		if (ret == null) {
-			synchronized (Enhancer.class) {
-				ret = singleton.get(singletonKey);
-				if (ret == null) {
-					ret = enhance(target, injectIntersClasses);
-					singleton.put(singletonKey, ret);
-				}
-			}
-		}
-		return (T)ret;
-	}
-	
-	private static Interceptor[] createInjectInters(Class<? extends Interceptor>... injectInterClasses) {
-		return InterceptorManager.me().createInterceptor(injectInterClasses);
-	}
 }