Example #1
0
 /** Convert a collection of ConstantSets to the format expected by GenTest.addClassLiterals. */
 public static MultiMap<Class<?>, PrimitiveOrStringOrNullDecl> toMap(
     Collection<ConstantSet> constantSets) {
   final MultiMap<Class<?>, PrimitiveOrStringOrNullDecl> map =
       new MultiMap<Class<?>, PrimitiveOrStringOrNullDecl>();
   for (ConstantSet cs : constantSets) {
     Class<?> clazz;
     try {
       clazz = Class.forName(cs.classname);
     } catch (ClassNotFoundException e) {
       throw new Error("Class " + cs.classname + " not found on the classpath.");
     }
     for (Integer x : cs.ints) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(int.class, x.intValue()));
     }
     for (Long x : cs.longs) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(long.class, x.longValue()));
     }
     for (Float x : cs.floats) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(float.class, x.floatValue()));
     }
     for (Double x : cs.doubles) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(double.class, x.doubleValue()));
     }
     for (String x : cs.strings) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(String.class, x));
     }
     for (Class<?> x : cs.classes) {
       map.add(clazz, new PrimitiveOrStringOrNullDecl(Class.class, x));
     }
   }
   return map;
 }
  /**
   * Returns all related classes
   *
   * @param start
   * @return
   */
  private static Collection<Class<?>> getAllRelatedClasses(Class<?> start) {

    List<Class<?>> rval = new ArrayList<Class<?>>();
    JavaClass lookupClass;

    // In case the class fails, return empty.
    try {
      lookupClass = Repository.lookupClass(start);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
      return rval;
    }

    ConstantPool constantPool = lookupClass.getConstantPool();

    int length = constantPool.getLength();
    for (int i = 0; i < length; i++) {
      Constant constant = constantPool.getConstant(i);
      if (constant instanceof ConstantClass) {
        ConstantClass cc = (ConstantClass) constant;
        ConstantUtf8 constant2 = (ConstantUtf8) constantPool.getConstant(cc.getNameIndex());

        // In case a subclass fails, skip, but print warning.
        try {
          String toLoad = constant2.getBytes().replace('/', '.');
          if (toLoad.contains("[")) continue;
          Class<?> forName = Class.forName(toLoad);
          rval.add(forName);
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        }
      }
    }

    return rval;
  }