Added: websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/servlet/ServletRequestContext.html ============================================================================== --- websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/servlet/ServletRequestContext.html (added) +++ websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/servlet/ServletRequestContext.html Tue Jun 13 12:48:38 2017 @@ -0,0 +1,199 @@ +<!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="../../../../../../stylesheet.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<a name="line.2"></a> +<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a> +<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a> +<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a> +<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a> +<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a> +<span class="sourceLineNo">008</span> *<a name="line.8"></a> +<span class="sourceLineNo">009</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a> +<span class="sourceLineNo">010</span> *<a name="line.10"></a> +<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a> +<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a> +<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a> +<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a> +<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a> +<span class="sourceLineNo">016</span> */<a name="line.16"></a> +<span class="sourceLineNo">017</span>package org.apache.commons.fileupload.servlet;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>import static java.lang.String.format;<a name="line.19"></a> +<span class="sourceLineNo">020</span><a name="line.20"></a> +<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a> +<span class="sourceLineNo">022</span>import java.io.InputStream;<a name="line.22"></a> +<span class="sourceLineNo">023</span><a name="line.23"></a> +<span class="sourceLineNo">024</span>import javax.servlet.http.HttpServletRequest;<a name="line.24"></a> +<span class="sourceLineNo">025</span><a name="line.25"></a> +<span class="sourceLineNo">026</span>import org.apache.commons.fileupload.FileUploadBase;<a name="line.26"></a> +<span class="sourceLineNo">027</span>import org.apache.commons.fileupload.UploadContext;<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> * <p>Provides access to the request information needed for a request made to<a name="line.30"></a> +<span class="sourceLineNo">031</span> * an HTTP servlet.</p><a name="line.31"></a> +<span class="sourceLineNo">032</span> *<a name="line.32"></a> +<span class="sourceLineNo">033</span> * @since FileUpload 1.1<a name="line.33"></a> +<span class="sourceLineNo">034</span> *<a name="line.34"></a> +<span class="sourceLineNo">035</span> * @version $Id$<a name="line.35"></a> +<span class="sourceLineNo">036</span> */<a name="line.36"></a> +<span class="sourceLineNo">037</span>public class ServletRequestContext implements UploadContext {<a name="line.37"></a> +<span class="sourceLineNo">038</span><a name="line.38"></a> +<span class="sourceLineNo">039</span> // ----------------------------------------------------- Instance Variables<a name="line.39"></a> +<span class="sourceLineNo">040</span><a name="line.40"></a> +<span class="sourceLineNo">041</span> /**<a name="line.41"></a> +<span class="sourceLineNo">042</span> * The request for which the context is being provided.<a name="line.42"></a> +<span class="sourceLineNo">043</span> */<a name="line.43"></a> +<span class="sourceLineNo">044</span> private final HttpServletRequest request;<a name="line.44"></a> +<span class="sourceLineNo">045</span><a name="line.45"></a> +<span class="sourceLineNo">046</span> // ----------------------------------------------------------- Constructors<a name="line.46"></a> +<span class="sourceLineNo">047</span><a name="line.47"></a> +<span class="sourceLineNo">048</span> /**<a name="line.48"></a> +<span class="sourceLineNo">049</span> * Construct a context for this request.<a name="line.49"></a> +<span class="sourceLineNo">050</span> *<a name="line.50"></a> +<span class="sourceLineNo">051</span> * @param request The request to which this context applies.<a name="line.51"></a> +<span class="sourceLineNo">052</span> */<a name="line.52"></a> +<span class="sourceLineNo">053</span> public ServletRequestContext(HttpServletRequest request) {<a name="line.53"></a> +<span class="sourceLineNo">054</span> this.request = request;<a name="line.54"></a> +<span class="sourceLineNo">055</span> }<a name="line.55"></a> +<span class="sourceLineNo">056</span><a name="line.56"></a> +<span class="sourceLineNo">057</span> // --------------------------------------------------------- Public Methods<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> * Retrieve the character encoding for the request.<a name="line.60"></a> +<span class="sourceLineNo">061</span> *<a name="line.61"></a> +<span class="sourceLineNo">062</span> * @return The character encoding for the request.<a name="line.62"></a> +<span class="sourceLineNo">063</span> */<a name="line.63"></a> +<span class="sourceLineNo">064</span> public String getCharacterEncoding() {<a name="line.64"></a> +<span class="sourceLineNo">065</span> return request.getCharacterEncoding();<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> /**<a name="line.68"></a> +<span class="sourceLineNo">069</span> * Retrieve the content type of the request.<a name="line.69"></a> +<span class="sourceLineNo">070</span> *<a name="line.70"></a> +<span class="sourceLineNo">071</span> * @return The content type of the request.<a name="line.71"></a> +<span class="sourceLineNo">072</span> */<a name="line.72"></a> +<span class="sourceLineNo">073</span> public String getContentType() {<a name="line.73"></a> +<span class="sourceLineNo">074</span> return request.getContentType();<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> /**<a name="line.77"></a> +<span class="sourceLineNo">078</span> * Retrieve the content length of the request.<a name="line.78"></a> +<span class="sourceLineNo">079</span> *<a name="line.79"></a> +<span class="sourceLineNo">080</span> * @return The content length of the request.<a name="line.80"></a> +<span class="sourceLineNo">081</span> * @deprecated 1.3 Use {@link #contentLength()} instead<a name="line.81"></a> +<span class="sourceLineNo">082</span> */<a name="line.82"></a> +<span class="sourceLineNo">083</span> @Deprecated<a name="line.83"></a> +<span class="sourceLineNo">084</span> public int getContentLength() {<a name="line.84"></a> +<span class="sourceLineNo">085</span> return request.getContentLength();<a name="line.85"></a> +<span class="sourceLineNo">086</span> }<a name="line.86"></a> +<span class="sourceLineNo">087</span><a name="line.87"></a> +<span class="sourceLineNo">088</span> /**<a name="line.88"></a> +<span class="sourceLineNo">089</span> * Retrieve the content length of the request.<a name="line.89"></a> +<span class="sourceLineNo">090</span> *<a name="line.90"></a> +<span class="sourceLineNo">091</span> * @return The content length of the request.<a name="line.91"></a> +<span class="sourceLineNo">092</span> * @since 1.3<a name="line.92"></a> +<span class="sourceLineNo">093</span> */<a name="line.93"></a> +<span class="sourceLineNo">094</span> public long contentLength() {<a name="line.94"></a> +<span class="sourceLineNo">095</span> long size;<a name="line.95"></a> +<span class="sourceLineNo">096</span> try {<a name="line.96"></a> +<span class="sourceLineNo">097</span> size = Long.parseLong(request.getHeader(FileUploadBase.CONTENT_LENGTH));<a name="line.97"></a> +<span class="sourceLineNo">098</span> } catch (NumberFormatException e) {<a name="line.98"></a> +<span class="sourceLineNo">099</span> size = request.getContentLength();<a name="line.99"></a> +<span class="sourceLineNo">100</span> }<a name="line.100"></a> +<span class="sourceLineNo">101</span> return size;<a name="line.101"></a> +<span class="sourceLineNo">102</span> }<a name="line.102"></a> +<span class="sourceLineNo">103</span><a name="line.103"></a> +<span class="sourceLineNo">104</span> /**<a name="line.104"></a> +<span class="sourceLineNo">105</span> * Retrieve the input stream for the request.<a name="line.105"></a> +<span class="sourceLineNo">106</span> *<a name="line.106"></a> +<span class="sourceLineNo">107</span> * @return The input stream for the request.<a name="line.107"></a> +<span class="sourceLineNo">108</span> *<a name="line.108"></a> +<span class="sourceLineNo">109</span> * @throws IOException if a problem occurs.<a name="line.109"></a> +<span class="sourceLineNo">110</span> */<a name="line.110"></a> +<span class="sourceLineNo">111</span> public InputStream getInputStream() throws IOException {<a name="line.111"></a> +<span class="sourceLineNo">112</span> return request.getInputStream();<a name="line.112"></a> +<span class="sourceLineNo">113</span> }<a name="line.113"></a> +<span class="sourceLineNo">114</span><a name="line.114"></a> +<span class="sourceLineNo">115</span> /**<a name="line.115"></a> +<span class="sourceLineNo">116</span> * Returns a string representation of this object.<a name="line.116"></a> +<span class="sourceLineNo">117</span> *<a name="line.117"></a> +<span class="sourceLineNo">118</span> * @return a string representation of this object.<a name="line.118"></a> +<span class="sourceLineNo">119</span> */<a name="line.119"></a> +<span class="sourceLineNo">120</span> @Override<a name="line.120"></a> +<span class="sourceLineNo">121</span> public String toString() {<a name="line.121"></a> +<span class="sourceLineNo">122</span> return format("ContentLength=%s, ContentType=%s",<a name="line.122"></a> +<span class="sourceLineNo">123</span> Long.valueOf(this.contentLength()),<a name="line.123"></a> +<span class="sourceLineNo">124</span> this.getContentType());<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> +<span class="sourceLineNo">127</span>}<a name="line.127"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html>
Added: websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Closeable.html ============================================================================== --- websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Closeable.html (added) +++ websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Closeable.html Tue Jun 13 12:48:38 2017 @@ -0,0 +1,115 @@ +<!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="../../../../../../stylesheet.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<a name="line.2"></a> +<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a> +<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a> +<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a> +<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a> +<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a> +<span class="sourceLineNo">008</span> *<a name="line.8"></a> +<span class="sourceLineNo">009</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a> +<span class="sourceLineNo">010</span> *<a name="line.10"></a> +<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a> +<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a> +<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a> +<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a> +<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a> +<span class="sourceLineNo">016</span> */<a name="line.16"></a> +<span class="sourceLineNo">017</span>package org.apache.commons.fileupload.util;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>import java.io.IOException;<a name="line.19"></a> +<span class="sourceLineNo">020</span><a name="line.20"></a> +<span class="sourceLineNo">021</span>/**<a name="line.21"></a> +<span class="sourceLineNo">022</span> * Interface of an object, which may be closed.<a name="line.22"></a> +<span class="sourceLineNo">023</span> *<a name="line.23"></a> +<span class="sourceLineNo">024</span> * @version $Id$<a name="line.24"></a> +<span class="sourceLineNo">025</span> */<a name="line.25"></a> +<span class="sourceLineNo">026</span>public interface Closeable {<a name="line.26"></a> +<span class="sourceLineNo">027</span><a name="line.27"></a> +<span class="sourceLineNo">028</span> /**<a name="line.28"></a> +<span class="sourceLineNo">029</span> * Closes the object.<a name="line.29"></a> +<span class="sourceLineNo">030</span> *<a name="line.30"></a> +<span class="sourceLineNo">031</span> * @throws IOException An I/O error occurred.<a name="line.31"></a> +<span class="sourceLineNo">032</span> */<a name="line.32"></a> +<span class="sourceLineNo">033</span> void close() throws IOException;<a name="line.33"></a> +<span class="sourceLineNo">034</span><a name="line.34"></a> +<span class="sourceLineNo">035</span> /**<a name="line.35"></a> +<span class="sourceLineNo">036</span> * Returns, whether the object is already closed.<a name="line.36"></a> +<span class="sourceLineNo">037</span> *<a name="line.37"></a> +<span class="sourceLineNo">038</span> * @return True, if the object is closed, otherwise false.<a name="line.38"></a> +<span class="sourceLineNo">039</span> * @throws IOException An I/O error occurred.<a name="line.39"></a> +<span class="sourceLineNo">040</span> */<a name="line.40"></a> +<span class="sourceLineNo">041</span> boolean isClosed() throws IOException;<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> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> Added: websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/FileItemHeadersImpl.html ============================================================================== --- websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/FileItemHeadersImpl.html (added) +++ websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/FileItemHeadersImpl.html Tue Jun 13 12:48:38 2017 @@ -0,0 +1,169 @@ +<!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="../../../../../../stylesheet.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<a name="line.2"></a> +<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a> +<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a> +<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a> +<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a> +<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a> +<span class="sourceLineNo">008</span> *<a name="line.8"></a> +<span class="sourceLineNo">009</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a> +<span class="sourceLineNo">010</span> *<a name="line.10"></a> +<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a> +<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a> +<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a> +<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a> +<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a> +<span class="sourceLineNo">016</span> */<a name="line.16"></a> +<span class="sourceLineNo">017</span>package org.apache.commons.fileupload.util;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>import java.io.Serializable;<a name="line.19"></a> +<span class="sourceLineNo">020</span>import java.util.ArrayList;<a name="line.20"></a> +<span class="sourceLineNo">021</span>import java.util.Collections;<a name="line.21"></a> +<span class="sourceLineNo">022</span>import java.util.Iterator;<a name="line.22"></a> +<span class="sourceLineNo">023</span>import java.util.LinkedHashMap;<a name="line.23"></a> +<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a> +<span class="sourceLineNo">025</span>import java.util.Locale;<a name="line.25"></a> +<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a> +<span class="sourceLineNo">027</span><a name="line.27"></a> +<span class="sourceLineNo">028</span>import org.apache.commons.fileupload.FileItemHeaders;<a name="line.28"></a> +<span class="sourceLineNo">029</span><a name="line.29"></a> +<span class="sourceLineNo">030</span>/**<a name="line.30"></a> +<span class="sourceLineNo">031</span> * Default implementation of the {@link FileItemHeaders} interface.<a name="line.31"></a> +<span class="sourceLineNo">032</span> *<a name="line.32"></a> +<span class="sourceLineNo">033</span> * @since 1.2.1<a name="line.33"></a> +<span class="sourceLineNo">034</span> *<a name="line.34"></a> +<span class="sourceLineNo">035</span> * @version $Id$<a name="line.35"></a> +<span class="sourceLineNo">036</span> */<a name="line.36"></a> +<span class="sourceLineNo">037</span>public class FileItemHeadersImpl implements FileItemHeaders, Serializable {<a name="line.37"></a> +<span class="sourceLineNo">038</span><a name="line.38"></a> +<span class="sourceLineNo">039</span> /**<a name="line.39"></a> +<span class="sourceLineNo">040</span> * Serial version UID, being used, if serialized.<a name="line.40"></a> +<span class="sourceLineNo">041</span> */<a name="line.41"></a> +<span class="sourceLineNo">042</span> private static final long serialVersionUID = -4455695752627032559L;<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> * Map of <code>String</code> keys to a <code>List</code> of<a name="line.45"></a> +<span class="sourceLineNo">046</span> * <code>String</code> instances.<a name="line.46"></a> +<span class="sourceLineNo">047</span> */<a name="line.47"></a> +<span class="sourceLineNo">048</span> private final Map<String, List<String>> headerNameToValueListMap = new LinkedHashMap<String, List<String>>();<a name="line.48"></a> +<span class="sourceLineNo">049</span><a name="line.49"></a> +<span class="sourceLineNo">050</span> /**<a name="line.50"></a> +<span class="sourceLineNo">051</span> * {@inheritDoc}<a name="line.51"></a> +<span class="sourceLineNo">052</span> */<a name="line.52"></a> +<span class="sourceLineNo">053</span> public String getHeader(String name) {<a name="line.53"></a> +<span class="sourceLineNo">054</span> String nameLower = name.toLowerCase(Locale.ENGLISH);<a name="line.54"></a> +<span class="sourceLineNo">055</span> List<String> headerValueList = headerNameToValueListMap.get(nameLower);<a name="line.55"></a> +<span class="sourceLineNo">056</span> if (null == headerValueList) {<a name="line.56"></a> +<span class="sourceLineNo">057</span> return null;<a name="line.57"></a> +<span class="sourceLineNo">058</span> }<a name="line.58"></a> +<span class="sourceLineNo">059</span> return headerValueList.get(0);<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> * {@inheritDoc}<a name="line.63"></a> +<span class="sourceLineNo">064</span> */<a name="line.64"></a> +<span class="sourceLineNo">065</span> public Iterator<String> getHeaderNames() {<a name="line.65"></a> +<span class="sourceLineNo">066</span> return headerNameToValueListMap.keySet().iterator();<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> * {@inheritDoc}<a name="line.70"></a> +<span class="sourceLineNo">071</span> */<a name="line.71"></a> +<span class="sourceLineNo">072</span> public Iterator<String> getHeaders(String name) {<a name="line.72"></a> +<span class="sourceLineNo">073</span> String nameLower = name.toLowerCase(Locale.ENGLISH);<a name="line.73"></a> +<span class="sourceLineNo">074</span> List<String> headerValueList = headerNameToValueListMap.get(nameLower);<a name="line.74"></a> +<span class="sourceLineNo">075</span> if (null == headerValueList) {<a name="line.75"></a> +<span class="sourceLineNo">076</span> headerValueList = Collections.emptyList();<a name="line.76"></a> +<span class="sourceLineNo">077</span> }<a name="line.77"></a> +<span class="sourceLineNo">078</span> return headerValueList.iterator();<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> +<span class="sourceLineNo">081</span> /**<a name="line.81"></a> +<span class="sourceLineNo">082</span> * Method to add header values to this instance.<a name="line.82"></a> +<span class="sourceLineNo">083</span> *<a name="line.83"></a> +<span class="sourceLineNo">084</span> * @param name name of this header<a name="line.84"></a> +<span class="sourceLineNo">085</span> * @param value value of this header<a name="line.85"></a> +<span class="sourceLineNo">086</span> */<a name="line.86"></a> +<span class="sourceLineNo">087</span> public synchronized void addHeader(String name, String value) {<a name="line.87"></a> +<span class="sourceLineNo">088</span> String nameLower = name.toLowerCase(Locale.ENGLISH);<a name="line.88"></a> +<span class="sourceLineNo">089</span> List<String> headerValueList = headerNameToValueListMap.get(nameLower);<a name="line.89"></a> +<span class="sourceLineNo">090</span> if (null == headerValueList) {<a name="line.90"></a> +<span class="sourceLineNo">091</span> headerValueList = new ArrayList<String>();<a name="line.91"></a> +<span class="sourceLineNo">092</span> headerNameToValueListMap.put(nameLower, headerValueList);<a name="line.92"></a> +<span class="sourceLineNo">093</span> }<a name="line.93"></a> +<span class="sourceLineNo">094</span> headerValueList.add(value);<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">097</span>}<a name="line.97"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> Added: websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/LimitedInputStream.html ============================================================================== --- websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/LimitedInputStream.html (added) +++ websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/LimitedInputStream.html Tue Jun 13 12:48:38 2017 @@ -0,0 +1,239 @@ +<!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="../../../../../../stylesheet.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<a name="line.2"></a> +<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a> +<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a> +<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a> +<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a> +<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a> +<span class="sourceLineNo">008</span> *<a name="line.8"></a> +<span class="sourceLineNo">009</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a> +<span class="sourceLineNo">010</span> *<a name="line.10"></a> +<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a> +<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a> +<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a> +<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a> +<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a> +<span class="sourceLineNo">016</span> */<a name="line.16"></a> +<span class="sourceLineNo">017</span>package org.apache.commons.fileupload.util;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>import java.io.FilterInputStream;<a name="line.19"></a> +<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a> +<span class="sourceLineNo">021</span>import java.io.InputStream;<a name="line.21"></a> +<span class="sourceLineNo">022</span><a name="line.22"></a> +<span class="sourceLineNo">023</span>/**<a name="line.23"></a> +<span class="sourceLineNo">024</span> * An input stream, which limits its data size. This stream is<a name="line.24"></a> +<span class="sourceLineNo">025</span> * used, if the content length is unknown.<a name="line.25"></a> +<span class="sourceLineNo">026</span> *<a name="line.26"></a> +<span class="sourceLineNo">027</span> * @version $Id$<a name="line.27"></a> +<span class="sourceLineNo">028</span> */<a name="line.28"></a> +<span class="sourceLineNo">029</span>public abstract class LimitedInputStream extends FilterInputStream implements Closeable {<a name="line.29"></a> +<span class="sourceLineNo">030</span><a name="line.30"></a> +<span class="sourceLineNo">031</span> /**<a name="line.31"></a> +<span class="sourceLineNo">032</span> * The maximum size of an item, in bytes.<a name="line.32"></a> +<span class="sourceLineNo">033</span> */<a name="line.33"></a> +<span class="sourceLineNo">034</span> private final long sizeMax;<a name="line.34"></a> +<span class="sourceLineNo">035</span><a name="line.35"></a> +<span class="sourceLineNo">036</span> /**<a name="line.36"></a> +<span class="sourceLineNo">037</span> * The current number of bytes.<a name="line.37"></a> +<span class="sourceLineNo">038</span> */<a name="line.38"></a> +<span class="sourceLineNo">039</span> private long count;<a name="line.39"></a> +<span class="sourceLineNo">040</span><a name="line.40"></a> +<span class="sourceLineNo">041</span> /**<a name="line.41"></a> +<span class="sourceLineNo">042</span> * Whether this stream is already closed.<a name="line.42"></a> +<span class="sourceLineNo">043</span> */<a name="line.43"></a> +<span class="sourceLineNo">044</span> private boolean closed;<a name="line.44"></a> +<span class="sourceLineNo">045</span><a name="line.45"></a> +<span class="sourceLineNo">046</span> /**<a name="line.46"></a> +<span class="sourceLineNo">047</span> * Creates a new instance.<a name="line.47"></a> +<span class="sourceLineNo">048</span> *<a name="line.48"></a> +<span class="sourceLineNo">049</span> * @param inputStream The input stream, which shall be limited.<a name="line.49"></a> +<span class="sourceLineNo">050</span> * @param pSizeMax The limit; no more than this number of bytes<a name="line.50"></a> +<span class="sourceLineNo">051</span> * shall be returned by the source stream.<a name="line.51"></a> +<span class="sourceLineNo">052</span> */<a name="line.52"></a> +<span class="sourceLineNo">053</span> public LimitedInputStream(InputStream inputStream, long pSizeMax) {<a name="line.53"></a> +<span class="sourceLineNo">054</span> super(inputStream);<a name="line.54"></a> +<span class="sourceLineNo">055</span> sizeMax = pSizeMax;<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> /**<a name="line.58"></a> +<span class="sourceLineNo">059</span> * Called to indicate, that the input streams limit has<a name="line.59"></a> +<span class="sourceLineNo">060</span> * been exceeded.<a name="line.60"></a> +<span class="sourceLineNo">061</span> *<a name="line.61"></a> +<span class="sourceLineNo">062</span> * @param pSizeMax The input streams limit, in bytes.<a name="line.62"></a> +<span class="sourceLineNo">063</span> * @param pCount The actual number of bytes.<a name="line.63"></a> +<span class="sourceLineNo">064</span> * @throws IOException The called method is expected<a name="line.64"></a> +<span class="sourceLineNo">065</span> * to raise an IOException.<a name="line.65"></a> +<span class="sourceLineNo">066</span> */<a name="line.66"></a> +<span class="sourceLineNo">067</span> protected abstract void raiseError(long pSizeMax, long pCount)<a name="line.67"></a> +<span class="sourceLineNo">068</span> throws IOException;<a name="line.68"></a> +<span class="sourceLineNo">069</span><a name="line.69"></a> +<span class="sourceLineNo">070</span> /**<a name="line.70"></a> +<span class="sourceLineNo">071</span> * Called to check, whether the input streams<a name="line.71"></a> +<span class="sourceLineNo">072</span> * limit is reached.<a name="line.72"></a> +<span class="sourceLineNo">073</span> *<a name="line.73"></a> +<span class="sourceLineNo">074</span> * @throws IOException The given limit is exceeded.<a name="line.74"></a> +<span class="sourceLineNo">075</span> */<a name="line.75"></a> +<span class="sourceLineNo">076</span> private void checkLimit() throws IOException {<a name="line.76"></a> +<span class="sourceLineNo">077</span> if (count > sizeMax) {<a name="line.77"></a> +<span class="sourceLineNo">078</span> raiseError(sizeMax, count);<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> +<span class="sourceLineNo">081</span><a name="line.81"></a> +<span class="sourceLineNo">082</span> /**<a name="line.82"></a> +<span class="sourceLineNo">083</span> * Reads the next byte of data from this input stream. The value<a name="line.83"></a> +<span class="sourceLineNo">084</span> * byte is returned as an <code>int</code> in the range<a name="line.84"></a> +<span class="sourceLineNo">085</span> * <code>0</code> to <code>255</code>. If no byte is available<a name="line.85"></a> +<span class="sourceLineNo">086</span> * because the end of the stream has been reached, the value<a name="line.86"></a> +<span class="sourceLineNo">087</span> * <code>-1</code> is returned. This method blocks until input data<a name="line.87"></a> +<span class="sourceLineNo">088</span> * is available, the end of the stream is detected, or an exception<a name="line.88"></a> +<span class="sourceLineNo">089</span> * is thrown.<a name="line.89"></a> +<span class="sourceLineNo">090</span> * <p><a name="line.90"></a> +<span class="sourceLineNo">091</span> * This method<a name="line.91"></a> +<span class="sourceLineNo">092</span> * simply performs <code>in.read()</code> and returns the result.<a name="line.92"></a> +<span class="sourceLineNo">093</span> *<a name="line.93"></a> +<span class="sourceLineNo">094</span> * @return the next byte of data, or <code>-1</code> if the end of the<a name="line.94"></a> +<span class="sourceLineNo">095</span> * stream is reached.<a name="line.95"></a> +<span class="sourceLineNo">096</span> * @exception IOException if an I/O error occurs.<a name="line.96"></a> +<span class="sourceLineNo">097</span> * @see java.io.FilterInputStream#in<a name="line.97"></a> +<span class="sourceLineNo">098</span> */<a name="line.98"></a> +<span class="sourceLineNo">099</span> @Override<a name="line.99"></a> +<span class="sourceLineNo">100</span> public int read() throws IOException {<a name="line.100"></a> +<span class="sourceLineNo">101</span> int res = super.read();<a name="line.101"></a> +<span class="sourceLineNo">102</span> if (res != -1) {<a name="line.102"></a> +<span class="sourceLineNo">103</span> count++;<a name="line.103"></a> +<span class="sourceLineNo">104</span> checkLimit();<a name="line.104"></a> +<span class="sourceLineNo">105</span> }<a name="line.105"></a> +<span class="sourceLineNo">106</span> return res;<a name="line.106"></a> +<span class="sourceLineNo">107</span> }<a name="line.107"></a> +<span class="sourceLineNo">108</span><a name="line.108"></a> +<span class="sourceLineNo">109</span> /**<a name="line.109"></a> +<span class="sourceLineNo">110</span> * Reads up to <code>len</code> bytes of data from this input stream<a name="line.110"></a> +<span class="sourceLineNo">111</span> * into an array of bytes. If <code>len</code> is not zero, the method<a name="line.111"></a> +<span class="sourceLineNo">112</span> * blocks until some input is available; otherwise, no<a name="line.112"></a> +<span class="sourceLineNo">113</span> * bytes are read and <code>0</code> is returned.<a name="line.113"></a> +<span class="sourceLineNo">114</span> * <p><a name="line.114"></a> +<span class="sourceLineNo">115</span> * This method simply performs <code>in.read(b, off, len)</code><a name="line.115"></a> +<span class="sourceLineNo">116</span> * and returns the result.<a name="line.116"></a> +<span class="sourceLineNo">117</span> *<a name="line.117"></a> +<span class="sourceLineNo">118</span> * @param b the buffer into which the data is read.<a name="line.118"></a> +<span class="sourceLineNo">119</span> * @param off The start offset in the destination array<a name="line.119"></a> +<span class="sourceLineNo">120</span> * <code>b</code>.<a name="line.120"></a> +<span class="sourceLineNo">121</span> * @param len the maximum number of bytes read.<a name="line.121"></a> +<span class="sourceLineNo">122</span> * @return the total number of bytes read into the buffer, or<a name="line.122"></a> +<span class="sourceLineNo">123</span> * <code>-1</code> if there is no more data because the end of<a name="line.123"></a> +<span class="sourceLineNo">124</span> * the stream has been reached.<a name="line.124"></a> +<span class="sourceLineNo">125</span> * @exception NullPointerException If <code>b</code> is <code>null</code>.<a name="line.125"></a> +<span class="sourceLineNo">126</span> * @exception IndexOutOfBoundsException If <code>off</code> is negative,<a name="line.126"></a> +<span class="sourceLineNo">127</span> * <code>len</code> is negative, or <code>len</code> is greater than<a name="line.127"></a> +<span class="sourceLineNo">128</span> * <code>b.length - off</code><a name="line.128"></a> +<span class="sourceLineNo">129</span> * @exception IOException if an I/O error occurs.<a name="line.129"></a> +<span class="sourceLineNo">130</span> * @see java.io.FilterInputStream#in<a name="line.130"></a> +<span class="sourceLineNo">131</span> */<a name="line.131"></a> +<span class="sourceLineNo">132</span> @Override<a name="line.132"></a> +<span class="sourceLineNo">133</span> public int read(byte[] b, int off, int len) throws IOException {<a name="line.133"></a> +<span class="sourceLineNo">134</span> int res = super.read(b, off, len);<a name="line.134"></a> +<span class="sourceLineNo">135</span> if (res > 0) {<a name="line.135"></a> +<span class="sourceLineNo">136</span> count += res;<a name="line.136"></a> +<span class="sourceLineNo">137</span> checkLimit();<a name="line.137"></a> +<span class="sourceLineNo">138</span> }<a name="line.138"></a> +<span class="sourceLineNo">139</span> return res;<a name="line.139"></a> +<span class="sourceLineNo">140</span> }<a name="line.140"></a> +<span class="sourceLineNo">141</span><a name="line.141"></a> +<span class="sourceLineNo">142</span> /**<a name="line.142"></a> +<span class="sourceLineNo">143</span> * Returns, whether this stream is already closed.<a name="line.143"></a> +<span class="sourceLineNo">144</span> *<a name="line.144"></a> +<span class="sourceLineNo">145</span> * @return True, if the stream is closed, otherwise false.<a name="line.145"></a> +<span class="sourceLineNo">146</span> * @throws IOException An I/O error occurred.<a name="line.146"></a> +<span class="sourceLineNo">147</span> */<a name="line.147"></a> +<span class="sourceLineNo">148</span> public boolean isClosed() throws IOException {<a name="line.148"></a> +<span class="sourceLineNo">149</span> return closed;<a name="line.149"></a> +<span class="sourceLineNo">150</span> }<a name="line.150"></a> +<span class="sourceLineNo">151</span><a name="line.151"></a> +<span class="sourceLineNo">152</span> /**<a name="line.152"></a> +<span class="sourceLineNo">153</span> * Closes this input stream and releases any system resources<a name="line.153"></a> +<span class="sourceLineNo">154</span> * associated with the stream.<a name="line.154"></a> +<span class="sourceLineNo">155</span> * This<a name="line.155"></a> +<span class="sourceLineNo">156</span> * method simply performs <code>in.close()</code>.<a name="line.156"></a> +<span class="sourceLineNo">157</span> *<a name="line.157"></a> +<span class="sourceLineNo">158</span> * @exception IOException if an I/O error occurs.<a name="line.158"></a> +<span class="sourceLineNo">159</span> * @see java.io.FilterInputStream#in<a name="line.159"></a> +<span class="sourceLineNo">160</span> */<a name="line.160"></a> +<span class="sourceLineNo">161</span> @Override<a name="line.161"></a> +<span class="sourceLineNo">162</span> public void close() throws IOException {<a name="line.162"></a> +<span class="sourceLineNo">163</span> closed = true;<a name="line.163"></a> +<span class="sourceLineNo">164</span> super.close();<a name="line.164"></a> +<span class="sourceLineNo">165</span> }<a name="line.165"></a> +<span class="sourceLineNo">166</span><a name="line.166"></a> +<span class="sourceLineNo">167</span>}<a name="line.167"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html> Added: websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Streams.html ============================================================================== --- websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Streams.html (added) +++ websites/production/commons/content/proper/commons-fileupload/javadocs/api-release/src-html/org/apache/commons/fileupload/util/Streams.html Tue Jun 13 12:48:38 2017 @@ -0,0 +1,267 @@ +<!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="../../../../../../stylesheet.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<a name="line.2"></a> +<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a> +<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a> +<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a> +<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a> +<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a> +<span class="sourceLineNo">008</span> *<a name="line.8"></a> +<span class="sourceLineNo">009</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a> +<span class="sourceLineNo">010</span> *<a name="line.10"></a> +<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a> +<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a> +<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a> +<span class="sourceLineNo">014</span> * See the License for the specific language governing permissions and<a name="line.14"></a> +<span class="sourceLineNo">015</span> * limitations under the License.<a name="line.15"></a> +<span class="sourceLineNo">016</span> */<a name="line.16"></a> +<span class="sourceLineNo">017</span>package org.apache.commons.fileupload.util;<a name="line.17"></a> +<span class="sourceLineNo">018</span><a name="line.18"></a> +<span class="sourceLineNo">019</span>import java.io.ByteArrayOutputStream;<a name="line.19"></a> +<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a> +<span class="sourceLineNo">021</span>import java.io.InputStream;<a name="line.21"></a> +<span class="sourceLineNo">022</span>import java.io.OutputStream;<a name="line.22"></a> +<span class="sourceLineNo">023</span><a name="line.23"></a> +<span class="sourceLineNo">024</span>import org.apache.commons.fileupload.InvalidFileNameException;<a name="line.24"></a> +<span class="sourceLineNo">025</span>import org.apache.commons.io.IOUtils;<a name="line.25"></a> +<span class="sourceLineNo">026</span><a name="line.26"></a> +<span class="sourceLineNo">027</span>/**<a name="line.27"></a> +<span class="sourceLineNo">028</span> * Utility class for working with streams.<a name="line.28"></a> +<span class="sourceLineNo">029</span> *<a name="line.29"></a> +<span class="sourceLineNo">030</span> * @version $Id$<a name="line.30"></a> +<span class="sourceLineNo">031</span> */<a name="line.31"></a> +<span class="sourceLineNo">032</span>public final class Streams {<a name="line.32"></a> +<span class="sourceLineNo">033</span><a name="line.33"></a> +<span class="sourceLineNo">034</span> /**<a name="line.34"></a> +<span class="sourceLineNo">035</span> * Private constructor, to prevent instantiation.<a name="line.35"></a> +<span class="sourceLineNo">036</span> * This class has only static methods.<a name="line.36"></a> +<span class="sourceLineNo">037</span> */<a name="line.37"></a> +<span class="sourceLineNo">038</span> private Streams() {<a name="line.38"></a> +<span class="sourceLineNo">039</span> // Does nothing<a name="line.39"></a> +<span class="sourceLineNo">040</span> }<a name="line.40"></a> +<span class="sourceLineNo">041</span><a name="line.41"></a> +<span class="sourceLineNo">042</span> /**<a name="line.42"></a> +<span class="sourceLineNo">043</span> * Default buffer size for use in<a name="line.43"></a> +<span class="sourceLineNo">044</span> * {@link #copy(InputStream, OutputStream, boolean)}.<a name="line.44"></a> +<span class="sourceLineNo">045</span> */<a name="line.45"></a> +<span class="sourceLineNo">046</span> private static final int DEFAULT_BUFFER_SIZE = 8192;<a name="line.46"></a> +<span class="sourceLineNo">047</span><a name="line.47"></a> +<span class="sourceLineNo">048</span> /**<a name="line.48"></a> +<span class="sourceLineNo">049</span> * Copies the contents of the given {@link InputStream}<a name="line.49"></a> +<span class="sourceLineNo">050</span> * to the given {@link OutputStream}. Shortcut for<a name="line.50"></a> +<span class="sourceLineNo">051</span> * <pre><a name="line.51"></a> +<span class="sourceLineNo">052</span> * copy(pInputStream, pOutputStream, new byte[8192]);<a name="line.52"></a> +<span class="sourceLineNo">053</span> * </pre><a name="line.53"></a> +<span class="sourceLineNo">054</span> *<a name="line.54"></a> +<span class="sourceLineNo">055</span> * @param inputStream The input stream, which is being read.<a name="line.55"></a> +<span class="sourceLineNo">056</span> * It is guaranteed, that {@link InputStream#close()} is called<a name="line.56"></a> +<span class="sourceLineNo">057</span> * on the stream.<a name="line.57"></a> +<span class="sourceLineNo">058</span> * @param outputStream The output stream, to which data should<a name="line.58"></a> +<span class="sourceLineNo">059</span> * be written. May be null, in which case the input streams<a name="line.59"></a> +<span class="sourceLineNo">060</span> * contents are simply discarded.<a name="line.60"></a> +<span class="sourceLineNo">061</span> * @param closeOutputStream True guarantees, that {@link OutputStream#close()}<a name="line.61"></a> +<span class="sourceLineNo">062</span> * is called on the stream. False indicates, that only<a name="line.62"></a> +<span class="sourceLineNo">063</span> * {@link OutputStream#flush()} should be called finally.<a name="line.63"></a> +<span class="sourceLineNo">064</span> *<a name="line.64"></a> +<span class="sourceLineNo">065</span> * @return Number of bytes, which have been copied.<a name="line.65"></a> +<span class="sourceLineNo">066</span> * @throws IOException An I/O error occurred.<a name="line.66"></a> +<span class="sourceLineNo">067</span> */<a name="line.67"></a> +<span class="sourceLineNo">068</span> public static long copy(InputStream inputStream, OutputStream outputStream, boolean closeOutputStream)<a name="line.68"></a> +<span class="sourceLineNo">069</span> throws IOException {<a name="line.69"></a> +<span class="sourceLineNo">070</span> return copy(inputStream, outputStream, closeOutputStream, new byte[DEFAULT_BUFFER_SIZE]);<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> +<span class="sourceLineNo">073</span> /**<a name="line.73"></a> +<span class="sourceLineNo">074</span> * Copies the contents of the given {@link InputStream}<a name="line.74"></a> +<span class="sourceLineNo">075</span> * to the given {@link OutputStream}.<a name="line.75"></a> +<span class="sourceLineNo">076</span> *<a name="line.76"></a> +<span class="sourceLineNo">077</span> * @param inputStream The input stream, which is being read.<a name="line.77"></a> +<span class="sourceLineNo">078</span> * It is guaranteed, that {@link InputStream#close()} is called<a name="line.78"></a> +<span class="sourceLineNo">079</span> * on the stream.<a name="line.79"></a> +<span class="sourceLineNo">080</span> * @param outputStream The output stream, to which data should<a name="line.80"></a> +<span class="sourceLineNo">081</span> * be written. May be null, in which case the input streams<a name="line.81"></a> +<span class="sourceLineNo">082</span> * contents are simply discarded.<a name="line.82"></a> +<span class="sourceLineNo">083</span> * @param closeOutputStream True guarantees, that {@link OutputStream#close()}<a name="line.83"></a> +<span class="sourceLineNo">084</span> * is called on the stream. False indicates, that only<a name="line.84"></a> +<span class="sourceLineNo">085</span> * {@link OutputStream#flush()} should be called finally.<a name="line.85"></a> +<span class="sourceLineNo">086</span> * @param buffer Temporary buffer, which is to be used for<a name="line.86"></a> +<span class="sourceLineNo">087</span> * copying data.<a name="line.87"></a> +<span class="sourceLineNo">088</span> * @return Number of bytes, which have been copied.<a name="line.88"></a> +<span class="sourceLineNo">089</span> * @throws IOException An I/O error occurred.<a name="line.89"></a> +<span class="sourceLineNo">090</span> */<a name="line.90"></a> +<span class="sourceLineNo">091</span> public static long copy(InputStream inputStream,<a name="line.91"></a> +<span class="sourceLineNo">092</span> OutputStream outputStream, boolean closeOutputStream,<a name="line.92"></a> +<span class="sourceLineNo">093</span> byte[] buffer)<a name="line.93"></a> +<span class="sourceLineNo">094</span> throws IOException {<a name="line.94"></a> +<span class="sourceLineNo">095</span> OutputStream out = outputStream;<a name="line.95"></a> +<span class="sourceLineNo">096</span> InputStream in = inputStream;<a name="line.96"></a> +<span class="sourceLineNo">097</span> try {<a name="line.97"></a> +<span class="sourceLineNo">098</span> long total = 0;<a name="line.98"></a> +<span class="sourceLineNo">099</span> for (;;) {<a name="line.99"></a> +<span class="sourceLineNo">100</span> int res = in.read(buffer);<a name="line.100"></a> +<span class="sourceLineNo">101</span> if (res == -1) {<a name="line.101"></a> +<span class="sourceLineNo">102</span> break;<a name="line.102"></a> +<span class="sourceLineNo">103</span> }<a name="line.103"></a> +<span class="sourceLineNo">104</span> if (res > 0) {<a name="line.104"></a> +<span class="sourceLineNo">105</span> total += res;<a name="line.105"></a> +<span class="sourceLineNo">106</span> if (out != null) {<a name="line.106"></a> +<span class="sourceLineNo">107</span> out.write(buffer, 0, res);<a name="line.107"></a> +<span class="sourceLineNo">108</span> }<a name="line.108"></a> +<span class="sourceLineNo">109</span> }<a name="line.109"></a> +<span class="sourceLineNo">110</span> }<a name="line.110"></a> +<span class="sourceLineNo">111</span> if (out != null) {<a name="line.111"></a> +<span class="sourceLineNo">112</span> if (closeOutputStream) {<a name="line.112"></a> +<span class="sourceLineNo">113</span> out.close();<a name="line.113"></a> +<span class="sourceLineNo">114</span> } else {<a name="line.114"></a> +<span class="sourceLineNo">115</span> out.flush();<a name="line.115"></a> +<span class="sourceLineNo">116</span> }<a name="line.116"></a> +<span class="sourceLineNo">117</span> out = null;<a name="line.117"></a> +<span class="sourceLineNo">118</span> }<a name="line.118"></a> +<span class="sourceLineNo">119</span> in.close();<a name="line.119"></a> +<span class="sourceLineNo">120</span> in = null;<a name="line.120"></a> +<span class="sourceLineNo">121</span> return total;<a name="line.121"></a> +<span class="sourceLineNo">122</span> } finally {<a name="line.122"></a> +<span class="sourceLineNo">123</span> IOUtils.closeQuietly(in);<a name="line.123"></a> +<span class="sourceLineNo">124</span> if (closeOutputStream) {<a name="line.124"></a> +<span class="sourceLineNo">125</span> IOUtils.closeQuietly(out);<a name="line.125"></a> +<span class="sourceLineNo">126</span> }<a name="line.126"></a> +<span class="sourceLineNo">127</span> }<a name="line.127"></a> +<span class="sourceLineNo">128</span> }<a name="line.128"></a> +<span class="sourceLineNo">129</span><a name="line.129"></a> +<span class="sourceLineNo">130</span> /**<a name="line.130"></a> +<span class="sourceLineNo">131</span> * This convenience method allows to read a<a name="line.131"></a> +<span class="sourceLineNo">132</span> * {@link org.apache.commons.fileupload.FileItemStream}'s<a name="line.132"></a> +<span class="sourceLineNo">133</span> * content into a string. The platform's default character encoding<a name="line.133"></a> +<span class="sourceLineNo">134</span> * is used for converting bytes into characters.<a name="line.134"></a> +<span class="sourceLineNo">135</span> *<a name="line.135"></a> +<span class="sourceLineNo">136</span> * @param inputStream The input stream to read.<a name="line.136"></a> +<span class="sourceLineNo">137</span> * @see #asString(InputStream, String)<a name="line.137"></a> +<span class="sourceLineNo">138</span> * @return The streams contents, as a string.<a name="line.138"></a> +<span class="sourceLineNo">139</span> * @throws IOException An I/O error occurred.<a name="line.139"></a> +<span class="sourceLineNo">140</span> */<a name="line.140"></a> +<span class="sourceLineNo">141</span> public static String asString(InputStream inputStream) throws IOException {<a name="line.141"></a> +<span class="sourceLineNo">142</span> ByteArrayOutputStream baos = new ByteArrayOutputStream();<a name="line.142"></a> +<span class="sourceLineNo">143</span> copy(inputStream, baos, true);<a name="line.143"></a> +<span class="sourceLineNo">144</span> return baos.toString();<a name="line.144"></a> +<span class="sourceLineNo">145</span> }<a name="line.145"></a> +<span class="sourceLineNo">146</span><a name="line.146"></a> +<span class="sourceLineNo">147</span> /**<a name="line.147"></a> +<span class="sourceLineNo">148</span> * This convenience method allows to read a<a name="line.148"></a> +<span class="sourceLineNo">149</span> * {@link org.apache.commons.fileupload.FileItemStream}'s<a name="line.149"></a> +<span class="sourceLineNo">150</span> * content into a string, using the given character encoding.<a name="line.150"></a> +<span class="sourceLineNo">151</span> *<a name="line.151"></a> +<span class="sourceLineNo">152</span> * @param inputStream The input stream to read.<a name="line.152"></a> +<span class="sourceLineNo">153</span> * @param encoding The character encoding, typically "UTF-8".<a name="line.153"></a> +<span class="sourceLineNo">154</span> * @see #asString(InputStream)<a name="line.154"></a> +<span class="sourceLineNo">155</span> * @return The streams contents, as a string.<a name="line.155"></a> +<span class="sourceLineNo">156</span> * @throws IOException An I/O error occurred.<a name="line.156"></a> +<span class="sourceLineNo">157</span> */<a name="line.157"></a> +<span class="sourceLineNo">158</span> public static String asString(InputStream inputStream, String encoding) throws IOException {<a name="line.158"></a> +<span class="sourceLineNo">159</span> ByteArrayOutputStream baos = new ByteArrayOutputStream();<a name="line.159"></a> +<span class="sourceLineNo">160</span> copy(inputStream, baos, true);<a name="line.160"></a> +<span class="sourceLineNo">161</span> return baos.toString(encoding);<a name="line.161"></a> +<span class="sourceLineNo">162</span> }<a name="line.162"></a> +<span class="sourceLineNo">163</span><a name="line.163"></a> +<span class="sourceLineNo">164</span> /**<a name="line.164"></a> +<span class="sourceLineNo">165</span> * Checks, whether the given file name is valid in the sense,<a name="line.165"></a> +<span class="sourceLineNo">166</span> * that it doesn't contain any NUL characters. If the file name<a name="line.166"></a> +<span class="sourceLineNo">167</span> * is valid, it will be returned without any modifications. Otherwise,<a name="line.167"></a> +<span class="sourceLineNo">168</span> * an {@link InvalidFileNameException} is raised.<a name="line.168"></a> +<span class="sourceLineNo">169</span> *<a name="line.169"></a> +<span class="sourceLineNo">170</span> * @param fileName The file name to check<a name="line.170"></a> +<span class="sourceLineNo">171</span> * @return Unmodified file name, if valid.<a name="line.171"></a> +<span class="sourceLineNo">172</span> * @throws InvalidFileNameException The file name was found to be invalid.<a name="line.172"></a> +<span class="sourceLineNo">173</span> */<a name="line.173"></a> +<span class="sourceLineNo">174</span> public static String checkFileName(String fileName) {<a name="line.174"></a> +<span class="sourceLineNo">175</span> if (fileName != null && fileName.indexOf('\u0000') != -1) {<a name="line.175"></a> +<span class="sourceLineNo">176</span> // pFileName.replace("\u0000", "\\0")<a name="line.176"></a> +<span class="sourceLineNo">177</span> final StringBuilder sb = new StringBuilder();<a name="line.177"></a> +<span class="sourceLineNo">178</span> for (int i = 0; i < fileName.length(); i++) {<a name="line.178"></a> +<span class="sourceLineNo">179</span> char c = fileName.charAt(i);<a name="line.179"></a> +<span class="sourceLineNo">180</span> switch (c) {<a name="line.180"></a> +<span class="sourceLineNo">181</span> case 0:<a name="line.181"></a> +<span class="sourceLineNo">182</span> sb.append("\\0");<a name="line.182"></a> +<span class="sourceLineNo">183</span> break;<a name="line.183"></a> +<span class="sourceLineNo">184</span> default:<a name="line.184"></a> +<span class="sourceLineNo">185</span> sb.append(c);<a name="line.185"></a> +<span class="sourceLineNo">186</span> break;<a name="line.186"></a> +<span class="sourceLineNo">187</span> }<a name="line.187"></a> +<span class="sourceLineNo">188</span> }<a name="line.188"></a> +<span class="sourceLineNo">189</span> throw new InvalidFileNameException(fileName,<a name="line.189"></a> +<span class="sourceLineNo">190</span> "Invalid file name: " + sb);<a name="line.190"></a> +<span class="sourceLineNo">191</span> }<a name="line.191"></a> +<span class="sourceLineNo">192</span> return fileName;<a name="line.192"></a> +<span class="sourceLineNo">193</span> }<a name="line.193"></a> +<span class="sourceLineNo">194</span><a name="line.194"></a> +<span class="sourceLineNo">195</span>}<a name="line.195"></a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</pre> +</div> +</body> +</html>