org.codehaus.groovy.ast.FieldNode.getOwner()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(10.9k)|赞(0)|评价(0)|浏览(110)

本文整理了Java中org.codehaus.groovy.ast.FieldNode.getOwner()方法的一些代码示例,展示了FieldNode.getOwner()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。FieldNode.getOwner()方法的具体详情如下:
包路径:org.codehaus.groovy.ast.FieldNode
类名称:FieldNode
方法名:getOwner

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());
}

相关文章