-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathFragmentRequestParserBase.java
More file actions
140 lines (121 loc) · 3.28 KB
/
FragmentRequestParserBase.java
File metadata and controls
140 lines (121 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package org.linkeddatafragments.fragments;
import javax.servlet.http.HttpServletRequest;
import org.linkeddatafragments.config.ConfigReader;
/**
* Base class for implementations of {@link IFragmentRequestParser}.
*
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
*/
abstract public class FragmentRequestParserBase implements
IFragmentRequestParser {
@Override
final public ILinkedDataFragmentRequest parseIntoFragmentRequest(
final HttpServletRequest httpRequest, final ConfigReader config)
throws IllegalArgumentException {
return getWorker(httpRequest, config).createFragmentRequest();
}
/**
*
* @param httpRequest
* @param config
* @return
* @throws IllegalArgumentException
*/
abstract protected Worker getWorker(final HttpServletRequest httpRequest,
final ConfigReader config) throws IllegalArgumentException;
/**
*
*/
abstract static protected class Worker {
/**
*
*/
public final HttpServletRequest request;
/**
*
*/
public final ConfigReader config;
/**
*
*/
public final boolean pageNumberWasRequested;
/**
*
*/
public final long pageNumber;
/**
*
* @param request
* @param config
*/
public Worker(final HttpServletRequest request,
final ConfigReader config) {
this.request = request;
this.config = config;
final String givenPageNumber = request
.getParameter(ILinkedDataFragmentRequest.PARAMETERNAME_PAGE);
if (givenPageNumber != null) {
long pageNumber;
try {
pageNumber = Long.parseLong(givenPageNumber);
} catch (final NumberFormatException ex) {
pageNumber = 1L;
}
this.pageNumber = (pageNumber > 0) ? pageNumber : 1L;
this.pageNumberWasRequested = true;
} else {
this.pageNumber = 1L;
this.pageNumberWasRequested = false;
}
}
/**
*
* @return
* @throws IllegalArgumentException
*/
abstract public ILinkedDataFragmentRequest createFragmentRequest()
throws IllegalArgumentException;
/**
*
* @return
*/
public String getFragmentURL() {
final String datasetURL = getDatasetURL();
final String query = this.request.getQueryString();
return query == null ? datasetURL : (datasetURL + "?" + query);
}
/**
* Returns the dataset URL
*
* @return the dataset URL. This consists of the base URL of the
* application, the servlet path and the pathinfo as supplied by
* request.getPathInfo()
*/
public String getDatasetURL() {
return extractBaseURL(this.request, this.config)
+ this.request.getServletPath()
+ this.request.getPathInfo();
}
} // end of class Worker
// ----- HELPERS ---------
/**
*
* @param request
* @param config
* @return
*/
public static String extractBaseURL(final HttpServletRequest request,
final ConfigReader config) {
final String contextPath = request.getServletContext().getContextPath();
if (config.getBaseURL() != null) {
return config.getBaseURL();
} else if ((request.getServerPort() == 80)
|| (request.getServerPort() == 443)) {
return request.getScheme() + "://" + request.getServerName()
+ contextPath;
} else {
return request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + contextPath;
}
}
}