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