1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.mail.resolver;
18
19 import javax.activation.DataSource;
20 import javax.activation.URLDataSource;
21 import java.io.IOException;
22 import java.net.MalformedURLException;
23 import java.net.URL;
24
25
26
27
28
29
30 public class DataSourceUrlResolver extends DataSourceBaseResolver
31 {
32
33 private final URL baseUrl;
34
35
36
37
38
39
40 public DataSourceUrlResolver(final URL baseUrl)
41 {
42 super();
43 this.baseUrl = baseUrl;
44 }
45
46
47
48
49
50
51
52 public DataSourceUrlResolver(final URL baseUrl, final boolean lenient)
53 {
54 super(lenient);
55 this.baseUrl = baseUrl;
56 }
57
58
59
60
61
62
63 public URL getBaseUrl()
64 {
65 return baseUrl;
66 }
67
68
69 @Override
70 public DataSource resolve(final String resourceLocation) throws IOException
71 {
72 return resolve(resourceLocation, isLenient());
73 }
74
75
76 @Override
77 public DataSource resolve(final String resourceLocation, final boolean isLenient) throws IOException
78 {
79 DataSource result = null;
80
81 try
82 {
83 if (!isCid(resourceLocation))
84 {
85 final URL url = createUrl(resourceLocation);
86 result = new URLDataSource(url);
87 result.getInputStream();
88 }
89
90 return result;
91 }
92 catch (final IOException e)
93 {
94 if (isLenient)
95 {
96 return null;
97 }
98 throw e;
99 }
100 }
101
102
103
104
105
106
107
108
109
110 protected URL createUrl(final String resourceLocation) throws MalformedURLException
111 {
112
113
114 if (baseUrl == null)
115 {
116 return new URL(resourceLocation);
117 }
118
119
120 if (resourceLocation == null || resourceLocation.length() == 0)
121 {
122 throw new IllegalArgumentException("No resource defined");
123 }
124
125
126 if (isFileUrl(resourceLocation) || isHttpUrl(resourceLocation))
127 {
128 return new URL(resourceLocation);
129 }
130
131 return new URL(getBaseUrl(), resourceLocation.replaceAll("&", "&"));
132 }
133 }