Skip to content

Commit

Permalink
Fix the circular initialization dependency
Browse files Browse the repository at this point in the history
ModifierType and TypeDefinitionCategory has circular initialization dependency,
as a result, if we access ModifierType before TypeDefinitionCategory, it will
cause java.lang.ExceptionInInitializerError problem.

Signed-off-by: Hongjiang Zhang <[email protected]>
  • Loading branch information
Zhang Hongjiang authored and ministat committed Aug 28, 2024
1 parent 1a7f5ab commit 17b7c84
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@
* @author Joshua Shinavier (http://fortytwo.net)
*/
public enum ModifierType {
CONSISTENCY(TypeDefinitionCategory.CONSISTENCY_LEVEL),
TTL(TypeDefinitionCategory.TTL);
CONSISTENCY,
TTL;

Check warning on line 24 in janusgraph-core/src/main/java/org/janusgraph/graphdb/database/management/ModifierType.java

View check run for this annotation

Codecov / codecov/patch

janusgraph-core/src/main/java/org/janusgraph/graphdb/database/management/ModifierType.java#L23-L24

Added lines #L23 - L24 were not covered by tests

private final TypeDefinitionCategory category;
private TypeDefinitionCategory category;

ModifierType(final TypeDefinitionCategory category) {
this.category = category;
static {
CONSISTENCY.category = TypeDefinitionCategory.CONSISTENCY_LEVEL;
TTL.category = TypeDefinitionCategory.TTL;

Check warning on line 30 in janusgraph-core/src/main/java/org/janusgraph/graphdb/database/management/ModifierType.java

View check run for this annotation

Codecov / codecov/patch

janusgraph-core/src/main/java/org/janusgraph/graphdb/database/management/ModifierType.java#L29-L30

Added lines #L29 - L30 were not covered by tests
}

public TypeDefinitionCategory getCategory() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright 2024 JanusGraph Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package org.janusgraph.graphdb;

import org.janusgraph.graphdb.database.management.ModifierType;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.fail;

public class TestModifierType {
// Verify whether the circular initialization dependency was resolved for ModifierType and TypeDefinitionCategory
@Test
public void testLoadModifierType() {
try {
ModifierType m = ModifierType.CONSISTENCY;
assert(m != null);
} catch (Exception | Error e) {
fail("Fail to load ModifierType");
}
}
}

0 comments on commit 17b7c84

Please sign in to comment.