package com.aventstack.extentreports; import java.util.logging.Level; import java.util.logging.Logger; import com.aventstack.extentreports.gherkin.model.IGherkinFormatterModel; import freemarker.template.utility.StringUtil; /** * Allows {@link IGherkinFormatterModel} to be returned by using a name, from the below gherkin model classes: * * <ul> * <li>{@link com.aventstack.extentreports.gherkin.model.Feature}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.Background}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.Scenario}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.Given}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.When}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.Then}</li> * <li>{@link com.aventstack.extentreports.gherkin.model.And}</li> * </ul> * * <p> * Example: * </p> * * <pre> * extent.createTest(new GherkinKeyword("Feature"), "bddTest"); * test.createNode(new GherkinKeyword("Scenario"), bddNode"); * </pre> * * @see IGherkinFormatterModel */ public class GherkinKeyword { private static final Logger logger = Logger.getLogger(GherkinKeyword.class.getName()); private Class<IGherkinFormatterModel> clazz = IGherkinFormatterModel.class; private IGherkinFormatterModel keywordClazz; public GherkinKeyword(String keyword) throws ClassNotFoundException { keyword = StringUtil.capitalize(keyword.trim()); String refPath = clazz.getPackage().getName(); try { Class<?> c = Class.forName(refPath + "." + keyword); keywordClazz = (IGherkinFormatterModel) c.newInstance(); } catch (InstantiationException|IllegalAccessException e) { logger.log(Level.SEVERE, "", e); } } IGherkinFormatterModel getKeyword() { return keywordClazz; } }