src/java/de/uapcore/lightpit/Functions.java

Sun, 08 Apr 2018 14:40:57 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 08 Apr 2018 14:40:57 +0200
changeset 24
8137ec335416
parent 13
f4608ad6c947
permissions
-rw-r--r--

updates copyright header

universe@7 1 /*
universe@7 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@7 3 *
universe@24 4 * Copyright 2018 Mike Becker. All rights reserved.
universe@7 5 *
universe@7 6 * Redistribution and use in source and binary forms, with or without
universe@7 7 * modification, are permitted provided that the following conditions are met:
universe@7 8 *
universe@7 9 * 1. Redistributions of source code must retain the above copyright
universe@7 10 * notice, this list of conditions and the following disclaimer.
universe@7 11 *
universe@7 12 * 2. Redistributions in binary form must reproduce the above copyright
universe@7 13 * notice, this list of conditions and the following disclaimer in the
universe@7 14 * documentation and/or other materials provided with the distribution.
universe@7 15 *
universe@7 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
universe@7 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
universe@7 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
universe@7 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
universe@7 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
universe@7 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
universe@7 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
universe@7 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
universe@7 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
universe@7 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
universe@7 26 * POSSIBILITY OF SUCH DAMAGE.
universe@7 27 *
universe@7 28 */
universe@7 29 package de.uapcore.lightpit;
universe@7 30
universe@11 31 import java.util.Optional;
universe@13 32 import javax.servlet.ServletContext;
universe@11 33 import javax.servlet.http.HttpServletRequest;
universe@10 34 import org.slf4j.Logger;
universe@10 35 import org.slf4j.LoggerFactory;
universe@10 36
universe@7 37 /**
universe@7 38 * Contains common static functions.
universe@7 39 */
universe@10 40 public final class Functions {
universe@10 41
universe@10 42 private static final Logger LOG = LoggerFactory.getLogger(Functions.class);
universe@7 43
universe@13 44 public static Optional<String[]> availableLanguages(ServletContext ctx) {
universe@13 45 return Optional.ofNullable(ctx.getInitParameter(Constants.CTX_ATTR_LANGUAGES)).map((x) -> x.split("\\s*,\\s*"));
universe@13 46 }
universe@13 47
universe@13 48 public static String enforceExt(String filename, String ext) {
universe@13 49 return filename.endsWith(ext) ? filename : filename + ext;
universe@13 50 }
universe@13 51
universe@7 52 public static String jspPath(String filename) {
universe@13 53 return enforceExt(Constants.JSP_PATH_PREFIX + filename, ".jsp");
universe@13 54 }
universe@13 55
universe@13 56 public static String jspfPath(String filename) {
universe@13 57 return enforceExt(Constants.JSPF_PATH_PREFIX + filename, ".jspf");
universe@13 58 }
universe@13 59
universe@13 60 public static String dynFragmentPath(String filename) {
universe@13 61 return enforceExt(Constants.DYN_FRAGMENT_PATH_PREFIX + filename, ".jsp");
universe@7 62 }
universe@10 63
universe@11 64 public static String fqn(String base, String name) {
universe@10 65 return base+"."+name;
universe@10 66 }
universe@10 67
universe@11 68 public static String fqn(Class clazz, String name) {
universe@11 69 return fqn(clazz.getName(), name);
universe@11 70 }
universe@11 71
universe@11 72 public static String fullPath(LightPITModule module, RequestMapping mapping) {
universe@11 73 StringBuilder sb = new StringBuilder();
universe@11 74 sb.append(module.modulePath());
universe@11 75 sb.append('/');
universe@11 76 if (!mapping.requestPath().isEmpty()) {
universe@11 77 sb.append(mapping.requestPath().isEmpty());
universe@11 78 sb.append('/');
universe@11 79 }
universe@11 80 return sb.toString();
universe@11 81 }
universe@11 82
universe@11 83 public static String fullPath(HttpServletRequest req) {
universe@11 84 return req.getServletPath() + Optional.ofNullable(req.getPathInfo()).orElse("");
universe@10 85 }
universe@10 86
universe@10 87 /**
universe@10 88 * Returns the module path of the given LightPIT Servlet module.
universe@10 89 *
universe@10 90 * If you specify a malformed LightPIT servlet, which does not have a module
universe@10 91 * annotation, the path to the <code>/error/404.html</code> page is returned.
universe@10 92 *
universe@10 93 * @param clazz the servlet class
universe@10 94 * @return the module path
universe@10 95 */
universe@10 96 public static String modulePathOf(Class<? extends AbstractLightPITServlet> clazz) {
universe@11 97 Optional<LightPITModule> moduleInfo = Optional.ofNullable(clazz.getAnnotation(LightPITModule.class));
universe@11 98 if (moduleInfo.isPresent()) {
universe@11 99 return moduleInfo.get().modulePath();
universe@11 100 } else {
universe@10 101 LOG.warn(
universe@10 102 "{} is a LightPIT Servlet but is missing the module annotation.",
universe@10 103 clazz.getName()
universe@10 104 );
universe@10 105 return "/error/404.html";
universe@10 106 }
universe@10 107 }
universe@10 108
universe@10 109 /**
universe@10 110 * This class is not instantiatable.
universe@10 111 */
universe@10 112 private Functions() {}
universe@7 113 }

mercurial