本文整理汇总了Java中org.codehaus.groovy.transform.AbstractASTTransformation类的典型用法代码示例。如果您正苦于以下问题:Java AbstractASTTransformation类的具体用法?Java AbstractASTTransformation怎么用?Java AbstractASTTransformation使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
AbstractASTTransformation类属于org.codehaus.groovy.transform包,在下文中一共展示了AbstractASTTransformation类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: copyAnnotatedNodeAnnotations
import org.codehaus.groovy.transform.AbstractASTTransformation; //导入依赖的package包/类
/**
* Copies all <tt>candidateAnnotations</tt> with retention policy {@link java.lang.annotation.RetentionPolicy#RUNTIME}
* and {@link java.lang.annotation.RetentionPolicy#CLASS}.
* <p>
* Annotations with {@link org.codehaus.groovy.runtime.GeneratedClosure} members are not supported at present.
*/
public static void copyAnnotatedNodeAnnotations(final AnnotatedNode annotatedNode, final List<AnnotationNode> copied, List<AnnotationNode> notCopied) {
List<AnnotationNode> annotationList = annotatedNode.getAnnotations();
for (AnnotationNode annotation : annotationList) {
List<AnnotationNode> annotations = annotation.getClassNode().getAnnotations(AbstractASTTransformation.RETENTION_CLASSNODE);
if (annotations.isEmpty()) continue;
if (hasClosureMember(annotation)) {
notCopied.add(annotation);
continue;
}
AnnotationNode retentionPolicyAnnotation = annotations.get(0);
Expression valueExpression = retentionPolicyAnnotation.getMember("value");
if (!(valueExpression instanceof PropertyExpression)) continue;
PropertyExpression propertyExpression = (PropertyExpression) valueExpression;
boolean processAnnotation =
propertyExpression.getProperty() instanceof ConstantExpression &&
(
"RUNTIME".equals(((ConstantExpression) (propertyExpression.getProperty())).getValue()) ||
"CLASS".equals(((ConstantExpression) (propertyExpression.getProperty())).getValue())
);
if (processAnnotation) {
AnnotationNode newAnnotation = new AnnotationNode(annotation.getClassNode());
for (Map.Entry<String, Expression> member : annotation.getMembers().entrySet()) {
newAnnotation.addMember(member.getKey(), member.getValue());
}
newAnnotation.setSourcePosition(annotatedNode);
copied.add(newAnnotation);
}
}
}
开发者ID:apache,项目名称:groovy,代码行数:42,代码来源:GeneralUtils.java
示例2: filterFields
import org.codehaus.groovy.transform.AbstractASTTransformation; //导入依赖的package包/类
private static List<FieldNode> filterFields(List<FieldNode> fieldNodes, List<String> includes, List<String> excludes, boolean allNames) {
List<FieldNode> fields = new ArrayList<FieldNode>();
for (FieldNode fNode : fieldNodes) {
if (AbstractASTTransformation.shouldSkipUndefinedAware(fNode.getName(), excludes, includes, allNames)) continue;
fields.add(fNode);
}
return fields;
}
开发者ID:apache,项目名称:groovy,代码行数:9,代码来源:InitializerStrategy.java
示例3: checkForSystemProperties
import org.codehaus.groovy.transform.AbstractASTTransformation; //导入依赖的package包/类
private void checkForSystemProperties(AnnotationNode node) {
systemProperties = new HashMap<String, String>();
List<String> nameValueList = AbstractASTTransformation.getMemberStringList(node, SYSTEM_PROPERTIES_SETTING);
if (nameValueList != null) {
for (String nameValue : nameValueList) {
int equalsDelim = nameValue.indexOf('=');
if (equalsDelim != -1) {
systemProperties.put(nameValue.substring(0, equalsDelim), nameValue.substring(equalsDelim + 1));
}
}
}
}
开发者ID:apache,项目名称:groovy,代码行数:13,代码来源:GrabAnnotationTransformation.java
示例4: build
import org.codehaus.groovy.transform.AbstractASTTransformation; //导入依赖的package包/类
public void build(BuilderASTTransformation transform, AnnotatedNode annotatedNode, AnnotationNode anno) {
if (!(annotatedNode instanceof ClassNode)) {
transform.addError("Error during " + BuilderASTTransformation.MY_TYPE_NAME + " processing: building for " +
annotatedNode.getClass().getSimpleName() + " not supported by " + getClass().getSimpleName(), annotatedNode);
return;
}
ClassNode buildee = (ClassNode) annotatedNode;
if (unsupportedAttribute(transform, anno, "builderClassName")) return;
if (unsupportedAttribute(transform, anno, "buildMethodName")) return;
if (unsupportedAttribute(transform, anno, "builderMethodName")) return;
if (unsupportedAttribute(transform, anno, "forClass")) return;
if (unsupportedAttribute(transform, anno, "includeSuperProperties")) return;
if (unsupportedAttribute(transform, anno, "allProperties")) return;
boolean useSetters = transform.memberHasValue(anno, "useSetters", true);
boolean allNames = transform.memberHasValue(anno, "allNames", true);
List<String> excludes = new ArrayList<String>();
List<String> includes = new ArrayList<String>();
includes.add(Undefined.STRING);
if (!getIncludeExclude(transform, anno, buildee, excludes, includes)) return;
if (includes.size() == 1 && Undefined.isUndefined(includes.get(0))) includes = null;
String prefix = getMemberStringValue(anno, "prefix", "set");
List<FieldNode> fields = getFields(transform, anno, buildee);
if (includes != null) {
for (String name : includes) {
checkKnownField(transform, anno, name, fields);
}
}
for (FieldNode field : fields) {
String fieldName = field.getName();
if (!AbstractASTTransformation.shouldSkipUndefinedAware(fieldName, excludes, includes, allNames)) {
String methodName = getSetterName(prefix, fieldName);
Parameter parameter = param(field.getType(), fieldName);
buildee.addMethod(methodName, Opcodes.ACC_PUBLIC, newClass(buildee), params(parameter), NO_EXCEPTIONS, block(
stmt(useSetters && !field.isFinal()
? callThisX(getSetterName("set", fieldName), varX(parameter))
: assignX(fieldX(field), varX(parameter))
),
returnS(varX("this")))
);
}
}
}
开发者ID:apache,项目名称:groovy,代码行数:44,代码来源:SimpleStrategy.java
注:本文中的org.codehaus.groovy.transform.AbstractASTTransformation类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论