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

Wed, 13 May 2020 21:10:23 +0200

author
Mike Becker <universe@uap-core.de>
date
Wed, 13 May 2020 21:10:23 +0200
changeset 45
cc7f082c5ef3
parent 34
824d4042c857
child 47
57cfb94ab99f
permissions
-rw-r--r--

simplifies menu generation, adds submenus and removes VersionsModule (versions will be part of the ProjectsModule)

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@11 69 public static String fullPath(LightPITModule module, RequestMapping mapping) {
universe@11 70 StringBuilder sb = new StringBuilder();
universe@11 71 sb.append(module.modulePath());
universe@11 72 sb.append('/');
universe@11 73 if (!mapping.requestPath().isEmpty()) {
universe@11 74 sb.append(mapping.requestPath().isEmpty());
universe@11 75 sb.append('/');
universe@11 76 }
universe@11 77 return sb.toString();
universe@11 78 }
universe@34 79
universe@11 80 public static String fullPath(HttpServletRequest req) {
universe@11 81 return req.getServletPath() + Optional.ofNullable(req.getPathInfo()).orElse("");
universe@10 82 }
universe@34 83
universe@10 84 /**
universe@10 85 * Returns the module path of the given LightPIT Servlet module.
universe@34 86 * <p>
universe@10 87 * If you specify a malformed LightPIT servlet, which does not have a module
universe@10 88 * annotation, the path to the <code>/error/404.html</code> page is returned.
universe@34 89 *
universe@10 90 * @param clazz the servlet class
universe@10 91 * @return the module path
universe@10 92 */
universe@10 93 public static String modulePathOf(Class<? extends AbstractLightPITServlet> clazz) {
universe@11 94 Optional<LightPITModule> moduleInfo = Optional.ofNullable(clazz.getAnnotation(LightPITModule.class));
universe@11 95 if (moduleInfo.isPresent()) {
universe@11 96 return moduleInfo.get().modulePath();
universe@11 97 } else {
universe@10 98 LOG.warn(
universe@10 99 "{} is a LightPIT Servlet but is missing the module annotation.",
universe@10 100 clazz.getName()
universe@10 101 );
universe@10 102 return "/error/404.html";
universe@10 103 }
universe@10 104 }
universe@34 105
universe@10 106 /**
universe@10 107 * This class is not instantiatable.
universe@10 108 */
universe@34 109 private Functions() {
universe@34 110 }
universe@7 111 }

mercurial