• 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

0.0
/exist-core/src/main/java/org/exist/util/JDKCompatibility.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 java.lang.reflect.Field;
27
import java.lang.reflect.InvocationTargetException;
28
import java.lang.reflect.Method;
29

30
/**
31
 * @author <a href="mailto:adam@evolvedbinary.com">Adam Retter</a>
32
 */
33
public class JDKCompatibility {
×
34

35
    /**
36
     * Gets the {@code modifiers} field from Field.class.
37
     *
38
     * Compatible with JDK 8 through 13.
39
     *
40
     * @return the modifiers field
41
     *
42
     * @throws NoSuchFieldException if the modifiers field does not exist
43
     * @throws IllegalAccessException if access is not permitted
44
     */
45
    public static Field getModifiersField() throws NoSuchFieldException, IllegalAccessException {
46
        Field modifiersField = null;
×
47
        try {
48
            // JDK 11, 10, 9, 8
49
            modifiersField = Field.class.getDeclaredField("modifiers");
×
50
        } catch (final NoSuchFieldException e) {
×
51
            // JDK 12+
52
            try {
53
                final Method getDeclaredFields0 = Class.class.getDeclaredMethod("getDeclaredFields0", boolean.class);
×
54
                final boolean accessibleBeforeSet = getDeclaredFields0.isAccessible();
×
55
                getDeclaredFields0.setAccessible(true);
×
56
                final Field[] fields = (Field[]) getDeclaredFields0.invoke(Field.class, false);
×
57
                getDeclaredFields0.setAccessible(accessibleBeforeSet);
×
58
                for (final Field field : fields) {
×
59
                    if ("modifiers".equals(field.getName())) {
×
60
                        modifiersField = field;
×
61
                        break;
×
62
                    }
63
                }
64
                if (modifiersField == null) {
×
65
                    throw e;
×
66
                }
67
            } catch (final NoSuchMethodException | InvocationTargetException ex) {
×
68
                e.addSuppressed(ex);
×
69
                throw e;
×
70
            }
71
        }
72

73
        return modifiersField;
×
74
    }
75
}
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