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 a724728d573f4eb2165e498bf5e53b62c8c4be48..be45541b3df395f175d542d6c71257108f369d28 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 cac805896d084a49c82bf4c970ec23095aa04335..c1b6b1d4da948f795e2ff1b5064153f7a5b8d912 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); } }