package at.gv.egiz.eaaf.core.impl.gui.builder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ViewResolver; import at.gv.egiz.eaaf.core.api.gui.IGuiBuilderConfiguration; import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder; import at.gv.egiz.eaaf.core.exceptions.GuiBuildException; import at.gv.egiz.eaaf.core.impl.gui.utils.MvcGuiRenderUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j public class SpringMvcGuiFormBuilderImpl implements ISpringMvcGuiFormBuilder { private @Autowired(required = false) ViewResolver[] viewResolvers; private @Autowired(required = false) LocaleResolver localeResolver; @Override public void build(final HttpServletRequest httpReq, final HttpServletResponse httpResp, final IGuiBuilderConfiguration config, final String loggerName) throws GuiBuildException { build(httpReq, httpResp, config, null, loggerName); } @Override public void build(final HttpServletRequest httpReq, final HttpServletResponse httpResp, final IGuiBuilderConfiguration config, final String contentType, final String loggerName) throws GuiBuildException { try { MvcGuiRenderUtils.render(MvcGuiRenderUtils.prepareSpringGuiModel(config), httpReq, httpResp, viewResolvers, localeResolver); } catch (final Exception e) { log.info("Can NOT generate GUI for: {}", loggerName, e); throw new GuiBuildException(e.getMessage(), e); } } @Override public String evaluateResponseContentType(HttpServletRequest httpReq, IGuiBuilderConfiguration config, String loggerName) throws GuiBuildException { try { return MvcGuiRenderUtils.evaluateResponseContentType(httpReq, config, viewResolvers, localeResolver); } catch (final Exception e) { log.info("Can NOT evaluate contentType for response GUI: {}", loggerName, e); throw new GuiBuildException(e.getMessage(), e); } } }