本文整理了Java中org.codehaus.groovy.ast.FieldNode.getOwner()
方法的一些代码示例,展示了FieldNode.getOwner()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。FieldNode.getOwner()
方法的具体详情如下:
包路径:org.codehaus.groovy.ast.FieldNode
类名称:FieldNode
方法名:getOwner
暂无
代码示例来源:origin: spockframework/spock
public static boolean isWildcardRef(Expression expr) {
VariableExpression varExpr = ObjectUtil.asInstance(expr, VariableExpression.class);
if (varExpr == null || !varExpr.getName().equals(Wildcard.INSTANCE.toString())) return false;
Variable accessedVar = varExpr.getAccessedVariable();
if (!(accessedVar instanceof FieldNode)) return false;
return ((FieldNode) accessedVar).getOwner().getName().equals(Specification.class.getName());
}
代码示例来源:origin: org.codehaus.groovy/groovy
static String helperGetterName(final FieldNode field) {
return remappedFieldName(unwrapOwner(field.getOwner()), field.getName()) + DIRECT_GETTER_SUFFIX;
}
代码示例来源:origin: org.codehaus.groovy/groovy
static String helperSetterName(final FieldNode field) {
return remappedFieldName(unwrapOwner(field.getOwner()), field.getName()) + DIRECT_SETTER_SUFFIX;
}
代码示例来源:origin: org.codehaus.groovy/groovy
@Override
public void visitClass(ClassNode node) {
FieldNode logField = node.getField(logFieldName);
if (logField != null && logField.getOwner().equals(node)) {
addError("Class annotated with Log annotation cannot have log field declared", logField);
} else if (logField != null && !Modifier.isPrivate(logField.getModifiers())) {
addError("Class annotated with Log annotation cannot have log field declared because the field exists in the parent class: " + logField.getOwner().getName(), logField);
} else {
logNode = loggingStrategy.addLoggerFieldToClass(node, logFieldName, categoryName);
}
super.visitClass(node);
}
代码示例来源:origin: org.codehaus.groovy/groovy
/**
* RHS instance field. should move most of the code in the BytecodeHelper
*
* @param fldExp
*/
public void loadInstanceField(FieldExpression fldExp) {
MethodVisitor mv = controller.getMethodVisitor();
FieldNode field = fldExp.getField();
boolean holder = field.isHolder() && !controller.isInClosureConstructor();
ClassNode type = field.getType();
String ownerName = (field.getOwner().equals(controller.getClassNode()))
? controller.getInternalClassName()
: BytecodeHelper.getClassInternalName(field.getOwner());
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, ownerName, fldExp.getFieldName(), BytecodeHelper.getTypeDescription(type));
if (holder) {
mv.visitMethodInsn(INVOKEVIRTUAL, "groovy/lang/Reference", "get", "()Ljava/lang/Object;", false);
controller.getOperandStack().push(ClassHelper.OBJECT_TYPE);
} else {
controller.getOperandStack().push(field.getType());
}
}
代码示例来源:origin: org.codehaus.groovy/groovy
/**
* @param fldExp
*/
public void loadStaticField(FieldExpression fldExp) {
MethodVisitor mv = controller.getMethodVisitor();
FieldNode field = fldExp.getField();
boolean holder = field.isHolder() && !controller.isInClosureConstructor();
ClassNode type = field.getType();
String ownerName = (field.getOwner().equals(controller.getClassNode()))
? controller.getInternalClassName()
: BytecodeHelper.getClassInternalName(field.getOwner());
if (holder) {
mv.visitFieldInsn(GETSTATIC, ownerName, fldExp.getFieldName(), BytecodeHelper.getTypeDescription(type));
mv.visitMethodInsn(INVOKEVIRTUAL, "groovy/lang/Reference", "get", "()Ljava/lang/Object;", false);
controller.getOperandStack().push(ClassHelper.OBJECT_TYPE);
} else {
mv.visitFieldInsn(GETSTATIC, ownerName, fldExp.getFieldName(), BytecodeHelper.getTypeDescription(type));
controller.getOperandStack().push(field.getType());
}
}
代码示例来源:origin: org.codehaus.groovy/groovy
private void storeStaticField(FieldExpression expression) {
MethodVisitor mv = controller.getMethodVisitor();
FieldNode field = expression.getField();
boolean holder = field.isHolder() && !controller.isInClosureConstructor();
controller.getOperandStack().doGroovyCast(field);
String ownerName = (field.getOwner().equals(controller.getClassNode())) ?
controller.getInternalClassName() : BytecodeHelper.getClassInternalName(field.getOwner());
if (holder) {
controller.getOperandStack().box();
mv.visitFieldInsn(GETSTATIC, ownerName, expression.getFieldName(), BytecodeHelper.getTypeDescription(field.getType()));
mv.visitInsn(SWAP);
mv.visitMethodInsn(INVOKEVIRTUAL, "groovy/lang/Reference", "set", "(Ljava/lang/Object;)V", false);
} else {
mv.visitFieldInsn(PUTSTATIC, ownerName, expression.getFieldName(), BytecodeHelper.getTypeDescription(field.getType()));
}
controller.getOperandStack().remove(1);
}
代码示例来源:origin: org.codehaus.groovy/groovy
OperandStack operandStack = controller.getOperandStack();
if (field.isStatic()) {
mv.visitFieldInsn(GETSTATIC, BytecodeHelper.getClassInternalName(field.getOwner()), fieldName, BytecodeHelper.getTypeDescription(replacementType));
operandStack.push(replacementType);
} else {
mv.visitLabel(doGet);
if (!operandStack.getTopOperand().isDerivedFrom(field.getOwner())) {
mv.visitTypeInsn(CHECKCAST, BytecodeHelper.getClassInternalName(field.getOwner()));
mv.visitFieldInsn(GETFIELD, BytecodeHelper.getClassInternalName(field.getOwner()), fieldName, BytecodeHelper.getTypeDescription(replacementType));
if (safe) {
if (ClassHelper.isPrimitiveType(replacementType)) {
代码示例来源:origin: org.codehaus.groovy/groovy
private void storeThisInstanceField(FieldExpression expression) {
MethodVisitor mv = controller.getMethodVisitor();
FieldNode field = expression.getField();
boolean setReferenceFromReference = field.isHolder() && expression.isUseReferenceDirectly();
String ownerName = (field.getOwner().equals(controller.getClassNode())) ?
controller.getInternalClassName() : BytecodeHelper.getClassInternalName(field.getOwner());
OperandStack operandStack = controller.getOperandStack();
if (setReferenceFromReference) {
// rhs is ready to use reference, just put it in the field
mv.visitVarInsn(ALOAD, 0);
operandStack.push(controller.getClassNode());
operandStack.swap();
mv.visitFieldInsn(PUTFIELD, ownerName, field.getName(), BytecodeHelper.getTypeDescription(field.getType()));
} else if (field.isHolder()){
// rhs is normal value, set the value in the Reference
operandStack.doGroovyCast(field.getOriginType());
operandStack.box();
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, ownerName, expression.getFieldName(), BytecodeHelper.getTypeDescription(field.getType()));
mv.visitInsn(SWAP);
mv.visitMethodInsn(INVOKEVIRTUAL, "groovy/lang/Reference", "set", "(Ljava/lang/Object;)V", false);
} else {
// rhs is normal value, set normal value
operandStack.doGroovyCast(field.getOriginType());
mv.visitVarInsn(ALOAD, 0);
operandStack.push(controller.getClassNode());
operandStack.swap();
mv.visitFieldInsn(PUTFIELD, ownerName, field.getName(), BytecodeHelper.getTypeDescription(field.getType()));
}
}
代码示例来源:origin: org.codehaus.groovy/groovy
delegate.name = fieldNode.getName();
delegate.type = fieldNode.getType();
delegate.owner = fieldNode.getOwner();
delegate.getOp = varX(fieldNode);
delegate.origin = "field";
代码示例来源:origin: org.codehaus.groovy/groovy
private boolean setField(PropertyExpression expression, Expression objectExpression, ClassNode rType, String name) {
if (expression.isSafe()) return false;
FieldNode fn = AsmClassGenerator.getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(controller.getClassNode(), rType, name, false);
if (fn==null) return false;
OperandStack stack = controller.getOperandStack();
stack.doGroovyCast(fn.getType());
MethodVisitor mv = controller.getMethodVisitor();
String ownerName = BytecodeHelper.getClassInternalName(fn.getOwner());
if (!fn.isStatic()) {
controller.getCompileStack().pushLHS(false);
objectExpression.visit(controller.getAcg());
controller.getCompileStack().popLHS();
if (!rType.equals(stack.getTopOperand())) {
BytecodeHelper.doCast(mv, rType);
stack.replace(rType);
}
stack.swap();
mv.visitFieldInsn(PUTFIELD, ownerName, name, BytecodeHelper.getTypeDescription(fn.getType()));
stack.remove(1);
} else {
mv.visitFieldInsn(PUTSTATIC, ownerName, name, BytecodeHelper.getTypeDescription(fn.getType()));
}
//mv.visitInsn(ACONST_NULL);
//stack.replace(OBJECT_TYPE);
return true;
}
代码示例来源:origin: org.codehaus.groovy/groovy
String dummyFieldName = String.format("$0x%04x", mods) + Traits.remappedFieldName(field.getOwner(), field.getName());
FieldNode dummyField = new FieldNode(
dummyFieldName,
Traits.remappedFieldName(field.getOwner(), field.getName());
dummyField = new FieldNode(
dummyFieldName,
代码示例来源:origin: org.codehaus.groovy/groovy
operandStack.doGroovyCast(fn.getOriginType());
mv.visitFieldInsn(fn.isStatic() ? PUTSTATIC : PUTFIELD,
BytecodeHelper.getClassInternalName(fn.getOwner()),
property,
BytecodeHelper.getTypeDescription(fn.getOriginType()));
代码示例来源:origin: org.kohsuke.droovy/groovy
public void putField(FieldNode fld) {
putField(fld, getClassInternalName(fld.getOwner()));
}
代码示例来源:origin: org.codehaus.groovy/groovy-jdk14
public void putField(FieldNode fld) {
putField(fld, getClassInternalName(fld.getOwner()));
}
代码示例来源:origin: org.codehaus.groovy/groovy-all-minimal
public void putField(FieldNode fld) {
putField(fld, getClassInternalName(fld.getOwner()));
}
代码示例来源:origin: org.chromattic/chromattic.groovy
public void removeChromatticField(ClassNode classNode) {
Iterator<FieldNode> it = classNode.getFields().iterator();
while(it.hasNext()) {
FieldNode fieldNode = it.next();
if (GroovyUtils.isChromatticAnnoted(GroovyUtils.getGetter(classNode, fieldNode))) {
it.remove();
fieldNode.getOwner().redirect().renameField(fieldNode.getName(), fieldNode.getName() + "_");
}
}
}
}
代码示例来源:origin: com.thinkaurelius.groovy-shaded-asm/groovy-shaded-asm
@Override
public void visitClass(ClassNode node) {
FieldNode logField = node.getField(logFieldName);
if (logField != null && logField.getOwner().equals(node)) {
addError("Class annotated with Log annotation cannot have log field declared", logField);
} else if (logField != null && !Modifier.isPrivate(logField.getModifiers())) {
addError("Class annotated with Log annotation cannot have log field declared because the field exists in the parent class: " + logField.getOwner().getName(), logField);
} else {
logNode = loggingStrategy.addLoggerFieldToClass(node, logFieldName);
}
super.visitClass(node);
}
代码示例来源:origin: org.codehaus.griffon/griffon-groovy-compile
/**
* Creates a copy of a FieldNode with a new name and, optionally, a new type.
*
* @param newName The name for the new field node.
* @param newType The new type of the field. If null, the old FieldNode's type will be used.
* @param f The FieldNode to copy.
*
* @return The new FieldNode.
*/
private FieldNode createFieldNodeCopy(String newName, ClassNode newType, FieldNode f) {
if (newType == null) { newType = f.getType(); }
newType = newType.getPlainNodeReference();
return new FieldNode(newName, f.getModifiers(), newType, f.getOwner(), f.getInitialValueExpression());
}
代码示例来源:origin: org.codehaus.groovyfx/groovyfx
/**
* Creates a copy of a FieldNode with a new name and, optionally, a new type.
*
* @param newName The name for the new field node.
* @param newType The new type of the field. If null, the old FieldNode's type will be used.
* @param f The FieldNode to copy.
* @return The new FieldNode.
*/
private FieldNode createFieldNodeCopy(String newName, ClassNode newType, FieldNode f) {
if (newType == null)
newType = f.getType();
newType = newType.getPlainNodeReference();
return new FieldNode(newName, f.getModifiers(), newType, f.getOwner(), f.getInitialValueExpression());
}
内容来源于网络,如有侵权,请联系作者删除!