Open Source Repository

Home /junit/junit-4.10 | Repository Home



org/junit/runners/model/FrameworkField.java
package org.junit.runners.model;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import org.junit.runners.BlockJUnit4ClassRunner;

/**
 * Represents a field on a test class (currently used only for Rules in
 {@link BlockJUnit4ClassRunner}, but custom runners can make other uses)
 */
public class FrameworkField extends FrameworkMember<FrameworkField> {
  private final Field fField;

  FrameworkField(Field field) {
    fField= field;
  }

  public String getName() {
    return getField().getName();
  }

  @Override
  public Annotation[] getAnnotations() {
    return fField.getAnnotations();
  }

  public boolean isPublic() {
    int modifiers= fField.getModifiers();
    return Modifier.isPublic(modifiers);
  }

  @Override
  public boolean isShadowedBy(FrameworkField otherMember) {
    return otherMember.getName().equals(getName());
  }

  public boolean isStatic() {
    int modifiers= fField.getModifiers();
    return Modifier.isStatic(modifiers);
  }

  /**
   @return the underlying java Field
   */
  public Field getField() {
    return fField;
  }

  /**
   @return the underlying Java Field type
   @see java.lang.reflect.Field#getType()
   */
  public Class<?> getType() {
    return fField.getType();
  }

  /**
   * Attempts to retrieve the value of this field on {@code target}
   */
  public Object get(Object targetthrows IllegalArgumentException, IllegalAccessException {
    return fField.get(target);
  }
}