• 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

93.75
/exist-core/src/main/java/org/exist/storage/lock/ManagedCollectionLock.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.storage.lock;
25

26
import org.exist.xmldb.XmldbURI;
27

28
import javax.annotation.Nullable;
29

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

35
    private final XmldbURI collectionUri;
36
    @Nullable private final LockTable lockTable;  // NOTE(AR) only null when called via private constructor from {@link #notLocked(XmldbURI)}.
37

38
    public ManagedCollectionLock(final XmldbURI collectionUri, final LockGroup lockGroup, final LockTable lockTable) {
39
        super(lockGroup, null);  // NOTE(AR) we can set the closer as null here, because we override {@link #close()} below!
1✔
40
        this.collectionUri = collectionUri;
1✔
41
        this.lockTable = lockTable;
1✔
42
    }
1✔
43

44
    private ManagedCollectionLock(final XmldbURI collectionUri) {
45
        this(collectionUri, null, null);
1✔
46
    }
1✔
47

48
    public XmldbURI getPath() {
49
        return collectionUri;
×
50
    }
51

52
    @Override
53
    public void close() {
54
        if (!closed && lock != null) {  // NOTE(AR) only null when constructed from {@link #notLocked(XmldbURI)}.
1✔
55
            LockManager.unlockAll(lock.locks, l -> lockTable.released(lock.groupId, l.path, Lock.LockType.COLLECTION, l.mode));
1✔
56
        }
57
        this.closed = true;
1✔
58
    }
1✔
59

60
    public static ManagedCollectionLock notLocked(final XmldbURI collectionUri) {
61
        return new ManagedCollectionLock(collectionUri);
1✔
62
    }
63
}
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