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 org.apache.commons.mail.DataSourceResolver;
20
21 import javax.activation.DataSource;
22 import java.io.IOException;
23
24
25
26
27
28
29
30
31 public class DataSourceCompositeResolver extends DataSourceBaseResolver
32 {
33
34 private final DataSourceResolver[] dataSourceResolvers;
35
36
37
38
39
40
41 public DataSourceCompositeResolver(final DataSourceResolver[] dataSourceResolvers)
42 {
43 this.dataSourceResolvers = new DataSourceResolver[dataSourceResolvers.length];
44 System.arraycopy(dataSourceResolvers, 0, this.dataSourceResolvers, 0, dataSourceResolvers.length);
45 }
46
47
48
49
50
51
52
53 public DataSourceCompositeResolver(final DataSourceResolver[] dataSourceResolvers, final boolean isLenient)
54 {
55 super(isLenient);
56 this.dataSourceResolvers = new DataSourceResolver[dataSourceResolvers.length];
57 System.arraycopy(dataSourceResolvers, 0, this.dataSourceResolvers, 0, dataSourceResolvers.length);
58 }
59
60
61
62
63
64
65 public DataSourceResolver[] getDataSourceResolvers()
66 {
67
68 final DataSourceResolver[] resolvers = new DataSourceResolver[dataSourceResolvers.length];
69 System.arraycopy(dataSourceResolvers, 0, resolvers, 0, dataSourceResolvers.length);
70 return resolvers;
71 }
72
73
74 public DataSource resolve(String resourceLocation) throws IOException
75 {
76 DataSource result = resolve(resourceLocation, true);
77
78 if (isLenient() || result != null)
79 {
80 return result;
81 }
82 else
83 {
84 throw new IOException("The following resource was not found : " + resourceLocation);
85 }
86
87 }
88
89
90 public DataSource resolve(final String resourceLocation, final boolean isLenient) throws IOException
91 {
92 for (int i = 0; i < getDataSourceResolvers().length; i++)
93 {
94 DataSourceResolver dataSourceResolver = getDataSourceResolvers()[i];
95 DataSource dataSource = dataSourceResolver.resolve(resourceLocation, isLenient);
96
97 if (dataSource != null)
98 {
99 return dataSource;
100 }
101 }
102
103 if (isLenient)
104 {
105 return null;
106 }
107 else
108 {
109 throw new IOException("The following resource was not found : " + resourceLocation);
110 }
111 }
112 }