-
Notifications
You must be signed in to change notification settings - Fork 2
Data Generation causes java.lang.StackOverflowError
Error: java.lang.StackOverflowError
Problem: The DataGenerator class does not support recursive objects.
Solutions:
- Manually create the XML if class is simple
- Skip the recursive objects
Example of class with recursive objects: Ad
Issues with Ad: PropertyGroup is recursive. Ad has PriceOptions & ExtendedInfo. PriceOptions has list of PropertyGroup. ExtendedInfo has list of PropertyGroup.
Solution for Ad class:
public class SearchAdsDO extends DomainObject {
RequestParameters request;
@MetaData({
@Data(fieldClass = Ad.class, fieldName = "extendedInfo", skip = true),
@Data(fieldClass = Ad.class, fieldName = "priceOptions", skip = true)
})
private static class RequestParameters {
Ad ad1;
}
...
...
...
Example Error:
java.lang.StackOverflowError
at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:312)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:291)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:285)
at sun.reflect.generics.parser.SignatureParser.parseTypeArgument(SignatureParser.java:438)
at sun.reflect.generics.parser.SignatureParser.parseTypeArguments(SignatureParser.java:398)
at sun.reflect.generics.parser.SignatureParser.parsePackageNameAndSimpleClassTypeSignature(SignatureParser.java:348)
at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:312)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:291)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:285)
at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:487)
at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:190)
at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:52)
at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:42)
at sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:74)
at sun.reflect.generics.repository.FieldRepository.<init>(FieldRepository.java:48)
at sun.reflect.generics.repository.FieldRepository.make(FieldRepository.java:66)
at java.lang.reflect.Field.getGenericInfo(Field.java:99)
at java.lang.reflect.Field.getGenericType(Field.java:237)
at datainstiller.data.DataGenerator.getGenericTypeOrString(DataGenerator.java:196)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:305)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:290)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:377)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:308)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:290)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:377)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:308)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:290)
at datainstiller.data.DataGenerator.generate(DataGenerator.java:290)
...
...
...