Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/activation/PathDataSource.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/activation/PathDataSource.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/activation/PathDataSource.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,223 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.activation, class: PathDataSource">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17"></span>
+<span class="source-line-no">018</span><span id="line-18">package 
org.apache.commons.mail2.javax.activation;</span>
+<span class="source-line-no">019</span><span id="line-19"></span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.IOException;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.io.InputStream;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.io.OutputStream;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.nio.file.Files;</span>
+<span class="source-line-no">024</span><span id="line-24">import 
java.nio.file.OpenOption;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
java.nio.file.Path;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
java.util.Objects;</span>
+<span class="source-line-no">027</span><span id="line-27"></span>
+<span class="source-line-no">028</span><span id="line-28">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
javax.activation.FileTypeMap;</span>
+<span class="source-line-no">030</span><span id="line-30">import 
javax.activation.MimetypesFileTypeMap;</span>
+<span class="source-line-no">031</span><span id="line-31"></span>
+<span class="source-line-no">032</span><span id="line-32">/**</span>
+<span class="source-line-no">033</span><span id="line-33"> * A JavaBeans 
Activation Framework {@link DataSource} that encapsulates a {@link Path}. It 
provides data typing services via a {@link FileTypeMap} object.</span>
+<span class="source-line-no">034</span><span id="line-34"> *</span>
+<span class="source-line-no">035</span><span id="line-35"> * @see 
javax.activation.DataSource</span>
+<span class="source-line-no">036</span><span id="line-36"> * @see 
javax.activation.FileTypeMap</span>
+<span class="source-line-no">037</span><span id="line-37"> * @see 
javax.activation.MimetypesFileTypeMap</span>
+<span class="source-line-no">038</span><span id="line-38"> *</span>
+<span class="source-line-no">039</span><span id="line-39"> * @since 
1.6.0</span>
+<span class="source-line-no">040</span><span id="line-40"> */</span>
+<span class="source-line-no">041</span><span id="line-41">public final class 
PathDataSource implements DataSource {</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">    /**</span>
+<span class="source-line-no">044</span><span id="line-44">     * The 
source.</span>
+<span class="source-line-no">045</span><span id="line-45">     */</span>
+<span class="source-line-no">046</span><span id="line-46">    private final 
Path path;</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">    /**</span>
+<span class="source-line-no">049</span><span id="line-49">     * Defaults to 
{@link FileTypeMap#getDefaultFileTypeMap()}.</span>
+<span class="source-line-no">050</span><span id="line-50">     */</span>
+<span class="source-line-no">051</span><span id="line-51">    private final 
FileTypeMap typeMap;</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">    /**</span>
+<span class="source-line-no">054</span><span id="line-54">     * NIO options 
to open the source Path.</span>
+<span class="source-line-no">055</span><span id="line-55">     */</span>
+<span class="source-line-no">056</span><span id="line-56">    private final 
OpenOption[] options;</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">    /**</span>
+<span class="source-line-no">059</span><span id="line-59">     * Creates a new 
instance from a Path.</span>
+<span class="source-line-no">060</span><span id="line-60">     * 
&lt;p&gt;</span>
+<span class="source-line-no">061</span><span id="line-61">     * The file will 
not actually be opened until a method is called that requires the path to be 
opened.</span>
+<span class="source-line-no">062</span><span id="line-62">     * 
&lt;/p&gt;</span>
+<span class="source-line-no">063</span><span id="line-63">     * 
&lt;p&gt;</span>
+<span class="source-line-no">064</span><span id="line-64">     * The type map 
defaults to {@link FileTypeMap#getDefaultFileTypeMap()}.</span>
+<span class="source-line-no">065</span><span id="line-65">     *</span>
+<span class="source-line-no">066</span><span id="line-66">     * @param path 
the path</span>
+<span class="source-line-no">067</span><span id="line-67">     */</span>
+<span class="source-line-no">068</span><span id="line-68">    public 
PathDataSource(final Path path) {</span>
+<span class="source-line-no">069</span><span id="line-69">        this(path, 
FileTypeMap.getDefaultFileTypeMap());</span>
+<span class="source-line-no">070</span><span id="line-70">    }</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">    /**</span>
+<span class="source-line-no">073</span><span id="line-73">     * Creates a new 
instance from a Path.</span>
+<span class="source-line-no">074</span><span id="line-74">     * 
&lt;p&gt;</span>
+<span class="source-line-no">075</span><span id="line-75">     * The file will 
not actually be opened until a method is called that requires the path to be 
opened.</span>
+<span class="source-line-no">076</span><span id="line-76">     * 
&lt;/p&gt;</span>
+<span class="source-line-no">077</span><span id="line-77">     *</span>
+<span class="source-line-no">078</span><span id="line-78">     * @param path   
 the path, non-null.</span>
+<span class="source-line-no">079</span><span id="line-79">     * @param 
typeMap the type map, non-null.</span>
+<span class="source-line-no">080</span><span id="line-80">     * @param 
options options for opening file streams.</span>
+<span class="source-line-no">081</span><span id="line-81">     */</span>
+<span class="source-line-no">082</span><span id="line-82">    public 
PathDataSource(final Path path, final FileTypeMap typeMap, final OpenOption... 
options) {</span>
+<span class="source-line-no">083</span><span id="line-83">        this.path = 
Objects.requireNonNull(path, "path");</span>
+<span class="source-line-no">084</span><span id="line-84">        this.typeMap 
= Objects.requireNonNull(typeMap, "typeMap");</span>
+<span class="source-line-no">085</span><span id="line-85">        this.options 
= options;</span>
+<span class="source-line-no">086</span><span id="line-86">    }</span>
+<span class="source-line-no">087</span><span id="line-87"></span>
+<span class="source-line-no">088</span><span id="line-88">    /**</span>
+<span class="source-line-no">089</span><span id="line-89">     * Gets the MIME 
type of the data as a String. This method uses the currently installed 
FileTypeMap. If there is no FileTypeMap explicitly set, the</span>
+<span class="source-line-no">090</span><span id="line-90">     * 
FileDataSource will call the {@link FileTypeMap#getDefaultFileTypeMap} method 
to acquire a default FileTypeMap.</span>
+<span class="source-line-no">091</span><span id="line-91">     * 
&lt;p&gt;</span>
+<span class="source-line-no">092</span><span id="line-92">     * By default, 
the {@link FileTypeMap} used will be a {@link MimetypesFileTypeMap}.</span>
+<span class="source-line-no">093</span><span id="line-93">     * 
&lt;/p&gt;</span>
+<span class="source-line-no">094</span><span id="line-94">     *</span>
+<span class="source-line-no">095</span><span id="line-95">     * @return the 
MIME Type</span>
+<span class="source-line-no">096</span><span id="line-96">     * @see 
FileTypeMap#getDefaultFileTypeMap</span>
+<span class="source-line-no">097</span><span id="line-97">     */</span>
+<span class="source-line-no">098</span><span id="line-98">    @Override</span>
+<span class="source-line-no">099</span><span id="line-99">    public String 
getContentType() {</span>
+<span class="source-line-no">100</span><span id="line-100">        return 
typeMap.getContentType(getName());</span>
+<span class="source-line-no">101</span><span id="line-101">    }</span>
+<span class="source-line-no">102</span><span id="line-102"></span>
+<span class="source-line-no">103</span><span id="line-103">    /**</span>
+<span class="source-line-no">104</span><span id="line-104">     * Gets an 
InputStream representing the the data and will throw an IOException if it can 
not do so. This method will return a new instance of InputStream</span>
+<span class="source-line-no">105</span><span id="line-105">     * with each 
invocation.</span>
+<span class="source-line-no">106</span><span id="line-106">     *</span>
+<span class="source-line-no">107</span><span id="line-107">     * @return an 
InputStream</span>
+<span class="source-line-no">108</span><span id="line-108">     */</span>
+<span class="source-line-no">109</span><span id="line-109">    @Override</span>
+<span class="source-line-no">110</span><span id="line-110">    public 
InputStream getInputStream() throws IOException {</span>
+<span class="source-line-no">111</span><span id="line-111">        return 
Files.newInputStream(path, options);</span>
+<span class="source-line-no">112</span><span id="line-112">    }</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">    /**</span>
+<span class="source-line-no">115</span><span id="line-115">     * Gets the 
&lt;em&gt;name&lt;/em&gt; of this object. The FileDataSource will return the 
file name of the object.</span>
+<span class="source-line-no">116</span><span id="line-116">     *</span>
+<span class="source-line-no">117</span><span id="line-117">     * @return the 
name of the object or null.</span>
+<span class="source-line-no">118</span><span id="line-118">     * @see 
javax.activation.DataSource</span>
+<span class="source-line-no">119</span><span id="line-119">     */</span>
+<span class="source-line-no">120</span><span id="line-120">    @Override</span>
+<span class="source-line-no">121</span><span id="line-121">    public String 
getName() {</span>
+<span class="source-line-no">122</span><span id="line-122">        return 
Objects.toString(path.getFileName(), null);</span>
+<span class="source-line-no">123</span><span id="line-123">    }</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">    /**</span>
+<span class="source-line-no">126</span><span id="line-126">     * Gets an 
OutputStream representing the the data and will throw an IOException if it can 
not do so. This method will return a new instance of OutputStream</span>
+<span class="source-line-no">127</span><span id="line-127">     * with each 
invocation.</span>
+<span class="source-line-no">128</span><span id="line-128">     *</span>
+<span class="source-line-no">129</span><span id="line-129">     * @return an 
OutputStream</span>
+<span class="source-line-no">130</span><span id="line-130">     */</span>
+<span class="source-line-no">131</span><span id="line-131">    @Override</span>
+<span class="source-line-no">132</span><span id="line-132">    public 
OutputStream getOutputStream() throws IOException {</span>
+<span class="source-line-no">133</span><span id="line-133">        return 
Files.newOutputStream(path, options);</span>
+<span class="source-line-no">134</span><span id="line-134">    }</span>
+<span class="source-line-no">135</span><span id="line-135"></span>
+<span class="source-line-no">136</span><span id="line-136">    /**</span>
+<span class="source-line-no">137</span><span id="line-137">     * Gets the 
File object that corresponds to this PathDataSource.</span>
+<span class="source-line-no">138</span><span id="line-138">     *</span>
+<span class="source-line-no">139</span><span id="line-139">     * @return the 
File object for the file represented by this object.</span>
+<span class="source-line-no">140</span><span id="line-140">     */</span>
+<span class="source-line-no">141</span><span id="line-141">    public Path 
getPath() {</span>
+<span class="source-line-no">142</span><span id="line-142">        return 
path;</span>
+<span class="source-line-no">143</span><span id="line-143">    }</span>
+<span class="source-line-no">144</span><span id="line-144"></span>
+<span class="source-line-no">145</span><span id="line-145">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceBaseResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourceBaseResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
org.apache.commons.mail2.javax.DataSourceResolver;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">/**</span>
+<span class="source-line-no">022</span><span id="line-22"> * Abstract class 
for resolvers.</span>
+<span class="source-line-no">023</span><span id="line-23"> *</span>
+<span class="source-line-no">024</span><span id="line-24"> * @since 1.3</span>
+<span class="source-line-no">025</span><span id="line-25"> */</span>
+<span class="source-line-no">026</span><span id="line-26">public abstract 
class DataSourceBaseResolver implements DataSourceResolver {</span>
+<span class="source-line-no">027</span><span id="line-27"></span>
+<span class="source-line-no">028</span><span id="line-28">    /** Whether to 
ignore resources not found or complain with an exception. */</span>
+<span class="source-line-no">029</span><span id="line-29">    private final 
boolean lenient;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">    /**</span>
+<span class="source-line-no">032</span><span id="line-32">     * Constructs a 
new instance.</span>
+<span class="source-line-no">033</span><span id="line-33">     */</span>
+<span class="source-line-no">034</span><span id="line-34">    public 
DataSourceBaseResolver() {</span>
+<span class="source-line-no">035</span><span id="line-35">        this.lenient 
= false;</span>
+<span class="source-line-no">036</span><span id="line-36">    }</span>
+<span class="source-line-no">037</span><span id="line-37"></span>
+<span class="source-line-no">038</span><span id="line-38">    /**</span>
+<span class="source-line-no">039</span><span id="line-39">     * Constructs a 
new instance.</span>
+<span class="source-line-no">040</span><span id="line-40">     *</span>
+<span class="source-line-no">041</span><span id="line-41">     * @param 
lenient shall we ignore resources not found or throw an exception?</span>
+<span class="source-line-no">042</span><span id="line-42">     */</span>
+<span class="source-line-no">043</span><span id="line-43">    public 
DataSourceBaseResolver(final boolean lenient) {</span>
+<span class="source-line-no">044</span><span id="line-44">        this.lenient 
= lenient;</span>
+<span class="source-line-no">045</span><span id="line-45">    }</span>
+<span class="source-line-no">046</span><span id="line-46"></span>
+<span class="source-line-no">047</span><span id="line-47">    /**</span>
+<span class="source-line-no">048</span><span id="line-48">     * Tests whether 
the argument is a content id.</span>
+<span class="source-line-no">049</span><span id="line-49">     *</span>
+<span class="source-line-no">050</span><span id="line-50">     * @param 
resourceLocation the resource location to test.</span>
+<span class="source-line-no">051</span><span id="line-51">     * @return true 
if it is a CID.</span>
+<span class="source-line-no">052</span><span id="line-52">     */</span>
+<span class="source-line-no">053</span><span id="line-53">    protected 
boolean isCid(final String resourceLocation) {</span>
+<span class="source-line-no">054</span><span id="line-54">        return 
resourceLocation.startsWith("cid:");</span>
+<span class="source-line-no">055</span><span id="line-55">    }</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">    /**</span>
+<span class="source-line-no">058</span><span id="line-58">     * Tests whether 
this a file URL.</span>
+<span class="source-line-no">059</span><span id="line-59">     *</span>
+<span class="source-line-no">060</span><span id="line-60">     * @param 
urlString the URL string.</span>
+<span class="source-line-no">061</span><span id="line-61">     * @return true 
if it is a file URL.</span>
+<span class="source-line-no">062</span><span id="line-62">     */</span>
+<span class="source-line-no">063</span><span id="line-63">    protected 
boolean isFileUrl(final String urlString) {</span>
+<span class="source-line-no">064</span><span id="line-64">        return 
urlString.startsWith("file:/");</span>
+<span class="source-line-no">065</span><span id="line-65">    }</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">    /**</span>
+<span class="source-line-no">068</span><span id="line-68">     * Tests whether 
this a HTTP or HTTPS URL.</span>
+<span class="source-line-no">069</span><span id="line-69">     *</span>
+<span class="source-line-no">070</span><span id="line-70">     * @param 
urlString the URL string to test.</span>
+<span class="source-line-no">071</span><span id="line-71">     * @return true 
if it is a HTTP or HTTPS URL.</span>
+<span class="source-line-no">072</span><span id="line-72">     */</span>
+<span class="source-line-no">073</span><span id="line-73">    protected 
boolean isHttpUrl(final String urlString) {</span>
+<span class="source-line-no">074</span><span id="line-74">        return 
urlString.startsWith("http://";) || urlString.startsWith("https://";);</span>
+<span class="source-line-no">075</span><span id="line-75">    }</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">    /**</span>
+<span class="source-line-no">078</span><span id="line-78">     * Tests whether 
to ignore resources not found or throw an exception.</span>
+<span class="source-line-no">079</span><span id="line-79">     *</span>
+<span class="source-line-no">080</span><span id="line-80">     * @return the 
lenient flag.</span>
+<span class="source-line-no">081</span><span id="line-81">     */</span>
+<span class="source-line-no">082</span><span id="line-82">    public boolean 
isLenient() {</span>
+<span class="source-line-no">083</span><span id="line-83">        return 
lenient;</span>
+<span class="source-line-no">084</span><span id="line-84">    }</span>
+<span class="source-line-no">085</span><span id="line-85">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceClassPathResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourceClassPathResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.InputStream;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.net.URL;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">024</span><span id="line-24">import 
javax.activation.FileTypeMap;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
javax.mail.util.ByteArrayDataSource;</span>
+<span class="source-line-no">026</span><span id="line-26"></span>
+<span class="source-line-no">027</span><span id="line-27">/**</span>
+<span class="source-line-no">028</span><span id="line-28"> * Creates a {@code 
DataSource} based on an class path.</span>
+<span class="source-line-no">029</span><span id="line-29"> *</span>
+<span class="source-line-no">030</span><span id="line-30"> * @since 1.3</span>
+<span class="source-line-no">031</span><span id="line-31"> */</span>
+<span class="source-line-no">032</span><span id="line-32">public class 
DataSourceClassPathResolver extends DataSourceBaseResolver {</span>
+<span class="source-line-no">033</span><span id="line-33">    /** The base 
string of the resource relative to the classpath when resolving relative paths 
*/</span>
+<span class="source-line-no">034</span><span id="line-34">    private final 
String classPathBase;</span>
+<span class="source-line-no">035</span><span id="line-35"></span>
+<span class="source-line-no">036</span><span id="line-36">    /**</span>
+<span class="source-line-no">037</span><span id="line-37">     * Constructs a 
new instance.</span>
+<span class="source-line-no">038</span><span id="line-38">     */</span>
+<span class="source-line-no">039</span><span id="line-39">    public 
DataSourceClassPathResolver() {</span>
+<span class="source-line-no">040</span><span id="line-40">        
this("/");</span>
+<span class="source-line-no">041</span><span id="line-41">    }</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">    /**</span>
+<span class="source-line-no">044</span><span id="line-44">     * Constructs a 
new instance.</span>
+<span class="source-line-no">045</span><span id="line-45">     *</span>
+<span class="source-line-no">046</span><span id="line-46">     * @param 
classPathBase a base class path</span>
+<span class="source-line-no">047</span><span id="line-47">     */</span>
+<span class="source-line-no">048</span><span id="line-48">    public 
DataSourceClassPathResolver(final String classPathBase) {</span>
+<span class="source-line-no">049</span><span id="line-49">        
this(classPathBase, false);</span>
+<span class="source-line-no">050</span><span id="line-50">    }</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">    /**</span>
+<span class="source-line-no">053</span><span id="line-53">     * Constructs a 
new instance.</span>
+<span class="source-line-no">054</span><span id="line-54">     *</span>
+<span class="source-line-no">055</span><span id="line-55">     * @param 
classPathBase a base class path</span>
+<span class="source-line-no">056</span><span id="line-56">     * @param 
lenient       shall we ignore resources not found or throw an exception?</span>
+<span class="source-line-no">057</span><span id="line-57">     */</span>
+<span class="source-line-no">058</span><span id="line-58">    public 
DataSourceClassPathResolver(final String classPathBase, final boolean lenient) 
{</span>
+<span class="source-line-no">059</span><span id="line-59">        
super(lenient);</span>
+<span class="source-line-no">060</span><span id="line-60">        
this.classPathBase = classPathBase.endsWith("/") ? classPathBase : 
classPathBase + "/";</span>
+<span class="source-line-no">061</span><span id="line-61">    }</span>
+<span class="source-line-no">062</span><span id="line-62"></span>
+<span class="source-line-no">063</span><span id="line-63">    /**</span>
+<span class="source-line-no">064</span><span id="line-64">     * Gets the 
class path base.</span>
+<span class="source-line-no">065</span><span id="line-65">     *</span>
+<span class="source-line-no">066</span><span id="line-66">     * @return the 
classPathBase</span>
+<span class="source-line-no">067</span><span id="line-67">     */</span>
+<span class="source-line-no">068</span><span id="line-68">    public String 
getClassPathBase() {</span>
+<span class="source-line-no">069</span><span id="line-69">        return 
classPathBase;</span>
+<span class="source-line-no">070</span><span id="line-70">    }</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">    /**</span>
+<span class="source-line-no">073</span><span id="line-73">     * Returns the 
resource name for a given resource location.</span>
+<span class="source-line-no">074</span><span id="line-74">     *</span>
+<span class="source-line-no">075</span><span id="line-75">     * @param 
resourceLocation the resource location</span>
+<span class="source-line-no">076</span><span id="line-76">     * @return 
{@link #getClassPathBase()} + {@code resourceLocation}</span>
+<span class="source-line-no">077</span><span id="line-77">     * @see 
#getClassPathBase()</span>
+<span class="source-line-no">078</span><span id="line-78">     */</span>
+<span class="source-line-no">079</span><span id="line-79">    private String 
getResourceName(final String resourceLocation) {</span>
+<span class="source-line-no">080</span><span id="line-80">        return 
(getClassPathBase() + resourceLocation).replace("//", "/");</span>
+<span class="source-line-no">081</span><span id="line-81">    }</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">084</span><span id="line-84">    @Override</span>
+<span class="source-line-no">085</span><span id="line-85">    public 
DataSource resolve(final String resourceLocation) throws IOException {</span>
+<span class="source-line-no">086</span><span id="line-86">        return 
resolve(resourceLocation, isLenient());</span>
+<span class="source-line-no">087</span><span id="line-87">    }</span>
+<span class="source-line-no">088</span><span id="line-88"></span>
+<span class="source-line-no">089</span><span id="line-89">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">090</span><span id="line-90">    @Override</span>
+<span class="source-line-no">091</span><span id="line-91">    public 
DataSource resolve(final String resourceLocation, final boolean isLenient) 
throws IOException {</span>
+<span class="source-line-no">092</span><span id="line-92">        try {</span>
+<span class="source-line-no">093</span><span id="line-93">            if 
(!isCid(resourceLocation) &amp;&amp; !isHttpUrl(resourceLocation)) {</span>
+<span class="source-line-no">094</span><span id="line-94">                
final String mimeType = 
FileTypeMap.getDefaultFileTypeMap().getContentType(resourceLocation);</span>
+<span class="source-line-no">095</span><span id="line-95">                
final String resourceName = getResourceName(resourceLocation);</span>
+<span class="source-line-no">096</span><span id="line-96">                try 
(InputStream inputStream = 
DataSourceClassPathResolver.class.getResourceAsStream(resourceName)) {</span>
+<span class="source-line-no">097</span><span id="line-97">                    
if (inputStream == null) {</span>
+<span class="source-line-no">098</span><span id="line-98">                     
   if (isLenient) {</span>
+<span class="source-line-no">099</span><span id="line-99">                     
       return null;</span>
+<span class="source-line-no">100</span><span id="line-100">                    
    }</span>
+<span class="source-line-no">101</span><span id="line-101">                    
    throw new IOException("The following class path resource was not found : " 
+ resourceLocation);</span>
+<span class="source-line-no">102</span><span id="line-102">                    
}</span>
+<span class="source-line-no">103</span><span id="line-103">                    
final ByteArrayDataSource ds = new ByteArrayDataSource(inputStream, 
mimeType);</span>
+<span class="source-line-no">104</span><span id="line-104">                    
// EMAIL-125: set the name of the DataSource to the normalized resource 
URL</span>
+<span class="source-line-no">105</span><span id="line-105">                    
// similar to other DataSource implementations, e.g. FileDataSource, 
URLDataSource</span>
+<span class="source-line-no">106</span><span id="line-106">                    
final URL resource = 
DataSourceClassPathResolver.class.getResource(resourceName);</span>
+<span class="source-line-no">107</span><span id="line-107">                    
if (resource != null) {</span>
+<span class="source-line-no">108</span><span id="line-108">                    
    ds.setName(resource.toString());</span>
+<span class="source-line-no">109</span><span id="line-109">                    
} else if (isLenient) {</span>
+<span class="source-line-no">110</span><span id="line-110">                    
    return null;</span>
+<span class="source-line-no">111</span><span id="line-111">                    
} else {</span>
+<span class="source-line-no">112</span><span id="line-112">                    
    throw new IOException("The following class path resource was not found : " 
+ resourceName);</span>
+<span class="source-line-no">113</span><span id="line-113">                    
}</span>
+<span class="source-line-no">114</span><span id="line-114">                    
return ds;</span>
+<span class="source-line-no">115</span><span id="line-115">                
}</span>
+<span class="source-line-no">116</span><span id="line-116">            }</span>
+<span class="source-line-no">117</span><span id="line-117">            return 
null;</span>
+<span class="source-line-no">118</span><span id="line-118">        } catch 
(final IOException e) {</span>
+<span class="source-line-no">119</span><span id="line-119">            if 
(isLenient) {</span>
+<span class="source-line-no">120</span><span id="line-120">                
return null;</span>
+<span class="source-line-no">121</span><span id="line-121">            }</span>
+<span class="source-line-no">122</span><span id="line-122">            throw 
e;</span>
+<span class="source-line-no">123</span><span id="line-123">        }</span>
+<span class="source-line-no">124</span><span id="line-124">    }</span>
+<span class="source-line-no">125</span><span id="line-125">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceCompositeResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourceCompositeResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">import 
org.apache.commons.mail2.javax.DataSourceResolver;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">/**</span>
+<span class="source-line-no">026</span><span id="line-26"> * A composite data 
source resolver. It allows to resolve data sources coming from multiple 
locations such as the classpath, the file system or an URL.</span>
+<span class="source-line-no">027</span><span id="line-27"> *</span>
+<span class="source-line-no">028</span><span id="line-28"> * @since 1.3</span>
+<span class="source-line-no">029</span><span id="line-29"> */</span>
+<span class="source-line-no">030</span><span id="line-30">public class 
DataSourceCompositeResolver extends DataSourceBaseResolver {</span>
+<span class="source-line-no">031</span><span id="line-31"></span>
+<span class="source-line-no">032</span><span id="line-32">    /** The list of 
resolvers */</span>
+<span class="source-line-no">033</span><span id="line-33">    private final 
DataSourceResolver[] dataSourceResolvers;</span>
+<span class="source-line-no">034</span><span id="line-34"></span>
+<span class="source-line-no">035</span><span id="line-35">    /**</span>
+<span class="source-line-no">036</span><span id="line-36">     * Constructs a 
new instance.</span>
+<span class="source-line-no">037</span><span id="line-37">     *</span>
+<span class="source-line-no">038</span><span id="line-38">     * @param 
dataSourceResolvers a list of resolvers being used</span>
+<span class="source-line-no">039</span><span id="line-39">     */</span>
+<span class="source-line-no">040</span><span id="line-40">    public 
DataSourceCompositeResolver(final DataSourceResolver[] dataSourceResolvers) 
{</span>
+<span class="source-line-no">041</span><span id="line-41">        
this.dataSourceResolvers = dataSourceResolvers.clone();</span>
+<span class="source-line-no">042</span><span id="line-42">    }</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">    /**</span>
+<span class="source-line-no">045</span><span id="line-45">     * Constructs a 
new instance.</span>
+<span class="source-line-no">046</span><span id="line-46">     *</span>
+<span class="source-line-no">047</span><span id="line-47">     * @param 
dataSourceResolvers a list of resolvers being used</span>
+<span class="source-line-no">048</span><span id="line-48">     * @param 
isLenient           shall we ignore resources not found or throw an 
exception?</span>
+<span class="source-line-no">049</span><span id="line-49">     */</span>
+<span class="source-line-no">050</span><span id="line-50">    public 
DataSourceCompositeResolver(final DataSourceResolver[] dataSourceResolvers, 
final boolean isLenient) {</span>
+<span class="source-line-no">051</span><span id="line-51">        
super(isLenient);</span>
+<span class="source-line-no">052</span><span id="line-52">        
this.dataSourceResolvers = dataSourceResolvers.clone();</span>
+<span class="source-line-no">053</span><span id="line-53">    }</span>
+<span class="source-line-no">054</span><span id="line-54"></span>
+<span class="source-line-no">055</span><span id="line-55">    /**</span>
+<span class="source-line-no">056</span><span id="line-56">     * Gets the 
underlying data source resolvers.</span>
+<span class="source-line-no">057</span><span id="line-57">     *</span>
+<span class="source-line-no">058</span><span id="line-58">     * @return 
underlying data source resolvers</span>
+<span class="source-line-no">059</span><span id="line-59">     */</span>
+<span class="source-line-no">060</span><span id="line-60">    public 
DataSourceResolver[] getDataSourceResolvers() {</span>
+<span class="source-line-no">061</span><span id="line-61">        // clone the 
internal array to prevent external modification (see EMAIL-116)</span>
+<span class="source-line-no">062</span><span id="line-62">        return 
dataSourceResolvers.clone();</span>
+<span class="source-line-no">063</span><span id="line-63">    }</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">066</span><span id="line-66">    @Override</span>
+<span class="source-line-no">067</span><span id="line-67">    public 
DataSource resolve(final String resourceLocation) throws IOException {</span>
+<span class="source-line-no">068</span><span id="line-68">        final 
DataSource result = resolve(resourceLocation, true);</span>
+<span class="source-line-no">069</span><span id="line-69">        if 
(isLenient() || result != null) {</span>
+<span class="source-line-no">070</span><span id="line-70">            return 
result;</span>
+<span class="source-line-no">071</span><span id="line-71">        }</span>
+<span class="source-line-no">072</span><span id="line-72">        throw new 
IOException("The following resource was not found : " + 
resourceLocation);</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">    }</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">077</span><span id="line-77">    @Override</span>
+<span class="source-line-no">078</span><span id="line-78">    public 
DataSource resolve(final String resourceLocation, final boolean isLenient) 
throws IOException {</span>
+<span class="source-line-no">079</span><span id="line-79">        for (final 
DataSourceResolver dataSourceResolver : dataSourceResolvers) {</span>
+<span class="source-line-no">080</span><span id="line-80">            final 
DataSource dataSource = dataSourceResolver.resolve(resourceLocation, 
isLenient);</span>
+<span class="source-line-no">081</span><span id="line-81">            if 
(dataSource != null) {</span>
+<span class="source-line-no">082</span><span id="line-82">                
return dataSource;</span>
+<span class="source-line-no">083</span><span id="line-83">            }</span>
+<span class="source-line-no">084</span><span id="line-84">        }</span>
+<span class="source-line-no">085</span><span id="line-85">        if 
(isLenient) {</span>
+<span class="source-line-no">086</span><span id="line-86">            return 
null;</span>
+<span class="source-line-no">087</span><span id="line-87">        }</span>
+<span class="source-line-no">088</span><span id="line-88">        throw new 
IOException("The following resource was not found : " + 
resourceLocation);</span>
+<span class="source-line-no">089</span><span id="line-89">    }</span>
+<span class="source-line-no">090</span><span id="line-90">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceFileResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,177 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourceFileResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.File;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.IOException;</span>
+<span class="source-line-no">021</span><span id="line-21"></span>
+<span class="source-line-no">022</span><span id="line-22">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
javax.activation.FileDataSource;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">/**</span>
+<span class="source-line-no">026</span><span id="line-26"> * Creates a {@code 
DataSource} based on a File. The implementation also resolves file 
resources.</span>
+<span class="source-line-no">027</span><span id="line-27"> *</span>
+<span class="source-line-no">028</span><span id="line-28"> * @since 1.3</span>
+<span class="source-line-no">029</span><span id="line-29"> */</span>
+<span class="source-line-no">030</span><span id="line-30">public class 
DataSourceFileResolver extends DataSourceBaseResolver {</span>
+<span class="source-line-no">031</span><span id="line-31"></span>
+<span class="source-line-no">032</span><span id="line-32">    /** The base 
directory of the resource when resolving relative paths */</span>
+<span class="source-line-no">033</span><span id="line-33">    private final 
File baseDir;</span>
+<span class="source-line-no">034</span><span id="line-34"></span>
+<span class="source-line-no">035</span><span id="line-35">    /**</span>
+<span class="source-line-no">036</span><span id="line-36">     * Constructs a 
new instance.</span>
+<span class="source-line-no">037</span><span id="line-37">     */</span>
+<span class="source-line-no">038</span><span id="line-38">    public 
DataSourceFileResolver() {</span>
+<span class="source-line-no">039</span><span id="line-39">        baseDir = 
new File(".");</span>
+<span class="source-line-no">040</span><span id="line-40">    }</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span id="line-42">    /**</span>
+<span class="source-line-no">043</span><span id="line-43">     * Constructs a 
new instance.</span>
+<span class="source-line-no">044</span><span id="line-44">     *</span>
+<span class="source-line-no">045</span><span id="line-45">     * @param 
baseDir the base directory of the resource when resolving relative paths</span>
+<span class="source-line-no">046</span><span id="line-46">     */</span>
+<span class="source-line-no">047</span><span id="line-47">    public 
DataSourceFileResolver(final File baseDir) {</span>
+<span class="source-line-no">048</span><span id="line-48">        this.baseDir 
= baseDir;</span>
+<span class="source-line-no">049</span><span id="line-49">    }</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">    /**</span>
+<span class="source-line-no">052</span><span id="line-52">     * Constructs a 
new instance.</span>
+<span class="source-line-no">053</span><span id="line-53">     *</span>
+<span class="source-line-no">054</span><span id="line-54">     * @param 
baseDir the base directory of the resource when resolving relative paths</span>
+<span class="source-line-no">055</span><span id="line-55">     * @param 
lenient shall we ignore resources not found or complain with an exception</span>
+<span class="source-line-no">056</span><span id="line-56">     */</span>
+<span class="source-line-no">057</span><span id="line-57">    public 
DataSourceFileResolver(final File baseDir, final boolean lenient) {</span>
+<span class="source-line-no">058</span><span id="line-58">        
super(lenient);</span>
+<span class="source-line-no">059</span><span id="line-59">        this.baseDir 
= baseDir;</span>
+<span class="source-line-no">060</span><span id="line-60">    }</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">    /**</span>
+<span class="source-line-no">063</span><span id="line-63">     * Gets the base 
directory used for resolving relative resource locations.</span>
+<span class="source-line-no">064</span><span id="line-64">     *</span>
+<span class="source-line-no">065</span><span id="line-65">     * @return the 
baseUrl</span>
+<span class="source-line-no">066</span><span id="line-66">     */</span>
+<span class="source-line-no">067</span><span id="line-67">    public File 
getBaseDir() {</span>
+<span class="source-line-no">068</span><span id="line-68">        return 
baseDir;</span>
+<span class="source-line-no">069</span><span id="line-69">    }</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">072</span><span id="line-72">    @Override</span>
+<span class="source-line-no">073</span><span id="line-73">    public 
DataSource resolve(final String resourceLocation) throws IOException {</span>
+<span class="source-line-no">074</span><span id="line-74">        return 
resolve(resourceLocation, isLenient());</span>
+<span class="source-line-no">075</span><span id="line-75">    }</span>
+<span class="source-line-no">076</span><span id="line-76"></span>
+<span class="source-line-no">077</span><span id="line-77">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">078</span><span id="line-78">    @Override</span>
+<span class="source-line-no">079</span><span id="line-79">    public 
DataSource resolve(final String resourceLocation, final boolean isLenient) 
throws IOException {</span>
+<span class="source-line-no">080</span><span id="line-80">        File 
file;</span>
+<span class="source-line-no">081</span><span id="line-81">        DataSource 
result = null;</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">        if 
(!isCid(resourceLocation)) {</span>
+<span class="source-line-no">084</span><span id="line-84">            file = 
new File(resourceLocation);</span>
+<span class="source-line-no">085</span><span id="line-85"></span>
+<span class="source-line-no">086</span><span id="line-86">            if 
(!file.isAbsolute()) {</span>
+<span class="source-line-no">087</span><span id="line-87">                file 
= getBaseDir() != null ? new File(getBaseDir(), resourceLocation) : new 
File(resourceLocation);</span>
+<span class="source-line-no">088</span><span id="line-88">            }</span>
+<span class="source-line-no">089</span><span id="line-89"></span>
+<span class="source-line-no">090</span><span id="line-90">            if 
(file.exists()) {</span>
+<span class="source-line-no">091</span><span id="line-91">                
result = new FileDataSource(file);</span>
+<span class="source-line-no">092</span><span id="line-92">            } else 
if (!isLenient) {</span>
+<span class="source-line-no">093</span><span id="line-93">                
throw new IOException("Cant resolve the following file resource :" + 
file.getAbsolutePath());</span>
+<span class="source-line-no">094</span><span id="line-94">            }</span>
+<span class="source-line-no">095</span><span id="line-95">        }</span>
+<span class="source-line-no">096</span><span id="line-96"></span>
+<span class="source-line-no">097</span><span id="line-97">        return 
result;</span>
+<span class="source-line-no">098</span><span id="line-98">    }</span>
+<span class="source-line-no">099</span><span id="line-99">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourcePathResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourcePathResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.nio.file.Files;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.nio.file.OpenOption;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.nio.file.Path;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.nio.file.Paths;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
javax.activation.FileTypeMap;</span>
+<span class="source-line-no">027</span><span id="line-27"></span>
+<span class="source-line-no">028</span><span id="line-28">import 
org.apache.commons.mail2.javax.activation.PathDataSource;</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">/**</span>
+<span class="source-line-no">031</span><span id="line-31"> * Creates a {@link 
DataSource} based on a {@link Path}. The implementation also resolves file 
resources.</span>
+<span class="source-line-no">032</span><span id="line-32"> *</span>
+<span class="source-line-no">033</span><span id="line-33"> * @since 
1.6.0</span>
+<span class="source-line-no">034</span><span id="line-34"> */</span>
+<span class="source-line-no">035</span><span id="line-35">public final class 
DataSourcePathResolver extends DataSourceBaseResolver {</span>
+<span class="source-line-no">036</span><span id="line-36"></span>
+<span class="source-line-no">037</span><span id="line-37">    /**</span>
+<span class="source-line-no">038</span><span id="line-38">     * The base 
directory of the resource when resolving relative paths.</span>
+<span class="source-line-no">039</span><span id="line-39">     */</span>
+<span class="source-line-no">040</span><span id="line-40">    private final 
Path baseDir;</span>
+<span class="source-line-no">041</span><span id="line-41"></span>
+<span class="source-line-no">042</span><span id="line-42">    /**</span>
+<span class="source-line-no">043</span><span id="line-43">     * NIO options 
to open the data source.</span>
+<span class="source-line-no">044</span><span id="line-44">     */</span>
+<span class="source-line-no">045</span><span id="line-45">    private final 
OpenOption[] options;</span>
+<span class="source-line-no">046</span><span id="line-46"></span>
+<span class="source-line-no">047</span><span id="line-47">    /**</span>
+<span class="source-line-no">048</span><span id="line-48">     * Constructs a 
new instance.</span>
+<span class="source-line-no">049</span><span id="line-49">     */</span>
+<span class="source-line-no">050</span><span id="line-50">    public 
DataSourcePathResolver() {</span>
+<span class="source-line-no">051</span><span id="line-51">        
this(Paths.get("."));</span>
+<span class="source-line-no">052</span><span id="line-52">    }</span>
+<span class="source-line-no">053</span><span id="line-53"></span>
+<span class="source-line-no">054</span><span id="line-54">    /**</span>
+<span class="source-line-no">055</span><span id="line-55">     * Constructs a 
new instance.</span>
+<span class="source-line-no">056</span><span id="line-56">     *</span>
+<span class="source-line-no">057</span><span id="line-57">     * @param 
baseDir the base directory of the resource when resolving relative paths</span>
+<span class="source-line-no">058</span><span id="line-58">     */</span>
+<span class="source-line-no">059</span><span id="line-59">    public 
DataSourcePathResolver(final Path baseDir) {</span>
+<span class="source-line-no">060</span><span id="line-60">        
this(baseDir, false);</span>
+<span class="source-line-no">061</span><span id="line-61">    }</span>
+<span class="source-line-no">062</span><span id="line-62"></span>
+<span class="source-line-no">063</span><span id="line-63">    /**</span>
+<span class="source-line-no">064</span><span id="line-64">     * Constructs a 
new instance.</span>
+<span class="source-line-no">065</span><span id="line-65">     *</span>
+<span class="source-line-no">066</span><span id="line-66">     * @param 
baseDir the base directory of the resource when resolving relative paths</span>
+<span class="source-line-no">067</span><span id="line-67">     * @param 
lenient shall we ignore resources not found or complain with an exception</span>
+<span class="source-line-no">068</span><span id="line-68">     * @param 
options options for opening streams.</span>
+<span class="source-line-no">069</span><span id="line-69">     */</span>
+<span class="source-line-no">070</span><span id="line-70">    public 
DataSourcePathResolver(final Path baseDir, final boolean lenient, final 
OpenOption... options) {</span>
+<span class="source-line-no">071</span><span id="line-71">        
super(lenient);</span>
+<span class="source-line-no">072</span><span id="line-72">        this.baseDir 
= baseDir;</span>
+<span class="source-line-no">073</span><span id="line-73">        this.options 
= options;</span>
+<span class="source-line-no">074</span><span id="line-74">    }</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">    /**</span>
+<span class="source-line-no">077</span><span id="line-77">     * Gets the base 
directory used for resolving relative resource locations.</span>
+<span class="source-line-no">078</span><span id="line-78">     *</span>
+<span class="source-line-no">079</span><span id="line-79">     * @return the 
baseUrl</span>
+<span class="source-line-no">080</span><span id="line-80">     */</span>
+<span class="source-line-no">081</span><span id="line-81">    public Path 
getBaseDir() {</span>
+<span class="source-line-no">082</span><span id="line-82">        return 
baseDir;</span>
+<span class="source-line-no">083</span><span id="line-83">    }</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">086</span><span id="line-86">    @Override</span>
+<span class="source-line-no">087</span><span id="line-87">    public 
DataSource resolve(final String resourceLocation) throws IOException {</span>
+<span class="source-line-no">088</span><span id="line-88">        return 
resolve(resourceLocation, isLenient());</span>
+<span class="source-line-no">089</span><span id="line-89">    }</span>
+<span class="source-line-no">090</span><span id="line-90"></span>
+<span class="source-line-no">091</span><span id="line-91">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">092</span><span id="line-92">    @Override</span>
+<span class="source-line-no">093</span><span id="line-93">    public 
DataSource resolve(final String resourceLocation, final boolean isLenient) 
throws IOException {</span>
+<span class="source-line-no">094</span><span id="line-94">        Path 
file;</span>
+<span class="source-line-no">095</span><span id="line-95">        DataSource 
result = null;</span>
+<span class="source-line-no">096</span><span id="line-96"></span>
+<span class="source-line-no">097</span><span id="line-97">        if 
(!isCid(resourceLocation)) {</span>
+<span class="source-line-no">098</span><span id="line-98">            file = 
Paths.get(resourceLocation);</span>
+<span class="source-line-no">099</span><span id="line-99"></span>
+<span class="source-line-no">100</span><span id="line-100">            if 
(!file.isAbsolute()) {</span>
+<span class="source-line-no">101</span><span id="line-101">                
file = getBaseDir() != null ? getBaseDir().resolve(resourceLocation) : 
Paths.get(resourceLocation);</span>
+<span class="source-line-no">102</span><span id="line-102">            }</span>
+<span class="source-line-no">103</span><span id="line-103"></span>
+<span class="source-line-no">104</span><span id="line-104">            if 
(Files.exists(file)) {</span>
+<span class="source-line-no">105</span><span id="line-105">                
result = new PathDataSource(file, FileTypeMap.getDefaultFileTypeMap(), 
options);</span>
+<span class="source-line-no">106</span><span id="line-106">            } else 
if (!isLenient) {</span>
+<span class="source-line-no">107</span><span id="line-107">                
throw new IOException("Cant resolve the following file resource :" + 
file.toAbsolutePath());</span>
+<span class="source-line-no">108</span><span id="line-108">            }</span>
+<span class="source-line-no">109</span><span id="line-109">        }</span>
+<span class="source-line-no">110</span><span id="line-110"></span>
+<span class="source-line-no">111</span><span id="line-111">        return 
result;</span>
+<span class="source-line-no">112</span><span id="line-112">    }</span>
+<span class="source-line-no">113</span><span id="line-113">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>

Added: 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.html
==============================================================================
--- 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.html
 (added)
+++ 
dev/commons/email/2.0.0-M1-RC1/site/apidocs/src-html/org/apache/commons/mail2/javax/resolver/DataSourceUrlResolver.html
 Sat Jun 15 15:07:30 2024
@@ -0,0 +1,196 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.mail2.javax.resolver, class: DataSourceUrlResolver">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *     
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.mail2.javax.resolver;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.InputStream;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.net.MalformedURLException;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.net.URL;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import 
javax.activation.DataSource;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
javax.activation.URLDataSource;</span>
+<span class="source-line-no">026</span><span id="line-26"></span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.commons.mail2.core.EmailUtils;</span>
+<span class="source-line-no">028</span><span id="line-28"></span>
+<span class="source-line-no">029</span><span id="line-29">/**</span>
+<span class="source-line-no">030</span><span id="line-30"> * Creates a {@code 
DataSource} based on an URL.</span>
+<span class="source-line-no">031</span><span id="line-31"> *</span>
+<span class="source-line-no">032</span><span id="line-32"> * @since 1.3</span>
+<span class="source-line-no">033</span><span id="line-33"> */</span>
+<span class="source-line-no">034</span><span id="line-34">public class 
DataSourceUrlResolver extends DataSourceBaseResolver {</span>
+<span class="source-line-no">035</span><span id="line-35"></span>
+<span class="source-line-no">036</span><span id="line-36">    /** The base url 
of the resource when resolving relative paths */</span>
+<span class="source-line-no">037</span><span id="line-37">    private final 
URL baseUrl;</span>
+<span class="source-line-no">038</span><span id="line-38"></span>
+<span class="source-line-no">039</span><span id="line-39">    /**</span>
+<span class="source-line-no">040</span><span id="line-40">     * Constructs a 
new instance.</span>
+<span class="source-line-no">041</span><span id="line-41">     *</span>
+<span class="source-line-no">042</span><span id="line-42">     * @param 
baseUrl the base URL used for resolving relative resource locations</span>
+<span class="source-line-no">043</span><span id="line-43">     */</span>
+<span class="source-line-no">044</span><span id="line-44">    public 
DataSourceUrlResolver(final URL baseUrl) {</span>
+<span class="source-line-no">045</span><span id="line-45">        this.baseUrl 
= baseUrl;</span>
+<span class="source-line-no">046</span><span id="line-46">    }</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">    /**</span>
+<span class="source-line-no">049</span><span id="line-49">     * Constructs a 
new instance.</span>
+<span class="source-line-no">050</span><span id="line-50">     *</span>
+<span class="source-line-no">051</span><span id="line-51">     * @param 
baseUrl the base URL used for resolving relative resource locations</span>
+<span class="source-line-no">052</span><span id="line-52">     * @param 
lenient shall we ignore resources not found or complain with an exception</span>
+<span class="source-line-no">053</span><span id="line-53">     */</span>
+<span class="source-line-no">054</span><span id="line-54">    public 
DataSourceUrlResolver(final URL baseUrl, final boolean lenient) {</span>
+<span class="source-line-no">055</span><span id="line-55">        
super(lenient);</span>
+<span class="source-line-no">056</span><span id="line-56">        this.baseUrl 
= baseUrl;</span>
+<span class="source-line-no">057</span><span id="line-57">    }</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">    /**</span>
+<span class="source-line-no">060</span><span id="line-60">     * Create an URL 
based on a base URL and a resource location suitable for loading the 
resource.</span>
+<span class="source-line-no">061</span><span id="line-61">     *</span>
+<span class="source-line-no">062</span><span id="line-62">     * @param 
resourceLocation a resource location</span>
+<span class="source-line-no">063</span><span id="line-63">     * @return the 
corresponding URL</span>
+<span class="source-line-no">064</span><span id="line-64">     * @throws 
java.net.MalformedURLException creating the URL failed</span>
+<span class="source-line-no">065</span><span id="line-65">     */</span>
+<span class="source-line-no">066</span><span id="line-66">    protected URL 
createUrl(final String resourceLocation) throws MalformedURLException {</span>
+<span class="source-line-no">067</span><span id="line-67">        // if we get 
an non-existing base url than the resource can</span>
+<span class="source-line-no">068</span><span id="line-68">        // be 
directly used to create an URL</span>
+<span class="source-line-no">069</span><span id="line-69">        if (baseUrl 
== null) {</span>
+<span class="source-line-no">070</span><span id="line-70">            return 
new URL(resourceLocation);</span>
+<span class="source-line-no">071</span><span id="line-71">        }</span>
+<span class="source-line-no">072</span><span id="line-72">        // if we get 
an non-existing location what we shall do?</span>
+<span class="source-line-no">073</span><span id="line-73">        if 
(EmailUtils.isEmpty(resourceLocation)) {</span>
+<span class="source-line-no">074</span><span id="line-74">            throw 
new IllegalArgumentException("No resource defined");</span>
+<span class="source-line-no">075</span><span id="line-75">        }</span>
+<span class="source-line-no">076</span><span id="line-76">        // if we get 
a stand-alone resource than ignore the base url</span>
+<span class="source-line-no">077</span><span id="line-77">        if 
(isFileUrl(resourceLocation) || isHttpUrl(resourceLocation)) {</span>
+<span class="source-line-no">078</span><span id="line-78">            return 
new URL(resourceLocation);</span>
+<span class="source-line-no">079</span><span id="line-79">        }</span>
+<span class="source-line-no">080</span><span id="line-80">        return new 
URL(getBaseUrl(), resourceLocation.replace("&amp;amp;", "&amp;"));</span>
+<span class="source-line-no">081</span><span id="line-81">    }</span>
+<span class="source-line-no">082</span><span id="line-82"></span>
+<span class="source-line-no">083</span><span id="line-83">    /**</span>
+<span class="source-line-no">084</span><span id="line-84">     * Gets the base 
URL used for resolving relative resource locations.</span>
+<span class="source-line-no">085</span><span id="line-85">     *</span>
+<span class="source-line-no">086</span><span id="line-86">     * @return the 
baseUrl</span>
+<span class="source-line-no">087</span><span id="line-87">     */</span>
+<span class="source-line-no">088</span><span id="line-88">    public URL 
getBaseUrl() {</span>
+<span class="source-line-no">089</span><span id="line-89">        return 
baseUrl;</span>
+<span class="source-line-no">090</span><span id="line-90">    }</span>
+<span class="source-line-no">091</span><span id="line-91"></span>
+<span class="source-line-no">092</span><span id="line-92">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">093</span><span id="line-93">    @Override</span>
+<span class="source-line-no">094</span><span id="line-94">    public 
DataSource resolve(final String resourceLocation) throws IOException {</span>
+<span class="source-line-no">095</span><span id="line-95">        return 
resolve(resourceLocation, isLenient());</span>
+<span class="source-line-no">096</span><span id="line-96">    }</span>
+<span class="source-line-no">097</span><span id="line-97"></span>
+<span class="source-line-no">098</span><span id="line-98">    /** 
{@inheritDoc} */</span>
+<span class="source-line-no">099</span><span id="line-99">    @Override</span>
+<span class="source-line-no">100</span><span id="line-100">    public 
DataSource resolve(final String resourceLocation, final boolean isLenient) 
throws IOException {</span>
+<span class="source-line-no">101</span><span id="line-101">        DataSource 
result = null;</span>
+<span class="source-line-no">102</span><span id="line-102">        try {</span>
+<span class="source-line-no">103</span><span id="line-103">            if 
(!isCid(resourceLocation)) {</span>
+<span class="source-line-no">104</span><span id="line-104">                
result = new URLDataSource(createUrl(resourceLocation));</span>
+<span class="source-line-no">105</span><span id="line-105">                // 
validate we can read.</span>
+<span class="source-line-no">106</span><span id="line-106">                try 
(InputStream inputStream = result.getInputStream()) {</span>
+<span class="source-line-no">107</span><span id="line-107">                    
inputStream.read();</span>
+<span class="source-line-no">108</span><span id="line-108">                
}</span>
+<span class="source-line-no">109</span><span id="line-109">            }</span>
+<span class="source-line-no">110</span><span id="line-110">            return 
result;</span>
+<span class="source-line-no">111</span><span id="line-111">        } catch 
(final IOException e) {</span>
+<span class="source-line-no">112</span><span id="line-112">            if 
(isLenient) {</span>
+<span class="source-line-no">113</span><span id="line-113">                
return null;</span>
+<span class="source-line-no">114</span><span id="line-114">            }</span>
+<span class="source-line-no">115</span><span id="line-115">            throw 
e;</span>
+<span class="source-line-no">116</span><span id="line-116">        }</span>
+<span class="source-line-no">117</span><span id="line-117">    }</span>
+<span class="source-line-no">118</span><span id="line-118">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>


Reply via email to