aboutsummaryrefslogtreecommitdiff
path: root/connector_lib/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'connector_lib/src/main/java')
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java4
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGUIBuilderImpl.java (renamed from connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultGUIBuilderImpl.java)9
-rw-r--r--connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMVCGUIFormBuilderImpl.java110
3 files changed, 118 insertions, 5 deletions
diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java
index 3ca82a66..37de50a7 100644
--- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java
+++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java
@@ -39,6 +39,8 @@ public class MSeIDASNodeConstants {
public static final String PROP_CONFIG_TECHNICALLOG_WRITE_MDS_INTO_TECH_LOG = "technicallog.write.MDS.into.techlog";
public static final String PROP_CONFIG_WEBCONTENT_STATIC_PATH = "webcontent.static.directory";
+ public static final String PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH = "webcontent.properties";
+ public static final String PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH = "webcontent.templates";
public static final String PROP_CONFIG_MONITORING_EIDASNODE_METADATAURL = "monitoring.eIDASNode.metadata.url";
@@ -114,4 +116,6 @@ public class MSeIDASNodeConstants {
public static final List<String> COUNTRY_SELECTION_PARAM_WHITELIST =
Arrays.asList(REQ_PARAM_SELECTED_COUNTRY, REQ_PARAM_SELECTED_ENVIRONMENT);
+
+
}
diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultGUIBuilderImpl.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGUIBuilderImpl.java
index f4049267..e618e68d 100644
--- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultGUIBuilderImpl.java
+++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGUIBuilderImpl.java
@@ -28,18 +28,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder;
import at.gv.egiz.eaaf.core.api.gui.IVelocityGUIBuilderConfiguration;
import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;
import at.gv.egiz.eaaf.core.impl.gui.AbstractVelocityGUIFormBuilderImpl;
-@Service("DefaultGUIBuilderImpl")
-public class DefaultGUIBuilderImpl extends AbstractVelocityGUIFormBuilderImpl implements IGUIFormBuilder {
- private static final Logger log = LoggerFactory.getLogger(DefaultGUIBuilderImpl.class);
+@Service("DefaultVelocityGUIBuilderImpl")
+public class DefaultVelocityGUIBuilderImpl extends AbstractVelocityGUIFormBuilderImpl {
+ private static final Logger log = LoggerFactory.getLogger(DefaultVelocityGUIBuilderImpl.class);
private static final String CLASSPATH_HTMLTEMPLATES_DIR = "templates/";
- public DefaultGUIBuilderImpl() throws GUIBuildException {
+ public DefaultVelocityGUIBuilderImpl() throws GUIBuildException {
super();
}
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
new file mode 100644
index 00000000..84218611
--- /dev/null
+++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMVCGUIFormBuilderImpl.java
@@ -0,0 +1,110 @@
+package at.asitplus.eidas.specific.connector.gui;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.annotation.Nullable;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.View;
+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;
+
+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;
+ }
+
+}