isReadable works inside a container, isFile not (#1334)
This commit is contained in:
parent
f5e4d4717a
commit
34f5b79249
@ -83,7 +83,7 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver {
|
||||
@Override
|
||||
protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {
|
||||
var templateName = resourceName.substring(PREFIX.length());
|
||||
|
||||
log.debug("template used: {}", templateName);
|
||||
try (InputStream is = getInputStream(templateName)) {
|
||||
JavaExtensionRegistry extensionRegistry = asciidoctor.javaExtensionRegistry();
|
||||
extensionRegistry.inlineMacro("webWolfLink", WebWolfMacro.class);
|
||||
@ -102,18 +102,26 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver {
|
||||
}
|
||||
|
||||
private InputStream getInputStream(String templateName) throws IOException {
|
||||
if (resourceLoader.getResource("classpath:/" + computeResourceName(templateName, language.getLocale().getLanguage())).isFile()) {
|
||||
return resourceLoader.getResource("classpath:/" + computeResourceName(templateName, language.getLocale().getLanguage())).getInputStream();
|
||||
log.debug("locale: {}",language.getLocale().getLanguage());
|
||||
String computedResourceName = computeResourceName(templateName, language.getLocale().getLanguage());
|
||||
if (resourceLoader.getResource("classpath:/" + computedResourceName).isReadable()/*isFile()*/) {
|
||||
log.debug("localized file exists");
|
||||
return resourceLoader.getResource("classpath:/" + computedResourceName).getInputStream();
|
||||
} else {
|
||||
log.debug("using english template");
|
||||
return resourceLoader.getResource("classpath:/" + templateName).getInputStream();
|
||||
}
|
||||
}
|
||||
private String computeResourceName(String resourceName, String language) {
|
||||
String computedResourceName;
|
||||
if (language.equals("en")) {
|
||||
return resourceName;
|
||||
computedResourceName = resourceName;
|
||||
} else {
|
||||
return resourceName.replace(".adoc", "_".concat(language).concat(".adoc"));
|
||||
computedResourceName = resourceName.replace(".adoc", "_".concat(language).concat(".adoc"));
|
||||
}
|
||||
log.debug("computed local file name: {}", computedResourceName);
|
||||
log.debug("file exists: {}",resourceLoader.getResource("classpath:/"+computedResourceName).isReadable());
|
||||
return computedResourceName;
|
||||
}
|
||||
|
||||
private Map<String, Object> createAttributes() {
|
||||
@ -134,12 +142,15 @@ public class AsciiDoctorTemplateResolver extends FileTemplateResolver {
|
||||
|
||||
Locale browserLocale = (Locale) request.getSession().getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME);
|
||||
if (null != browserLocale) {
|
||||
log.debug("browser locale {}", browserLocale);
|
||||
return browserLocale.getLanguage();
|
||||
} else {
|
||||
String langHeader = request.getHeader(Headers.ACCEPT_LANGUAGE_STRING);
|
||||
if (null != langHeader) {
|
||||
log.debug("browser locale {}", langHeader);
|
||||
return langHeader.substring(0,2);
|
||||
} else {
|
||||
log.debug("browser default english");
|
||||
return "en";
|
||||
}
|
||||
}
|
||||
|
@ -32,6 +32,7 @@
|
||||
package org.owasp.webgoat.container;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.owasp.webgoat.container.i18n.Language;
|
||||
import org.owasp.webgoat.container.i18n.Messages;
|
||||
import org.owasp.webgoat.container.i18n.PluginMessages;
|
||||
@ -71,6 +72,7 @@ import java.util.Set;
|
||||
*/
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class MvcConfiguration implements WebMvcConfigurer {
|
||||
|
||||
private static final String UTF8 = "UTF-8";
|
||||
@ -146,6 +148,7 @@ public class MvcConfiguration implements WebMvcConfigurer {
|
||||
*/
|
||||
@Bean
|
||||
public AsciiDoctorTemplateResolver asciiDoctorTemplateResolver(Language language, ResourceLoader resourceLoader) {
|
||||
log.debug("template locale {}", language);
|
||||
AsciiDoctorTemplateResolver resolver = new AsciiDoctorTemplateResolver(language, resourceLoader);
|
||||
resolver.setCacheable(false);
|
||||
resolver.setOrder(1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user