Example #1
0
  public static void main(String... args) {
    try {
      Class<?> c = Class.forName(args[0]);
      int searchMods = 0x0;
      for (int i = 1; i < args.length; i++) {
        searchMods |= modifierFromString(args[i]);
      }

      Field[] flds = c.getDeclaredFields();
      out.format(
          "Fields in Class '%s' containing modifiers:  %s%n",
          c.getName(), Modifier.toString(searchMods));
      boolean found = false;
      for (Field f : flds) {
        int foundMods = f.getModifiers();
        // Require all of the requested modifiers to be present
        if ((foundMods & searchMods) == searchMods) {
          out.format(
              "%-8s [ synthetic=%-5b enum_constant=%-5b ]%n",
              f.getName(), f.isSynthetic(), f.isEnumConstant());
          found = true;
        }
      }

      if (!found) {
        out.format("No matching fields%n");
      }

      // production code should handle this exception more gracefully
    } catch (ClassNotFoundException x) {
      x.printStackTrace();
    }
  }
Example #2
0
 public static void play(Class<?> clazz) {
   if (!clazz.isEnum()) {
     out.format("%s is not an enum type%n", clazz);
     Field[] fields = clazz.getDeclaredFields();
     for (Field f : fields) {
       if (f.isEnumConstant()) System.out.println("enum field: " + f);
       else System.out.println("non-enum field: " + f);
     }
     return;
   }
 }
  @Override
  public List<Suggestion> getSuggestions() {
    List<Suggestion> result = new ArrayList<Suggestion>();
    Field[] declaredFields = enumClass.getDeclaredFields();
    for (Field declaredField : declaredFields) {
      if (declaredField.isEnumConstant()) {
        result.add(new KeySuggestion(declaredField.getName().toLowerCase()));
      }
    }

    return result;
  }
  /** Scans the class and generates metadata. */
  public void generate(Class<?> clazz) throws IllegalAccessException {
    if (clazz == null) {
      return;
    }

    for (Field field : clazz.getDeclaredFields()) {
      if (field.getType().getName().startsWith(PACKAGE_TO_SCAN) && !field.isEnumConstant()) {
        generate(field.getType());
      } else {
        for (Annotation annotation : field.getAnnotations()) {
          if (annotation.annotationType().equals(ProviderMappings.class)) {
            ProviderMappings providerAnnotations = (ProviderMappings) annotation;
            for (Provider provider : providerAnnotations.value()) {
              Map<String, ProviderMappingInfo> mappings = providerMappings.get(provider.name());

              if (mappings == null) {
                mappings = new HashMap<String, ProviderMappingInfo>();
                providerMappings.put(provider.name(), mappings);
              }

              Converter<?> converter = (Converter<?>) getConverter(field, provider.converter());
              String target = clazz.getSimpleName().toLowerCase() + "." + field.getName();
              ProviderMappingInfo pm =
                  new ProviderMappingInfo(provider.property(), target, converter);
              mappings.put(pm.getSource(), pm);
              logger.trace("Added provider mapping {}: {}", provider.name(), pm);
            }
          } else if (annotation.annotationType().equals(ForecastMappings.class)) {
            ForecastMappings forecastsAnnotations = (ForecastMappings) annotation;
            for (Forecast forecast : forecastsAnnotations.value()) {
              List<String> forecastProperties = forecastMappings.get(forecast.provider());
              if (forecastProperties == null) {
                forecastProperties = new ArrayList<String>();
                forecastMappings.put(forecast.provider(), forecastProperties);
              }
              forecastProperties.add(forecast.property());
              logger.trace(
                  "Added forecast mapping {}: {}", forecast.provider(), forecast.property());
            }
          }
        }
      }
    }
  }
Example #5
0
  private static void convertBeanToJson(Object obj, StringBuilder sb) {
    if ((obj instanceof Date)) {
      sb.append(((Date) obj).getTime());
    } else {
      sb.append('{');
      Class<?> c = obj.getClass();

      Set<String> fieldNameSet = new HashSet();
      Field[] fields = c.getDeclaredFields();
      for (Field f : fields) {
        int modifiers = f.getModifiers();
        String fieldName = f.getName();
        if ((!f.isEnumConstant())
            && (!Modifier.isFinal(modifiers))
            && (!Modifier.isTransient(modifiers))) {
          f.setAccessible(true);
          try {
            convertObjectToJson(fieldName, f.get(obj), sb);
            sb.append(',');
            fieldNameSet.add(fieldName);
          } catch (IllegalArgumentException e) {
          } catch (IllegalAccessException e) {
          }
        }
      }
      Method[] methods = c.getDeclaredMethods();
      for (Method m : methods) {
        String methodName = m.getName();
        int modifiers = m.getModifiers();
        if ((Modifier.isPublic(modifiers)) && (!Modifier.isStatic(modifiers))) {
          String fieldName;
          if ((methodName.startsWith("is"))
              && ((m.getReturnType() == Boolean.class) || (m.getReturnType() == Boolean.TYPE))) {
            fieldName =
                Character.toLowerCase(methodName.charAt(IS_PREFIX_LEN))
                    + methodName.substring(IS_PREFIX_LEN_1);
          } else {
            if (!methodName.startsWith("is")) {
              continue;
            }
            fieldName =
                Character.toLowerCase(methodName.charAt(GET_PREFIX_LEN))
                    + methodName.substring(GET_PREFIX_LEN_1);
          }
          if ((!fieldNameSet.contains(fieldName)) && (fieldName.length() != 0)) {
            m.setAccessible(true);
            try {
              convertObjectToJson(fieldName, m.invoke(obj, EMTPY_OBJ_ARR), sb);
              sb.append(',');
            } catch (IllegalArgumentException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {
            }
          }
        }
      }
      fieldNameSet.clear();
      fieldNameSet = null;
      if (sb.charAt(sb.length() - 1) == ',') {
        sb.deleteCharAt(sb.length() - 1);
      }
      sb.append('}');
    }
  }