private Feed[] feeds;
private Category[] categories;
private Language[] languages;
+ /**
+ * The key is the language, the value is the default category for this language.
+ */
+ private Map<String, Category> defaultCategories = new HashMap<>();
private static final Logger LOG = Logger.getLogger(Config.class.getName());
private void loadCategories(JsonArray jcats) {
List<Category> cats;
JsonObject jcat;
+ Category cat;
String id, label, title, language;
cats = new ArrayList<>(jcats.size());
label = jcat.getString("label");
title = jcat.getString("title");
language = jcat.getString("language");
- cats.add(new Category(id, label, title, language));
+ cat = new Category(id, label, title, language);
+ cats.add(cat);
+ if (defaultCategories.get(language) == null)
+ defaultCategories.put(language, cat);
}
categories = cats.toArray(new Category[0]);
return categories;
}
- public Category getDefaultCategory() {
- return categories[0];
+ public Category getDefaultCategory(Language lang) {
+ return defaultCategories.get(lang.getId());
}
public Language[] getLanguages() {
for (Language l: config.getLanguages()) {
if (path.equals(l.toURL())) {
- doTemporaryRedirect(config.getDefaultCategory().getURL(), resp);
+ doTemporaryRedirect(config.getDefaultCategory(l).getURL(), resp);
return ;
}
}
resp.getWriter().write("Not found " + req.getPathInfo());
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
- } catch (IOException e) {
+ } catch (IOException | RuntimeException e) {
LOG.log(Level.SEVERE, "doGet failure", e);
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}