TemplateValidator.java
- /*
- * #%L
- * wcm.io
- * %%
- * Copyright (C) 2015 wcm.io
- * %%
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
- package io.wcm.devops.conga.tooling.maven.plugin.validation;
- import java.nio.charset.StandardCharsets;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.maven.plugin.MojoFailureException;
- import com.github.jknack.handlebars.Handlebars;
- import io.wcm.devops.conga.generator.handlebars.HandlebarsManager;
- import io.wcm.devops.conga.generator.plugins.handlebars.escaping.NoneEscapingStrategy;
- import io.wcm.devops.conga.resource.Resource;
- import io.wcm.devops.conga.resource.ResourceCollection;
- import io.wcm.devops.conga.tooling.maven.plugin.util.PathUtil;
- /**
- * Validates Handlebars templates by compiling it.
- */
- public final class TemplateValidator implements DefinitionValidator<Void> {
- private static final String FILE_EXTENSION = "hbs";
- private final ResourceCollection templateDir;
- private final HandlebarsManager handlebarsManager;
- /**
- * @param templateDir Template directory
- * @param handlebarsManager Handlebars Manager
- */
- public TemplateValidator(ResourceCollection templateDir, HandlebarsManager handlebarsManager) {
- this.templateDir = templateDir;
- this.handlebarsManager = handlebarsManager;
- }
- @Override
- @SuppressWarnings({
- "PMD.PreserveStackTrace",
- "java:S1075" // uses / by intention
- })
- public Void validate(Resource resource, String pathForLog) throws MojoFailureException {
- if (StringUtils.equalsIgnoreCase(resource.getFileExtension(), FILE_EXTENSION)) {
- String templatePath = StringUtils.substringAfter(PathUtil.unifySlashes(resource.getCanonicalPath()),
- PathUtil.unifySlashes(templateDir.getCanonicalPath()) + "/");
- Handlebars handlebars = handlebarsManager.get(NoneEscapingStrategy.NAME, StandardCharsets.UTF_8.name());
- try {
- handlebars.compile(templatePath);
- }
- /*CHECKSTYLE:OFF*/ catch (Exception ex) { /*CHECKSTYLE:ON*/
- throw new MojoFailureException("Template " + pathForLog + " is invalid:\n" + ex.getMessage());
- }
- }
- return null;
- }
- }