diff --git a/annotation/build/libs/annotation.jar b/annotation/build/libs/annotation.jar index 0e31c73..d88cd8e 100644 Binary files a/annotation/build/libs/annotation.jar and b/annotation/build/libs/annotation.jar differ diff --git a/compiler/src/main/java/com/android/easyrouter/compiler/DispatcherProcessor.java b/compiler/src/main/java/com/android/easyrouter/compiler/DispatcherProcessor.java index 07a601b..76eca98 100644 --- a/compiler/src/main/java/com/android/easyrouter/compiler/DispatcherProcessor.java +++ b/compiler/src/main/java/com/android/easyrouter/compiler/DispatcherProcessor.java @@ -3,6 +3,7 @@ import com.android.easyrouter.annotation.DisPatcher; import com.android.easyrouter.annotation.DispatcherModules; import com.android.easyrouter.annotation.ModuleService; +import com.android.easyrouter.compiler.exception.InvalidTargetException; import com.google.auto.service.AutoService; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.MethodSpec; @@ -67,6 +68,7 @@ public Set getSupportedAnnotationTypes() { Set ret = new HashSet<>(); ret.add(DisPatcher.class.getCanonicalName()); ret.add(DispatcherModules.class.getCanonicalName()); + ret.add(ModuleService.class.getCanonicalName()); return ret; } @@ -134,23 +136,21 @@ private TypeSpec generateModulesRouterInit(String[] moduleNames) { private TypeSpec getRouterTableInitializer(Set elements, Set moduleServiceElements) throws ClassNotFoundException { - -// error("执行!"+moduleName); if (elements == null || elements.size() == 0) { return null; } ParameterizedTypeName mapTypeName = ParameterizedTypeName .get(ClassName.get(HashMap.class), ClassName.get(String.class), - ClassName.get(Class.class)) ; + ClassName.get(Class.class)); ParameterSpec mapParameterSpec = ParameterSpec.builder(mapTypeName, "activityMap") .build(); MethodSpec.Builder routerInitBuilder = MethodSpec.methodBuilder("initActivityMap") -// .addAnnotation(Override.class) + .addAnnotation(Override.class) .addModifiers(Modifier.PUBLIC) .addParameter(mapParameterSpec); for (Element element : elements) { if (element.getKind() != ElementKind.CLASS) { -// throw new TargetErrorException(); + throw new InvalidTargetException("DisPatcher must be used on class"); } DisPatcher router = element.getAnnotation(DisPatcher.class); String[] routerUrls = router.value(); @@ -168,7 +168,6 @@ private TypeSpec getRouterTableInitializer(Set elements, Set< ClassName.get((TypeElement) element), ClassName.get((TypeElement) element)); } - TypeElement routerInitializerType = elementUtils.getTypeElement("com.android.easyrouter.dispatcher.idispatcher.IActivityInitMap"); return TypeSpec.classBuilder(com.android.easyrouter.compiler.CompilerConstant.AutoCreateActivityMapPrefix + moduleName) .addSuperinterface(ClassName.get(routerInitializerType)) diff --git a/compiler/src/main/java/com/android/easyrouter/compiler/exception/InvalidTargetException.java b/compiler/src/main/java/com/android/easyrouter/compiler/exception/InvalidTargetException.java new file mode 100644 index 0000000..03345ee --- /dev/null +++ b/compiler/src/main/java/com/android/easyrouter/compiler/exception/InvalidTargetException.java @@ -0,0 +1,13 @@ +package com.android.easyrouter.compiler.exception; + +/** + * Created by liuzhao on 2017/9/30. + */ + +public class InvalidTargetException extends RuntimeException { + + public InvalidTargetException(String message) { + super(message); + } + +}