1 /* |
|
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
3 * |
|
4 * Copyright 2018 Mike Becker. All rights reserved. |
|
5 * |
|
6 * Redistribution and use in source and binary forms, with or without |
|
7 * modification, are permitted provided that the following conditions are met: |
|
8 * |
|
9 * 1. Redistributions of source code must retain the above copyright |
|
10 * notice, this list of conditions and the following disclaimer. |
|
11 * |
|
12 * 2. Redistributions in binary form must reproduce the above copyright |
|
13 * notice, this list of conditions and the following disclaimer in the |
|
14 * documentation and/or other materials provided with the distribution. |
|
15 * |
|
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
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 |
|
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 |
|
26 * POSSIBILITY OF SUCH DAMAGE. |
|
27 * |
|
28 */ |
|
29 package de.uapcore.lightpit; |
|
30 |
|
31 import javax.servlet.annotation.WebServlet; |
|
32 import java.lang.annotation.*; |
|
33 |
|
34 |
|
35 /** |
|
36 * Contains information about a LightPIT module. |
|
37 * <p> |
|
38 * This annotation is typically used to annotate the {@link WebServlet} which |
|
39 * implements the module's functionality. |
|
40 */ |
|
41 @Documented |
|
42 @Retention(RetentionPolicy.RUNTIME) |
|
43 @Target(ElementType.TYPE) |
|
44 public @interface LightPITModule { |
|
45 /** |
|
46 * Base name of the module specific resource bundle. |
|
47 * |
|
48 * @return a base name suitable for the JSTL tag 'setBundle'. |
|
49 */ |
|
50 String bundleBaseName(); |
|
51 |
|
52 /** |
|
53 * The path for this module, which will also be used for the menu entry. |
|
54 * <p> |
|
55 * This path must adhere to the URL pattern of the Servlet but must not |
|
56 * contain any starting or trailing slashes. |
|
57 * |
|
58 * @return the relative module path |
|
59 */ |
|
60 String modulePath(); |
|
61 |
|
62 /** |
|
63 * If set to <code>true</code>, this module is always loaded, but never |
|
64 * visible in the menu or the Web UI module manager. |
|
65 * |
|
66 * @return true, if this is a system module |
|
67 */ |
|
68 boolean systemModule() default false; |
|
69 |
|
70 /** |
|
71 * Optionally specifies a default priority for this module. |
|
72 * The priority is used to order the menu entries. |
|
73 * |
|
74 * @return an integer priority |
|
75 */ |
|
76 int defaultPriority() default 1000; |
|
77 |
|
78 /** |
|
79 * Class representing the annotation. |
|
80 * This is necessary, because the EL resolver cannot deal with |
|
81 * annotation objects. |
|
82 * <p> |
|
83 * Note, that only the properties which are interesting for the JSP pages |
|
84 * are proxied by this object. |
|
85 */ |
|
86 class ELProxy { |
|
87 private final String bundleBaseName, modulePath; |
|
88 |
|
89 public ELProxy(LightPITModule annotation) { |
|
90 bundleBaseName = annotation.bundleBaseName(); |
|
91 modulePath = annotation.modulePath(); |
|
92 } |
|
93 |
|
94 public String getBundleBaseName() { |
|
95 return bundleBaseName; |
|
96 } |
|
97 public String getModulePath() { |
|
98 return modulePath; |
|
99 } |
|
100 } |
|
101 } |
|