mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
BREAKING: Add interface for ReactShadowNode
Reviewed By: AaaChiuuu Differential Revision: D5943137 fbshipit-source-id: 00950190e0256303d423ae86c6c18facf173ad6a
This commit is contained in:
committed by
Facebook Github Bot
parent
9c4ec30c15
commit
a5d1d25f56
+40
-37
@@ -2,6 +2,36 @@
|
||||
|
||||
package com.facebook.react.processing;
|
||||
|
||||
import static javax.lang.model.element.Modifier.ABSTRACT;
|
||||
import static javax.lang.model.element.Modifier.PRIVATE;
|
||||
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.infer.annotation.SuppressFieldNotInitialized;
|
||||
import com.facebook.react.bridge.Dynamic;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropertyHolder;
|
||||
import com.squareup.javapoet.ClassName;
|
||||
import com.squareup.javapoet.CodeBlock;
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.MethodSpec;
|
||||
import com.squareup.javapoet.ParameterizedTypeName;
|
||||
import com.squareup.javapoet.TypeName;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
import com.squareup.javapoet.TypeVariableName;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
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;
|
||||
@@ -20,37 +50,6 @@ import javax.lang.model.type.TypeMirror;
|
||||
import javax.lang.model.util.Elements;
|
||||
import javax.lang.model.util.Types;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.facebook.infer.annotation.SuppressFieldNotInitialized;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.bridge.Dynamic;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropertyHolder;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
import com.facebook.react.uimanager.annotations.ReactPropGroup;
|
||||
|
||||
import com.squareup.javapoet.ClassName;
|
||||
import com.squareup.javapoet.CodeBlock;
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.MethodSpec;
|
||||
import com.squareup.javapoet.ParameterizedTypeName;
|
||||
import com.squareup.javapoet.TypeName;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
import com.squareup.javapoet.TypeVariableName;
|
||||
|
||||
import static javax.lang.model.element.Modifier.*;
|
||||
import static javax.tools.Diagnostic.Kind.ERROR;
|
||||
import static javax.tools.Diagnostic.Kind.WARNING;
|
||||
|
||||
/**
|
||||
* This annotation processor crawls subclasses of ReactShadowNode and ViewManager and finds their
|
||||
* exported properties with the @ReactProp or @ReactGroupProp annotation. It generates a class
|
||||
@@ -73,8 +72,8 @@ public class ReactPropertyProcessor extends AbstractProcessor {
|
||||
|
||||
private static final TypeName VIEW_MANAGER_TYPE =
|
||||
ClassName.get("com.facebook.react.uimanager", "ViewManager");
|
||||
private static final TypeName SHADOW_NODE_TYPE =
|
||||
ClassName.get("com.facebook.react.uimanager", "ReactShadowNode");
|
||||
private static final TypeName SHADOW_NODE_IMPL_TYPE =
|
||||
ClassName.get("com.facebook.react.uimanager", "ReactShadowNodeImpl");
|
||||
|
||||
private static final ClassName VIEW_MANAGER_SETTER_TYPE =
|
||||
ClassName.get(
|
||||
@@ -185,9 +184,13 @@ public class ReactPropertyProcessor extends AbstractProcessor {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean isShadowNodeType(TypeName typeName) {
|
||||
return typeName.equals(SHADOW_NODE_IMPL_TYPE);
|
||||
}
|
||||
|
||||
private ClassInfo parseClass(ClassName className, TypeElement typeElement) {
|
||||
TypeName targetType = getTargetType(typeElement.asType());
|
||||
TypeName viewType = targetType.equals(SHADOW_NODE_TYPE) ? null : targetType;
|
||||
TypeName viewType = isShadowNodeType(targetType) ? null : targetType;
|
||||
|
||||
ClassInfo classInfo = new ClassInfo(className, typeElement, viewType);
|
||||
findProperties(classInfo, typeElement);
|
||||
@@ -233,10 +236,10 @@ public class ReactPropertyProcessor extends AbstractProcessor {
|
||||
if (parameterizedTypeName.rawType.equals(VIEW_MANAGER_TYPE)) {
|
||||
return parameterizedTypeName.typeArguments.get(0);
|
||||
}
|
||||
} else if (typeName.equals(SHADOW_NODE_TYPE)) {
|
||||
return SHADOW_NODE_TYPE;
|
||||
} else if (isShadowNodeType(typeName)) {
|
||||
return SHADOW_NODE_IMPL_TYPE;
|
||||
} else if (typeName.equals(TypeName.OBJECT)) {
|
||||
throw new IllegalArgumentException("Could not find target type");
|
||||
throw new IllegalArgumentException("Could not find target type " + typeName);
|
||||
}
|
||||
|
||||
List<? extends TypeMirror> types = mTypes.directSupertypes(mirror);
|
||||
|
||||
Reference in New Issue
Block a user