File Source: PreviewURLStrategy.java
/*
P/P * Method: org.apache.roller.weblogger.business.PreviewURLStrategy__static_init
*/
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. The ASF licenses this file to You
4 * under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License. For additional information regarding
15 * copyright in this work, please see the NOTICE file in the top level
16 * directory of this distribution.
17 */
18
19 package org.apache.roller.weblogger.business;
20
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
25 import org.apache.roller.weblogger.pojos.Weblog;
26 import org.apache.roller.weblogger.pojos.WeblogTheme;
27 import org.apache.roller.weblogger.util.URLUtilities;
28
29
30 /**
31 * A URLStrategy used by the preview rendering system.
32 */
33 public class PreviewURLStrategy extends MultiWeblogURLStrategy {
34
35 private final String previewTheme;
36
37
/*
P/P * Method: void org.apache.roller.weblogger.business.PreviewURLStrategy(String)
*
* Postconditions:
* this.previewTheme == theme
* init'ed(this.previewTheme)
*/
38 public PreviewURLStrategy(String theme) {
39 previewTheme = theme;
40 }
41
42
43 /**
44 * Get root url for a given *preview* weblog.
45 * Optionally for a certain locale.
46 */
47 @Override
48 public String getWeblogURL(Weblog weblog, String locale, boolean absolute) {
49
/*
P/P * Method: String getWeblogURL(Weblog, String, bool)
*
* Preconditions:
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
* (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
*
* Postconditions:
* init'ed(java.lang.StringBuilder:toString(...)._tainted)
* return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
*
* Test Vectors:
* absolute: {0}, {1}
* locale: Addr_Set{null}, Inverse{null}
* this.previewTheme: Addr_Set{null}, Inverse{null}
* weblog: Inverse{null}, Addr_Set{null}
*/
50 if(weblog == null) {
51 return null;
52 }
53
54 StringBuffer url = new StringBuffer();
55
56 if(absolute) {
57 url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
58 } else {
59 url.append(WebloggerRuntimeConfig.getRelativeContextURL());
60 }
61
62 url.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
63
64 if(locale != null) {
65 url.append(locale).append("/");
66 }
67
68 Map params = new HashMap();
69 if(previewTheme != null) {
70 params.put("theme", URLUtilities.encode(previewTheme));
71 }
72
73 return url.toString() + URLUtilities.getQueryString(params);
74 }
75
76
77 /**
78 * Get url for a given *preview* weblog entry.
79 * Optionally for a certain locale.
80 */
81 @Override
82 public String getWeblogEntryURL(Weblog weblog,
83 String locale,
84 String previewAnchor,
85 boolean absolute) {
86
/*
P/P * Method: String getWeblogEntryURL(Weblog, String, String, bool)
*
* Preconditions:
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
* (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
*
* Postconditions:
* init'ed(java.lang.StringBuilder:toString(...)._tainted)
* return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
*
* Test Vectors:
* absolute: {0}, {1}
* locale: Addr_Set{null}, Inverse{null}
* previewAnchor: Addr_Set{null}, Inverse{null}
* this.previewTheme: Addr_Set{null}, Inverse{null}
* weblog: Inverse{null}, Addr_Set{null}
*/
87 if(weblog == null) {
88 return null;
89 }
90
91 StringBuffer url = new StringBuffer();
92
93 if(absolute) {
94 url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
95 } else {
96 url.append(WebloggerRuntimeConfig.getRelativeContextURL());
97 }
98
99 url.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
100
101 if(locale != null) {
102 url.append(locale).append("/");
103 }
104
105 Map params = new HashMap();
106 if(previewTheme != null) {
107 params.put("theme", URLUtilities.encode(previewTheme));
108 }
109 if(previewAnchor != null) {
110 params.put("previewEntry", URLUtilities.encode(previewAnchor));
111 }
112
113 return url.toString() + URLUtilities.getQueryString(params);
114 }
115
116
117 /**
118 * Get url for a collection of entries on a given weblog.
119 */
120 public String getWeblogCollectionURL(Weblog weblog,
121 String locale,
122 String category,
123 String dateString,
124 List tags,
125 int pageNum,
126 boolean absolute) {
127
/*
P/P * Method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
*
* Preconditions:
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
* (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
*
* Postconditions:
* init'ed(java.lang.StringBuilder:toString(...)._tainted)
* return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
*
* Test Vectors:
* absolute: {0}, {1}
* category: Addr_Set{null}, Inverse{null}
* dateString: Inverse{null}, Addr_Set{null}
* locale: Addr_Set{null}, Inverse{null}
* pageNum: {-231..0}, {1..232-1}
* tags: Addr_Set{null}, Inverse{null}
* this.previewTheme: Addr_Set{null}, Inverse{null}
* weblog: Inverse{null}, Addr_Set{null}
* java.lang.String:equals(...)@148: {0}, {1}
* java.lang.String:startsWith(...)@150: {0}, {1}
* ...
*/
128 if(weblog == null) {
129 return null;
130 }
131
132 StringBuffer pathinfo = new StringBuffer();
133 Map params = new HashMap();
134
135 if(absolute) {
136 pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
137 } else {
138 pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
139 }
140
141 pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
142
143 if(locale != null) {
144 pathinfo.append(locale).append("/");
145 }
146
147 String cat = null;
148 if(category != null && "/".equals(category)) {
149 cat = null;
150 } else if(category != null && category.startsWith("/")) {
151 cat = category.substring(1);
152 }
153
154 if(cat != null && dateString == null) {
155 pathinfo.append("category/").append(URLUtilities.encodePath(cat));
156
157 } else if(dateString != null && cat == null) {
158 pathinfo.append("date/").append(dateString);
159
160 } else if(tags != null && tags.size() > 0) {
161 pathinfo.append("tags/").append(URLUtilities.getEncodedTagsString(tags));
162 } else {
163 if(dateString != null) params.put("date", dateString);
164 if(cat != null) params.put("cat", URLUtilities.encode(cat));
165 }
166
167 if(pageNum > 0) {
168 params.put("page", Integer.toString(pageNum));
169 }
170
171 if(previewTheme != null) {
172 params.put("theme", URLUtilities.encode(previewTheme));
173 }
174
175 return pathinfo.toString() + URLUtilities.getQueryString(params);
176 }
177
178
179 /**
180 * Get url for a custom page on a given weblog.
181 */
182 @Override
183 public String getWeblogPageURL(Weblog weblog,
184 String locale,
185 String pageLink,
186 String entryAnchor,
187 String category,
188 String dateString,
189 List tags,
190 int pageNum,
191 boolean absolute) {
192
/*
P/P * Method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
*
* Preconditions:
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
* (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
*
* Postconditions:
* init'ed(java.lang.StringBuilder:toString(...)._tainted)
* return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...),&java.lang.StringBuilder:toString(...)}
*
* Test Vectors:
* absolute: {0}, {1}
* category: Addr_Set{null}, Inverse{null}
* dateString: Addr_Set{null}, Inverse{null}
* locale: Addr_Set{null}, Inverse{null}
* pageLink: Addr_Set{null}, Inverse{null}
* pageNum: {-231..0}, {1..232-1}
* tags: Addr_Set{null}, Inverse{null}
* this.previewTheme: Addr_Set{null}, Inverse{null}
* weblog: Inverse{null}, Addr_Set{null}
* java.util.List:size(...)@226: {-231..0}, {1..232-1}
*/
193 if(weblog == null) {
194 return null;
195 }
196
197 StringBuffer pathinfo = new StringBuffer();
198 Map params = new HashMap();
199
200 if(absolute) {
201 pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
202 } else {
203 pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
204 }
205
206 pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
207
208 if(locale != null) {
209 pathinfo.append(locale).append("/");
210 }
211
212 if(previewTheme != null) {
213 params.put("theme", URLUtilities.encode(previewTheme));
214 }
215
216 if(pageLink != null) {
217 pathinfo.append("page/").append(pageLink);
218
219 // for custom pages we only allow query params
220 if(dateString != null) {
221 params.put("date", dateString);
222 }
223 if(category != null) {
224 params.put("cat", URLUtilities.encode(category));
225 }
226 if(tags != null && tags.size() > 0) {
227 params.put("tags", URLUtilities.getEncodedTagsString(tags));
228 }
229 if(pageNum > 0) {
230 params.put("page", Integer.toString(pageNum));
231 }
232 } else {
233 // if there is no page link then this is just a typical collection url
234 return getWeblogCollectionURL(weblog, locale, category, dateString, tags, pageNum, absolute);
235 }
236
237 return pathinfo.toString() + URLUtilities.getQueryString(params);
238 }
239
240
241 /**
242 * Get a url to a *preview* resource on a given weblog.
243 */
244 @Override
245 public String getWeblogResourceURL(Weblog weblog, String filePath, boolean absolute) {
246
/*
P/P * Method: String getWeblogResourceURL(Weblog, String, bool)
*
* Preconditions:
* (soft) filePath != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
* (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
* (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
* (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
*
* Postconditions:
* init'ed(java.lang.StringBuilder:toString(...)._tainted)
* return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
*
* Test Vectors:
* absolute: {0}, {1}
* this.previewTheme: Addr_Set{null}, Inverse{null}
* weblog: Inverse{null}, Addr_Set{null}
* java.lang.String:equals(...)@268: {1}, {0}
* java.lang.String:startsWith(...)@261: {0}, {1}
*/
247 if(weblog == null) {
248 return null;
249 }
250
251 StringBuffer url = new StringBuffer();
252
253 if(absolute) {
254 url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
255 } else {
256 url.append(WebloggerRuntimeConfig.getRelativeContextURL());
257 }
258
259 url.append("/roller-ui/authoring/previewresource/").append(weblog.getHandle()).append("/");
260
261 if(filePath.startsWith("/")) {
262 url.append(filePath.substring(1));
263 } else {
264 url.append(filePath);
265 }
266
267 Map params = new HashMap();
268 if(previewTheme != null && !WeblogTheme.CUSTOM.equals(previewTheme)) {
269 params.put("theme", URLUtilities.encode(previewTheme));
270 }
271
272 return url.toString() + URLUtilities.getQueryString(params);
273 }
274
275 }
SofCheck Inspector Build Version : 2.18479
| PreviewURLStrategy.java |
2009-Jan-02 14:25:30 |
| PreviewURLStrategy.class |
2009-Sep-04 03:12:30 |