Skip to content

Commit c39de7d

Browse files
Use default locale for harvester validation. (#9053)
Fixes issue where harvester validation did not have an HTTP request attributes which was causing null pointer error. Co-authored-by: Ian Allen <ianwallen@hotmail.com>
1 parent ad73d33 commit c39de7d

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

services/src/main/java/org/fao/geonet/api/records/formatters/SchemaLocalizations.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.jdom.JDOMException;
4242
import org.locationtech.jts.util.Assert;
4343
import org.springframework.context.ApplicationContext;
44+
import org.springframework.util.StringUtils;
4445
import org.springframework.web.context.request.RequestContextHolder;
4546
import org.springframework.web.context.request.ServletRequestAttributes;
4647

@@ -99,14 +100,23 @@ static Map<String, SchemaLocalization> loadSchemaLocalizations(ApplicationContex
99100
public static SchemaLocalizations create(String schema) throws IOException, JDOMException {
100101
Object obj = RequestContextHolder.getRequestAttributes();
101102

102-
ServletRequestAttributes attributes = (ServletRequestAttributes) obj;
103-
HttpServletRequest request = attributes.getRequest();
103+
String lang3 = null;
104+
if (obj instanceof ServletRequestAttributes) {
104105

105-
final ApplicationContext appContext = ApplicationContextHolder.get();
106-
final ServiceContext serviceContext = ServiceContext.get();
107-
final String lang3 = serviceContext != null ?
108-
serviceContext.getLanguage() :
109-
appContext.getBean(LanguageUtils.class).getIso3langCode(request.getLocales());
106+
ServletRequestAttributes attributes = (ServletRequestAttributes) obj;
107+
HttpServletRequest request = attributes.getRequest();
108+
109+
final ApplicationContext appContext = ApplicationContextHolder.get();
110+
final ServiceContext serviceContext = ServiceContext.get();
111+
lang3 = serviceContext != null ?
112+
serviceContext.getLanguage() :
113+
appContext.getBean(LanguageUtils.class).getIso3langCode(request.getLocales());
114+
}
115+
if (!StringUtils.hasLength(lang3)) {
116+
// It may be null if executed from a jobs which don't have servlet request attributes.
117+
// Use the system default locale when language not detected.
118+
lang3 = Locale.getDefault().getISO3Language();
119+
}
110120
return create(schema, lang3);
111121
}
112122

0 commit comments

Comments
 (0)