private static Set getOptionalDependenciesForClass()

in src/main/java/com/twitter/nodes/Node.java [402:424]


  private static Set getOptionalDependenciesForClass(Class<? extends Enum> enumClass) {
    Set optionalEnumSet = OPTIONAL_DEP_MAP.get(enumClass);
    if (optionalEnumSet == null) {
      optionalEnumSet = EnumSet.noneOf(enumClass);
      try {
        for (Object item : enumClass.getEnumConstants()) {
          Annotation[] annotations = enumClass.getField(item.toString()).getAnnotations();
          if (annotations != null) {
            for (Annotation anno : annotations) {
              if (anno instanceof OptionalDep) {
                optionalEnumSet.add(item);
              }
            }
          }
        }
        OPTIONAL_DEP_MAP.put(enumClass, ImmutableSet.copyOf(optionalEnumSet));
      } catch (Exception e) {
        LOG.error(e, "Cannot get fields for enum class " + enumClass);
        Throwables.propagate(e);
      }
    }
    return ImmutableSet.copyOf(optionalEnumSet);
  }