• 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

70.0
/exist-core/src/main/java/org/exist/util/UUIDGenerator.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.security.MessageDigest;
27
import java.security.NoSuchAlgorithmException;
28
import java.util.UUID;
29

30
import com.fasterxml.uuid.Generators;
31
import com.fasterxml.uuid.impl.NameBasedGenerator;
32
import com.fasterxml.uuid.impl.RandomBasedGenerator;
33

34
/**
35
 * UUID generator.
36
 *
37
 * See <a href="http://en.wikipedia.org/wiki/UUID">UUID</a>
38
 *
39
 * @author <a href="mailto:adam@evolvedbinary.com">Adam Retter</a>
40
 * @author Dannes Wessels
41
 */
42
public class UUIDGenerator {
×
43

44
    private final static UUID EXISTDB_UUID_NAMESPACE = UUID.fromString("a99c2b03-67c4-49fb-b812-aa4c12099e65");
1✔
45

46
    private final static RandomBasedGenerator UUIDv4_GENERATOR = Generators.randomBasedGenerator();
1✔
47
    private final static NameBasedGenerator UUIDv3_GENERATOR;
48
    static {
49
        try {
50
            UUIDv3_GENERATOR = Generators.nameBasedGenerator(EXISTDB_UUID_NAMESPACE, MessageDigest.getInstance("MD5"));
1✔
51
        } catch (final NoSuchAlgorithmException e) {
1✔
52
            // NOTE: very very unlikely, MD5 is widely supported in various JDKs
53
            throw new RuntimeException(e.getMessage(), e);
×
54
        }
55
    }
1✔
56

57
    
58
    /**
59
     * Generate random UUID code.
60
     *
61
     * @return UUID code, formatted as f271ec43-bf1f-4030-a269-b11576538f71
62
     */
63
    public static String getUUID() {
64
        return getUUIDversion4();
1✔
65
    }
66

67
    /**
68
     * Generate a version 4 UUID.
69
     *
70
     * See <a href="http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_4_.28random.29">http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_4_.28random.29</a>.
71
     *
72
     * @return a Version 4 UUID
73
     */
74
    public static String getUUIDversion4() {
75
        return UUIDv4_GENERATOR.generate().toString();
1✔
76
    }
77

78
    /**
79
     * Generate a version 3 UUID code.
80
     *
81
     * See <a href="http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_3_.28MD5_hash.29">http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_3_.28MD5_hash.29</a>
82
     *
83
     * @param name the name to generate a UUID for.
84
     *
85
     * @return a Version 3 UUID
86
     */
87
    public static String getUUIDversion3(final String name) {
88
        return UUIDv3_GENERATOR.generate(name).toString();
×
89
    }
90
}
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