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

changeset 34
824d4042c857
parent 33
fd8c40ff78c3
child 45
cc7f082c5ef3
equal deleted inserted replaced
33:fd8c40ff78c3 34:824d4042c857
1 /* 1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 * 3 *
4 * Copyright 2018 Mike Becker. All rights reserved. 4 * Copyright 2018 Mike Becker. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met: 7 * modification, are permitted provided that the following conditions are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 * 27 *
28 */ 28 */
29 package de.uapcore.lightpit; 29 package de.uapcore.lightpit;
30 30
31 import org.slf4j.Logger; 31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
37 37
38 /** 38 /**
39 * Contains common static functions. 39 * Contains common static functions.
40 */ 40 */
41 public final class Functions { 41 public final class Functions {
42 42
43 private static final Logger LOG = LoggerFactory.getLogger(Functions.class); 43 private static final Logger LOG = LoggerFactory.getLogger(Functions.class);
44 44
45 public static Optional<String[]> availableLanguages(ServletContext ctx) { 45 public static Optional<String[]> availableLanguages(ServletContext ctx) {
46 return Optional.ofNullable(ctx.getInitParameter(Constants.CTX_ATTR_LANGUAGES)).map((x) -> x.split("\\s*,\\s*")); 46 return Optional.ofNullable(ctx.getInitParameter(Constants.CTX_ATTR_LANGUAGES)).map((x) -> x.split("\\s*,\\s*"));
47 } 47 }
48 48
49 public static String enforceExt(String filename, String ext) { 49 public static String enforceExt(String filename, String ext) {
50 return filename.endsWith(ext) ? filename : filename + ext; 50 return filename.endsWith(ext) ? filename : filename + ext;
51 } 51 }
52 52
53 public static String jspPath(String filename) { 53 public static String jspPath(String filename) {
54 return enforceExt(Constants.JSP_PATH_PREFIX + filename, ".jsp"); 54 return enforceExt(Constants.JSP_PATH_PREFIX + filename, ".jsp");
55 } 55 }
56 56
57 public static String jspfPath(String filename) { 57 public static String jspfPath(String filename) {
58 return enforceExt(Constants.JSPF_PATH_PREFIX + filename, ".jspf"); 58 return enforceExt(Constants.JSPF_PATH_PREFIX + filename, ".jspf");
59 } 59 }
60 60
61 public static String dynFragmentPath(String filename) { 61 public static String dynFragmentPath(String filename) {
62 return enforceExt(Constants.DYN_FRAGMENT_PATH_PREFIX + filename, ".jsp"); 62 return enforceExt(Constants.DYN_FRAGMENT_PATH_PREFIX + filename, ".jsp");
63 } 63 }
64 64
65 public static String fqn(String base, String name) { 65 public static String fqn(String base, String name) {
66 return base+"."+name; 66 return base + "." + name;
67 } 67 }
68 68
69 public static String fqn(Class<?> clazz, String name) { 69 public static String fqn(Class<?> clazz, String name) {
70 return fqn(clazz.getName(), name); 70 return fqn(clazz.getName(), name);
71 } 71 }
72 72
73 public static String fullPath(LightPITModule module, RequestMapping mapping) { 73 public static String fullPath(LightPITModule module, RequestMapping mapping) {
74 StringBuilder sb = new StringBuilder(); 74 StringBuilder sb = new StringBuilder();
75 sb.append(module.modulePath()); 75 sb.append(module.modulePath());
76 sb.append('/'); 76 sb.append('/');
77 if (!mapping.requestPath().isEmpty()) { 77 if (!mapping.requestPath().isEmpty()) {
78 sb.append(mapping.requestPath().isEmpty()); 78 sb.append(mapping.requestPath().isEmpty());
79 sb.append('/'); 79 sb.append('/');
80 } 80 }
81 return sb.toString(); 81 return sb.toString();
82 } 82 }
83 83
84 public static String fullPath(HttpServletRequest req) { 84 public static String fullPath(HttpServletRequest req) {
85 return req.getServletPath() + Optional.ofNullable(req.getPathInfo()).orElse(""); 85 return req.getServletPath() + Optional.ofNullable(req.getPathInfo()).orElse("");
86 } 86 }
87 87
88 /** 88 /**
89 * Returns the module path of the given LightPIT Servlet module. 89 * Returns the module path of the given LightPIT Servlet module.
90 * 90 * <p>
91 * If you specify a malformed LightPIT servlet, which does not have a module 91 * If you specify a malformed LightPIT servlet, which does not have a module
92 * annotation, the path to the <code>/error/404.html</code> page is returned. 92 * annotation, the path to the <code>/error/404.html</code> page is returned.
93 * 93 *
94 * @param clazz the servlet class 94 * @param clazz the servlet class
95 * @return the module path 95 * @return the module path
96 */ 96 */
97 public static String modulePathOf(Class<? extends AbstractLightPITServlet> clazz) { 97 public static String modulePathOf(Class<? extends AbstractLightPITServlet> clazz) {
98 Optional<LightPITModule> moduleInfo = Optional.ofNullable(clazz.getAnnotation(LightPITModule.class)); 98 Optional<LightPITModule> moduleInfo = Optional.ofNullable(clazz.getAnnotation(LightPITModule.class));
104 clazz.getName() 104 clazz.getName()
105 ); 105 );
106 return "/error/404.html"; 106 return "/error/404.html";
107 } 107 }
108 } 108 }
109 109
110 /** 110 /**
111 * This class is not instantiatable. 111 * This class is not instantiatable.
112 */ 112 */
113 private Functions() {} 113 private Functions() {
114 }
114 } 115 }

mercurial