aboutsummaryrefslogtreecommitdiff
path: root/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java')
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java183
1 files changed, 98 insertions, 85 deletions
diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java
index 63028db2..70ab73ad 100644
--- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java
+++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMvcGuiFormBuilderImpl.java
@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
@@ -21,90 +22,102 @@ import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder;
import at.gv.egiz.eaaf.core.exceptions.GuiBuildException;
public class SpringMvcGuiFormBuilderImpl implements ISpringMvcGuiFormBuilder {
- private static final Logger log = LoggerFactory.getLogger(SpringMvcGuiFormBuilderImpl.class);
-
- private @Autowired(required=false) ViewResolver[] viewResolvers;
- private @Autowired(required=false) LocaleResolver localeResolver;
-
- @Override
- public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGuiBuilderConfiguration config,
- String loggerName) throws GuiBuildException {
- build(httpReq, httpResp, config, null, loggerName);
-
- }
-
- @Override
- public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGuiBuilderConfiguration config,
- String contentType, String loggerName) throws GuiBuildException {
- try {
- final ModelAndView mav = new ModelAndView(config.getViewName());
- if (config.getViewParameters() != null)
- mav.addAllObjects(config.getViewParameters());
-
- render(mav, httpReq, httpResp);
-
- } catch (final Exception e) {
- log.info("Can NOT generate GUI for illustration", e);
- throw new GuiBuildException(e.getMessage(), e);
-
- }
-
- }
-
- protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {
- // Determine locale for request and apply it to the response.
- final Locale locale =
- (this.localeResolver != null ? this.localeResolver.resolveLocale(request) : request.getLocale());
- response.setLocale(locale);
-
- View view;
- final String viewName = mv.getViewName();
- if (viewName != null) {
- // We need to resolve the view name.
- view = resolveViewName(viewName, mv.getModelMap(), locale, request);
- if (view == null)
- throw new ServletException("Could not resolve view with name '" + mv.getViewName() + "' ");
-
- } else {
- // No need to lookup: the ModelAndView object contains the actual View object.
- view = mv.getView();
- if (view == null)
- throw new ServletException("ModelAndView [" + mv + "] neither contains a view name nor a " + "View object ");
-
- }
-
- // Delegate to the View object for rendering.
- if (log.isTraceEnabled())
- log.trace("Rendering view [" + view + "] ");
-
- try {
- if (mv.getStatus() != null)
- response.setStatus(mv.getStatus().value());
-
- view.render(mv.getModelMap(), request, response);
-
- } catch (final Exception ex) {
- if (log.isDebugEnabled())
- log.debug("Error rendering view [" + view + "]", ex);
-
- throw ex;
-
- }
-
- }
-
- protected View resolveViewName(String viewName, @Nullable Map<String, Object> model,
- Locale locale, HttpServletRequest request) throws Exception {
- if (viewResolvers != null) {
- for (final ViewResolver viewResolver : this.viewResolvers) {
- final View view = viewResolver.resolveViewName(viewName, locale);
- if (view != null)
- return view;
-
- }
- }
-
- return null;
- }
+ private static final Logger log = LoggerFactory.getLogger(SpringMvcGuiFormBuilderImpl.class);
+
+ private @Autowired(required = false) ViewResolver[] viewResolvers;
+ private @Autowired(required = false) LocaleResolver localeResolver;
+
+ @Override
+ public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGuiBuilderConfiguration config,
+ String loggerName) throws GuiBuildException {
+ build(httpReq, httpResp, config, null, loggerName);
+
+ }
+
+ @Override
+ public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGuiBuilderConfiguration config,
+ String contentType, String loggerName) throws GuiBuildException {
+ try {
+ final ModelAndView mav = new ModelAndView(config.getViewName());
+ if (config.getViewParameters() != null) {
+ mav.addAllObjects(config.getViewParameters());
+ }
+
+ render(mav, httpReq, httpResp);
+
+ } catch (final Exception e) {
+ log.info("Can NOT generate GUI for illustration", e);
+ throw new GuiBuildException(e.getMessage(), e);
+
+ }
+
+ }
+
+ protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+ // Determine locale for request and apply it to the response.
+ final Locale locale =
+ this.localeResolver != null ? this.localeResolver.resolveLocale(request) : request.getLocale();
+ response.setLocale(locale);
+
+ View view;
+ final String viewName = mv.getViewName();
+ if (viewName != null) {
+ // We need to resolve the view name.
+ view = resolveViewName(viewName, mv.getModelMap(), locale, request);
+ if (view == null) {
+ throw new ServletException("Could not resolve view with name '" + mv.getViewName() + "' ");
+ }
+
+ } else {
+ // No need to lookup: the ModelAndView object contains the actual View object.
+ view = mv.getView();
+ if (view == null) {
+ throw new ServletException("ModelAndView [" + mv + "] neither contains a view name nor a "
+ + "View object ");
+ }
+
+ }
+
+ // Delegate to the View object for rendering.
+ if (log.isTraceEnabled()) {
+ log.trace("Rendering view [{}] ", view);
+
+ }
+
+ try {
+ HttpStatus status = mv.getStatus();
+ if (status != null) {
+ response.setStatus(status.value());
+
+ }
+
+ view.render(mv.getModelMap(), request, response);
+
+ } catch (final Exception ex) {
+ if (log.isDebugEnabled()) {
+ log.debug("Error rendering view [" + view + "]", ex);
+ }
+
+ throw ex;
+
+ }
+
+ }
+
+ protected View resolveViewName(String viewName, @Nullable Map<String, Object> model,
+ Locale locale, HttpServletRequest request) throws Exception {
+ if (viewResolvers != null) {
+ for (final ViewResolver viewResolver : this.viewResolvers) {
+ final View view = viewResolver.resolveViewName(viewName, locale);
+ if (view != null) {
+ return view;
+ }
+
+ }
+ }
+
+ return null;
+ }
}