src/java/de/uapcore/lightpit/modules/LanguageModule.java

changeset 29
27a0fdd7bca7
parent 28
cfc3d11884ad
child 30
fb30f7b78f9b
--- a/src/java/de/uapcore/lightpit/modules/LanguageModule.java	Sun Apr 08 16:51:15 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2018 Mike Becker. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in the
- *      documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * 
- */
-package de.uapcore.lightpit.modules;
-
-import de.uapcore.lightpit.LightPITModule;
-import de.uapcore.lightpit.AbstractLightPITServlet;
-import de.uapcore.lightpit.Constants;
-import de.uapcore.lightpit.Functions;
-import de.uapcore.lightpit.HttpMethod;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import de.uapcore.lightpit.RequestMapping;
-import de.uapcore.lightpit.ResponseType;
-import java.util.ArrayList;
-import java.util.IllformedLocaleException;
-import java.util.List;
-import java.util.Locale;
-import java.util.Optional;
-import javax.servlet.ServletException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-@LightPITModule(
-        bundleBaseName = "de.uapcore.lightpit.resources.localization.language",
-        modulePath = "language"
-)
-@WebServlet(
-        name = "LanguageModule",
-        urlPatterns = "/language/*"
-)
-public final class LanguageModule extends AbstractLightPITServlet {
-    
-    private static final Logger LOG = LoggerFactory.getLogger(LanguageModule.class);
-    
-    private final List<Locale> languages = new ArrayList<>();
-
-    @Override
-    public void init() throws ServletException {
-        super.init();
-        
-        Optional<String[]> langs = Functions.availableLanguages(getServletContext());
-        if (langs.isPresent()) {
-            for (String lang : langs.get()) {
-                try {
-                    Locale locale = Locale.forLanguageTag(lang);
-                    if (locale.getLanguage().isEmpty()) {
-                        throw new IllformedLocaleException();
-                    }
-                    languages.add(locale);
-                } catch (IllformedLocaleException ex) {
-                    LOG.warn("Specified lanaguge {} in context parameter cannot be mapped to an existing locale - skipping.", lang);
-                }
-            }
-            
-        } else {
-            languages.add(Locale.ENGLISH);
-            LOG.warn("Context parameter 'available-languges' not found. Only english will be available.");
-        }
-    }
-
-    @Override
-    public void destroy() {
-        super.destroy();
-        languages.clear();
-    }
-    
-    @RequestMapping(method = HttpMethod.GET)
-    public ResponseType handle(HttpServletRequest req, HttpServletResponse resp) {
-
-        req.setAttribute("languages", languages);
-        req.setAttribute("browserLanguage", req.getLocale());
-        
-        setStylesheet(req, "language");
-        setDynamicFragment(req, "language");
-        return ResponseType.HTML_FULL;
-    }
-    
-    @RequestMapping(method = HttpMethod.POST)
-    public ResponseType switchLanguage(HttpServletRequest req, HttpServletResponse resp) {
-        
-        Optional<Locale> chosenLanguage = Optional.ofNullable(req.getParameter("language"))
-                .map(Locale::forLanguageTag)
-                .filter((l) -> !l.getLanguage().isEmpty());
-        
-        chosenLanguage.ifPresent((l) -> req.getSession().setAttribute(Constants.SESSION_ATTR_LANGUAGE, l));
-        chosenLanguage.ifPresent(resp::setLocale);
-        
-        return handle(req, resp);
-    }
-}

mercurial