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

Thu, 14 May 2020 22:48:01 +0200

author
Mike Becker <universe@uap-core.de>
date
Thu, 14 May 2020 22:48:01 +0200
changeset 47
57cfb94ab99f
parent 45
cc7f082c5ef3
child 74
91d1fc2a3a14
permissions
-rw-r--r--

projects can now be added and updated

universe@7 1 /*
universe@7 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@34 3 *
universe@24 4 * Copyright 2018 Mike Becker. All rights reserved.
universe@34 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@34 27 *
universe@7 28 */
universe@7 29 package de.uapcore.lightpit;
universe@7 30
universe@33 31 import org.slf4j.Logger;
universe@33 32 import org.slf4j.LoggerFactory;
universe@33 33
universe@13 34 import javax.servlet.ServletContext;
universe@11 35 import javax.servlet.http.HttpServletRequest;
universe@33 36 import java.util.Optional;
universe@10 37
universe@7 38 /**
universe@7 39 * Contains common static functions.
universe@7 40 */
universe@10 41 public final class Functions {
universe@34 42
universe@10 43 private static final Logger LOG = LoggerFactory.getLogger(Functions.class);
universe@7 44
universe@13 45 public static Optional<String[]> availableLanguages(ServletContext ctx) {
universe@13 46 return Optional.ofNullable(ctx.getInitParameter(Constants.CTX_ATTR_LANGUAGES)).map((x) -> x.split("\\s*,\\s*"));
universe@13 47 }
universe@34 48
universe@13 49 public static String enforceExt(String filename, String ext) {
universe@13 50 return filename.endsWith(ext) ? filename : filename + ext;
universe@13 51 }
universe@13 52
universe@7 53 public static String jspPath(String filename) {
universe@13 54 return enforceExt(Constants.JSP_PATH_PREFIX + filename, ".jsp");
universe@13 55 }
universe@34 56
universe@13 57 public static String dynFragmentPath(String filename) {
universe@13 58 return enforceExt(Constants.DYN_FRAGMENT_PATH_PREFIX + filename, ".jsp");
universe@7 59 }
universe@34 60
universe@11 61 public static String fqn(String base, String name) {
universe@34 62 return base + "." + name;
universe@10 63 }
universe@33 64
universe@33 65 public static String fqn(Class<?> clazz, String name) {
universe@11 66 return fqn(clazz.getName(), name);
universe@11 67 }
universe@34 68
universe@47 69 public static String baseHref(HttpServletRequest req) {
universe@47 70 return String.format("%s://%s:%d%s/",
universe@47 71 req.getScheme(),
universe@47 72 req.getServerName(),
universe@47 73 req.getServerPort(),
universe@47 74 req.getContextPath());
universe@11 75 }
universe@34 76
universe@11 77 public static String fullPath(HttpServletRequest req) {
universe@11 78 return req.getServletPath() + Optional.ofNullable(req.getPathInfo()).orElse("");
universe@10 79 }
universe@34 80
universe@10 81 /**
universe@10 82 * Returns the module path of the given LightPIT Servlet module.
universe@34 83 * <p>
universe@10 84 * If you specify a malformed LightPIT servlet, which does not have a module
universe@10 85 * annotation, the path to the <code>/error/404.html</code> page is returned.
universe@34 86 *
universe@10 87 * @param clazz the servlet class
universe@10 88 * @return the module path
universe@10 89 */
universe@10 90 public static String modulePathOf(Class<? extends AbstractLightPITServlet> clazz) {
universe@11 91 Optional<LightPITModule> moduleInfo = Optional.ofNullable(clazz.getAnnotation(LightPITModule.class));
universe@11 92 if (moduleInfo.isPresent()) {
universe@11 93 return moduleInfo.get().modulePath();
universe@11 94 } else {
universe@10 95 LOG.warn(
universe@10 96 "{} is a LightPIT Servlet but is missing the module annotation.",
universe@10 97 clazz.getName()
universe@10 98 );
universe@10 99 return "/error/404.html";
universe@10 100 }
universe@10 101 }
universe@34 102
universe@10 103 /**
universe@10 104 * This class is not instantiatable.
universe@10 105 */
universe@34 106 private Functions() {
universe@34 107 }
universe@7 108 }

mercurial