|  |  |  | @ -18,6 +18,7 @@ package com.arialyy.compiler; | 
			
		
	
		
			
				
					|  |  |  |  | import com.arialyy.annotations.Download; | 
			
		
	
		
			
				
					|  |  |  |  | import com.arialyy.annotations.Upload; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.ClassName; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.CodeBlock; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.FieldSpec; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.JavaFile; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.MethodSpec; | 
			
		
	
	
		
			
				
					|  |  |  | @ -26,7 +27,9 @@ import com.squareup.javapoet.TypeSpec; | 
			
		
	
		
			
				
					|  |  |  |  | import com.squareup.javapoet.ParameterizedTypeName; | 
			
		
	
		
			
				
					|  |  |  |  | import java.io.IOException; | 
			
		
	
		
			
				
					|  |  |  |  | import java.lang.annotation.Annotation; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Collections; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.HashMap; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.HashSet; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.List; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Map; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Set; | 
			
		
	
	
		
			
				
					|  |  |  | @ -63,40 +66,32 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |    * PackageElement 一般代表Package | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
		
			
				
					|  |  |  |  |   void handleDownload(RoundEnvironment roundEnv) { | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onNoSupportBreakPoint.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onPre.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskCancel.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskComplete.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskFail.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskPre.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskResume.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskRunning.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskStart.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskStop.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onNoSupportBreakPoint.class, | 
			
		
	
		
			
				
					|  |  |  |  |         ProxyConstance.DOWNLOAD_TASK_NO_SUPPORT_BREAKPOINT); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onPre.class, ProxyConstance.DOWNLOAD_PRE); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskCancel.class, ProxyConstance.DOWNLOAD_TASK_CANCEL); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskComplete.class, | 
			
		
	
		
			
				
					|  |  |  |  |         ProxyConstance.DOWNLOAD_TASK_COMPLETE); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskFail.class, ProxyConstance.DOWNLOAD_TASK_FAIL); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskPre.class, ProxyConstance.DOWNLOAD_TASK_PRE); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskResume.class, ProxyConstance.DOWNLOAD_TASK_RESUME); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskRunning.class, ProxyConstance.DOWNLOAD_TASK_RUNNING); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskStart.class, ProxyConstance.DOWNLOAD_TASK_START); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(true, roundEnv, Download.onTaskStop.class, ProxyConstance.DOWNLOAD_TASK_STOP); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   void handleUpload(RoundEnvironment roundEnv) { | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onNoSupportBreakPoint.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onPre.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskCancel.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskComplete.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskFail.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskPre.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onNoSupportBreakPoint.class, | 
			
		
	
		
			
				
					|  |  |  |  |         ProxyConstance.UPLOAD_TASK_NO_SUPPORT_BREAKPOINT); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onPre.class, ProxyConstance.UPLOAD_PRE); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskCancel.class, ProxyConstance.UPLOAD_TASK_CANCEL); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskComplete.class, ProxyConstance.UPLOAD_TASK_COMPLETE); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskFail.class, ProxyConstance.UPLOAD_TASK_FAIL); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskPre.class, ProxyConstance.UPLOAD_TASK_PRE); | 
			
		
	
		
			
				
					|  |  |  |  |     //saveMethod(false, roundEnv, Upload.onTaskResume.class);
 | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskRunning.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskStart.class); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskStop.class); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   void printMethods() { | 
			
		
	
		
			
				
					|  |  |  |  |     //Set<String> keys = mMethods.keySet();
 | 
			
		
	
		
			
				
					|  |  |  |  |     //for (String key : keys) {
 | 
			
		
	
		
			
				
					|  |  |  |  |     //  ProxyEntity entity = mMethods.get(key);
 | 
			
		
	
		
			
				
					|  |  |  |  |     //  for (String method : entity.methods) {
 | 
			
		
	
		
			
				
					|  |  |  |  |     //    PrintLog.getInstance().info(method);
 | 
			
		
	
		
			
				
					|  |  |  |  |     //  }
 | 
			
		
	
		
			
				
					|  |  |  |  |     //}
 | 
			
		
	
		
			
				
					|  |  |  |  |     PrintLog.getInstance().info("size ==> " + mMethods.size()); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskRunning.class, ProxyConstance.UPLOAD_TASK_RUNNING); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskStart.class, ProxyConstance.UPLOAD_TASK_START); | 
			
		
	
		
			
				
					|  |  |  |  |     saveMethod(false, roundEnv, Upload.onTaskStop.class, ProxyConstance.UPLOAD_TASK_STOP); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /** | 
			
		
	
	
		
			
				
					|  |  |  | @ -157,16 +152,29 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |         isDownload ? "DownloadTask" : "UploadTask"); | 
			
		
	
		
			
				
					|  |  |  |  |     ParameterSpec parameterSpec = | 
			
		
	
		
			
				
					|  |  |  |  |         ParameterSpec.builder(task, "task").addModifiers(Modifier.FINAL).build(); | 
			
		
	
		
			
				
					|  |  |  |  |     StringBuilder sb = new StringBuilder(); | 
			
		
	
		
			
				
					|  |  |  |  |     sb.append("Set<String> keys = keyMapping.get(\"") | 
			
		
	
		
			
				
					|  |  |  |  |         .append(annotation.getSimpleName()) | 
			
		
	
		
			
				
					|  |  |  |  |         .append("\");\n"); | 
			
		
	
		
			
				
					|  |  |  |  |     sb.append("if (keys != null) {\n\tif (keys.contains(task.getKey())) {\n") | 
			
		
	
		
			
				
					|  |  |  |  |         .append("\t\tobj.") | 
			
		
	
		
			
				
					|  |  |  |  |         .append(methodName) | 
			
		
	
		
			
				
					|  |  |  |  |         .append("(") | 
			
		
	
		
			
				
					|  |  |  |  |         .append(isDownload ? "(DownloadTask)" : "(UploadTask)") | 
			
		
	
		
			
				
					|  |  |  |  |         .append("task);\n") | 
			
		
	
		
			
				
					|  |  |  |  |         .append("\t}\n} else {\n") | 
			
		
	
		
			
				
					|  |  |  |  |         .append("\tobj.") | 
			
		
	
		
			
				
					|  |  |  |  |         .append(methodName) | 
			
		
	
		
			
				
					|  |  |  |  |         .append("(") | 
			
		
	
		
			
				
					|  |  |  |  |         .append(isDownload ? "(DownloadTask)" : "(UploadTask)") | 
			
		
	
		
			
				
					|  |  |  |  |         .append("task);\n}\n"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return MethodSpec.methodBuilder(annotation.getSimpleName()) | 
			
		
	
		
			
				
					|  |  |  |  |         .addModifiers(Modifier.PUBLIC) | 
			
		
	
		
			
				
					|  |  |  |  |         .returns(void.class) | 
			
		
	
		
			
				
					|  |  |  |  |         .addParameter(parameterSpec) | 
			
		
	
		
			
				
					|  |  |  |  |         .addAnnotation(Override.class) | 
			
		
	
		
			
				
					|  |  |  |  |         .addCode("obj." | 
			
		
	
		
			
				
					|  |  |  |  |             + methodName | 
			
		
	
		
			
				
					|  |  |  |  |             + "(" | 
			
		
	
		
			
				
					|  |  |  |  |             + (isDownload ? "(DownloadTask)" : "(UploadTask)") | 
			
		
	
		
			
				
					|  |  |  |  |             + "task);\n") | 
			
		
	
		
			
				
					|  |  |  |  |         .addCode(sb.toString()) | 
			
		
	
		
			
				
					|  |  |  |  |         .build(); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -184,6 +192,13 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |     FieldSpec observerField = FieldSpec.builder(obj, "obj").addModifiers(Modifier.PRIVATE).build(); | 
			
		
	
		
			
				
					|  |  |  |  |     builder.addField(observerField); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //添加url映射表
 | 
			
		
	
		
			
				
					|  |  |  |  |     FieldSpec mappingField = FieldSpec.builder( | 
			
		
	
		
			
				
					|  |  |  |  |         ParameterizedTypeName.get(ClassName.get(Map.class), ClassName.get(String.class), | 
			
		
	
		
			
				
					|  |  |  |  |             ParameterizedTypeName.get(ClassName.get(Set.class), ClassName.get(String.class))), | 
			
		
	
		
			
				
					|  |  |  |  |         "keyMapping").addModifiers(Modifier.PRIVATE).initializer("new $T()", HashMap.class).build(); | 
			
		
	
		
			
				
					|  |  |  |  |     builder.addField(mappingField); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //添加注解方法
 | 
			
		
	
		
			
				
					|  |  |  |  |     for (Class<? extends Annotation> annotation : entity.methods.keySet()) { | 
			
		
	
		
			
				
					|  |  |  |  |       MethodSpec method = | 
			
		
	
	
		
			
				
					|  |  |  | @ -191,6 +206,26 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |       builder.addMethod(method); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //增加构造函数
 | 
			
		
	
		
			
				
					|  |  |  |  |     CodeBlock.Builder cb = CodeBlock.builder(); | 
			
		
	
		
			
				
					|  |  |  |  |     cb.add("Set<String> set = null;\n"); | 
			
		
	
		
			
				
					|  |  |  |  |     for (String methodName : entity.keyMappings.keySet()) { | 
			
		
	
		
			
				
					|  |  |  |  |       Set<String> keys = entity.keyMappings.get(methodName); | 
			
		
	
		
			
				
					|  |  |  |  |       if (keys == null || keys.size() == 0) continue; | 
			
		
	
		
			
				
					|  |  |  |  |       StringBuilder sb = new StringBuilder(); | 
			
		
	
		
			
				
					|  |  |  |  |       sb.append("set = new $T();\n"); | 
			
		
	
		
			
				
					|  |  |  |  |       for (String key : keys) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (key.isEmpty()) continue; | 
			
		
	
		
			
				
					|  |  |  |  |         sb.append("set.add(\"").append(key).append("\");\n"); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       sb.append("keyMapping.put(\"").append(methodName).append("\", ").append("set);\n"); | 
			
		
	
		
			
				
					|  |  |  |  |       cb.add(sb.toString(), ClassName.get(HashSet.class)); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     MethodSpec structure = | 
			
		
	
		
			
				
					|  |  |  |  |         MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC).addCode(cb.build()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |     builder.addMethod(structure); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //添加设置代理的类
 | 
			
		
	
		
			
				
					|  |  |  |  |     ParameterSpec parameterSpec = | 
			
		
	
		
			
				
					|  |  |  |  |         ParameterSpec.builder(Object.class, "obj").addModifiers(Modifier.FINAL).build(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -222,7 +257,7 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |    * 查找并保存扫描到的方法 | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
		
			
				
					|  |  |  |  |   private void saveMethod(boolean isDownload, RoundEnvironment roundEnv, | 
			
		
	
		
			
				
					|  |  |  |  |       Class<? extends Annotation> annotationClazz) { | 
			
		
	
		
			
				
					|  |  |  |  |       Class<? extends Annotation> annotationClazz, int annotationType) { | 
			
		
	
		
			
				
					|  |  |  |  |     for (Element element : roundEnv.getElementsAnnotatedWith(annotationClazz)) { | 
			
		
	
		
			
				
					|  |  |  |  |       ElementKind kind = element.getKind(); | 
			
		
	
		
			
				
					|  |  |  |  |       if (kind == ElementKind.METHOD) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -236,16 +271,92 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |         if (proxyEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |           proxyEntity = new ProxyEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |           proxyEntity.isDownlaod = isDownload; | 
			
		
	
		
			
				
					|  |  |  |  |           //proxyEntity.packageName = classElement.getQualifiedName().toString();
 | 
			
		
	
		
			
				
					|  |  |  |  |           proxyEntity.packageName = packageElement.getQualifiedName().toString(); | 
			
		
	
		
			
				
					|  |  |  |  |           proxyEntity.className = classElement.getSimpleName().toString(); | 
			
		
	
		
			
				
					|  |  |  |  |           mMethods.put(className, proxyEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         proxyEntity.methods.put(annotationClazz, methodName); | 
			
		
	
		
			
				
					|  |  |  |  |         proxyEntity.keyMappings.put(methodName, getValues(method, isDownload, annotationType)); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /** | 
			
		
	
		
			
				
					|  |  |  |  |    * 获取注解的内容 | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
		
			
				
					|  |  |  |  |   private Set<String> getValues(ExecutableElement method, boolean isDownload, int annotationType) { | 
			
		
	
		
			
				
					|  |  |  |  |     String[] keys = null; | 
			
		
	
		
			
				
					|  |  |  |  |     if (isDownload) { | 
			
		
	
		
			
				
					|  |  |  |  |       switch (annotationType) { | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_PRE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onPre.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_PRE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskPre.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_RESUME: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskResume.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_START: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskStart.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_RUNNING: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskRunning.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_STOP: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskStop.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_COMPLETE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskComplete.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_CANCEL: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskCancel.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_FAIL: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onTaskFail.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.DOWNLOAD_TASK_NO_SUPPORT_BREAKPOINT: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Download.onNoSupportBreakPoint.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |     } else { | 
			
		
	
		
			
				
					|  |  |  |  |       switch (annotationType) { | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_PRE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onPre.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_PRE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskPre.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_RESUME: | 
			
		
	
		
			
				
					|  |  |  |  |           //keys = method.getAnnotation(Upload.onTaskResume.class).value();
 | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_START: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskStart.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_RUNNING: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskRunning.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_STOP: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskStop.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_COMPLETE: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskComplete.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_CANCEL: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskCancel.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_FAIL: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onTaskFail.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |         case ProxyConstance.UPLOAD_TASK_NO_SUPPORT_BREAKPOINT: | 
			
		
	
		
			
				
					|  |  |  |  |           keys = method.getAnnotation(Upload.onNoSupportBreakPoint.class).value(); | 
			
		
	
		
			
				
					|  |  |  |  |           break; | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return keys == null ? null : convertSet(keys); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /** | 
			
		
	
		
			
				
					|  |  |  |  |    * 检查和下载相关的方法,如果被注解的方法为private或参数不合法,则抛异常 | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
	
		
			
				
					|  |  |  | @ -272,6 +383,21 @@ class ElementHandle { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   /** | 
			
		
	
		
			
				
					|  |  |  |  |    * 字符串数组转set | 
			
		
	
		
			
				
					|  |  |  |  |    * | 
			
		
	
		
			
				
					|  |  |  |  |    * @param keys 注解中查到的key | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
		
			
				
					|  |  |  |  |   private Set<String> convertSet(final String[] keys) { | 
			
		
	
		
			
				
					|  |  |  |  |     if (keys == null || keys.length == 0) { | 
			
		
	
		
			
				
					|  |  |  |  |       return null; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     if (keys[0].isEmpty()) return null; | 
			
		
	
		
			
				
					|  |  |  |  |     Set<String> set = new HashSet<>(); | 
			
		
	
		
			
				
					|  |  |  |  |     Collections.addAll(set, keys); | 
			
		
	
		
			
				
					|  |  |  |  |     return set; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   private String getCheckParams(boolean isDownload) { | 
			
		
	
		
			
				
					|  |  |  |  |     return isDownload ? "com.arialyy.aria.core.download.DownloadTask" | 
			
		
	
		
			
				
					|  |  |  |  |         : "com.arialyy.aria.core.upload.UploadTask"; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |