• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

evolvedbinary / elemental / 982

29 Apr 2025 08:34PM UTC coverage: 56.409% (+0.007%) from 56.402%
982

push

circleci

adamretter
[feature] Improve README.md badges

28451 of 55847 branches covered (50.94%)

Branch coverage included in aggregate %.

77468 of 131924 relevant lines covered (58.72%)

0.59 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.83
/exist-core/src/main/java/org/exist/util/URIResolverHierarchy.java
1
/*
2
 * Elemental
3
 * Copyright (C) 2024, Evolved Binary Ltd
4
 *
5
 * admin@evolvedbinary.com
6
 * https://www.evolvedbinary.com | https://www.elemental.xyz
7
 *
8
 * Use of this software is governed by the Business Source License 1.1
9
 * included in the LICENSE file and at www.mariadb.com/bsl11.
10
 *
11
 * Change Date: 2028-04-27
12
 *
13
 * On the date above, in accordance with the Business Source License, use
14
 * of this software will be governed by the Apache License, Version 2.0.
15
 *
16
 * Additional Use Grant: Production use of the Licensed Work for a permitted
17
 * purpose. A Permitted Purpose is any purpose other than a Competing Use.
18
 * A Competing Use means making the Software available to others in a commercial
19
 * product or service that: substitutes for the Software; substitutes for any
20
 * other product or service we offer using the Software that exists as of the
21
 * date we make the Software available; or offers the same or substantially
22
 * similar functionality as the Software.
23
 */
24
package org.exist.util;
25

26
import javax.xml.transform.Source;
27
import javax.xml.transform.TransformerException;
28
import javax.xml.transform.URIResolver;
29
import java.util.List;
30

31
/**
32
 * A simple hierarchy of URI Resolvers.
33
 *
34
 * The first resolver that matches returns the result.
35
 *
36
 * @author <a href="mailto:adam@evolvedbinary.com">Adam Retter</a>
37
 */
38
public class URIResolverHierarchy implements URIResolver {
39

40
    private final URIResolver[] uriResolvers;
41

42
    /**
43
     * @param uriResolvers the URI resolvers in order of precedence, most significant first.
44
     */
45
    public URIResolverHierarchy(final URIResolver... uriResolvers) {
×
46
        this.uriResolvers = uriResolvers;
×
47
    }
×
48

49
    /**
50
     * @param uriResolvers the URI resolvers in order of precedence, most significant first.
51
     */
52
    public URIResolverHierarchy(final List<URIResolver> uriResolvers) {
1✔
53
        this.uriResolvers = uriResolvers.toArray(new URIResolver[0]);
1✔
54
    }
1✔
55

56

57
    @Override
58
    public Source resolve(final String href, final String base) throws TransformerException {
59
        if (uriResolvers == null) {
1!
60
            return null;
×
61
        }
62

63
        TransformerException firstTransformerException = null;
1✔
64

65
        for (final URIResolver uriResolver : uriResolvers) {
1!
66
            try {
67
                final Source source = uriResolver.resolve(href, base);
1✔
68
                if (source != null) {
1✔
69
                    return source;
1✔
70
                }
71
            } catch (final TransformerException e) {
×
72
                if (firstTransformerException == null) {
×
73
                    firstTransformerException = e;
×
74
                }
75
            }
76
        }
77

78
        if (firstTransformerException != null) {
×
79
            throw firstTransformerException;
×
80
        } else {
81
            return null;
×
82
        }
83
    }
84
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc