Java 类com.squareup.javapoet.MethodSpec 实例源码
项目:Spyglass
文件:TestSpecificValueIsAvailableMethodGenerator.java
private void checkCompiles(final MethodSpec method) {
final TypeSpec wrapperTypeSpec = CallerDef
.getNewCallerSubclassPrototype("Wrapper", TypeName.OBJECT)
.addMethod(CallerDef.getNewCallMethodPrototype().build())
.addMethod(CallerDef.getNewConstructorPrototype(TypeName.OBJECT).build())
.addMethod(method)
.build();
final JavaFile wrapperJavaFile = JavaFile
.builder("", wrapperTypeSpec)
.build();
final Set<JavaFile> filesToCompile = new HashSet<>();
filesToCompile.add(wrapperJavaFile);
filesToCompile.add(CallerDef.SRC_FILE);
CompileChecker.checkCompiles(filesToCompile);
}
项目:GitHub
文件:ObjectMapperInjector.java
private MethodSpec getParseFieldMethod() {
MethodSpec.Builder builder = MethodSpec.methodBuilder("parseField")
.addAnnotation(Override.class)
.addModifiers(Modifier.PUBLIC)
.addParameter(mJsonObjectHolder.objectTypeName, "instance")
.addParameter(String.class, "fieldName")
.addParameter(JsonParser.class, JSON_PARSER_VARIABLE_NAME)
.addException(IOException.class);
int parseFieldLines = addParseFieldLines(builder);
if (mJsonObjectHolder.hasParentClass()) {
if (parseFieldLines > 0) {
builder.nextControlFlow("else");
builder.addStatement("$L.parseField(instance, fieldName, $L)", PARENT_OBJECT_MAPPER_VARIABLE_NAME, JSON_PARSER_VARIABLE_NAME);
} else {
builder.addStatement("$L.parseField(instance, fieldName, $L)", PARENT_OBJECT_MAPPER_VARIABLE_NAME, JSON_PARSER_VARIABLE_NAME);
}
}
if (parseFieldLines > 0) {
builder.endControlFlow();
}
return builder.build();
}
项目:GeneratorX
文件:CodeGenerator.java
/**
* 生成set方法
* @param variable
* @return String getS(String s)
*/
protected MethodSpec makeSetMethod(String variable) {
//方法内的几行code this.variable = var;
StringBuilder builder = new StringBuilder();
builder.append(String.format("this.%s", variable));
builder.append(" = " + variable);
//方法的 头 和 尾
return methodBuilder(
"set" + com.androidyuan.Helper.ClsHelper.bigFirstString(variable)).addModifiers(
PUBLIC).returns(
TypeName.VOID)//public void setField
.addParameter(getFiledType(variable), variable)//(String variableNames)
.addStatement(builder.toString())// 添加方法内的几行代码到这里
.build();
}
项目:autoproxy
文件:RetNumberGenerator.java
public boolean compose(@NonNull final Type returnType,
@NonNull @RetNumber final String type,
@NonNull final MethodSpec.Builder builder) {
final Class<?> output = PRIMITIVES.get(returnType.toString());
if (RetNumber.MAX.equals(type)) {
builder.addStatement("return $T.MAX_VALUE", output);
return true;
} else if (RetNumber.MIN.equals(type)) {
builder.addStatement("return $T.MIN_VALUE", output);
return true;
} else if (RetNumber.MINUS_ONE.equals(type)) {
builder.addStatement("return -1");
return true;
} else if (RetNumber.ZERO.equals(type)) {
builder.addStatement("return 0");
return true;
}
return false;
}
项目:Jerkoff
文件:PojoCreatorImpl.java
/**
* genera il metodo di test per method di clazz
*
* @param count
* @param method
* @param clazz
* @param infoFromMongoDb
* @param methodOutput
* @return
*/
private MethodSpec getMethodSpec(int count, Method method, Class<?> clazz, Document methodInputs,
Document methodOutput) {
String result = getAssignmentOfMethodResult(method);
String expected = getExpectedResultAsBooleanAssert(method, methodOutput);
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(method.getName() + count + TEST);
/*
* for non spring test
*/
String invokerName = getInvokerName(method, clazz, methodInputs, methodBuilder);
String params = getParams(method, methodBuilder, methodInputs);
AnnotationSpec.Builder annSpecBuilder = AnnotationSpec.builder(Test.class);
addExpectedExceptionIfAny(methodInputs, annSpecBuilder);
AnnotationSpec annTestSpec = annSpecBuilder.build();
methodBuilder.addAnnotation(annTestSpec)
.addStatement(result + invokerName + ".$N(" + params + ")", method.getName())
.addModifiers(Modifier.PUBLIC);
methodBuilder.addStatement("$L.assertTrue(" + expected + ")", Assert.class.getName());
methodBuilder.addJavadoc("\n");
return methodBuilder.build();
}
项目:DeeplinkRouter
文件:DeeplinkRouterProcessor.java
private void innerGenerateRouterInit(MethodSpec.Builder methodBuilder)
{
TypeSpec routerInit = TypeSpec.classBuilder(ROUTER_INIT_CLASS_NAME)
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addSuperinterface(ClassName.get(ROUTER_API_PACKAGE_NAME, ROUTER_INIT_INTERFACE_NAME))
.addMethod(methodBuilder.build())
.build();
try
{
JavaFile.builder(ROUTER_API_PACKAGE_NAME, routerInit)
.build()
.writeTo(mFiler);
}
catch (Exception e)
{
error("Failed to generate file %s", routerInit.name);
}
}
项目:remoter
文件:RemoteBuilder.java
/**
* Recursevely Visit extended elements
*/
private int processRemoterElements(TypeSpec.Builder classBuilder, Element element, int methodIndex, ElementVisitor elementVisitor, MethodSpec.Builder methodBuilder) {
if (element instanceof TypeElement) {
for (TypeMirror typeMirror : ((TypeElement) element).getInterfaces()) {
if (typeMirror instanceof DeclaredType) {
Element superElement = ((DeclaredType) typeMirror).asElement();
methodIndex = processRemoterElements(classBuilder, superElement, methodIndex, elementVisitor, methodBuilder);
}
}
for (Element member : element.getEnclosedElements()) {
if (member.getKind() == ElementKind.METHOD) {
elementVisitor.visitElement(classBuilder, member, methodIndex, methodBuilder);
methodIndex++;
}
}
}
return methodIndex;
}
项目:aws-sdk-java-v2
文件:SyncClientInterface.java
private List<MethodSpec> operationMethodSpec(OperationModel opModel) {
List<MethodSpec> methods = new ArrayList<>();
if (opModel.getInputShape().isSimpleMethod()) {
methods.add(simpleMethod(opModel));
}
methods.add(operationMethodSignature(model, opModel)
.addModifiers(Modifier.DEFAULT)
.addStatement("throw new $T()", UnsupportedOperationException.class)
.build());
if (!opModel.isStreaming()) {
methods.add(operationBuilderConsumer(model, opModel));
}
methods.addAll(streamingSimpleMethods(opModel));
methods.addAll(paginatedMethods(opModel));
return methods;
}
项目:Spyglass
文件:GetDefaultMethodGenerator.java
@Override
public MethodSpec supplyFor(final AnnotationMirror anno) {
final CodeBlock body = CodeBlock
.builder()
.addStatement(
"return $T.getColorStateList($N(), $L)",
AndroidClassNames.CONTEXT_COMPAT,
CallerDef.GET_CONTEXT,
getLiteralFromAnnotation(anno, "resId"))
.build();
return getBaseMethodSpec()
.returns(AndroidClassNames.COLOR_STATE_LIST)
.addCode(body)
.build();
}
项目:aws-sdk-java-v2
文件:BaseClientBuilderClass.java
private MethodSpec serviceDefaultsMethod() {
String requestHandlerDirectory = Utils.packageToDirectory(model.getMetadata().getFullClientPackageName());
String requestHandlerPath = String.format("%s/execution.interceptors", requestHandlerDirectory);
boolean crc32FromCompressedDataEnabled = model.getCustomizationConfig().isCalculateCrc32FromCompressedData();
return MethodSpec.methodBuilder("serviceDefaults")
.addAnnotation(Override.class)
.addModifiers(Modifier.PROTECTED, Modifier.FINAL)
.returns(ClientConfigurationDefaults.class)
.addCode("return $T.builder()\n", ServiceBuilderConfigurationDefaults.class)
.addCode(" .defaultSignerProvider(this::defaultSignerProvider)\n")
.addCode(" .addRequestHandlerPath($S)\n", requestHandlerPath)
.addCode(" .crc32FromCompressedDataEnabled($L)\n", crc32FromCompressedDataEnabled)
.addCode(" .build();\n")
.build();
}
项目:Witch-Android
文件:OnBindPropertySetter.java
@Override
public String create() {
MethodSpec method = MethodSpec.methodBuilder("onBind")
.addModifiers(Modifier.PUBLIC)
.addParameter(viewType, "target")
.addParameter(valueType, "value")
.returns(void.class)
.addStatement("$N.$N(value)", "target", getPropertySetter(property))
.build();
TypeSpec anonymous = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get(TypeUtils.SYNC_ON_BIND, viewType, valueType))
.addMethod(method)
.build();
return anonymous.toString();
}
项目:Barricade
文件:CodeGenerator.java
private static MethodSpec.Builder generateConstructorBuilder(
HashMap<String, BarricadeResponseSet> values, Messager messager) {
MethodSpec.Builder methodBuilder = MethodSpec.constructorBuilder().addModifiers(PUBLIC);
methodBuilder.addStatement("configs = new HashMap<>()");
for (Map.Entry<String, BarricadeResponseSet> entry : values.entrySet()) {
BarricadeResponseSet barricadeResponseSet = entry.getValue();
String listName = "barricadeResponsesFor" + entry.getKey();
methodBuilder.addStatement("$T<$T> " + listName + " = new $T<>()", List.class,
BarricadeResponse.class, ArrayList.class);
for (BarricadeResponse barricadeResponse : barricadeResponseSet.responses) {
methodBuilder.addStatement(listName + ".add(new $T($L, $S, $S))", BarricadeResponse.class,
barricadeResponse.statusCode, barricadeResponse.responseFileName,
barricadeResponse.contentType);
}
methodBuilder.addStatement(
"configs.put($S, new $T(" + listName + ", " + barricadeResponseSet.defaultIndex + "))",
entry.getKey(), TYPE_BARRICADE_RESPONSE_SET);
}
return methodBuilder;
}
项目:aws-sdk-java-v2
文件:SyncClientInterface.java
private static MethodSpec.Builder operationBaseSignature(IntermediateModel model,
OperationModel opModel,
Consumer<MethodSpec.Builder> addFirstParameter,
SimpleMethodOverload simpleMethodOverload,
String methodName) {
TypeName responseType = ClassName.get(model.getMetadata().getFullModelPackageName(),
opModel.getReturnType().getReturnType());
TypeName returnType = opModel.hasStreamingOutput() ? STREAMING_TYPE_VARIABLE : responseType;
final MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(methodName)
.returns(returnType)
.addModifiers(Modifier.PUBLIC)
.addJavadoc(opModel.getDocs(model, ClientType.SYNC,
simpleMethodOverload))
.addExceptions(getExceptionClasses(model, opModel));
addFirstParameter.accept(methodBuilder);
streamingMethod(methodBuilder, opModel, responseType);
return methodBuilder;
}
项目:flowr
文件:DeepLinkAnnotationCompiler.java
/**
* Generate a new deep link handler implementation class with the specified package name,
* class name and the constructor body.
*
* @param packageName the name of the package to use for the generated class.
* @param className the name to be used for the implementation class.
* @param constructorBuilder the constructor body builder for the class.
*/
private void generateDeepLinkHandler(String packageName, String className,
MethodSpec.Builder constructorBuilder) {
TypeSpec classObject = getClassObject(className)
.addMethod(constructorBuilder.build())
.build();
JavaFile javaFile = JavaFile.builder(packageName, classObject)
.build();
try {
javaFile.writeTo(processingEnv.getFiler());
} catch (IOException e) {
e.printStackTrace();
}
}
项目:GitHub
文件:RequestManagerGenerator.java
/**
* Generates overrides of existing RequestManager methods so that they return our generated
* RequestBuilder subtype.
*/
private MethodSpec generateRequestManagerRequestBuilderMethodOverride(
ExecutableElement methodToOverride) {
// We've already verified that this method returns a RequestBuilder and RequestBuilders have
// exactly one type argument, so this is safe unless those assumptions change.
TypeMirror typeArgument =
((DeclaredType) methodToOverride.getReturnType()).getTypeArguments().get(0);
ParameterizedTypeName generatedRequestBuilderOfType =
ParameterizedTypeName.get(generatedRequestBuilderClassName, ClassName.get(typeArgument));
MethodSpec.Builder builder = ProcessorUtil.overriding(methodToOverride)
.returns(generatedRequestBuilderOfType)
.addCode(
ProcessorUtil.generateCastingSuperCall(
generatedRequestBuilderOfType, methodToOverride));
for (AnnotationMirror mirror : methodToOverride.getAnnotationMirrors()) {
builder.addAnnotation(AnnotationSpec.get(mirror));
}
return builder.build();
}
项目:Spyglass
文件:GetDefaultMethodGenerator.java
@Override
public MethodSpec supplyFor(final AnnotationMirror anno) {
final String unitFull = getLiteralFromAnnotation(anno, "unit");
final String unitShort = unitFull.substring(unitFull.lastIndexOf(".") + 1);
final CodeBlock body = CodeBlock
.builder()
.addStatement(
"$T metrics = $N().getResources().getDisplayMetrics()",
AndroidClassNames.DISPLAY_METRICS,
CallerDef.GET_CONTEXT)
.addStatement(
"return $1T.applyDimension($1T.$2L, $3L, metrics)",
AndroidClassNames.TYPED_VALUE,
getComplexUnitLiteral(unitShort),
getLiteralFromAnnotation(anno, "value"))
.build();
return getBaseMethodSpec()
.returns(Number.class)
.addCode(body)
.build();
}
项目:aws-sdk-java-v2
文件:AsyncClientInterface.java
/**
* @param opModel Operation to generate simple methods for.
* @return All simple method overloads for a given operation.
*/
private List<MethodSpec.Builder> addMethodOverloads(OperationModel opModel) {
List<MethodSpec.Builder> methodOverloads = new ArrayList<>();
if (opModel.getInputShape().isSimpleMethod()) {
methodOverloads.add(noArgSimpleMethod(opModel));
}
if (opModel.hasStreamingInput()) {
methodOverloads.add(streamingInputFileSimpleMethod(opModel));
}
if (opModel.hasStreamingOutput()) {
methodOverloads.add(streamingOutputFileSimpleMethod(opModel));
}
if (!opModel.isStreaming()) {
methodOverloads.add(builderConsumerMethod(opModel));
}
return methodOverloads;
}
项目:RxAndroidOrm
文件:ModelEntityProxyGenerator.java
public TypeSpec generate() {
String idFieldName = Constants.FIELD_ID;
Element idField = ProcessUtils.getIdField(element);
if (idField != null)
idFieldName = ProcessUtils.getObjectName(idField);
TypeSpec.Builder builder = TypeSpec.classBuilder(ProcessUtils.getObjectName(element) + Constants.MODEL_ENTITY_PROXY)
.addModifiers(Modifier.PUBLIC)
.superclass(TypeName.get(element.asType()))
.addSuperinterface(ClassName.get(Constants.DAO_PACKAGE, Constants.MODEL_ENTITY_PROXY_INTERFACE));
if (idField == null) {
builder.addField(TypeName.LONG, Constants.FIELD_ID);
}
builder.addMethod(MethodSpec.methodBuilder(Constants.MODEL_ENTITY_PROXY_GET_ID_METHOD)
.addModifiers(Modifier.PUBLIC)
.returns(TypeName.LONG)
.addStatement("return $L", idFieldName)
.build())
.addMethod(MethodSpec.methodBuilder(Constants.MODEL_ENTITY_PROXY_SET_ID_METHOD)
.addModifiers(Modifier.PUBLIC)
.returns(TypeName.VOID)
.addParameter(TypeName.LONG, "id")
.addStatement("this.$L = id", idFieldName)
.build());
return builder.build();
}
项目:shoebill
文件:ShoebillProcessor.java
private MethodSpec getSingletonGetterMethod(ClassName className, FieldSpec singletonField) {
return MethodSpec
.methodBuilder("getInstance")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(className)
.addStatement("return $N", singletonField)
.build();
}
项目:PreferenceRoom
文件:PreferenceFieldMethodGenerator.java
private MethodSpec generateGetter() {
return MethodSpec.methodBuilder(getGetterPrefixName())
.addModifiers(PUBLIC)
.addStatement("return " + getGetterStatement(), preference, keyField.keyName, keyField.value)
.returns(keyField.typeName)
.build();
}
项目:aws-sdk-java-v2
文件:NonCollectionSetters.java
public MethodSpec fluentConvenience(TypeName returnType, ConvenienceTypeOverload overload) {
return MethodSpec.methodBuilder(memberModel().getFluentSetterMethodName())
.addModifiers(Modifier.PUBLIC)
.addParameter(PoetUtils.classNameFromFqcn(overload.getConvenienceType()), memberAsParameter().name)
.addStatement("$L(new $T().adapt($L))",
memberModel().getFluentSetterMethodName(),
PoetUtils.classNameFromFqcn(overload.getTypeAdapterFqcn()),
memberAsParameter().name)
.addStatement("return this")
.returns(returnType)
.build();
}
项目:MRouter
文件:AutowireRouteClass.java
private void addInitStatement(MethodSpec.Builder result, AutowireField field) {
CodeBlock.Builder builder = CodeBlock.builder();
if (field.getTypeKind() == FieldTypeKind.PARCELABLE_ARRAY) {
builder.add("android.os.Parcelable[] parcelables = target.$L;\n",
CodeBlock.of(field.getAssignStatement(), field.getAnnotationValue()))
.add("target.$L = java.util.Arrays.copyOf(parcelables,parcelables.length, $T.class)",
field.getFieldName(),
field.getFieldType());
} else if (field.getTypeKind() == FieldTypeKind.PROVIDER) {
builder.add("java.lang.Class $L = $T.getInstance().getRoute($S);"
, field.getFieldName()
, RouteJavaFileUtils.ROUTE_MANAGER
, field.getAnnotationValue());
builder.add("\nif($L !=null){\n", field.getFieldName());
builder.add("try {\n$L" +
" } catch (InstantiationException e) {\n" +
" e.printStackTrace();\n" +
" } catch (IllegalAccessException e) {\n" +
" e.printStackTrace();\n" +
" }",
CodeBlock.of(" target.$L = ($T)$L.newInstance();\n",
field.getFieldName(), field.getFieldType(), field.getFieldName()));
builder.add("}");
} else {
builder.add("target.$L = ", field.getFieldName());
if (field.getTypeKind() == FieldTypeKind.SERIALIZABLE) {
builder.add("($T)target.$L",
field.getFieldType(),
CodeBlock.of(field.getAssignStatement(), field.getAnnotationValue()));
} else {
builder.add("target.$L",
CodeBlock.of(field.getAssignStatement(), field.getAnnotationValue()));
}
}
result.addStatement("$L", builder.build());
}
项目:aws-sdk-java-v2
文件:SyncClientInterface.java
private MethodSpec operationBuilderConsumer(IntermediateModel model,
OperationModel opModel) {
ClassName requestType = ClassName.get(model.getMetadata().getFullModelPackageName(),
opModel.getInput().getVariableType());
ClassName builder = requestType.nestedClass("Builder");
TypeName consumer = ParameterizedTypeName.get(ClassName.get(Consumer.class), builder);
return operationBaseSignature(model, opModel, b -> b.addParameter(consumer, opModel.getInput().getVariableName()))
.addModifiers(Modifier.DEFAULT)
.addStatement("return $L($T.builder().apply($L).build())",
opModel.getMethodName(),
requestType,
opModel.getInput().getVariableName())
.build();
}
项目:GitHub
文件:BindingSet.java
private void addViewBinding(MethodSpec.Builder result, ViewBinding binding) {
if (binding.isSingleFieldBinding()) {
// Optimize the common case where there's a single binding directly to a field.
FieldViewBinding fieldBinding = binding.getFieldBinding();
CodeBlock.Builder builder = CodeBlock.builder()
.add("target.$L = ", fieldBinding.getName());
boolean requiresCast = requiresCast(fieldBinding.getType());
if (!requiresCast && !fieldBinding.isRequired()) {
builder.add("source.findViewById($L)", binding.getId().code);
} else {
builder.add("$T.find", UTILS);
builder.add(fieldBinding.isRequired() ? "RequiredView" : "OptionalView");
if (requiresCast) {
builder.add("AsType");
}
builder.add("(source, $L", binding.getId().code);
if (fieldBinding.isRequired() || requiresCast) {
builder.add(", $S", asHumanDescription(singletonList(fieldBinding)));
}
if (requiresCast) {
builder.add(", $T.class", fieldBinding.getRawType());
}
builder.add(")");
}
result.addStatement("$L", builder.build());
return;
}
List<MemberViewBinding> requiredBindings = binding.getRequiredBindings();
if (requiredBindings.isEmpty()) {
result.addStatement("view = source.findViewById($L)", binding.getId().code);
} else if (!binding.isBoundToRoot()) {
result.addStatement("view = $T.findRequiredView(source, $L, $S)", UTILS,
binding.getId().code, asHumanDescription(requiredBindings));
}
addFieldBinding(result, binding);
addMethodBindings(result, binding);
}
项目:aws-sdk-java-v2
文件:ModelMethodOverrides.java
public MethodSpec equalsMethod(ShapeModel shapeModel) {
ClassName className = poetExtensions.getModelClass(shapeModel.getShapeName());
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder("equals")
.returns(boolean.class)
.addAnnotation(Override.class)
.addModifiers(Modifier.PUBLIC)
.addParameter(Object.class, "obj")
.beginControlFlow("if (this == obj)")
.addStatement("return true")
.endControlFlow()
.beginControlFlow("if (obj == null)")
.addStatement("return false")
.endControlFlow()
.beginControlFlow("if (!(obj instanceof $T))", className)
.addStatement("return false")
.endControlFlow();
if (!shapeModel.getNonStreamingMembers().isEmpty()) {
methodBuilder.addStatement("$T other = ($T) obj", className, className);
}
final List<MemberModel> memberModels = shapeModel.getNonStreamingMembers();
final CodeBlock.Builder memberEqualsStmt = CodeBlock.builder();
if (memberModels.isEmpty()) {
memberEqualsStmt.addStatement("return true");
} else {
memberEqualsStmt.add("return ");
memberEqualsStmt.add(memberModels.stream().map(m -> {
final String getterName = m.getFluentGetterMethodName();
return CodeBlock.builder().add("$T.equals($N(), other.$N())", Objects.class, getterName, getterName).build();
}).collect(PoetCollectors.toDelimitedCodeBlock("&&")));
memberEqualsStmt.add(";");
}
return methodBuilder.addCode(memberEqualsStmt.build()).build();
}
项目:aws-sdk-java-v2
文件:AsyncClientInterface.java
private MethodSpec create() {
return MethodSpec.methodBuilder("create")
.returns(className)
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.addJavadoc("Create a {@link $T} with the region loaded from the {@link $T} and credentials loaded "
+ "from the {@link $T}.",
className,
DefaultAwsRegionProviderChain.class,
DefaultCredentialsProvider.class)
.addStatement("return builder().build()")
.build();
}
项目:domino
文件:RegisterSendersMethodWriter.java
@Override
protected void registerItem(SenderEntry entry, MethodSpec.Builder methodBuilder) {
MethodSpec makeMethod = MethodSpec.methodBuilder("make")
.addModifiers(Modifier.PROTECTED)
.addAnnotation(Override.class)
.returns(RequestRestSender.class)
.addStatement("return new $T()", ClassName.bestGuess(entry.sender))
.build();
TypeSpec lazyLoaderType = TypeSpec.anonymousClassBuilder("")
.superclass(LazyRequestRestSenderLoader.class)
.addMethod(makeMethod)
.build();
methodBuilder.addStatement("registry.registerRequestRestSender($T.class.getCanonicalName(), $L)",
ClassName.bestGuess(entry.request), lazyLoaderType);
}
项目:konohana
文件:StoreMethods.java
private static MethodSpec buildGetterSpec(StoreDefinition storeDefinition, KeyDefinition keyDefinition) {
return MethodSpec.methodBuilder(keyDefinition.getGetterName())
.returns(keyDefinition.getFieldTypeName())
.addModifiers(Modifier.PUBLIC)
.addAnnotation(AnnotationTypes.NonNull)
.addStatement("return $T.get(prefs, $S, $T.$L)",
keyDefinition.getPrefsAdapter(), keyDefinition.getPrefsKeyName(), storeDefinition.getInterfaceName(), keyDefinition.getFieldName())
.build();
}
项目:Spyglass
文件:CastWrapperGenerator.java
private CodeBlock generateCharacterCastWrapperFor(final MethodSpec method, final TypeMirror recipient) {
final TypeMirror methodReturnType = elementHelper.getTypeElement(method.returnType.toString()).asType();
if (recipient.toString().equals("char")) {
return CodeBlock.of("(char) $N()", method);
} else if (recipient.toString().equals(Character.class.getCanonicalName())) {
return CodeBlock.of("($T) $N()", Character.class, method);
} else {
return CodeBlock.of("($T) $N()", methodReturnType, method);
}
}
项目:arez
文件:ComponentDescriptor.java
/**
* Generate the getter for component name.
*/
@Nonnull
private MethodSpec buildComponentNameMethod()
throws ArezProcessorException
{
final MethodSpec.Builder builder;
if ( null == _componentName )
{
builder = MethodSpec.methodBuilder( GeneratorUtil.NAME_METHOD_NAME );
}
else
{
builder = MethodSpec.methodBuilder( _componentName.getSimpleName().toString() );
ProcessorUtil.copyAccessModifiers( _componentName, builder );
builder.addModifiers( Modifier.FINAL );
}
builder.returns( TypeName.get( String.class ) );
if ( _nameIncludesId )
{
builder.addStatement( "return $S + $N()",
_type.isEmpty() ? "" : _type + ".",
null == _componentId ? GeneratorUtil.ID_FIELD_NAME : _componentId.getSimpleName() );
}
else
{
builder.addStatement( "return $S", _type );
}
return builder.build();
}
项目:GitHub
文件:RequestManagerGenerator.java
@Nullable
TypeSpec generate(
String generatedCodePackageName, @Nullable TypeSpec requestOptions, TypeSpec requestBuilder,
Set<String> glideExtensions) {
generatedRequestBuilderClassName = ClassName.get(generatedCodePackageName, requestBuilder.name);
return TypeSpec.classBuilder(GENERATED_REQUEST_MANAGER_SIMPLE_NAME)
.superclass(requestManagerClassName)
.addJavadoc("Includes all additions from methods in {@link $T}s\n"
+ "annotated with {@link $T}\n"
+ "\n"
+ "<p>Generated code, do not modify\n",
GlideExtension.class, GlideType.class)
.addAnnotation(
AnnotationSpec.builder(SuppressWarnings.class)
.addMember("value", "$S", "deprecation")
.build())
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(generateAsMethod(generatedCodePackageName, requestBuilder))
.addMethod(generateCallSuperConstructor())
.addMethods(generateAdditionalRequestManagerMethods(glideExtensions))
.addMethods(generateRequestManagerMethodOverrides())
.addMethods(
FluentIterable.from(
Collections.singletonList(
generateOverrideSetRequestOptions(generatedCodePackageName, requestOptions)))
.filter(Predicates.<MethodSpec>notNull()))
.build();
}
项目:react4j
文件:Generator.java
@Nonnull
private static MethodSpec.Builder buildFactoryMethod()
{
return MethodSpec.methodBuilder( "_create" ).
addAnnotation( NONNULL_CLASSNAME ).
addModifiers( Modifier.STATIC ).
returns( REACT_NODE_CLASSNAME ).
addStatement( "return $T.createElement( TYPE )", REACT_CLASSNAME );
}
项目:aws-sdk-java-v2
文件:AwsServiceBaseResponseSpec.java
private TypeSpec builderInterfaceSpec() {
return TypeSpec.interfaceBuilder("Builder")
.addModifiers(Modifier.PUBLIC)
.addSuperinterface(ClassName.get(AwsResponse.class).nestedClass("Builder"))
.addMethod(MethodSpec.methodBuilder("build")
.addAnnotation(Override.class)
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.returns(className())
.build())
.build();
}
项目:GitHub
文件:RequestManagerGenerator.java
private List<MethodSpec> generateAdditionalRequestManagerMethods(
Set<String> glideExtensions) {
List<ExecutableElement> requestManagerExtensionMethods =
processorUtil.findAnnotatedElementsInClasses(glideExtensions, GlideType.class);
return Lists.transform(requestManagerExtensionMethods,
new Function<ExecutableElement, MethodSpec>() {
@Override
public MethodSpec apply(ExecutableElement input) {
return generateAdditionalRequestManagerMethod(input);
}
});
}
项目:remoter
文件:DoubleParamBuilder.java
@Override
public void readResultsFromProxy(TypeMirror resultType, MethodSpec.Builder methodBuilder) {
if (resultType.getKind() == TypeKind.ARRAY) {
methodBuilder.addStatement("result = reply.createDoubleArray()");
} else {
methodBuilder.addStatement("result = reply.readDouble()");
}
}
项目:GitHub
文件:RequestManagerGenerator.java
/**
* The {@link com.bumptech.glide.request.RequestOptions} subclass should always be our
* generated subclass type to avoid inadvertent errors where a different subclass is applied that
* accidentally wipes out some logic in overidden methods in our generated subclass.
*/
@Nullable
private MethodSpec generateOverrideSetRequestOptions(
String generatedCodePackageName, @Nullable TypeSpec generatedRequestOptions) {
if (generatedRequestOptions == null) {
return null;
}
Elements elementUtils = processingEnv.getElementUtils();
TypeElement requestOptionsType =
elementUtils.getTypeElement(
RequestOptionsGenerator.REQUEST_OPTIONS_QUALIFIED_NAME);
TypeElement androidNonNullType =
elementUtils.getTypeElement("android.support.annotation.NonNull");
// This class may have just been generated and therefore may not be found if we try to obtain
// it via Elements, so use just the String version instead.
String generatedRequestOptionsQualifiedName =
generatedCodePackageName + "." + generatedRequestOptions.name;
String methodName = "setRequestOptions";
String parameterName = "toSet";
return MethodSpec.methodBuilder(methodName)
.addAnnotation(Override.class)
.addModifiers(Modifier.PROTECTED)
.addParameter(
ParameterSpec.builder(ClassName.get(requestOptionsType), parameterName)
.addAnnotation(ClassName.get(androidNonNullType))
.build())
.beginControlFlow("if ($N instanceof $L)",
parameterName, generatedRequestOptionsQualifiedName)
.addStatement("super.$N($N)", methodName, parameterName)
.nextControlFlow("else")
.addStatement("super.setRequestOptions(new $L().apply($N))",
generatedRequestOptionsQualifiedName, parameterName)
.endControlFlow()
.build();
}
项目:KiiAnnotation
文件:BuilderGenerator.java
public static MethodSpec constructorGroupMethod() {
ClassName className = ClassName.get("com.kii.cloud.storage", "KiiGroup");
ParameterSpec parameterSpec = ParameterSpec.builder(className, "kiiGroup").build();
return MethodSpec
.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
.addParameter(parameterSpec)
.addStatement("this.kiiGroup = kiiGroup")
.build();
}
项目:remoter
文件:StringParamBuilder.java
@Override
public void writeParamsToStub(VariableElement param, ParamType paramType, String paramName, MethodSpec.Builder methodBuilder) {
super.writeParamsToStub(param, paramType, paramName, methodBuilder);
if (param.asType().getKind() == TypeKind.ARRAY) {
if (paramType == ParamType.OUT) {
writeOutParamsToStub(param, paramType, paramName, methodBuilder);
} else {
methodBuilder.addStatement(paramName + " = data.createStringArray()");
}
} else {
methodBuilder.addStatement(paramName + " = data.readString()");
}
}
项目:PreferenceRoom
文件:PreferenceEntityGenerator.java
private MethodSpec getEntityNameMethodSpec() {
return MethodSpec.methodBuilder("getEntityName")
.addModifiers(PUBLIC)
.returns(String.class)
.addStatement("return $S", annotatedClazz.entityName)
.build();
}
项目:gendapter
文件:ViewHolderClass.java
private MethodSpec getContextMethod() {
return MethodSpec.methodBuilder("context")
.addModifiers(Modifier.PROTECTED)
.returns(context())
.addStatement("return context")
.build();
}