Beispiel #1
0
  private static void findFields(
      ThreadContext context,
      RubyModule topModule,
      IRubyObject args[],
      boolean asReader,
      boolean asWriter) {
    Map<String, String> fieldMap = getFieldListFromArgs(args);

    for (RubyModule module = topModule; module != null; module = module.getSuperClass()) {
      Class<?> javaClass = getJavaClass(context, module);

      // Hit a non-java proxy class (included Modules can be a cause of this...skip)
      if (javaClass == null) continue;

      Field[] fields = JavaClass.getDeclaredFields(javaClass);
      for (int j = 0; j < fields.length; j++) {
        installField(context, fieldMap, fields[j], module, asReader, asWriter);
      }
    }

    // We could not find all of them print out first one (we could print them all?)
    if (!fieldMap.isEmpty()) {
      throw JavaClass.undefinedFieldError(
          context.getRuntime(), topModule.getName(), fieldMap.keySet().iterator().next());
    }
  }