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