http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/ContentRange.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/ContentRange.html b/content/site/apidocs/src-html/org/apache/juneau/http/ContentRange.html new file mode 100644 index 0000000..1586ea6 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/ContentRange.html @@ -0,0 +1,198 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>Content-Range</l> HTTP response header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * Where in a full body message this partial message belongs.<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * Content-Range: bytes 21010-47021/47022<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> * The Content-Range entity-header is sent with a partial entity-body to specify where in the full entity-body the<a name="line.26"></a> +<span class="sourceLineNo">027</span> * partial body should be applied.<a name="line.27"></a> +<span class="sourceLineNo">028</span> * Range units are defined in section 3.12.<a name="line.28"></a> +<span class="sourceLineNo">029</span> * <p class='bcode'><a name="line.29"></a> +<span class="sourceLineNo">030</span> * Content-Range = "Content-Range" ":" content-range-spec<a name="line.30"></a> +<span class="sourceLineNo">031</span> * content-range-spec = byte-content-range-spec<a name="line.31"></a> +<span class="sourceLineNo">032</span> * byte-content-range-spec = bytes-unit SP<a name="line.32"></a> +<span class="sourceLineNo">033</span> * byte-range-resp-spec "/"<a name="line.33"></a> +<span class="sourceLineNo">034</span> * ( instance-length | "*" )<a name="line.34"></a> +<span class="sourceLineNo">035</span> * byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)<a name="line.35"></a> +<span class="sourceLineNo">036</span> * | "*"<a name="line.36"></a> +<span class="sourceLineNo">037</span> * instance-length = 1*DIGIT<a name="line.37"></a> +<span class="sourceLineNo">038</span> * </p><a name="line.38"></a> +<span class="sourceLineNo">039</span> * <p><a name="line.39"></a> +<span class="sourceLineNo">040</span> * The header SHOULD indicate the total length of the full entity-body, unless this length is unknown or difficult to<a name="line.40"></a> +<span class="sourceLineNo">041</span> * determine.<a name="line.41"></a> +<span class="sourceLineNo">042</span> * The asterisk "*" character means that the instance-length is unknown at the time when the response was generated.<a name="line.42"></a> +<span class="sourceLineNo">043</span> * <p><a name="line.43"></a> +<span class="sourceLineNo">044</span> * Unlike byte-ranges-specifier values (see section 14.35.1), a byte- range-resp-spec MUST only specify one range, and<a name="line.44"></a> +<span class="sourceLineNo">045</span> * MUST contain absolute byte positions for both the first and last byte of the range.<a name="line.45"></a> +<span class="sourceLineNo">046</span> * <p><a name="line.46"></a> +<span class="sourceLineNo">047</span> * A byte-content-range-spec with a byte-range-resp-spec whose last- byte-pos value is less than its first-byte-pos<a name="line.47"></a> +<span class="sourceLineNo">048</span> * value, or whose instance-length value is less than or equal to its last-byte-pos value, is invalid.<a name="line.48"></a> +<span class="sourceLineNo">049</span> * The recipient of an invalid byte-content-range- spec MUST ignore it and any content transferred along with it.<a name="line.49"></a> +<span class="sourceLineNo">050</span> * <p><a name="line.50"></a> +<span class="sourceLineNo">051</span> * A server sending a response with status code 416 (Requested range not satisfiable) SHOULD include a Content-Range<a name="line.51"></a> +<span class="sourceLineNo">052</span> * field with a byte-range- resp-spec of "*".<a name="line.52"></a> +<span class="sourceLineNo">053</span> * The instance-length specifies the current length of the selected resource.<a name="line.53"></a> +<span class="sourceLineNo">054</span> * A response with status code 206 (Partial Content) MUST NOT include a Content-Range field with a byte-range-resp-spec<a name="line.54"></a> +<span class="sourceLineNo">055</span> * of "*".<a name="line.55"></a> +<span class="sourceLineNo">056</span> * <p><a name="line.56"></a> +<span class="sourceLineNo">057</span> * Examples of byte-content-range-spec values, assuming that the entity contains a total of 1234 bytes:<a name="line.57"></a> +<span class="sourceLineNo">058</span> * <p class='bcode'><a name="line.58"></a> +<span class="sourceLineNo">059</span> * The first 500 bytes:<a name="line.59"></a> +<span class="sourceLineNo">060</span> * bytes 0-499/1234<a name="line.60"></a> +<span class="sourceLineNo">061</span> * The second 500 bytes:<a name="line.61"></a> +<span class="sourceLineNo">062</span> * bytes 500-999/1234<a name="line.62"></a> +<span class="sourceLineNo">063</span> * All except for the first 500 bytes:<a name="line.63"></a> +<span class="sourceLineNo">064</span> * bytes 500-1233/1234<a name="line.64"></a> +<span class="sourceLineNo">065</span> * The last 500 bytes:<a name="line.65"></a> +<span class="sourceLineNo">066</span> * bytes 734-1233/1234<a name="line.66"></a> +<span class="sourceLineNo">067</span> * </p><a name="line.67"></a> +<span class="sourceLineNo">068</span> * <p><a name="line.68"></a> +<span class="sourceLineNo">069</span> * When an HTTP message includes the content of a single range (for example, a response to a request for a single range,<a name="line.69"></a> +<span class="sourceLineNo">070</span> * or to a request for a set of ranges that overlap without any holes), this content is transmitted with a Content-Range<a name="line.70"></a> +<span class="sourceLineNo">071</span> * header, and a Content-Length header showing the number of bytes actually transferred.<a name="line.71"></a> +<span class="sourceLineNo">072</span> * For example:<a name="line.72"></a> +<span class="sourceLineNo">073</span> * <p class='bcode'><a name="line.73"></a> +<span class="sourceLineNo">074</span> * HTTP/1.1 206 Partial content<a name="line.74"></a> +<span class="sourceLineNo">075</span> * Date: Wed, 15 Nov 1995 06:25:24 GMT<a name="line.75"></a> +<span class="sourceLineNo">076</span> * Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT<a name="line.76"></a> +<span class="sourceLineNo">077</span> * Content-Range: bytes 21010-47021/47022<a name="line.77"></a> +<span class="sourceLineNo">078</span> * Content-Length: 26012<a name="line.78"></a> +<span class="sourceLineNo">079</span> * Content-Type: image/gif<a name="line.79"></a> +<span class="sourceLineNo">080</span> * </p><a name="line.80"></a> +<span class="sourceLineNo">081</span> * <p><a name="line.81"></a> +<span class="sourceLineNo">082</span> * When an HTTP message includes the content of multiple ranges (for example, a response to a request for multiple<a name="line.82"></a> +<span class="sourceLineNo">083</span> * non-overlapping ranges), these are transmitted as a multipart message.<a name="line.83"></a> +<span class="sourceLineNo">084</span> * The multipart media type used for this purpose is "multipart/byteranges" as defined in appendix 19.2.<a name="line.84"></a> +<span class="sourceLineNo">085</span> * See appendix 19.6.3 for a compatibility issue.<a name="line.85"></a> +<span class="sourceLineNo">086</span> * <p><a name="line.86"></a> +<span class="sourceLineNo">087</span> * A response to a request for a single range MUST NOT be sent using the multipart/byteranges media type.<a name="line.87"></a> +<span class="sourceLineNo">088</span> * A response to a request for multiple ranges, whose result is a single range, MAY be sent as a multipart/byteranges<a name="line.88"></a> +<span class="sourceLineNo">089</span> * media type with one part.<a name="line.89"></a> +<span class="sourceLineNo">090</span> * A client that cannot decode a multipart/byteranges message MUST NOT ask for multiple byte-ranges in a single request.<a name="line.90"></a> +<span class="sourceLineNo">091</span> * <p><a name="line.91"></a> +<span class="sourceLineNo">092</span> * When a client requests multiple byte-ranges in one request, the server SHOULD return them in the order that they<a name="line.92"></a> +<span class="sourceLineNo">093</span> * appeared in the request.<a name="line.93"></a> +<span class="sourceLineNo">094</span> * <p><a name="line.94"></a> +<span class="sourceLineNo">095</span> * If the server ignores a byte-range-spec because it is syntactically invalid, the server SHOULD treat the request as<a name="line.95"></a> +<span class="sourceLineNo">096</span> * if the invalid Range header field did not exist.<a name="line.96"></a> +<span class="sourceLineNo">097</span> * (Normally, this means return a 200 response containing the full entity).<a name="line.97"></a> +<span class="sourceLineNo">098</span> * <p><a name="line.98"></a> +<span class="sourceLineNo">099</span> * If the server receives a request (other than one including an If- Range request-header field) with an unsatisfiable<a name="line.99"></a> +<span class="sourceLineNo">100</span> * Range request- header field<a name="line.100"></a> +<span class="sourceLineNo">101</span> * (that is, all of whose byte-range-spec values have a first-byte-pos value greater than the current length of the<a name="line.101"></a> +<span class="sourceLineNo">102</span> * selected resource),<a name="line.102"></a> +<span class="sourceLineNo">103</span> * it SHOULD return a response code of 416 (Requested range not satisfiable) (section 10.4.17).<a name="line.103"></a> +<span class="sourceLineNo">104</span> * <p><a name="line.104"></a> +<span class="sourceLineNo">105</span> * Note: clients cannot depend on servers to send a 416 (Requested range not satisfiable) response instead of a 200 (OK)<a name="line.105"></a> +<span class="sourceLineNo">106</span> * response for<a name="line.106"></a> +<span class="sourceLineNo">107</span> * an unsatisfiable Range request-header, since not all servers implement this request-header.<a name="line.107"></a> +<span class="sourceLineNo">108</span> */<a name="line.108"></a> +<span class="sourceLineNo">109</span>public final class ContentRange extends HeaderString {<a name="line.109"></a> +<span class="sourceLineNo">110</span><a name="line.110"></a> +<span class="sourceLineNo">111</span> /**<a name="line.111"></a> +<span class="sourceLineNo">112</span> * Returns a parsed <code>Content-Range</code> header.<a name="line.112"></a> +<span class="sourceLineNo">113</span> *<a name="line.113"></a> +<span class="sourceLineNo">114</span> * @param value The <code>Content-Range</code> header string.<a name="line.114"></a> +<span class="sourceLineNo">115</span> * @return The parsed <code>Content-Range</code> header, or <jk>null</jk> if the string was null.<a name="line.115"></a> +<span class="sourceLineNo">116</span> */<a name="line.116"></a> +<span class="sourceLineNo">117</span> public static ContentRange forString(String value) {<a name="line.117"></a> +<span class="sourceLineNo">118</span> if (value == null)<a name="line.118"></a> +<span class="sourceLineNo">119</span> return null;<a name="line.119"></a> +<span class="sourceLineNo">120</span> return new ContentRange(value);<a name="line.120"></a> +<span class="sourceLineNo">121</span> }<a name="line.121"></a> +<span class="sourceLineNo">122</span><a name="line.122"></a> +<span class="sourceLineNo">123</span> private ContentRange(String value) {<a name="line.123"></a> +<span class="sourceLineNo">124</span> super(value);<a name="line.124"></a> +<span class="sourceLineNo">125</span> }<a name="line.125"></a> +<span class="sourceLineNo">126</span>}<a name="line.126"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/ContentType.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/ContentType.html b/content/site/apidocs/src-html/org/apache/juneau/http/ContentType.html index 36dcfa2..676e664 100644 --- a/content/site/apidocs/src-html/org/apache/juneau/http/ContentType.html +++ b/content/site/apidocs/src-html/org/apache/juneau/http/ContentType.html @@ -20,88 +20,86 @@ <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> <span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> <span class="sourceLineNo">014</span><a name="line.14"></a> -<span class="sourceLineNo">015</span>import java.util.concurrent.*;<a name="line.15"></a> +<span class="sourceLineNo">015</span>import static org.apache.juneau.http.Constants.*;<a name="line.15"></a> <span class="sourceLineNo">016</span><a name="line.16"></a> -<span class="sourceLineNo">017</span>/**<a name="line.17"></a> -<span class="sourceLineNo">018</span> * Represents a parsed <code>Content-Type:</code> HTTP header.<a name="line.18"></a> -<span class="sourceLineNo">019</span> * <p><a name="line.19"></a> -<span class="sourceLineNo">020</span> * The formal RFC2616 header field definition is as follows:<a name="line.20"></a> -<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> -<span class="sourceLineNo">022</span> * 14.17 Content-Type<a name="line.22"></a> +<span class="sourceLineNo">017</span>import org.apache.juneau.internal.*;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>/**<a name="line.19"></a> +<span class="sourceLineNo">020</span> * Represents a parsed <l>Content-Type</l> HTTP request/response header.<a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p><a name="line.21"></a> +<span class="sourceLineNo">022</span> * The MIME type of this content.<a name="line.22"></a> <span class="sourceLineNo">023</span> *<a name="line.23"></a> -<span class="sourceLineNo">024</span> * The Content-Type entity-header field indicates the media type of the<a name="line.24"></a> -<span class="sourceLineNo">025</span> * entity-body sent to the recipient or, in the case of the HEAD method,<a name="line.25"></a> -<span class="sourceLineNo">026</span> * the media type that would have been sent had the request been a GET.<a name="line.26"></a> -<span class="sourceLineNo">027</span> *<a name="line.27"></a> -<span class="sourceLineNo">028</span> * Content-Type = "Content-Type" ":" media-type<a name="line.28"></a> -<span class="sourceLineNo">029</span> *<a name="line.29"></a> -<span class="sourceLineNo">030</span> * Media types are defined in section 3.7. An example of the field is<a name="line.30"></a> -<span class="sourceLineNo">031</span> *<a name="line.31"></a> -<span class="sourceLineNo">032</span> * Content-Type: text/html; charset=ISO-8859-4<a name="line.32"></a> -<span class="sourceLineNo">033</span> * </p><a name="line.33"></a> -<span class="sourceLineNo">034</span> */<a name="line.34"></a> -<span class="sourceLineNo">035</span>public class ContentType extends MediaType {<a name="line.35"></a> -<span class="sourceLineNo">036</span><a name="line.36"></a> -<span class="sourceLineNo">037</span> private static final boolean nocache = Boolean.getBoolean("juneau.http.ContentType.nocache");<a name="line.37"></a> -<span class="sourceLineNo">038</span> private static final ConcurrentHashMap<String,ContentType> cache = new ConcurrentHashMap<String,ContentType>();<a name="line.38"></a> -<span class="sourceLineNo">039</span><a name="line.39"></a> -<span class="sourceLineNo">040</span> /**<a name="line.40"></a> -<span class="sourceLineNo">041</span> * Returns a parsed <code>Content-Type</code> header.<a name="line.41"></a> -<span class="sourceLineNo">042</span> *<a name="line.42"></a> -<span class="sourceLineNo">043</span> * @param s The <code>Content-Type</code> header string.<a name="line.43"></a> -<span class="sourceLineNo">044</span> * @return The parsed <code>Content-Type</code> header, or <jk>null</jk> if the string was null.<a name="line.44"></a> -<span class="sourceLineNo">045</span> */<a name="line.45"></a> -<span class="sourceLineNo">046</span> public static ContentType forString(String s) {<a name="line.46"></a> -<span class="sourceLineNo">047</span> if (s == null)<a name="line.47"></a> -<span class="sourceLineNo">048</span> return null;<a name="line.48"></a> -<span class="sourceLineNo">049</span><a name="line.49"></a> -<span class="sourceLineNo">050</span> // Prevent OOM in case of DDOS<a name="line.50"></a> -<span class="sourceLineNo">051</span> if (cache.size() > 1000)<a name="line.51"></a> -<span class="sourceLineNo">052</span> cache.clear();<a name="line.52"></a> -<span class="sourceLineNo">053</span><a name="line.53"></a> -<span class="sourceLineNo">054</span> while (true) {<a name="line.54"></a> -<span class="sourceLineNo">055</span> ContentType mt = cache.get(s);<a name="line.55"></a> -<span class="sourceLineNo">056</span> if (mt != null)<a name="line.56"></a> -<span class="sourceLineNo">057</span> return mt;<a name="line.57"></a> -<span class="sourceLineNo">058</span> mt = new ContentType(s);<a name="line.58"></a> -<span class="sourceLineNo">059</span> if (nocache)<a name="line.59"></a> -<span class="sourceLineNo">060</span> return mt;<a name="line.60"></a> -<span class="sourceLineNo">061</span> cache.putIfAbsent(s, mt);<a name="line.61"></a> -<span class="sourceLineNo">062</span> }<a name="line.62"></a> -<span class="sourceLineNo">063</span> }<a name="line.63"></a> -<span class="sourceLineNo">064</span><a name="line.64"></a> -<span class="sourceLineNo">065</span> private ContentType(String s) {<a name="line.65"></a> -<span class="sourceLineNo">066</span> super(s);<a name="line.66"></a> -<span class="sourceLineNo">067</span> }<a name="line.67"></a> -<span class="sourceLineNo">068</span><a name="line.68"></a> -<span class="sourceLineNo">069</span> /**<a name="line.69"></a> -<span class="sourceLineNo">070</span> * Given a list of media types, returns the best match for this <code>Content-Type</code> header.<a name="line.70"></a> -<span class="sourceLineNo">071</span> * <p><a name="line.71"></a> -<span class="sourceLineNo">072</span> * Note that fuzzy matching is allowed on the media types where the <code>Content-Types</code> header may<a name="line.72"></a> -<span class="sourceLineNo">073</span> * contain additional subtype parts.<a name="line.73"></a> -<span class="sourceLineNo">074</span> * <br>For example, given a <code>Content-Type</code> value of <js>"text/json+activity"</js>,<a name="line.74"></a> -<span class="sourceLineNo">075</span> * the media type <js>"text/json"</js> will match if <js>"text/json+activity"</js> or <js>"text/activity+json"</js><a name="line.75"></a> -<span class="sourceLineNo">076</span> * isn't found.<a name="line.76"></a> -<span class="sourceLineNo">077</span> * <br>The purpose for this is to allow parsers to match when artifacts such as <code>id</code> properties are present<a name="line.77"></a> -<span class="sourceLineNo">078</span> * in the header.<a name="line.78"></a> -<span class="sourceLineNo">079</span> *<a name="line.79"></a> -<span class="sourceLineNo">080</span> * @param mediaTypes The media types to match against.<a name="line.80"></a> -<span class="sourceLineNo">081</span> * @return The index into the array of the best match, or <code>-1</code> if no suitable matches could be found.<a name="line.81"></a> -<span class="sourceLineNo">082</span> */<a name="line.82"></a> -<span class="sourceLineNo">083</span> public int findMatch(MediaType[] mediaTypes) {<a name="line.83"></a> -<span class="sourceLineNo">084</span> int matchQuant = 0, matchIndex = -1;<a name="line.84"></a> -<span class="sourceLineNo">085</span><a name="line.85"></a> -<span class="sourceLineNo">086</span> for (int i = 0; i < mediaTypes.length; i++) {<a name="line.86"></a> -<span class="sourceLineNo">087</span> MediaType mt = mediaTypes[i];<a name="line.87"></a> -<span class="sourceLineNo">088</span> int matchQuant2 = mt.match(this);<a name="line.88"></a> -<span class="sourceLineNo">089</span> if (matchQuant2 > matchQuant) {<a name="line.89"></a> -<span class="sourceLineNo">090</span> matchIndex = i;<a name="line.90"></a> -<span class="sourceLineNo">091</span> }<a name="line.91"></a> -<span class="sourceLineNo">092</span> }<a name="line.92"></a> -<span class="sourceLineNo">093</span><a name="line.93"></a> -<span class="sourceLineNo">094</span> return matchIndex;<a name="line.94"></a> -<span class="sourceLineNo">095</span> }<a name="line.95"></a> -<span class="sourceLineNo">096</span>}<a name="line.96"></a> +<span class="sourceLineNo">024</span> * <h6 class='figure'>Example</h6><a name="line.24"></a> +<span class="sourceLineNo">025</span> * <p class='bcode'><a name="line.25"></a> +<span class="sourceLineNo">026</span> * Content-Type: text/html; charset=utf-8<a name="line.26"></a> +<span class="sourceLineNo">027</span> * </p><a name="line.27"></a> +<span class="sourceLineNo">028</span> *<a name="line.28"></a> +<span class="sourceLineNo">029</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.29"></a> +<span class="sourceLineNo">030</span> *<a name="line.30"></a> +<span class="sourceLineNo">031</span> * The Content-Type entity-header field indicates the media type of the entity-body sent to the recipient or, in the<a name="line.31"></a> +<span class="sourceLineNo">032</span> * case of the HEAD method, the media type that would have been sent had the request been a GET.<a name="line.32"></a> +<span class="sourceLineNo">033</span> * <p class='bcode'><a name="line.33"></a> +<span class="sourceLineNo">034</span> * Content-Type = "Content-Type" ":" media-type<a name="line.34"></a> +<span class="sourceLineNo">035</span> * </p><a name="line.35"></a> +<span class="sourceLineNo">036</span> * <p><a name="line.36"></a> +<span class="sourceLineNo">037</span> * Media types are defined in section 3.7.<a name="line.37"></a> +<span class="sourceLineNo">038</span> * An example of the field is...<a name="line.38"></a> +<span class="sourceLineNo">039</span> * <p class='bcode'><a name="line.39"></a> +<span class="sourceLineNo">040</span> * Content-Type: text/html; charset=ISO-8859-4<a name="line.40"></a> +<span class="sourceLineNo">041</span> * </p><a name="line.41"></a> +<span class="sourceLineNo">042</span> */<a name="line.42"></a> +<span class="sourceLineNo">043</span>public class ContentType extends MediaType {<a name="line.43"></a> +<span class="sourceLineNo">044</span><a name="line.44"></a> +<span class="sourceLineNo">045</span> private static Cache<String,ContentType> cache = new Cache<String,ContentType>(NOCACHE, CACHE_MAX_SIZE);<a name="line.45"></a> +<span class="sourceLineNo">046</span><a name="line.46"></a> +<span class="sourceLineNo">047</span> /**<a name="line.47"></a> +<span class="sourceLineNo">048</span> * Returns a parsed <code>Content-Type</code> header.<a name="line.48"></a> +<span class="sourceLineNo">049</span> *<a name="line.49"></a> +<span class="sourceLineNo">050</span> * @param value The <code>Content-Type</code> header string.<a name="line.50"></a> +<span class="sourceLineNo">051</span> * @return The parsed <code>Content-Type</code> header, or <jk>null</jk> if the string was null.<a name="line.51"></a> +<span class="sourceLineNo">052</span> */<a name="line.52"></a> +<span class="sourceLineNo">053</span> public static ContentType forString(String value) {<a name="line.53"></a> +<span class="sourceLineNo">054</span> if (value == null)<a name="line.54"></a> +<span class="sourceLineNo">055</span> return null;<a name="line.55"></a> +<span class="sourceLineNo">056</span> ContentType ct = cache.get(value);<a name="line.56"></a> +<span class="sourceLineNo">057</span> if (ct == null)<a name="line.57"></a> +<span class="sourceLineNo">058</span> ct = cache.put(value, new ContentType(value));<a name="line.58"></a> +<span class="sourceLineNo">059</span> return ct;<a name="line.59"></a> +<span class="sourceLineNo">060</span> }<a name="line.60"></a> +<span class="sourceLineNo">061</span><a name="line.61"></a> +<span class="sourceLineNo">062</span><a name="line.62"></a> +<span class="sourceLineNo">063</span> private ContentType(String s) {<a name="line.63"></a> +<span class="sourceLineNo">064</span> super(s);<a name="line.64"></a> +<span class="sourceLineNo">065</span> }<a name="line.65"></a> +<span class="sourceLineNo">066</span><a name="line.66"></a> +<span class="sourceLineNo">067</span> /**<a name="line.67"></a> +<span class="sourceLineNo">068</span> * Given a list of media types, returns the best match for this <code>Content-Type</code> header.<a name="line.68"></a> +<span class="sourceLineNo">069</span> * <p><a name="line.69"></a> +<span class="sourceLineNo">070</span> * Note that fuzzy matching is allowed on the media types where the <code>Content-Types</code> header may<a name="line.70"></a> +<span class="sourceLineNo">071</span> * contain additional subtype parts.<a name="line.71"></a> +<span class="sourceLineNo">072</span> * <br>For example, given a <code>Content-Type</code> value of <js>"text/json+activity"</js>,<a name="line.72"></a> +<span class="sourceLineNo">073</span> * the media type <js>"text/json"</js> will match if <js>"text/json+activity"</js> or <js>"text/activity+json"</js><a name="line.73"></a> +<span class="sourceLineNo">074</span> * isn't found.<a name="line.74"></a> +<span class="sourceLineNo">075</span> * <br>The purpose for this is to allow parsers to match when artifacts such as <code>id</code> properties are present<a name="line.75"></a> +<span class="sourceLineNo">076</span> * in the header.<a name="line.76"></a> +<span class="sourceLineNo">077</span> *<a name="line.77"></a> +<span class="sourceLineNo">078</span> * @param mediaTypes The media types to match against.<a name="line.78"></a> +<span class="sourceLineNo">079</span> * @return The index into the array of the best match, or <code>-1</code> if no suitable matches could be found.<a name="line.79"></a> +<span class="sourceLineNo">080</span> */<a name="line.80"></a> +<span class="sourceLineNo">081</span> public int findMatch(MediaType[] mediaTypes) {<a name="line.81"></a> +<span class="sourceLineNo">082</span> int matchQuant = 0, matchIndex = -1;<a name="line.82"></a> +<span class="sourceLineNo">083</span><a name="line.83"></a> +<span class="sourceLineNo">084</span> for (int i = 0; i < mediaTypes.length; i++) {<a name="line.84"></a> +<span class="sourceLineNo">085</span> MediaType mt = mediaTypes[i];<a name="line.85"></a> +<span class="sourceLineNo">086</span> int matchQuant2 = mt.match(this);<a name="line.86"></a> +<span class="sourceLineNo">087</span> if (matchQuant2 > matchQuant) {<a name="line.87"></a> +<span class="sourceLineNo">088</span> matchIndex = i;<a name="line.88"></a> +<span class="sourceLineNo">089</span> }<a name="line.89"></a> +<span class="sourceLineNo">090</span> }<a name="line.90"></a> +<span class="sourceLineNo">091</span><a name="line.91"></a> +<span class="sourceLineNo">092</span> return matchIndex;<a name="line.92"></a> +<span class="sourceLineNo">093</span> }<a name="line.93"></a> +<span class="sourceLineNo">094</span>}<a name="line.94"></a> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/Date.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/Date.html b/content/site/apidocs/src-html/org/apache/juneau/http/Date.html new file mode 100644 index 0000000..5053380 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/Date.html @@ -0,0 +1,155 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>Date</l> HTTP request/response header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * The date and time that the message was sent (in "HTTP-date" format as defined by RFC 7231).<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * Date: Tue, 15 Nov 1994 08:12:31 GMT<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> *<a name="line.26"></a> +<span class="sourceLineNo">027</span> * The Date general-header field represents the date and time at which the message was originated, having the same<a name="line.27"></a> +<span class="sourceLineNo">028</span> * semantics as orig-date in RFC 822.<a name="line.28"></a> +<span class="sourceLineNo">029</span> * The field value is an HTTP-date, as described in section 3.3.1; it MUST be sent in RFC 1123 [8]-date format.<a name="line.29"></a> +<span class="sourceLineNo">030</span> * <p class='bcode'><a name="line.30"></a> +<span class="sourceLineNo">031</span> * Date = "Date" ":" HTTP-date<a name="line.31"></a> +<span class="sourceLineNo">032</span> * </p><a name="line.32"></a> +<span class="sourceLineNo">033</span> * <p><a name="line.33"></a> +<span class="sourceLineNo">034</span> * An example is...<a name="line.34"></a> +<span class="sourceLineNo">035</span> * <p class='bcode'><a name="line.35"></a> +<span class="sourceLineNo">036</span> * Date: Tue, 15 Nov 1994 08:12:31 GMT<a name="line.36"></a> +<span class="sourceLineNo">037</span> * </p><a name="line.37"></a> +<span class="sourceLineNo">038</span> * <p><a name="line.38"></a> +<span class="sourceLineNo">039</span> * Origin servers MUST include a Date header field in all responses, except in these cases:<a name="line.39"></a> +<span class="sourceLineNo">040</span> * <ol><a name="line.40"></a> +<span class="sourceLineNo">041</span> * <li>If the response status code is 100 (Continue) or 101 (Switching Protocols), the response MAY include a Date<a name="line.41"></a> +<span class="sourceLineNo">042</span> * header field, at the server's option.<a name="line.42"></a> +<span class="sourceLineNo">043</span> * <li>If the response status code conveys a server error, e.g. 500 (Internal Server Error) or 503 (Service<a name="line.43"></a> +<span class="sourceLineNo">044</span> * Unavailable), and it is inconvenient or impossible to generate a valid Date.<a name="line.44"></a> +<span class="sourceLineNo">045</span> * <li>If the server does not have a clock that can provide a reasonable approximation of the current time, its<a name="line.45"></a> +<span class="sourceLineNo">046</span> * responses MUST NOT include a Date header field.<a name="line.46"></a> +<span class="sourceLineNo">047</span> * In this case, the rules in section 14.18.1 MUST be followed.<a name="line.47"></a> +<span class="sourceLineNo">048</span> * </ol><a name="line.48"></a> +<span class="sourceLineNo">049</span> * A received message that does not have a Date header field MUST be assigned one by the recipient if the message will<a name="line.49"></a> +<span class="sourceLineNo">050</span> * be cached by that recipient or gatewayed via a protocol which requires a Date.<a name="line.50"></a> +<span class="sourceLineNo">051</span> * An HTTP implementation without a clock MUST NOT cache responses without revalidating them on every use.<a name="line.51"></a> +<span class="sourceLineNo">052</span> * An HTTP cache, especially a shared cache, SHOULD use a mechanism, such as NTP, to synchronize its clock with a<a name="line.52"></a> +<span class="sourceLineNo">053</span> * reliable external standard.<a name="line.53"></a> +<span class="sourceLineNo">054</span> * <p><a name="line.54"></a> +<span class="sourceLineNo">055</span> * Clients SHOULD only send a Date header field in messages that include an entity-body, as in the case of the PUT and<a name="line.55"></a> +<span class="sourceLineNo">056</span> * POST requests, and even then it is optional.<a name="line.56"></a> +<span class="sourceLineNo">057</span> * A client without a clock MUST NOT send a Date header field in a request.<a name="line.57"></a> +<span class="sourceLineNo">058</span> * <p><a name="line.58"></a> +<span class="sourceLineNo">059</span> * The HTTP-date sent in a Date header SHOULD NOT represent a date and time subsequent to the generation of the message.<a name="line.59"></a> +<span class="sourceLineNo">060</span> * It SHOULD represent the best available approximation of the date and time of message generation, unless the<a name="line.60"></a> +<span class="sourceLineNo">061</span> * implementation has no means of generating a reasonably accurate date and time.<a name="line.61"></a> +<span class="sourceLineNo">062</span> * In theory, the date ought to represent the moment just before the entity is generated.<a name="line.62"></a> +<span class="sourceLineNo">063</span> * In practice, the date can be generated at any time during the message origination without affecting its semantic<a name="line.63"></a> +<span class="sourceLineNo">064</span> * value.<a name="line.64"></a> +<span class="sourceLineNo">065</span> */<a name="line.65"></a> +<span class="sourceLineNo">066</span>public final class Date extends HeaderDate {<a name="line.66"></a> +<span class="sourceLineNo">067</span><a name="line.67"></a> +<span class="sourceLineNo">068</span> /**<a name="line.68"></a> +<span class="sourceLineNo">069</span> * Returns a parsed <code>Date</code> header.<a name="line.69"></a> +<span class="sourceLineNo">070</span> *<a name="line.70"></a> +<span class="sourceLineNo">071</span> * @param value The <code>Date</code> header string.<a name="line.71"></a> +<span class="sourceLineNo">072</span> * @return The parsed <code>Date</code> header, or <jk>null</jk> if the string was null.<a name="line.72"></a> +<span class="sourceLineNo">073</span> */<a name="line.73"></a> +<span class="sourceLineNo">074</span> public static Date forString(String value) {<a name="line.74"></a> +<span class="sourceLineNo">075</span> if (value == null)<a name="line.75"></a> +<span class="sourceLineNo">076</span> return null;<a name="line.76"></a> +<span class="sourceLineNo">077</span> return new Date(value);<a name="line.77"></a> +<span class="sourceLineNo">078</span> }<a name="line.78"></a> +<span class="sourceLineNo">079</span><a name="line.79"></a> +<span class="sourceLineNo">080</span> private Date(String value) {<a name="line.80"></a> +<span class="sourceLineNo">081</span> super(value);<a name="line.81"></a> +<span class="sourceLineNo">082</span> }<a name="line.82"></a> +<span class="sourceLineNo">083</span>}<a name="line.83"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/ETag.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/ETag.html b/content/site/apidocs/src-html/org/apache/juneau/http/ETag.html new file mode 100644 index 0000000..15d4ac4 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/ETag.html @@ -0,0 +1,130 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>ETag</l> HTTP response header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * An identifier for a specific version of a resource, often a message digest.<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * ETag: "737060cd8c284d8af7ad3082f209582d"<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> *<a name="line.26"></a> +<span class="sourceLineNo">027</span> * The ETag response-header field provides the current value of the entity tag for the requested variant.<a name="line.27"></a> +<span class="sourceLineNo">028</span> * The headers used with entity tags are described in sections 14.24, 14.26 and 14.44.<a name="line.28"></a> +<span class="sourceLineNo">029</span> * The entity tag MAY be used for comparison with other entities from the same resource (see section 13.3.3).<a name="line.29"></a> +<span class="sourceLineNo">030</span> * <p class='bcode'><a name="line.30"></a> +<span class="sourceLineNo">031</span> * ETag = "ETag" ":" entity-tag<a name="line.31"></a> +<span class="sourceLineNo">032</span> * </p><a name="line.32"></a> +<span class="sourceLineNo">033</span> * <p><a name="line.33"></a> +<span class="sourceLineNo">034</span> * Examples:<a name="line.34"></a> +<span class="sourceLineNo">035</span> * <p class='bcode'><a name="line.35"></a> +<span class="sourceLineNo">036</span> * ETag: "xyzzy"<a name="line.36"></a> +<span class="sourceLineNo">037</span> * ETag: W/"xyzzy"<a name="line.37"></a> +<span class="sourceLineNo">038</span> * ETag: ""<a name="line.38"></a> +<span class="sourceLineNo">039</span> * </p><a name="line.39"></a> +<span class="sourceLineNo">040</span> */<a name="line.40"></a> +<span class="sourceLineNo">041</span>public final class ETag extends HeaderString {<a name="line.41"></a> +<span class="sourceLineNo">042</span><a name="line.42"></a> +<span class="sourceLineNo">043</span> /**<a name="line.43"></a> +<span class="sourceLineNo">044</span> * Returns a parsed <code>ETag</code> header.<a name="line.44"></a> +<span class="sourceLineNo">045</span> *<a name="line.45"></a> +<span class="sourceLineNo">046</span> * @param value The <code>ETag</code> header string.<a name="line.46"></a> +<span class="sourceLineNo">047</span> * @return The parsed <code>ETag</code> header, or <jk>null</jk> if the string was null.<a name="line.47"></a> +<span class="sourceLineNo">048</span> */<a name="line.48"></a> +<span class="sourceLineNo">049</span> public static ETag forString(String value) {<a name="line.49"></a> +<span class="sourceLineNo">050</span> if (value == null)<a name="line.50"></a> +<span class="sourceLineNo">051</span> return null;<a name="line.51"></a> +<span class="sourceLineNo">052</span> return new ETag(value);<a name="line.52"></a> +<span class="sourceLineNo">053</span> }<a name="line.53"></a> +<span class="sourceLineNo">054</span><a name="line.54"></a> +<span class="sourceLineNo">055</span> private ETag(String value) {<a name="line.55"></a> +<span class="sourceLineNo">056</span> super(value);<a name="line.56"></a> +<span class="sourceLineNo">057</span> }<a name="line.57"></a> +<span class="sourceLineNo">058</span>}<a name="line.58"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/EntityValidator.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/EntityValidator.html b/content/site/apidocs/src-html/org/apache/juneau/http/EntityValidator.html new file mode 100644 index 0000000..c566240 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/EntityValidator.html @@ -0,0 +1,144 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a validator value.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * <h6 class='figure'>Example</h6><a name="line.18"></a> +<span class="sourceLineNo">019</span> * <p class='bcode'><a name="line.19"></a> +<span class="sourceLineNo">020</span> * ETag: "123456789" â A strong ETag validator<a name="line.20"></a> +<span class="sourceLineNo">021</span> * ETag: W/"123456789" â A weak ETag validator<a name="line.21"></a> +<span class="sourceLineNo">022</span> * </p><a name="line.22"></a> +<span class="sourceLineNo">023</span> */<a name="line.23"></a> +<span class="sourceLineNo">024</span>public class EntityValidator {<a name="line.24"></a> +<span class="sourceLineNo">025</span><a name="line.25"></a> +<span class="sourceLineNo">026</span> private final String value;<a name="line.26"></a> +<span class="sourceLineNo">027</span> private final boolean isWeak;<a name="line.27"></a> +<span class="sourceLineNo">028</span><a name="line.28"></a> +<span class="sourceLineNo">029</span> /**<a name="line.29"></a> +<span class="sourceLineNo">030</span> * Constructor.<a name="line.30"></a> +<span class="sourceLineNo">031</span> *<a name="line.31"></a> +<span class="sourceLineNo">032</span> * @param value The validator string value.<a name="line.32"></a> +<span class="sourceLineNo">033</span> */<a name="line.33"></a> +<span class="sourceLineNo">034</span> protected EntityValidator(String value) {<a name="line.34"></a> +<span class="sourceLineNo">035</span> value = value.trim();<a name="line.35"></a> +<span class="sourceLineNo">036</span> isWeak = value.startsWith("W/");<a name="line.36"></a> +<span class="sourceLineNo">037</span> if (isWeak)<a name="line.37"></a> +<span class="sourceLineNo">038</span> value = value.substring(2);<a name="line.38"></a> +<span class="sourceLineNo">039</span> if (value.length() > 1 && value.charAt(0) == '"' && value.charAt(value.length()-1) == '"')<a name="line.39"></a> +<span class="sourceLineNo">040</span> value = value.substring(1, value.length()-1);<a name="line.40"></a> +<span class="sourceLineNo">041</span> this.value = value;<a name="line.41"></a> +<span class="sourceLineNo">042</span> }<a name="line.42"></a> +<span class="sourceLineNo">043</span><a name="line.43"></a> +<span class="sourceLineNo">044</span> /**<a name="line.44"></a> +<span class="sourceLineNo">045</span> * Returns the validator value stripped of quotes and weak tag.<a name="line.45"></a> +<span class="sourceLineNo">046</span> * @return The validator value.<a name="line.46"></a> +<span class="sourceLineNo">047</span> */<a name="line.47"></a> +<span class="sourceLineNo">048</span> public String asString() {<a name="line.48"></a> +<span class="sourceLineNo">049</span> return value;<a name="line.49"></a> +<span class="sourceLineNo">050</span> }<a name="line.50"></a> +<span class="sourceLineNo">051</span><a name="line.51"></a> +<span class="sourceLineNo">052</span> /**<a name="line.52"></a> +<span class="sourceLineNo">053</span> * Returns <jk>true</jk> if the weak flag is present in the value.<a name="line.53"></a> +<span class="sourceLineNo">054</span> * @return <jk>true</jk> if the weak flag is present in the value.<a name="line.54"></a> +<span class="sourceLineNo">055</span> */<a name="line.55"></a> +<span class="sourceLineNo">056</span> public boolean isWeak() {<a name="line.56"></a> +<span class="sourceLineNo">057</span> return isWeak;<a name="line.57"></a> +<span class="sourceLineNo">058</span> }<a name="line.58"></a> +<span class="sourceLineNo">059</span><a name="line.59"></a> +<span class="sourceLineNo">060</span> /**<a name="line.60"></a> +<span class="sourceLineNo">061</span> * Returns <jk>true</jk> if the validator string value is <code>*</code>.<a name="line.61"></a> +<span class="sourceLineNo">062</span> * @return <jk>true</jk> if the validator string value is <code>*</code>.<a name="line.62"></a> +<span class="sourceLineNo">063</span> */<a name="line.63"></a> +<span class="sourceLineNo">064</span> public boolean isAny() {<a name="line.64"></a> +<span class="sourceLineNo">065</span> return "*".equals(value);<a name="line.65"></a> +<span class="sourceLineNo">066</span> }<a name="line.66"></a> +<span class="sourceLineNo">067</span><a name="line.67"></a> +<span class="sourceLineNo">068</span> @Override<a name="line.68"></a> +<span class="sourceLineNo">069</span> public String toString() {<a name="line.69"></a> +<span class="sourceLineNo">070</span> return (isWeak ? "W/" : "") + (isAny() ? "*" : ('"' + value + '"'));<a name="line.70"></a> +<span class="sourceLineNo">071</span> }<a name="line.71"></a> +<span class="sourceLineNo">072</span>}<a name="line.72"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/Expect.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/Expect.html b/content/site/apidocs/src-html/org/apache/juneau/http/Expect.html new file mode 100644 index 0000000..b5974e7 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/Expect.html @@ -0,0 +1,145 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>Expect</l> HTTP request header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * Indicates that particular server behaviors are required by the client.<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * Expect: 100-continue<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> *<a name="line.26"></a> +<span class="sourceLineNo">027</span> * The Expect request-header field is used to indicate that particular server behaviors are required by the client.<a name="line.27"></a> +<span class="sourceLineNo">028</span> * <p class='bcode'><a name="line.28"></a> +<span class="sourceLineNo">029</span> * Expect = "Expect" ":" 1#expectation<a name="line.29"></a> +<span class="sourceLineNo">030</span> * expectation = "100-continue" | expectation-extension<a name="line.30"></a> +<span class="sourceLineNo">031</span> * expectation-extension = token [ "=" ( token | quoted-string )<a name="line.31"></a> +<span class="sourceLineNo">032</span> * *expect-params ]<a name="line.32"></a> +<span class="sourceLineNo">033</span> * expect-params = ";" token [ "=" ( token | quoted-string ) ]<a name="line.33"></a> +<span class="sourceLineNo">034</span> * </p><a name="line.34"></a> +<span class="sourceLineNo">035</span> * <p><a name="line.35"></a> +<span class="sourceLineNo">036</span> * A server that does not understand or is unable to comply with any of the expectation values in the Expect field of a<a name="line.36"></a> +<span class="sourceLineNo">037</span> * request MUST respond with appropriate error status.<a name="line.37"></a> +<span class="sourceLineNo">038</span> * The server MUST respond with a 417 (Expectation Failed) status if any of the expectations cannot be met or, if there<a name="line.38"></a> +<span class="sourceLineNo">039</span> * are other problems with the request, some other 4xx status.<a name="line.39"></a> +<span class="sourceLineNo">040</span> * <p><a name="line.40"></a> +<span class="sourceLineNo">041</span> * This header field is defined with extensible syntax to allow for future extensions.<a name="line.41"></a> +<span class="sourceLineNo">042</span> * If a server receives a request containing an Expect field that includes an expectation-extension that it does not<a name="line.42"></a> +<span class="sourceLineNo">043</span> * support, it MUST respond with a 417 (Expectation Failed) status.<a name="line.43"></a> +<span class="sourceLineNo">044</span> * <p><a name="line.44"></a> +<span class="sourceLineNo">045</span> * Comparison of expectation values is case-insensitive for unquoted tokens (including the 100-continue token), and is<a name="line.45"></a> +<span class="sourceLineNo">046</span> * case-sensitive for quoted-string expectation-extensions.<a name="line.46"></a> +<span class="sourceLineNo">047</span> * <p><a name="line.47"></a> +<span class="sourceLineNo">048</span> * The Expect mechanism is hop-by-hop: that is, an HTTP/1.1 proxy MUST return a 417 (Expectation Failed) status if it<a name="line.48"></a> +<span class="sourceLineNo">049</span> * receives a request with an expectation that it cannot meet.<a name="line.49"></a> +<span class="sourceLineNo">050</span> * However, the Expect request-header itself is end-to-end; it MUST be forwarded if the request is forwarded.<a name="line.50"></a> +<span class="sourceLineNo">051</span> * <p><a name="line.51"></a> +<span class="sourceLineNo">052</span> * Many older HTTP/1.0 and HTTP/1.1 applications do not understand the Expect header.<a name="line.52"></a> +<span class="sourceLineNo">053</span> * <p><a name="line.53"></a> +<span class="sourceLineNo">054</span> * See section 8.2.3 for the use of the 100 (continue) status.<a name="line.54"></a> +<span class="sourceLineNo">055</span> */<a name="line.55"></a> +<span class="sourceLineNo">056</span>public final class Expect extends HeaderString {<a name="line.56"></a> +<span class="sourceLineNo">057</span><a name="line.57"></a> +<span class="sourceLineNo">058</span> /**<a name="line.58"></a> +<span class="sourceLineNo">059</span> * Returns a parsed <code>Expect</code> header.<a name="line.59"></a> +<span class="sourceLineNo">060</span> *<a name="line.60"></a> +<span class="sourceLineNo">061</span> * @param value The <code>Expect</code> header string.<a name="line.61"></a> +<span class="sourceLineNo">062</span> * @return The parsed <code>Expect</code> header, or <jk>null</jk> if the string was null.<a name="line.62"></a> +<span class="sourceLineNo">063</span> */<a name="line.63"></a> +<span class="sourceLineNo">064</span> public static Expect forString(String value) {<a name="line.64"></a> +<span class="sourceLineNo">065</span> if (value == null)<a name="line.65"></a> +<span class="sourceLineNo">066</span> return null;<a name="line.66"></a> +<span class="sourceLineNo">067</span> return new Expect(value);<a name="line.67"></a> +<span class="sourceLineNo">068</span> }<a name="line.68"></a> +<span class="sourceLineNo">069</span><a name="line.69"></a> +<span class="sourceLineNo">070</span> private Expect(String value) {<a name="line.70"></a> +<span class="sourceLineNo">071</span> super(value);<a name="line.71"></a> +<span class="sourceLineNo">072</span> }<a name="line.72"></a> +<span class="sourceLineNo">073</span>}<a name="line.73"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/Expires.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/Expires.html b/content/site/apidocs/src-html/org/apache/juneau/http/Expires.html new file mode 100644 index 0000000..9384909 --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/Expires.html @@ -0,0 +1,152 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>Expires</l> HTTP response header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * Gives the date/time after which the response is considered stale (in "HTTP-date" format as defined by RFC 7231).<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * Expires: Thu, 01 Dec 1994 16:00:00 GMT<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> * The Expires entity-header field gives the date/time after which the response is considered stale.<a name="line.26"></a> +<span class="sourceLineNo">027</span> * A stale cache entry may not normally be returned by a cache (either a proxy cache or a user agent cache) unless it is<a name="line.27"></a> +<span class="sourceLineNo">028</span> * first validated with the origin server<a name="line.28"></a> +<span class="sourceLineNo">029</span> * (or with an intermediate cache that has a fresh copy of the entity).<a name="line.29"></a> +<span class="sourceLineNo">030</span> * See section 13.2 for further discussion of the expiration model.<a name="line.30"></a> +<span class="sourceLineNo">031</span> * <p><a name="line.31"></a> +<span class="sourceLineNo">032</span> * The presence of an Expires field does not imply that the original resource will change or cease to exist at, before,<a name="line.32"></a> +<span class="sourceLineNo">033</span> * or after that time.<a name="line.33"></a> +<span class="sourceLineNo">034</span> * <p><a name="line.34"></a> +<span class="sourceLineNo">035</span> * The format is an absolute date and time as defined by HTTP-date in section 3.3.1; it MUST be in RFC 1123 date format:<a name="line.35"></a> +<span class="sourceLineNo">036</span> * <p class='bcode'><a name="line.36"></a> +<span class="sourceLineNo">037</span> * Expires = "Expires" ":" HTTP-date<a name="line.37"></a> +<span class="sourceLineNo">038</span> * </p><a name="line.38"></a> +<span class="sourceLineNo">039</span> * <p><a name="line.39"></a> +<span class="sourceLineNo">040</span> * An example of its use is...<a name="line.40"></a> +<span class="sourceLineNo">041</span> * <p class='bcode'><a name="line.41"></a> +<span class="sourceLineNo">042</span> * Expires: Thu, 01 Dec 1994 16:00:00 GMT<a name="line.42"></a> +<span class="sourceLineNo">043</span> * </p><a name="line.43"></a> +<span class="sourceLineNo">044</span> * <p><a name="line.44"></a> +<span class="sourceLineNo">045</span> * Note: if a response includes a Cache-Control field with the max-age directive (see section 14.9.3), that directive<a name="line.45"></a> +<span class="sourceLineNo">046</span> * overrides the Expires field.<a name="line.46"></a> +<span class="sourceLineNo">047</span> * <p><a name="line.47"></a> +<span class="sourceLineNo">048</span> * HTTP/1.1 clients and caches MUST treat other invalid date formats, especially including the value "0", as in the past<a name="line.48"></a> +<span class="sourceLineNo">049</span> * (i.e., "already expired").<a name="line.49"></a> +<span class="sourceLineNo">050</span> * <p><a name="line.50"></a> +<span class="sourceLineNo">051</span> * To mark a response as "already expired," an origin server sends an Expires date that is equal to the Date header<a name="line.51"></a> +<span class="sourceLineNo">052</span> * value.<a name="line.52"></a> +<span class="sourceLineNo">053</span> * (See the rules for expiration calculations in section 13.2.4.)<a name="line.53"></a> +<span class="sourceLineNo">054</span> * <p><a name="line.54"></a> +<span class="sourceLineNo">055</span> * To mark a response as "never expires," an origin server sends an Expires date approximately one year from the time<a name="line.55"></a> +<span class="sourceLineNo">056</span> * the response is sent.<a name="line.56"></a> +<span class="sourceLineNo">057</span> * HTTP/1.1 servers SHOULD NOT send Expires dates more than one year in the future.<a name="line.57"></a> +<span class="sourceLineNo">058</span> * <p><a name="line.58"></a> +<span class="sourceLineNo">059</span> * The presence of an Expires header field with a date value of some time in the future on a response that otherwise<a name="line.59"></a> +<span class="sourceLineNo">060</span> * would by default be non-cacheable indicates that the response is cacheable, unless indicated otherwise by a<a name="line.60"></a> +<span class="sourceLineNo">061</span> * Cache-Control header field (section 14.9).<a name="line.61"></a> +<span class="sourceLineNo">062</span> */<a name="line.62"></a> +<span class="sourceLineNo">063</span>public final class Expires extends HeaderDate {<a name="line.63"></a> +<span class="sourceLineNo">064</span><a name="line.64"></a> +<span class="sourceLineNo">065</span> /**<a name="line.65"></a> +<span class="sourceLineNo">066</span> * Returns a parsed <code>Expires</code> header.<a name="line.66"></a> +<span class="sourceLineNo">067</span> *<a name="line.67"></a> +<span class="sourceLineNo">068</span> * @param value The <code>Expires</code> header string.<a name="line.68"></a> +<span class="sourceLineNo">069</span> * @return The parsed <code>Expires</code> header, or <jk>null</jk> if the string was null.<a name="line.69"></a> +<span class="sourceLineNo">070</span> */<a name="line.70"></a> +<span class="sourceLineNo">071</span> public static Expires forString(String value) {<a name="line.71"></a> +<span class="sourceLineNo">072</span> if (value == null)<a name="line.72"></a> +<span class="sourceLineNo">073</span> return null;<a name="line.73"></a> +<span class="sourceLineNo">074</span> return new Expires(value);<a name="line.74"></a> +<span class="sourceLineNo">075</span> }<a name="line.75"></a> +<span class="sourceLineNo">076</span><a name="line.76"></a> +<span class="sourceLineNo">077</span> private Expires(String value) {<a name="line.77"></a> +<span class="sourceLineNo">078</span> super(value);<a name="line.78"></a> +<span class="sourceLineNo">079</span> }<a name="line.79"></a> +<span class="sourceLineNo">080</span>}<a name="line.80"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/f1f17bc3/content/site/apidocs/src-html/org/apache/juneau/http/From.html ---------------------------------------------------------------------- diff --git a/content/site/apidocs/src-html/org/apache/juneau/http/From.html b/content/site/apidocs/src-html/org/apache/juneau/http/From.html new file mode 100644 index 0000000..24cd86e --- /dev/null +++ b/content/site/apidocs/src-html/org/apache/juneau/http/From.html @@ -0,0 +1,144 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> +<title>Source code</title> +<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style"> +</head> +<body> +<div class="sourceContainer"> +<pre><span class="sourceLineNo">001</span>// ***************************************************************************************************************************<a name="line.1"></a> +<span class="sourceLineNo">002</span>// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *<a name="line.2"></a> +<span class="sourceLineNo">003</span>// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *<a name="line.3"></a> +<span class="sourceLineNo">004</span>// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *<a name="line.4"></a> +<span class="sourceLineNo">005</span>// * with the License. You may obtain a copy of the License at *<a name="line.5"></a> +<span class="sourceLineNo">006</span>// * *<a name="line.6"></a> +<span class="sourceLineNo">007</span>// * http://www.apache.org/licenses/LICENSE-2.0 *<a name="line.7"></a> +<span class="sourceLineNo">008</span>// * *<a name="line.8"></a> +<span class="sourceLineNo">009</span>// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *<a name="line.9"></a> +<span class="sourceLineNo">010</span>// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *<a name="line.10"></a> +<span class="sourceLineNo">011</span>// * specific language governing permissions and limitations under the License. *<a name="line.11"></a> +<span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a> +<span class="sourceLineNo">013</span>package org.apache.juneau.http;<a name="line.13"></a> +<span class="sourceLineNo">014</span><a name="line.14"></a> +<span class="sourceLineNo">015</span>/**<a name="line.15"></a> +<span class="sourceLineNo">016</span> * Represents a parsed <l>From</l> HTTP request header.<a name="line.16"></a> +<span class="sourceLineNo">017</span> * <p><a name="line.17"></a> +<span class="sourceLineNo">018</span> * The email address of the user making the request.<a name="line.18"></a> +<span class="sourceLineNo">019</span> *<a name="line.19"></a> +<span class="sourceLineNo">020</span> * <h6 class='figure'>Example</h6><a name="line.20"></a> +<span class="sourceLineNo">021</span> * <p class='bcode'><a name="line.21"></a> +<span class="sourceLineNo">022</span> * From: [email protected]<a name="line.22"></a> +<span class="sourceLineNo">023</span> * </p><a name="line.23"></a> +<span class="sourceLineNo">024</span> *<a name="line.24"></a> +<span class="sourceLineNo">025</span> * <h6 class='topic'>RFC2616 Specification</h6><a name="line.25"></a> +<span class="sourceLineNo">026</span> *<a name="line.26"></a> +<span class="sourceLineNo">027</span> * The From request-header field, if given, SHOULD contain an Internet e-mail address for the human user who controls<a name="line.27"></a> +<span class="sourceLineNo">028</span> * the requesting user agent.<a name="line.28"></a> +<span class="sourceLineNo">029</span> * The address SHOULD be machine-usable, as defined by "mailbox" in RFC 822 [9] as updated by RFC 1123 [8]:<a name="line.29"></a> +<span class="sourceLineNo">030</span> * <p class='bcode'><a name="line.30"></a> +<span class="sourceLineNo">031</span> * From = "From" ":" mailbox<a name="line.31"></a> +<span class="sourceLineNo">032</span> * </p><a name="line.32"></a> +<span class="sourceLineNo">033</span> * <p><a name="line.33"></a> +<span class="sourceLineNo">034</span> * An example is:<a name="line.34"></a> +<span class="sourceLineNo">035</span> * <p class='bcode'><a name="line.35"></a> +<span class="sourceLineNo">036</span> * From: [email protected]<a name="line.36"></a> +<span class="sourceLineNo">037</span> * </p><a name="line.37"></a> +<span class="sourceLineNo">038</span> * <p><a name="line.38"></a> +<span class="sourceLineNo">039</span> * This header field MAY be used for logging purposes and as a means for identifying the source of invalid or unwanted<a name="line.39"></a> +<span class="sourceLineNo">040</span> * requests.<a name="line.40"></a> +<span class="sourceLineNo">041</span> * It SHOULD NOT be used as an insecure form of access protection.<a name="line.41"></a> +<span class="sourceLineNo">042</span> * The interpretation of this field is that the request is being performed on behalf of the person given, who accepts<a name="line.42"></a> +<span class="sourceLineNo">043</span> * responsibility for the method performed.<a name="line.43"></a> +<span class="sourceLineNo">044</span> * In particular, robot agents SHOULD include this header so that the person responsible for running the robot can be<a name="line.44"></a> +<span class="sourceLineNo">045</span> * contacted if problems occur on the receiving end.<a name="line.45"></a> +<span class="sourceLineNo">046</span> * <p><a name="line.46"></a> +<span class="sourceLineNo">047</span> * The Internet e-mail address in this field MAY be separate from the Internet host which issued the request.<a name="line.47"></a> +<span class="sourceLineNo">048</span> * For example, when a request is passed through a proxy the original issuer's address SHOULD be used.<a name="line.48"></a> +<span class="sourceLineNo">049</span> * <p><a name="line.49"></a> +<span class="sourceLineNo">050</span> * The client SHOULD NOT send the From header field without the user's approval, as it might conflict with the user's<a name="line.50"></a> +<span class="sourceLineNo">051</span> * privacy interests or their site's security policy.<a name="line.51"></a> +<span class="sourceLineNo">052</span> * It is strongly recommended that the user be able to disable, enable, and modify the value of this field at any time<a name="line.52"></a> +<span class="sourceLineNo">053</span> * prior to a request.<a name="line.53"></a> +<span class="sourceLineNo">054</span> */<a name="line.54"></a> +<span class="sourceLineNo">055</span>public final class From extends HeaderString {<a name="line.55"></a> +<span class="sourceLineNo">056</span><a name="line.56"></a> +<span class="sourceLineNo">057</span> /**<a name="line.57"></a> +<span class="sourceLineNo">058</span> * Returns a parsed <code>From</code> header.<a name="line.58"></a> +<span class="sourceLineNo">059</span> *<a name="line.59"></a> +<span class="sourceLineNo">060</span> * @param value The <code>From</code> header string.<a name="line.60"></a> +<span class="sourceLineNo">061</span> * @return The parsed <code>From</code> header, or <jk>null</jk> if the string was null.<a name="line.61"></a> +<span class="sourceLineNo">062</span> */<a name="line.62"></a> +<span class="sourceLineNo">063</span> public static From forString(String value) {<a name="line.63"></a> +<span class="sourceLineNo">064</span> if (value == null)<a name="line.64"></a> +<span class="sourceLineNo">065</span> return null;<a name="line.65"></a> +<span class="sourceLineNo">066</span> return new From(value);<a name="line.66"></a> +<span class="sourceLineNo">067</span> }<a name="line.67"></a> +<span class="sourceLineNo">068</span><a name="line.68"></a> +<span class="sourceLineNo">069</span> private From(String value) {<a name="line.69"></a> +<span class="sourceLineNo">070</span> super(value);<a name="line.70"></a> +<span class="sourceLineNo">071</span> }<a name="line.71"></a> +<span class="sourceLineNo">072</span>}<a name="line.72"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html>
