From 9a90119082ea411792d91b389172e667df159ec8 Mon Sep 17 00:00:00 2001
From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu>
Date: Thu, 15 Nov 2018 16:45:06 +0100
Subject: [PATCH] set UrlPathHelper - set decode to false test SQL doctype  for
 null  - oracle issue

---
 .../smp/data/model/DBServiceMetadata.java     |  2 +-
 .../edelivery/smp/config/SmpWebAppConfig.java | 40 +++++--------------
 2 files changed, 10 insertions(+), 32 deletions(-)

diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
index a724728d5..be45541b3 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
@@ -34,7 +34,7 @@ import java.util.Objects;
         @NamedNativeQuery(name = "DBServiceMetadata.getBySGIdentifierAndSMDdentifier", query = "SELECT md.* FROM SMP_SERVICE_METADATA md  INNER JOIN SMP_SERVICE_GROUP_DOMAIN sgd ON sgd.ID = md.FK_SG_DOM_ID \n" +
                 " INNER JOIN SMP_SERVICE_GROUP sg  ON sg.ID = sgd.FK_SG_ID\n" +
                 " where sg.PARTICIPANT_IDENTIFIER = :partcId AND sg.PARTICIPANT_SCHEME=:partcSch" +
-                " AND md.DOCUMENT_IDENTIFIER=:docId AND md.DOCUMENT_SCHEME=:docSch", resultClass=DBServiceMetadata.class),
+                " AND md.DOCUMENT_IDENTIFIER=:docId AND (:docSch IS NULL OR md.DOCUMENT_SCHEME=:docSch)", resultClass=DBServiceMetadata.class),
         @NamedNativeQuery(name = "DBServiceMetadata.getBySGIdentifier", query = "SELECT md.* FROM SMP_SERVICE_METADATA md  INNER JOIN SMP_SERVICE_GROUP_DOMAIN sgd ON sgd.ID = md.FK_SG_DOM_ID \n" +
                 " INNER JOIN SMP_SERVICE_GROUP sg  ON sg.ID = sgd.FK_SG_ID\n" +
                 " where sg.PARTICIPANT_IDENTIFIER = :partcId AND sg.PARTICIPANT_SCHEME=:partcSch", resultClass=DBServiceMetadata.class)
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
index cac805896..c1b6b1d4d 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
@@ -29,6 +29,7 @@ import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.util.UrlPathHelper;
 
 import java.util.List;
 
@@ -47,37 +48,6 @@ import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE;
         "eu.europa.ec.edelivery.smp.ui"})
 @Import({GlobalMethodSecurityConfig.class, ErrorMappingControllerAdvice.class})
 public class SmpWebAppConfig implements WebMvcConfigurer {
-/*
-    @Override
-    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
-        // There is no clean way of replacing the default Jackson 2 HttpMessageConverter while keeping the other
-        // default converters (@EnableWebMvc disables auto-configuration and most of the default converters are
-        // not available as Spring beans
-        // org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHttpMessageConverters)
-        converters.removeIf(httpMessageConverter -> httpMessageConverter instanceof MappingJackson2HttpMessageConverter);
-        converters.add(jackson2HttpMessageConverter());
-    }
-
-    @Bean
-    public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {
-        return new MappingJackson2HttpMessageConverter(objectMapper());
-    }
-
-    @Bean
-    @Primary
-    public ObjectMapper objectMapper() {
-        return Jackson2ObjectMapperBuilder.json()
-                .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
-                .build();
-    }
-
-    @Override
-    public void addViewControllers(ViewControllerRegistry registry) {
-        registry.addViewController("/").setViewName("/index.html");
-        registry.addViewController("/ui/").setViewName("/ui/index.html");
-        //Home page used by SMP 2.x and 3.x - needed for backward compatibility in some EC's environments
-        registry.addViewController("/web/index.html").setViewName("/index.html");
-    }*/
 
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
@@ -95,5 +65,13 @@ public class SmpWebAppConfig implements WebMvcConfigurer {
     public void configurePathMatch(PathMatchConfigurer configurer) {
         //Default value (true) would break @PathVariable Identifiers containing dot character "."
         configurer.setUseSuffixPatternMatch(false);
+
+        // do not decode path before mapping - that cause problems to identifiers with /
+        UrlPathHelper urlPathHelper =configurer.getUrlPathHelper();
+        if (urlPathHelper==null) {
+            urlPathHelper = new UrlPathHelper();
+            configurer.setUrlPathHelper(urlPathHelper);
+        }
+        urlPathHelper.setUrlDecode(false);
     }
 }
-- 
GitLab