Uploaded image for project: 'Definitions App'
  1. Definitions App
  2. CFGUI-114

Add DEBUG to #validateDefinition() in case of exceptions

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Obsolete
    • Icon: Minor Minor
    • None
    • None
    • None

      We've had a few instances where the Definitions app --> Problems subApp does not open. What seems to happen is a definition can be broken in an unexpected way and very little information is provided. We have been finding new types of broken configuration since the app was released.

      2019-06-18 09:23:15,363 ERROR agnolia.ui.framework.app.AppInstanceControllerImpl: Sub-app problems failed to start: null
      java.lang.NullPointerException: null
      	at info.magnolia.rendering.template.registry.validator.TemplateDefinitionValidator.validateDefinition(TemplateDefinitionValidator.java:91) ~[magnolia-rendering-5.7.3.jar:?]
      	at info.magnolia.pages.rendering.registry.validator.DialogAwareTemplateDefinitionValidator.validateDefinition(DialogAwareTemplateDefinitionValidator.java:71) ~[magnolia-pages-app-5.7.1.jar:?]
      	at info.magnolia.rendering.template.registry.validator.TemplateDefinitionValidator.validate(TemplateDefinitionValidator.java:80) ~[magnolia-rendering-5.7.3.jar:?]
      	at info.magnolia.config.registry.AbstractRegistry$1.lambda$getProblems$0(AbstractRegistry.java:241) ~[magnolia-configuration-5.7.3.jar:?]
      	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
      

      It would be super helpful for support if we could get a DEBUG line in there to find the problem template quickly.

      protected void validateDefinition(Collection<DefinitionProvider.Problem> problems, DefinitionProvider<TemplateDefinition> definitionProvider) {
              TemplateDefinition definition = definitionProvider.get();
              log.debug("Validating definition: {}", definition.getId());
      
              String renderType = definition.getRenderType();
              validateRenderType(problems, "", renderType);
              validateTemplateScript(problems, "", definition.getTemplateScript(), renderType);
              validateModelClass(problems, "", definition.getModelClass());
              definition.getAreas().forEach((areaName, area) -> validateArea(definitionProvider, problems, "", area));
          }
      

        Acceptance criteria

              rgange Richard Gange
              rgange Richard Gange
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Task DoD