private void validateDependencyGenerator()

in src/main/java/com/amazonaws/mskdatagen/validators/ValidateDependencies.java [42:66]


    private void validateDependencyGenerator(List<String> topics, String topic, Generator generator, List<GeneratorsConfigs> generatorsConfigs) {
        if (generator.getStrategy() == Strategy.DEPENDENT) {
            String depTopic = generator.getTopic();
            String ns = generator.getNs();

            if (!topics.contains(depTopic)) {
                String message = "Found a generator for topic %s that is dependent on topic %s, but no generator is defined for %s. Stopping because no data can ever be produced for topic %s. Either define a generator for topic %s or remove this generator.";
                String originalConfig = generator.getOriginalKey() + " = " + generator.getOriginalValue();
                throw new ValidateException(originalConfig, String.format(message, topic, depTopic, depTopic, topic, depTopic));
            }

            if (generator.getAttr() != null && !generator.getAttr().isEmpty()
                    && isNotAttrPresent(generator.getAttr(), generatorsConfigs, depTopic, ns)) {
                String message = "Found a generator for topic %s that is dependent on attribute %s in topic %s's %s, but no generator is defined for that attribute. Stopping because this generator would always return null. Either define a generator for the attribute or remove this generator.";
                String formattedAttr = String.join("->", generator.getAttr().toArray(new String[0]));
                String originalConfig = generator.getOriginalKey() + " = " + generator.getOriginalValue();
                throw new ValidateException(originalConfig, String.format(message, topic, formattedAttr, depTopic, ns));
            } else if ((generator.getAttr() == null || generator.getAttr().isEmpty())
                    && isNotAttrPresent(Collections.emptyList(), generatorsConfigs, depTopic, ns)) {
                String message = "Found a generator for topic %s that is dependent on topic %s's %s, but there's no primitive generator defined for the %s. Stopping because this generator is incompatible. Either define a generator for the %s or remove this dependency.";
                String originalConfig = generator.getOriginalKey() + " = " + generator.getOriginalValue();
                throw new ValidateException(originalConfig, String.format(message, topic, depTopic, ns, ns, ns));
            }
        }
    }