Make all annotation processors derive from ProcessorBase (#39360)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/39360

X-link: https://github.com/facebook/litho/pull/958

Reviewed By: MonaHashem

Differential Revision: D49113071

fbshipit-source-id: f762032e0f0b4a1566b0947fe3a24eb32be5795a
This commit is contained in:
Ian Levesque
2023-10-03 17:47:12 -07:00
committed by Facebook GitHub Bot
parent c4110d0475
commit fea445ee2d
5 changed files with 35 additions and 6 deletions
@@ -617,6 +617,7 @@ android {
res.srcDirs = ["src/main/res/devsupport", "src/main/res/shell", "src/main/res/views/modal", "src/main/res/views/uimanager"]
java {
srcDirs = ["src/main/java", "src/main/libraries/soloader/java", "src/main/jni/first-party/fb/jni/java"]
exclude("com/facebook/annotationprocessors")
exclude("com/facebook/react/processing")
exclude("com/facebook/react/module/processing")
}
@@ -770,6 +771,7 @@ dependencies {
api(libs.okhttp3.urlconnection)
api(libs.okhttp3)
api(libs.okio)
compileOnly(libs.javax.annotation.api)
api(libs.javax.inject)
// It's up to the consumer to decide if hermes should be included or not.
@@ -0,0 +1,24 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.annotationprocessors.common;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
public abstract class ProcessorBase extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
return processImpl(annotations, roundEnv);
}
protected abstract boolean processImpl(
Set<? extends TypeElement> annotations, RoundEnvironment roundEnv);
}
@@ -10,6 +10,7 @@ package com.facebook.react.module.processing;
import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.tools.Diagnostic.Kind.ERROR;
import com.facebook.annotationprocessors.common.ProcessorBase;
import com.facebook.infer.annotation.SuppressFieldNotInitialized;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.module.annotations.ReactModuleList;
@@ -29,7 +30,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Filer;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
@@ -55,7 +55,7 @@ import javax.lang.model.util.Types;
"com.facebook.react.module.annotations.ReactModuleList",
})
@SupportedSourceVersion(SourceVersion.RELEASE_7)
public class ReactModuleSpecProcessor extends AbstractProcessor {
public class ReactModuleSpecProcessor extends ProcessorBase {
private static final TypeName COLLECTIONS_TYPE = ParameterizedTypeName.get(Collections.class);
private static final TypeName MAP_TYPE =
@@ -78,7 +78,7 @@ public class ReactModuleSpecProcessor extends AbstractProcessor {
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
public boolean processImpl(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
Set<? extends Element> reactModuleListElements =
roundEnv.getElementsAnnotatedWith(ReactModuleList.class);
for (Element reactModuleListElement : reactModuleListElements) {
@@ -13,6 +13,7 @@ import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.tools.Diagnostic.Kind.ERROR;
import static javax.tools.Diagnostic.Kind.WARNING;
import com.facebook.annotationprocessors.common.ProcessorBase;
import com.facebook.infer.annotation.SuppressFieldNotInitialized;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.DynamicFromObject;
@@ -40,7 +41,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Filer;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
@@ -66,7 +66,7 @@ import javax.lang.model.util.Types;
*/
@SupportedAnnotationTypes("com.facebook.react.uimanager.annotations.ReactPropertyHolder")
@SupportedSourceVersion(SourceVersion.RELEASE_7)
public class ReactPropertyProcessor extends AbstractProcessor {
public class ReactPropertyProcessor extends ProcessorBase {
private static final Map<TypeName, String> DEFAULT_TYPES;
private static final Set<TypeName> BOXED_PRIMITIVES;
@@ -141,7 +141,7 @@ public class ReactPropertyProcessor extends AbstractProcessor {
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
public boolean processImpl(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
// Clear properties from previous rounds
mClasses.clear();
@@ -18,6 +18,7 @@ fbjni = "0.5.1"
flipper = "0.201.0"
fresco = "3.0.0"
infer-annotation = "0.18.0"
javax-annotation-api = "1.3.2"
javax-inject = "1"
jsr305 = "3.0.2"
junit = "4.13.2"
@@ -66,6 +67,8 @@ okhttp3-urlconnection = { module = "com.squareup.okhttp3:okhttp-urlconnection",
okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
javax-inject = { module = "javax.inject:javax.inject", version.ref = "javax-inject" }
javax-annotation-api = { module = "javax.annotation:javax.annotation-api", version.ref = "javax-annotation-api" }
junit = {module = "junit:junit", version.ref = "junit" }
assertj = {module = "org.assertj:assertj-core", version.ref = "assertj" }
mockito = {module = "org.mockito:mockito-inline", version.ref = "mockito" }