JSourceCode jsc = jMethod.getSourceCode();
JField[] fields = jclass.getFields();
for (int i = 0; i < fields.length; i++) {
JField temp = fields[i];
JType type = temp.getType();
String name = temp.getName();
if (state.getFieldInfoForChoice() != null
&& name.equals(state.getFieldInfoForChoice().getName())) {
continue;
}
if (name.startsWith("_")) {
name = getJavaNaming().toJavaClassName(name.substring(1));
} else {
name = getJavaNaming().toJavaClassName(name);
}
String setName = "set" + name;
if (name.indexOf("Has") == -1) {
if (type instanceof JCollectionType) {
//Collection needs a specific handling
int listLocat = name.lastIndexOf("List");
String tempName = name;
if (listLocat != -1) {
tempName = tempName.substring(0, listLocat);
}
String methodName = getJavaNaming().toJavaClassName(tempName);
methodName = "get" + methodName;
JMethod method = jclass.getMethod(methodName, 0);
// TODO handle the Item introduced in with the group handling
if (method == null) {
continue;
}
String componentName = method.getReturnType().getName();
jsc.add(temp.getName());
jsc.append(" = RandomHelper.getRandom(");
jsc.append(temp.getName());
jsc.append(", ");
jsc.append(componentName);
jsc.append(".class);");
} else if (type.isPrimitive()) {
// Primitive
jsc.add(setName);
jsc.append("(RandomHelper.getRandom(");
jsc.append(temp.getName());
jsc.append("));");
} else if (type.isArray()) {
// Array
jsc.add(setName);
jsc.append("((");
jsc.append(type.toString());
jsc.append(")RandomHelper.getRandom(");
jsc.append(temp.getName());
// Any Class will do, but Array.class seems appropriate
jsc.append(", java.lang.reflect.Array.class));");
} else {
// Object
jsc.add(setName);
jsc.append("((");
jsc.append(type.getName());
jsc.append(")RandomHelper.getRandom(");
jsc.append(temp.getName());
jsc.append(", ");
jsc.append(type.getName());
jsc.append(".class));");
}
jsc.add("");
}
}