static boolean requiresCast(TypeName type) { return !VIEW_TYPE.equals(type.toString()); }
public String getParameterName() { return mTypeName.toString(); } }
@Override public boolean isSameDeclaredType(TypeName type) { return type.toString().equals(mQualifiedName); }
@Override public final int hashCode() { return toString().hashCode(); }
@Override public final boolean equals(Object o) { if (this == o) return true; if (o == null) return false; if (getClass() != o.getClass()) return false; return toString().equals(o.toString()); }
public static String getTypeConverterVariableName(TypeName typeName) { return typeName.toString().replaceAll("\\.", "_").replaceAll("\\$", "_") + "_type_converter"; }
public static String getStaticFinalTypeConverterVariableName(TypeName typeName) { return typeName.toString().replaceAll("\\.", "_").replaceAll("\\$", "_").toUpperCase(); }
@Override public boolean isSubType(TypeName type) { return type.toString().equals(mQualifiedName) || (mSuperclass.get() != null && mSuperclass.get().isSubType(type)); }
/** * It will have a FQN if it is from a separate library and was already compiled, otherwise if it * is from this module we will just have the simple name. */ private boolean hasFullyQualifiedName(ControllerModelField model) { return model.getTypeName().toString().contains("."); }
public static String getPackageName(TypeName typeName) { return getPackageName(typeName.toString()); } }
private static ParameterSpec parameterWithoutNullableAnnotation( PropModel prop, TypeName type, String name, AnnotationSpec... extraAnnotations) { List<AnnotationSpec> externalAnnotations = new ArrayList<>(); for (AnnotationSpec annotationSpec : prop.getExternalAnnotations()) { if (!annotationSpec.type.toString().contains("Nullable")) { externalAnnotations.add(annotationSpec); } } return parameter(type, name, externalAnnotations, extraAnnotations); }
@Override public boolean isSubInterface(TypeName type) { return type.toString().equals(mQualifiedName) || mSuperinterfaces.stream().anyMatch(typeSpec -> typeSpec.isSubInterface(type)); }
private static boolean areParamsTheSame(ExecutableElement method1, MethodSpec method2, Types types, Elements elements) { List<? extends VariableElement> params1 = method1.getParameters(); List<ParameterSpec> params2 = method2.parameters; if (params1.size() != params2.size()) { return false; } for (int i = 0; i < params1.size(); i++) { VariableElement param1 = params1.get(i); ParameterSpec param2 = params2.get(i); TypeMirror param1Type = types.erasure(param1.asType()); TypeMirror param2Type = types.erasure(KotlinUtilsKt.getTypeMirror(param2.type.toString(), elements)); // If a param is a type variable then we don't need an exact type match, it just needs to // be assignable if (param1.asType().getKind() == TypeKind.TYPEVAR) { if (!types.isAssignable(param2Type, param1Type)) { return false; } } else if (!param1Type.toString().equals(param2Type.toString())) { return false; } } return true; }
@Override public boolean matches(MethodSpec value) { return value.name.equals("matcher") && value.returnType.toString().equals("Matcher"); } },
private static TypeName getEnclosedImplClassName(final SpecModel enclosedSpecModel) { final String componentTypeName = enclosedSpecModel.getComponentTypeName().toString(); if (enclosedSpecModel.getTypeVariables().isEmpty()) { return ClassName.bestGuess(componentTypeName); } final TypeName[] typeNames = enclosedSpecModel .getTypeVariables() .stream() .map(TypeVariableName::withoutAnnotations) .collect(Collectors.toList()) .toArray(new TypeName[] {}); return ParameterizedTypeName.get(ClassName.bestGuess(componentTypeName), typeNames); }
private static TypeName getParameterTypeName( SpecModel specModel, TypeName varArgTypeArgumentTypeName) { final String rawVarArgType = varArgTypeArgumentTypeName.toString(); final boolean isKotlinSpec = specModel.getSpecElementType() == SpecElementType.KOTLIN_SINGLETON;
/** * Returns the ClassType of the given model by finding a match in the list of generated models. If * no match is found the original model type is returned as a fallback. */ private TypeName getFullyQualifiedModelTypeName(ControllerModelField model, List<GeneratedModelInfo> generatedModels) { String modelName = model.getTypeName().toString(); for (GeneratedModelInfo generatedModel : generatedModels) { String generatedName = generatedModel.getGeneratedName().toString(); if (generatedName.endsWith("." + modelName)) { return generatedModel.getGeneratedName(); } } // Fallback to using the same name return model.getTypeName(); }
@Test public void testCreateWithSpecifiedName() { when(mLayoutSpec.value()).thenReturn("TestComponentName"); LayoutSpecModel layoutSpecModel = mFactory.create( mElements, mTypes, mTypeElement, mMessager, RunMode.normal(), mDependencyInjectionHelper, null); assertThat(layoutSpecModel.getSpecName()).isEqualTo("TestSpec"); assertThat(layoutSpecModel.getComponentName()).isEqualTo("TestComponentName"); assertThat(layoutSpecModel.getSpecTypeName().toString()).isEqualTo(TEST_QUALIFIED_SPEC_NAME); assertThat(layoutSpecModel.getComponentTypeName().toString()) .isEqualTo("com.facebook.litho.TestComponentName"); } }
@Test public void testCreate() { final TestSpecModelFactory factory = new TestSpecModelFactory(); final TestSpecModel layoutSpecModel = factory.create(mElements, mTypes, mTypeElement, mMessager, RunMode.normal(), null, null); assertThat(layoutSpecModel.getSpecName()).isEqualTo("TestMyLayoutSpec"); assertThat(layoutSpecModel.getComponentName()).isEqualTo("TestMyLayout"); assertThat(layoutSpecModel.getSpecTypeName().toString()) .isEqualTo( "com.facebook.litho.specmodels.processor.testing.TestLayoutSpecModelFactoryTest.TestMyLayoutSpec"); assertThat(layoutSpecModel.getComponentTypeName().toString()) .isEqualTo( "com.facebook.litho.specmodels.processor.testing.TestLayoutSpecModelFactoryTest.TestMyLayout"); assertThat(layoutSpecModel.getProps().stream().map(PropModel::getName).toArray()) .hasSize(4) .contains("child", atIndex(0)) .contains("i", atIndex(1)) .contains("s", atIndex(2)) .contains("size", atIndex(3)); }
@Test public void testCreate() { LayoutSpecModel layoutSpecModel = mFactory.create( mElements, mTypes, mTypeElement, mMessager, RunMode.normal(), mDependencyInjectionHelper, null); assertThat(layoutSpecModel.getSpecName()).isEqualTo("TestSpec"); assertThat(layoutSpecModel.getComponentName()).isEqualTo("Test"); assertThat(layoutSpecModel.getSpecTypeName().toString()).isEqualTo(TEST_QUALIFIED_SPEC_NAME); assertThat(layoutSpecModel.getComponentTypeName().toString()) .isEqualTo(TEST_QUALIFIED_COMPONENT_NAME); assertThat(layoutSpecModel.getDelegateMethods()).isEmpty(); assertThat(layoutSpecModel.getProps()).isEmpty(); assertThat(layoutSpecModel.hasInjectedDependencies()).isTrue(); assertThat(layoutSpecModel.getDependencyInjectionHelper()).isSameAs(mDependencyInjectionHelper); }