Java 类com.squareup.javapoet.AnnotationSpec 实例源码
项目:shoebill
文件:ShoebillProcessor.java
private MethodSpec getSingletonSetterMethod(ClassName className, FieldSpec singletonField) {
ParameterSpec parameter = ParameterSpec
.builder(className, "wrapper")
.build();
AnnotationSpec visibleForTesting = AnnotationSpec
.builder(VisibleForTesting.class)
.addMember("otherwise", "VisibleForTesting.NONE")
.build();
return MethodSpec
.methodBuilder("setInstance")
.addAnnotation(visibleForTesting)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(parameter)
.addStatement("$N = $N", singletonField, parameter)
.build();
}
项目:GitHub
文件:IndexerGenerator.java
private static TypeSpec generate(List<TypeElement> libraryModules,
Class<? extends Annotation> annotation) {
AnnotationSpec.Builder annotationBuilder =
AnnotationSpec.builder(Index.class);
String value = getAnnotationValue(annotation);
for (TypeElement childModule : libraryModules) {
annotationBuilder.addMember(value, "$S", ClassName.get(childModule).toString());
}
String indexerName = INDEXER_NAME_PREFIX + annotation.getSimpleName() + "_";
for (TypeElement element : libraryModules) {
indexerName += element.getQualifiedName().toString().replace(".", "_");
indexerName += "_";
}
indexerName = indexerName.substring(0, indexerName.length() - 1);
return TypeSpec.classBuilder(indexerName)
.addAnnotation(annotationBuilder.build())
.addModifiers(Modifier.PUBLIC)
.build();
}
项目:GitHub
文件:RequestManagerGenerator.java
private MethodSpec generateAsMethod(String generatedCodePackageName, TypeSpec requestBuilder) {
TypeVariableName resourceType = TypeVariableName.get("ResourceType");
ParameterizedTypeName classOfResouceType = ParameterizedTypeName
.get(ClassName.get(Class.class), resourceType);
ClassName generatedRequestBuilderClassName =
ClassName.get(generatedCodePackageName, requestBuilder.name);
ParameterizedTypeName requestBuilderOfResourceType = ParameterizedTypeName
.get(generatedRequestBuilderClassName, resourceType);
return MethodSpec.methodBuilder("as")
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class)
.addTypeVariable(TypeVariableName.get("ResourceType"))
.addParameter(classOfResouceType, "resourceClass")
.addAnnotation(AnnotationSpec.builder(CHECK_RESULT_CLASS_NAME).build())
.returns(requestBuilderOfResourceType)
.addStatement("return new $T<>(glide, this, resourceClass, context)",
this.generatedRequestBuilderClassName)
.build();
}
项目: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();
}
项目:GitHub
文件:IndexerGenerator.java
private static TypeSpec generate(List<TypeElement> libraryModules,
Class<? extends Annotation> annotation) {
AnnotationSpec.Builder annotationBuilder =
AnnotationSpec.builder(Index.class);
String value = getAnnotationValue(annotation);
for (TypeElement childModule : libraryModules) {
annotationBuilder.addMember(value, "$S", ClassName.get(childModule).toString());
}
StringBuilder indexerName = new StringBuilder(
INDEXER_NAME_PREFIX + annotation.getSimpleName() + "_");
for (TypeElement element : libraryModules) {
indexerName.append(element.getQualifiedName().toString().replace(".", "_"));
indexerName.append("_");
}
indexerName = new StringBuilder(indexerName.substring(0, indexerName.length() - 1));
return TypeSpec.classBuilder(indexerName.toString())
.addAnnotation(annotationBuilder.build())
.addModifiers(Modifier.PUBLIC)
.build();
}
项目:raml-java-tools
文件:AnnotationSpecMatchers.java
public static Matcher<AnnotationSpec> hasMember(final String member) {
return new TypeSafeMatcher<AnnotationSpec>() {
@Override
protected boolean matchesSafely(AnnotationSpec item) {
return item.members.containsKey(member);
}
@Override
public void describeTo(Description description) {
description.appendText("has member " + member);
}
};
}
项目:shortbread
文件:CodeGenerator.java
void generate() {
TypeSpec shortbread = TypeSpec.classBuilder("ShortbreadGenerated")
.addAnnotation(AnnotationSpec.builder(suppressLint)
.addMember("value", "$S", "NewApi")
.addMember("value", "$S", "ResourceType")
.build())
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(createShortcuts())
.addMethod(callMethodShortcut())
.build();
JavaFile javaFile = JavaFile.builder("shortbread", shortbread)
.indent(" ")
.build();
try {
javaFile.writeTo(filer);
} catch (IOException e) {
e.printStackTrace();
}
}
项目:LifecycleAware
文件:LifecycleObserverGenerator.java
private MethodSpec defineLifecycleHook() {
final String methodName = "onLifecycleEvent";
Lifecycle.Event lifecycleEvent = annotatedElement.getAnnotation(LifecycleAware.class).value();
AnnotationSpec archLifeCycleSpec = AnnotationSpec.builder(OnLifecycleEvent.class)
.addMember(ANNOT_DEFAULT_NAME, "$T.$L", Lifecycle.Event.class, lifecycleEvent)
.build();
return MethodSpec.methodBuilder(lifecycleEvent.name())
.addAnnotation(archLifeCycleSpec)
.addModifiers(Modifier.PUBLIC)
.addStatement("$L.$L($T.$L)", FIELD_OBSERVER, methodName, Lifecycle.Event.class, lifecycleEvent)
.build();
}
项目:DUnit
文件:InitMethodUtil.java
/**
* 创建init方法,用于数据初始化
*
* @param methodName 方法名
* @param genericTypesClass ArrayList泛型的类型
* @param gsonDataString ArrayList被Gson转换出的字符串
* @param modelListVariableName GsonData被还原后的临时变量名
* @return 初始化方法的构造器
*/
public static MethodSpec.Builder createInitMethodSpecBuilder(String methodName, Class genericTypesClass, String gsonDataString, String modelListVariableName) {
String tmpStr;
//Override注解
AnnotationSpec annotation = createOverrideAnnotation();
//return type,返回值
ParameterizedType returnType = GenericTypesUtil.type(ArrayList.class, genericTypesClass);
//protected ArrayList<DUnitModel> initUnitModels(),函数声明
MethodSpec.Builder initMethodBuilder = MethodSpec
.methodBuilder(methodName)
.addModifiers(Modifier.PROTECTED)
.addAnnotation(annotation)
.returns(returnType);
//Gson gson = new Gson();
initMethodBuilder.addStatement("$T gson = new $T()", Gson.class, Gson.class);
//ParameterizedType type = GenericTypesUtil.type(ArrayList.class,DUnitModel.class);
initMethodBuilder.addStatement("$T type = $T.type($T.class,$T.class)", ParameterizedType.class, GenericTypesUtil.class, ArrayList.class, genericTypesClass);
//ArrayList<DUnitModel> unitModels = gson.fromJson(unitModelsString_c,type);
tmpStr = String.format("$T<$T> %s = gson.fromJson($S,type)", modelListVariableName);
initMethodBuilder.addStatement(tmpStr, ArrayList.class, genericTypesClass, gsonDataString);
return initMethodBuilder;
}
项目:json2java4idea
文件:GsonClassBuilder.java
@Nonnull
@Override
protected List<FieldSpec> buildFields() {
return getProperties()
.entrySet()
.stream()
.map(property -> {
final String name = property.getKey();
final TypeName type = property.getValue();
final String fieldName = fieldNamePolicy.convert(name, type);
return FieldSpec.builder(type, fieldName)
.addModifiers(Modifier.PRIVATE, Modifier.FINAL)
.addAnnotation(AnnotationSpec.builder(SerializedName.class)
.addMember("value", "$S", name)
.build())
.build();
})
.collect(Collectors.toList());
}
项目:jso-builder
文件:JSOBuilderProcessor.java
private TypeSpec createJsArrayInterface() {
TypeVariableName variableName = TypeVariableName.get("T");
return TypeSpec.classBuilder("JsArray")
.addModifiers(Modifier.STATIC, Modifier.FINAL)
.addTypeVariable(variableName)
.addAnnotation(AnnotationSpec.builder(ClassNames.JSINTEROP_JSTYPE)
.addMember("isNative", "true")
.addMember("namespace", "$T.GLOBAL", ClassNames.JSINTEROP_JSPACKAGE)
.addMember("name", "$S", "Array")
.build())
.addMethod(MethodSpec.methodBuilder("push")
.addModifiers(Modifier.PUBLIC, Modifier.NATIVE)
.addParameter(variableName, "item")
.build())
.build();
}
项目:jso-builder
文件:JSOBuilderProcessor.java
private TypeSpec createGlobalInterface() {
return TypeSpec.classBuilder("Global")
.addModifiers(Modifier.STATIC, Modifier.FINAL)
.addAnnotation(AnnotationSpec.builder(ClassNames.JSINTEROP_JSTYPE)
.addMember("isNative", "true")
.addMember("namespace", "$T.GLOBAL", ClassNames.JSINTEROP_JSPACKAGE)
.build())
.addFields(Stream.of(Object.class,
Boolean.TYPE, Byte.TYPE, Character.TYPE, Double.TYPE,
Float.TYPE, Integer.TYPE, Long.TYPE, Short.TYPE)
.map(type -> FieldSpec.builder(type, "UNDEFINED_" + type.getSimpleName().toUpperCase())
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addAnnotation(AnnotationSpec.builder(ClassNames.JSINTEROP_JSPROPERTY)
.addMember("namespace", "$T.GLOBAL", ClassNames.JSINTEROP_JSPACKAGE)
.addMember("name", "$S", "undefined")
.build())
.build())
.collect(Collectors.toList()))
.build();
}
项目: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();
}
项目:Jerkoff
文件:PojoCreatorImpl.java
/**
* genera classe di test per clazz
*
* @param clazz
* @param prop
* @param mongo
* @return
*/
@Override
public TypeSpec getTypeSpec(Class<?> clazz) {
Builder classTestBuilder = TypeSpec.classBuilder(clazz.getSimpleName() + TEST);
ClassName superClass = ClassName.get(
PropertiesUtils.getRequiredProperty(prop, PropertiesUtils.TEST_BASE_PACKAGE),
PropertiesUtils.getRequiredProperty(prop, PropertiesUtils.TEST_BASE_CLASS));
classTestBuilder.superclass(superClass);
classTestBuilder.addJavadoc("@author \n");
classTestBuilder.addModifiers(Modifier.PUBLIC);
AnnotationSpec.Builder annSpecBuilder = AnnotationSpec.builder(Generated.class);
annSpecBuilder.addMember("value", "\"it.fratta.jerkoff.Generator\"");
annSpecBuilder.addMember("date", "\"" + Calendar.getInstance().getTime().toString() + "\"");
AnnotationSpec annGenSpec = annSpecBuilder.build();
classTestBuilder.addAnnotation(annGenSpec);
/*
* for spring test
*/
// FieldSpec.Builder spec = FieldSpec.builder(clazz,
// getNewInstanceOfNoParameters(clazz), Modifier.PRIVATE);
// spec.addAnnotation(Autowired.class);
// classTestBuilder.addField(spec.build());
addClassMethodsToBuilder(classTestBuilder, clazz);
return classTestBuilder.build();
}
项目:java-code-templates
文件:TemplateSubstitutionVisitor.java
@Override
public DeferredTypeSpecBuilder visitTypeAsClass(final TypeElement element, final DeferredTypeSpecBuilder outerBuilder) {
final Collection<AnnotationSpec> descriptorAnnotations = descriptorInventory.typeAnnotations(element);
final TypeSubstitution substitution = applyDeclaredTypeSubstitution(element);
final DeferredTypeSpecBuilder innerBuilder = DeferredTypeSpecBuilder.create(classBuilder(substitution.raw())
.addTypeVariables(substitution.typeParameters())
.addModifiers(modifiers(element))
.addAnnotations(mergeAnnotations(copyableAnnotations(element), descriptorAnnotations))
.superclass(applyTypeSubstitution(element.getSuperclass())))
;
element.getInterfaces().forEach(iface -> innerBuilder.wrapped().addSuperinterface(applyTypeSubstitution(iface)));
element.getEnclosedElements().forEach(child -> visit(child, innerBuilder));
// If this is a nested type, we now roll up the new type into the parent.
return (outerBuilder != null)
? outerBuilder.addDeferred(innerBuilder)
: innerBuilder;
}
项目:java-code-templates
文件:TemplateSubstitutionVisitor.java
@Override
public DeferredTypeSpecBuilder visitTypeAsInterface(final TypeElement element, final DeferredTypeSpecBuilder outerBuilder) {
final Collection<AnnotationSpec> descriptorAnnotations = descriptorInventory.typeAnnotations(element);
final TypeSubstitution substitution = applyDeclaredTypeSubstitution(element);
final DeferredTypeSpecBuilder innerBuilder = DeferredTypeSpecBuilder.create(interfaceBuilder(substitution.raw())
.addTypeVariables(substitution.typeParameters())
.addModifiers(modifiers(element))
.addAnnotations(mergeAnnotations(copyableAnnotations(element), descriptorAnnotations)));
element.getInterfaces().forEach(iface -> innerBuilder.wrapped().addSuperinterface(applyTypeSubstitution(iface)));
element.getEnclosedElements().forEach(child -> visit(child, innerBuilder));
// If this is a nested type, we now roll up the new type into the parent.
return (outerBuilder != null)
? outerBuilder.addDeferred(innerBuilder)
: innerBuilder;
}
项目:java-code-templates
文件:TemplateSubstitutionVisitor.java
@Override
public DeferredTypeSpecBuilder visitTypeAsAnnotationType(final TypeElement element, final DeferredTypeSpecBuilder outerBuilder) {
// Annotation is the implicit parent interface here, but annotations
// can't have explicit super interfaces.
final Collection<AnnotationSpec> descriptorAnnotations = descriptorInventory.typeAnnotations(element);
final TypeSubstitution substitution = applyDeclaredTypeSubstitution(element);
final DeferredTypeSpecBuilder innerBuilder = DeferredTypeSpecBuilder.create(annotationBuilder(substitution.raw())
.addModifiers(modifiers(element))
.addAnnotations(mergeAnnotations(copyableAnnotations(element), descriptorAnnotations)));
element.getEnclosedElements().forEach(child -> visit(child, innerBuilder));
// If this is a nested type, we now roll up the new type into the parent.
return (outerBuilder != null)
? outerBuilder.addDeferred(innerBuilder)
: innerBuilder;
}
项目:java-code-templates
文件:TemplateSubstitutionVisitor.java
@Override
public DeferredTypeSpecBuilder visitTypeAsEnum(final TypeElement element, final DeferredTypeSpecBuilder outerBuilder) {
// An Enum must exclude the following implicitly-defined characteristics:
// - a 'final' modifier, which causes compiler errors when explicit.
// - valueOf() and values() methods.
final Collection<AnnotationSpec> descriptorAnnotations = descriptorInventory.typeAnnotations(element);
final TypeSubstitution substitution = applyDeclaredTypeSubstitution(element);
final DeferredTypeSpecBuilder innerBuilder = DeferredTypeSpecBuilder.create(enumBuilder(substitution.raw())
.addModifiers(modifiers(element))
.addAnnotations(mergeAnnotations(copyableAnnotations(element), descriptorAnnotations)));
element.getInterfaces().forEach(iface -> innerBuilder.wrapped().addSuperinterface(applyTypeSubstitution(iface)));
// Only traverse enclosed elements that are not implicit enum methods
element.getEnclosedElements().stream()
.filter(child -> !isImplicitEnumMethod(child))
.forEach(child -> visit(child, innerBuilder));
// If this is a nested type, we now roll up the new type into the parent.
return (outerBuilder != null)
? outerBuilder.addDeferred(innerBuilder)
: innerBuilder;
}
项目:vue-gwt
文件:ComponentInjectedDependenciesBuilder.java
/**
* Add an injected variable to our component
* @param element The {@link VariableElement} that was injected
* @param fieldName The name of the field
*/
private void addInjectedVariable(VariableElement element, String fieldName)
{
TypeName typeName = resolveVariableTypeName(element, messager);
// Create field
FieldSpec.Builder fieldBuilder = FieldSpec.builder(typeName, fieldName, Modifier.PUBLIC);
// Copy field annotations
element
.getAnnotationMirrors()
.stream()
.map(AnnotationSpec::get)
.forEach(fieldBuilder::addAnnotation);
// If the variable element is a method parameter, it might not have the Inject annotation
if (!hasInjectAnnotation(element))
fieldBuilder.addAnnotation(Inject.class);
// And add field
componentInjectedDependenciesBuilder.addField(fieldBuilder.build());
}
项目:StaticGson
文件:Annotations.java
public static AnnotationSpec suppressWarnings(String... warnings) {
AnnotationSpec.Builder builder = AnnotationSpec.builder(SuppressWarnings.class);
CodeBlock.Builder names = CodeBlock.builder();
boolean first = true;
for (String warning : warnings) {
if (first) {
names.add("$S", warning);
first = false;
} else {
names.add(", $S", warning);
}
}
if (warnings.length == 1) {
builder.addMember("value", names.build());
} else {
builder.addMember("value", "{$L}", names.build());
}
return builder.build();
}
项目:graylog-plugin-pipeline-processor
文件:CodeGenerator.java
@Override
public void enterRule(Rule rule) {
// generates a new ephemeral unique class name for each generated rule. Only valid for the runtime of the jvm
classFile = TypeSpec.classBuilder("rule$" + rule.id())
.addSuperinterface(GeneratedRule.class)
.addModifiers(Modifier.FINAL, Modifier.PUBLIC)
.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class)
.addMember("value", "$S", "unchecked")
.build()
)
.addMethod(MethodSpec.methodBuilder("name")
.returns(String.class)
.addAnnotation(Override.class)
.addModifiers(Modifier.PUBLIC)
.addStatement("return $S", rule.name())
.build()
);
constructorBuilder = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
.addParameter(FunctionRegistry.class, "functionRegistry");
lateConstructorBlock = CodeBlock.builder();
hoistedConstantExpressions = CodeBlock.builder();
}
项目:AndroidSupportAnnotationsHaiku
文件:RequiresPermission.java
public AnnotationSpec build() {
AnnotationSpec.Builder builder = SPEC.toBuilder();
if (value != null) {
builder.addMember("value", valueFormat, value);
}
if (allOf != null && allOf.size() > 0) {
builder.addMember("allOf", allOfFormat, allOf.toArray());
}
if (anyOf != null && anyOf.size() > 0) {
builder.addMember("anyOf", anyOfFormat, anyOf.toArray());
}
if (conditional != null) {
builder.addMember("conditional", conditionalFormat, conditional);
}
return builder.build();
}
项目:AndroidSupportAnnotationsHaiku
文件:Size.java
public AnnotationSpec build() {
AnnotationSpec.Builder builder = SPEC.toBuilder();
if (value != null) {
builder.addMember("value", valueFormat, value);
}
if (min != null) {
builder.addMember("min", minFormat, min);
}
if (max != null) {
builder.addMember("max", maxFormat, max);
}
if (multiple != null) {
builder.addMember("multiple", multipleFormat, multiple);
}
return builder.build();
}
项目:AndroidSupportAnnotationsHaiku
文件:FloatRange.java
public AnnotationSpec build() {
AnnotationSpec.Builder builder = SPEC.toBuilder();
if (from != null) {
builder.addMember("from", fromFormat, this.from);
}
if (to != null) {
builder.addMember("to", toFormat, this.to);
}
if (fromInclusive != null) {
builder.addMember("fromInclusive", fromInclusiveFormat, this.fromInclusive);
}
if (toInclusive != null) {
builder.addMember("toInclusive", toInclusiveFormat, this.toInclusive);
}
return builder.build();
}
项目:Mockery
文件:BrewJavaFile.java
private MethodSpec methodOneIllegalParam(ClassName className,
Method method, Param param, int orderTest) {
String methodName = String
.format("When_Call_%s_With_Illegal_%s_Then_Get_Exception", method.name, param.name);
MethodSpec.Builder builder = MethodSpec.methodBuilder(methodName)
.addAnnotation(Test.class)
.addAnnotation(AnnotationSpec.builder(Order.class)
.addMember("value", "$L", orderTest)
.build())
.addModifiers(Modifier.PUBLIC)
.returns(void.class);
initializeRobot(className, method, builder);
variablesForParams(method.params, param, builder);
response(className, method, true, builder);
return builder.build();
}
项目:Mockery
文件:BrewJavaFile.java
private MethodSpec methodAllParamLegals(ClassName className,
Method method, int orderTest) {
String methodName = String
.format("When_Call_%s_Then_Get_Response", method.name);
MethodSpec.Builder builder = MethodSpec.methodBuilder(methodName)
.addAnnotation(Test.class)
.addAnnotation(AnnotationSpec.builder(Order.class)
.addMember("value", "$L", orderTest)
.build())
.addModifiers(Modifier.PUBLIC)
.returns(void.class);
initializeRobot(className, method, builder);
variablesForParams(method.params, null, builder);
response(className, method, false, builder);
return builder.build();
}
项目:pojo-updater-compiler
文件:ManagerGenerator.java
private MethodSpec generateGetUpdaterMethod(FieldSpec mapField) {
TypeVariableName typeVariableName = TypeVariableName.get("T");
ParameterizedTypeName returnType = ParameterizedTypeName.get(ClassName.get(Updater.class), typeVariableName);
ParameterSpec parameterSpec = ParameterSpec.builder(
ParameterizedTypeName.get(ClassName.get(Class.class), typeVariableName),
"tClass"
).build();
final String returnVariableName = "updater";
return MethodSpec.methodBuilder("getUpdater")
.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class)
.addMember("value", "$S", "unchecked")
.build())
.addModifiers(Modifier.PUBLIC)
.addTypeVariable(typeVariableName)
.addParameter(parameterSpec)
.returns(returnType)
.addStatement("$T $N = ($T)$N.get($N)", returnType, returnVariableName, returnType, mapField, parameterSpec)
.beginControlFlow("if ($N == null)", returnVariableName)
.addStatement("throw new $T(\"Updater for $N not found\")", RuntimeException.class, parameterSpec)
.endControlFlow()
.addStatement("return updater")
.build();
}
项目:thrifty
文件:ThriftyCodeGenerator.java
private AnnotationSpec suppressWarnings(Collection<String> warnings) {
AnnotationSpec.Builder anno = AnnotationSpec.builder(SuppressWarnings.class);
if (warnings.isEmpty()) {
throw new IllegalArgumentException("No warnings present - compiler error?");
}
if (warnings.size() == 1) {
anno.addMember("value", "$S", Iterables.get(warnings, 0));
} else {
StringBuilder sb = new StringBuilder("{");
for (String warning : warnings) {
sb.append("\"");
sb.append(warning);
sb.append("\", ");
}
sb.setLength(sb.length() - 2);
sb.append("}");
anno.addMember("value", "$L", sb.toString());
}
return anno.build();
}
项目:thrifty
文件:ThriftyCodeGenerator.java
private static AnnotationSpec fieldAnnotation(Field field) {
AnnotationSpec.Builder ann = AnnotationSpec.builder(ThriftField.class)
.addMember("fieldId", "$L", field.id());
if (field.required()) {
ann.addMember("isRequired", "$L", field.required());
}
if (field.optional()) {
ann.addMember("isOptional", "$L", field.optional());
}
String typedef = field.typedefName();
if (!Strings.isNullOrEmpty(typedef)) {
ann = ann.addMember("typedefName", "$S", typedef);
}
return ann.build();
}
项目:annotated-mvp
文件:TriggerType.java
@Override
protected TypeSpec.Builder build()
{
String params = "{";
ClassName[] vars = new ClassName[viewElements.size()];
int i = 0;
for (Iterator<Element> it = viewElements.iterator(); it.hasNext(); i++)
{
Element element = it.next();
params += "$T.class";
vars[i] = ClassName.bestGuess(element.asType().toString());
if (i < viewElements.size() - 1)
{
params += ", ";
}
}
params += "}";
AnnotationSpec.Builder annotationBuilder = AnnotationSpec.builder(Generate.class);
annotationBuilder.addMember("views", params, (Object[]) vars);
annotationBuilder.addMember("application", "$T.class", applicationClassName);
return TypeSpec.classBuilder("Trigger")
.addModifiers(Modifier.ABSTRACT)
.addAnnotation(annotationBuilder.build());
}
项目:tiger
文件:NewInjectorGenerator.java
/**
* Returns {@link #getSourceCodeName}(qualifier) + "__" + {@link #getSourceCodeName} (type), or
* {@link #getSourceCodeName}(type) if no qualifier.
*/
private String getSourceCodeName(NewBindingKey key) {
// System.out.println("getMethodName for key: " + key);
StringBuilder builder = new StringBuilder();
AnnotationSpec qualifier = key.getQualifier();
if (qualifier != null) {
ClassName qualifierType = (ClassName) qualifier.type;
builder.append(Utils.getSourceCodeName(qualifierType));
/**
* TODO(freeman): handle all illegal chars.
*/
if (Utils.getCanonicalName(qualifierType).equals(Named.class.getCanonicalName())) {
builder.append("_").append(qualifier.members.get("value").toString().replace("\"", "_")
.replace("[", "_").replace("]", "_"));
}
builder.append("__");
}
builder.append(Utils.getSourceCodeName(key.getTypeName()));
return builder.toString();
}
项目:JaxRs2Retrofit
文件:RetrofitGenerator.java
private AnnotationSpec createContentTypeAnnotation(
EvaluatingVisitor evaluatingVisitor,
JavaAnnotation consumesAnnotation) {
AnnotationValue annotationValue = consumesAnnotation.getProperty("value");
String stringAnnotationValue = annotationValue.getParameterValue().toString();
String value = null;
if (stringAnnotationValue.startsWith(MediaType.class.getSimpleName() + ".")) {
String[] token = stringAnnotationValue.split("\\.");
try {
value = (String) MediaType.class.getDeclaredField(token[1]).get(null);
} catch (Exception e) {
e.printStackTrace(System.err);
}
} else {
value = consumesAnnotation.getProperty("value").accept(evaluatingVisitor).toString();
}
return AnnotationSpec.builder(Headers.class)
.addMember("value", "\"Content-type: " + value + "\"")
.build();
}
项目:OnActivityResult
文件:ActivityResultClass.java
JavaFile brewJava() {
final TypeSpec.Builder result = TypeSpec.classBuilder(generatedClassName).addModifiers(PUBLIC);
result.addTypeVariable(TypeVariableName.get(TYPE_VARIABLE_NAME, targetTypeName));
final TypeVariableName typeVariableName = TypeVariableName.get(TYPE_VARIABLE_NAME);
if (superActivityResultClass != null) {
result.superclass(ParameterizedTypeName.get(ClassName.bestGuess(superActivityResultClass), typeVariableName));
} else {
result.addSuperinterface(ParameterizedTypeName.get(ACTIVITY_ON_RESULT, typeVariableName));
}
result.addMethod(this.createOnResultMethod());
if (shouldAddGeneratedAnnotation) {
result.addAnnotation(AnnotationSpec.builder(Generated.class).addMember("value", "$S", OnActivityResultProcessor.class.getCanonicalName()).build());
}
return JavaFile.builder(generatedClassName.packageName(), result.build()).skipJavaLangImports(true).addFileComment("Generated code from OnActivityResult. Do not modify!").build();
}
项目:Akatsuki
文件:BuilderIntegrationTestBase.java
protected TestSource createTestSource(AnnotationSpec spec, String packageName,
Class<?> parentClass, TestField... fields) {
final HashSet<TestField> set = Sets.newHashSet(fields);
if (set.size() != fields.length)
throw new IllegalArgumentException("Duplicate fields are not allowed");
// mockito explodes if the classes are not public...
// we use abstract just in case of our superclass is abstract too
final TestSource source = new TestSource(packageName, generateClassName(), Modifier.PUBLIC,
Modifier.ABSTRACT).appendFields(set.stream().map(f -> {
if (!(f instanceof ArgTestField)) {
f.fieldSpecBuilder().addAnnotation(Arg.class);
}
return f.createFieldSpec();
}).collect(Collectors.toList()));
if (spec != null)
source.appendTransformation((b, s) -> b.addAnnotation(spec));
if (parentClass != null)
source.appendTransformation((builder, s) -> builder.superclass(parentClass));
return source;
}
项目:Knight
文件:BaseClassBuilder.java
/**
* Returns list of all annotations given <code>element</code> has.
*
* @param element Element.
*/
public List<AnnotationSpec> getQualifiers(Element element) {
List<AnnotationSpec> list = new ArrayList<>();
for (AnnotationMirror a : element.getAnnotationMirrors()) {
if (a.getAnnotationType().asElement().getAnnotation(Qualifier.class) == null) {
continue; // ignore non-Qualifier annotations
}
ClassName annotationClassName = (ClassName) ClassName.get(a.getAnnotationType());
AnnotationSpec.Builder annotation = AnnotationSpec.builder(annotationClassName);
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : a.getElementValues().entrySet()) {
String format = (entry.getValue().getValue() instanceof String) ? "$S" : "$L";
annotation.addMember(entry.getKey().getSimpleName().toString(), format, entry.getValue().getValue());
}
list.add(annotation.build());
}
return list;
}
项目:exovert
文件:AccessorGenerator.java
private static ParameterSpec getSpec(ColumnMetadata column, boolean addAnnotation) {
String name = column.getName();
String paramName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name);
ParameterSpec.Builder param;
if (Udt.instance.isUdt(column.getType())) {
throw new IllegalArgumentException("We don't currently support UDT primary keys in the query string, field: "
+ column.getName());
} else {
param = ParameterSpec.builder(EntityGeneratorHelper.getRawType(column.getType()), paramName);
}
if(addAnnotation) {
param.addAnnotation(AnnotationSpec.builder(Param.class).addMember("value", "$S", name).build());
}
return param.addModifiers(Modifier.FINAL).build();
}
项目:Kinject
文件:CodeGen.java
private static void writeClassFile(String packageName, TypeSpec classSpec, Filer filer) throws ProcessorException {
try {
AnnotationSpec generatedAnnotation = AnnotationSpec.builder(Generated.class)
.addMember("value", "$S", CODE_GEN)
.build();
classSpec = classSpec.toBuilder()
.addAnnotation(generatedAnnotation)
.build();
JavaFile javaFile = JavaFile.builder(packageName, classSpec)
.skipJavaLangImports(true)
.build();
javaFile.writeTo(filer);
} catch (IOException e) {
throw new ProcessorException("Cannot generate code file %s.%s.", packageName, classSpec.name);
}
}
项目:anno4j
文件:PropertySchemaAnnotationSupport.java
/**
* Constructs a container annotation of the given type and content.
* @param containerType The type of the container annotation.
* @param content The annotations to be contained.
* @return Returns the container annotation specification.
*/
private static AnnotationSpec buildContainer(Class<?> containerType, Collection<AnnotationSpec> content) {
// Build content of container annotation as string:
CodeBlock.Builder inner = CodeBlock.builder().add("{");
Iterator<AnnotationSpec> contentIterator = content.iterator();
while (contentIterator.hasNext()) {
inner.add("$L", contentIterator.next());
if(contentIterator.hasNext()) {
inner.add(", ");
}
}
inner.add("}");
return AnnotationSpec.builder(containerType)
.addMember("value", inner.build())
.build();
}
项目:poetry
文件:PoetryTest.java
@Test
public void createSimpleAnnotationWithTypeSpec() {
AnnotationSpec spec = Poetry.annotation(AnnotationC.class, "test");
TypeSpec taco = TypeSpec.classBuilder("Taco")
.addAnnotation(spec)
.build();
assertEquals(toString(taco), ""
+ "package com.squareup.tacos;\n"
+ "\n"
+ "import " + getClass().getCanonicalName() + ";\n"
+ "\n"
+ "@" + getClass().getSimpleName() + ".AnnotationC(\"test\")\n"
+ "class Taco {\n"
+ "}\n");
}
项目:Android-Orma
文件:Annotations.java
public static AnnotationSpec suppressWarnings(String... warnings) {
AnnotationSpec.Builder builder = AnnotationSpec.builder(SuppressWarnings.class);
CodeBlock.Builder names = CodeBlock.builder();
boolean first = true;
for (String warning : warnings) {
if (first) {
names.add("$S", warning);
first = false;
} else {
names.add(", $S", warning);
}
}
if (warnings.length == 1) {
builder.addMember("value", names.build());
} else {
builder.addMember("value", "{$L}", names.build());
}
return builder.build();
}