Skip to content

Data Generation causes java.lang.StackOverflowError

AutomatorGuy123 edited this page Apr 3, 2019 · 2 revisions

Error: java.lang.StackOverflowError
Problem: The DataGenerator class does not support recursive objects.
Solutions:

  1. Manually create the XML if class is simple
  2. 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)
...
...
...

Clone this wiki locally