Class | Line # | Actions | |||||
---|---|---|---|---|---|---|---|
ISkinConfig | 35 | 0 | - | 0 | 0 |
1 | /* | |
2 | * Licensed to the Apache Software Foundation (ASF) under one | |
3 | * or more contributor license agreements. See the NOTICE file | |
4 | * distributed with this work for additional information | |
5 | * regarding copyright ownership. The ASF licenses this file | |
6 | * to you under the Apache License, Version 2.0 (the | |
7 | * "License"); you may not use this file except in compliance | |
8 | * with the License. You may obtain a copy of the License at | |
9 | * | |
10 | * http://www.apache.org/licenses/LICENSE-2.0 | |
11 | * | |
12 | * Unless required by applicable law or agreed to in writing, | |
13 | * software distributed under the License is distributed on an | |
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
15 | * KIND, either express or implied. See the License for the | |
16 | * specific language governing permissions and limitations | |
17 | * under the License. | |
18 | */ | |
19 | package org.devacfr.maven.skins.reflow; | |
20 | ||
21 | import javax.annotation.Nonnull; | |
22 | import javax.annotation.Nullable; | |
23 | ||
24 | import org.apache.maven.doxia.site.SiteModel; | |
25 | import org.apache.maven.project.MavenProject; | |
26 | import org.codehaus.plexus.util.xml.Xpp3Dom; | |
27 | import org.devacfr.maven.skins.reflow.context.Context; | |
28 | ||
29 | /** | |
30 | * Interface of skin config. | |
31 | * | |
32 | * @author devacfr | |
33 | * @since 2.1 | |
34 | */ | |
35 | public interface ISkinConfig { | |
36 | ||
37 | /** | |
38 | * A convenience method to check if the value of the {@code property} is {@code "false"}. Useful for properties that | |
39 | * are enabled by default - checks if the property is set to {@code "false"} explicitly. | |
40 | * | |
41 | * @param property | |
42 | * the property of interest | |
43 | * @return {@code true} if the configuration value is set either in page or globally, and is equal to | |
44 | * {@code "false"}. Note that this will return {@code false} if property is not set at all. | |
45 | * @see #get(String) | |
46 | * @since 1.0 | |
47 | */ | |
48 | boolean not(String property); | |
49 | ||
50 | /** | |
51 | * Gets the associated value to {@code key} stored in Velocity context. | |
52 | * | |
53 | * @param key | |
54 | * the key name of associated value in Velocity context. | |
55 | * @param type | |
56 | * the the type of expected value. | |
57 | * @return Returns the associated value to {@code key} stored in Velocity context. | |
58 | * @param <T> | |
59 | * the type of expected value. | |
60 | * @since 2.1 | |
61 | */ | |
62 | <T> T getContextValue(@Nonnull String key, @Nonnull Class<T> type); | |
63 | ||
64 | /** | |
65 | * Sets the value in Velocity context associated to {@code key}. | |
66 | * | |
67 | * @param key | |
68 | * the key name of associated value in Velocity context. | |
69 | * @param value | |
70 | * the new value | |
71 | * @since 2.1 | |
72 | */ | |
73 | void setContextValue(@Nonnull String key, Object value); | |
74 | ||
75 | /** | |
76 | * Gets the associated tool to {@code name} stored in toolbox of Velocity context. | |
77 | * | |
78 | * @param toolName | |
79 | * the name of tool associated in Velocity context. | |
80 | * @param toolType | |
81 | * the expected class of tool. | |
82 | * @return Returns the associated tool to {@code name} stored in toolbox of Velocity context. | |
83 | * @param <T> | |
84 | * the type of expected tool. | |
85 | * @since 2.1 | |
86 | */ | |
87 | @Nullable <T> T getToolbox(@Nonnull String toolName, @Nonnull Class<T> toolType); | |
88 | ||
89 | /** | |
90 | * @return Returns the root level {@link Xpp3Dom}. | |
91 | */ | |
92 | @Nonnull | |
93 | Xpp3Dom getGlobalProperties(); | |
94 | ||
95 | /** | |
96 | * @return Returns the page level {@link Xpp3Dom}. | |
97 | */ | |
98 | @Nonnull | |
99 | Xpp3Dom getPageProperties(); | |
100 | ||
101 | /** | |
102 | * @return Returns a {@link String} representing the namespace. | |
103 | */ | |
104 | @Nonnull | |
105 | String getNamespace(); | |
106 | ||
107 | /** | |
108 | * @return Returns the {@link String} representing the fileId. | |
109 | */ | |
110 | @Nullable String getFileId(); | |
111 | ||
112 | /** | |
113 | * @return the context | |
114 | */ | |
115 | @Nonnull | |
116 | Context<?> getContext(); | |
117 | ||
118 | /** | |
119 | * @return Returns the {@link String} representing the projectId. | |
120 | */ | |
121 | @Nullable Object getProjectId(); | |
122 | ||
123 | /** | |
124 | * @return the project | |
125 | */ | |
126 | @Nonnull | |
127 | MavenProject getProject(); | |
128 | ||
129 | /** | |
130 | * @return the SiteModel | |
131 | */ | |
132 | @Nonnull | |
133 | SiteModel getSiteModel(); | |
134 | ||
135 | /** | |
136 | * Default accessor for config properties. Instead of using {@code $config.get("myproperty")}, one can utilise | |
137 | * Velocity fallback onto the default getter and use {@code $config.myproperty}. | |
138 | * | |
139 | * @param property | |
140 | * the property of interest | |
141 | * @return configuration node if found in the following sequence: | |
142 | * <ol> | |
143 | * <li>In page configuration</li> | |
144 | * <li>In global configuration</li> | |
145 | * <li>{@code null} otherwise</li> | |
146 | * </ol> | |
147 | * @since 1.0 | |
148 | */ | |
149 | @Nullable Xpp3Dom get(@Nonnull String property); | |
150 | ||
151 | /** | |
152 | * Gets the text value of the given {@code property}. | |
153 | * | |
154 | * @param property | |
155 | * the property to use | |
156 | * @param targetType | |
157 | * the returned target type use to convert value. | |
158 | * @param defaultValue | |
159 | * the default value used if property doesn't exist. | |
160 | * @return Returns a converted value of the given {@code property}. | |
161 | * @since 2.0 | |
162 | * @param <T> | |
163 | * the type of returned object. | |
164 | */ | |
165 | @Nullable <T> T getPropertyValue(@Nonnull String property, @Nonnull Class<T> targetType, @Nullable T defaultValue); | |
166 | ||
167 | /** | |
168 | * Gets the attribute value of the given {@code attribute} of {@code property}. | |
169 | * | |
170 | * @param property | |
171 | * the property to use | |
172 | * @param attribute | |
173 | * the attribute to use. | |
174 | * @param targetType | |
175 | * the returned target type use to convert value. | |
176 | * @param defaultValue | |
177 | * the default value used if property doesn't exist. | |
178 | * @return Returns a converted value of the given {@code property}. | |
179 | * @since 2.0 | |
180 | * @param <T> | |
181 | * the type of returned object. | |
182 | */ | |
183 | @Nullable <T> T getAttributeValue(@Nonnull String property, | |
184 | @Nonnull String attribute, | |
185 | @Nonnull Class<T> targetType, | |
186 | @Nullable T defaultValue); | |
187 | ||
188 | /** | |
189 | * Get the value contained in specific attribute of {@code element} parameter. | |
190 | * | |
191 | * @param element | |
192 | * the xml element. | |
193 | * @param attribute | |
194 | * the attribute name. | |
195 | * @param targetType | |
196 | * the class of converted returned value. | |
197 | * @param defaultValue | |
198 | * the value to return if attribute is empty or {@code null}. | |
199 | * @return Returns the converted value of specific attribute of {@code element} parameter if exists, otherwise | |
200 | * returns the default value. | |
201 | * @param <T> | |
202 | * the type of returned value. | |
203 | */ | |
204 | @Nullable <T> T getAttributeValue(@Nonnull Xpp3Dom element, | |
205 | @Nonnull String attribute, | |
206 | @Nonnull Class<T> targetType, | |
207 | T defaultValue); | |
208 | ||
209 | /** | |
210 | * @param href | |
211 | * link to relative. | |
212 | * @return Returns Relativizes the link. | |
213 | */ | |
214 | @Nullable String relativeLink(String href); | |
215 | ||
216 | /** | |
217 | * Gets the indicating if the link is active. | |
218 | * | |
219 | * @param href | |
220 | * the link to check. | |
221 | * @return Returns {@code true} the link is active, otherwise {@code false}. | |
222 | */ | |
223 | boolean isActiveLink(@Nullable String href); | |
224 | ||
225 | /** | |
226 | * Evaluate a velocity expression in the current context. | |
227 | * | |
228 | * @param vtl | |
229 | * The velocity expression to evaluate | |
230 | * @param requiredClass | |
231 | * the class of returned value. | |
232 | * @return Returns the value returned by the evaluated velocity expression. | |
233 | * @param <T> | |
234 | * Tthe type of expected returned value. | |
235 | */ | |
236 | @Nullable <T> T eval(@Nullable String vtl, @Nonnull Class<T> requiredClass); | |
237 | ||
238 | /** | |
239 | * @return Returns a {@link String} representing the relative path to root site. | |
240 | */ | |
241 | @Nonnull | |
242 | public String getResourcePath(); | |
243 | } |