Skip to content

Commit 5c48308

Browse files
committed
Small tweaks and Sonar
1 parent 8c67908 commit 5c48308

8 files changed

Lines changed: 12 additions & 20 deletions

File tree

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/AbstractVariableReferenceGraph.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
public abstract sealed class AbstractVariableReferenceGraph<Solution_, ChangeSet_> implements VariableReferenceGraph
2020
permits DefaultVariableReferenceGraph, FixedVariableReferenceGraph {
21+
2122
// These structures are immutable.
2223
protected final List<EntityVariablePair<Solution_>> instanceList;
2324
protected final Map<VariableMetaModel<?, ?, ?>, Map<Object, EntityVariablePair<Solution_>>> variableReferenceToInstanceMap;

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/DefaultShadowVariableSessionFactory.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public DefaultShadowVariableSessionFactory(
4141
this.graphCreator = graphCreator;
4242
}
4343

44-
@SuppressWarnings("unchecked")
4544
public static <Solution_> VariableReferenceGraph buildGraph(
4645
SolutionDescriptor<Solution_> solutionDescriptor,
4746
VariableReferenceGraphBuilder<Solution_> variableReferenceGraphBuilder, Object[] entities,
@@ -76,7 +75,6 @@ static <Solution_> VariableReferenceGraph buildSingleDirectionalParentGraph(
7675
var topologicalSorter =
7776
getTopologicalSorter(solutionDescriptor,
7877
Objects.requireNonNull(changedVariableNotifier.innerScoreDirector()),
79-
Objects.requireNonNull(graphStructureAndDirection.parentMetaModel()),
8078
Objects.requireNonNull(graphStructureAndDirection.direction()));
8179

8280
return new SingleDirectionalParentVariableReferenceGraph<>(sortedDeclarativeVariables,
@@ -118,9 +116,8 @@ static <Solution_> VariableReferenceGraph buildSingleDirectionalParentGraph(
118116
return sortedDeclarativeVariables;
119117
}
120118

121-
private static <Solution_> TopologicalSorter getTopologicalSorter(
122-
SolutionDescriptor<Solution_> solutionDescriptor, InnerScoreDirector<Solution_, ?> scoreDirector,
123-
VariableMetaModel<?, ?, ?> parentMetaModel, ParentVariableType parentVariableType) {
119+
private static <Solution_> TopologicalSorter getTopologicalSorter(SolutionDescriptor<Solution_> solutionDescriptor,
120+
InnerScoreDirector<Solution_, ?> scoreDirector, ParentVariableType parentVariableType) {
124121
return switch (parentVariableType) {
125122
case PREVIOUS -> {
126123
var listStateSupply = scoreDirector.getListVariableStateSupply(solutionDescriptor.getListVariableDescriptor());
@@ -149,7 +146,7 @@ private static <Solution_> VariableReferenceGraph buildArbitraryGraph(
149146
var variableIdToUpdater = new HashMap<VariableMetaModel<?, ?, ?>, VariableUpdaterInfo<Solution_>>();
150147

151148
// Create graph node for each entity/declarative shadow variable pair.
152-
// Maps a variable id to it source aliases;
149+
// Maps a variable id to its source aliases;
153150
// For instance, "previousVisit.startTime" is a source alias of "startTime"
154151
// One way to view this concept is "previousVisit.startTime" is a pointer
155152
// to "startTime" of some visit, and thus alias it.

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/DefaultVariableReferenceGraph.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99

1010
import org.jspecify.annotations.NonNull;
1111

12-
final class DefaultVariableReferenceGraph<Solution_> extends AbstractVariableReferenceGraph<Solution_, BitSet>
13-
implements VariableReferenceGraph {
12+
final class DefaultVariableReferenceGraph<Solution_> extends AbstractVariableReferenceGraph<Solution_, BitSet> {
1413
// These structures are mutable.
1514
private final Consumer<BitSet> affectedEntitiesUpdater;
1615

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/FixedVariableReferenceGraph.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import org.jspecify.annotations.NonNull;
99

1010
public final class FixedVariableReferenceGraph<Solution_>
11-
extends AbstractVariableReferenceGraph<Solution_, PriorityQueue<BaseTopologicalOrderGraph.NodeTopologicalOrder>>
12-
implements VariableReferenceGraph {
11+
extends AbstractVariableReferenceGraph<Solution_, PriorityQueue<BaseTopologicalOrderGraph.NodeTopologicalOrder>> {
1312
// These are immutable
1413
private final ChangedVariableNotifier<Solution_> changedVariableNotifier;
1514

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/SingleDirectionalParentVariableReferenceGraph.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
import java.util.HashSet;
77
import java.util.IdentityHashMap;
88
import java.util.List;
9-
import java.util.Map;
109
import java.util.Objects;
1110
import java.util.Set;
1211
import java.util.function.UnaryOperator;
1312

1413
import ai.timefold.solver.core.preview.api.domain.metamodel.VariableMetaModel;
1514

1615
public final class SingleDirectionalParentVariableReferenceGraph<Solution_> implements VariableReferenceGraph {
16+
1717
private final Set<VariableMetaModel<?, ?, ?>> monitoredSourceVariableSet;
1818
private final VariableUpdaterInfo<Solution_>[] sortedVariableUpdaterInfos;
1919
private final UnaryOperator<Object> successorFunction;
@@ -79,7 +79,7 @@ public SingleDirectionalParentVariableReferenceGraph(
7979
public void updateChanged() {
8080
isUpdating = true;
8181
changedEntities.sort(topologicalOrderComparator);
82-
Map<Object, Object> processed = new IdentityHashMap<>();
82+
var processed = new IdentityHashMap<>();
8383
for (var changedEntity : changedEntities) {
8484
var key = keyFunction.apply(changedEntity);
8585
var lastProcessed = processed.get(key);

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/VariableReferenceGraph.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import ai.timefold.solver.core.preview.api.domain.metamodel.VariableMetaModel;
44

55
public sealed interface VariableReferenceGraph
6-
permits AbstractVariableReferenceGraph, DefaultVariableReferenceGraph, EmptyVariableReferenceGraph,
7-
FixedVariableReferenceGraph, SingleDirectionalParentVariableReferenceGraph {
6+
permits AbstractVariableReferenceGraph, EmptyVariableReferenceGraph, SingleDirectionalParentVariableReferenceGraph {
87

98
void updateChanged();
109

core/src/main/java/ai/timefold/solver/core/impl/domain/variable/declarative/VariableReferenceGraphBuilder.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,7 @@ public void addAfterProcessor(GraphChangeType graphChangeType, VariableMetaModel
7070
.add(consumer);
7171
}
7272

73-
@SuppressWarnings("unchecked")
7473
public VariableReferenceGraph build(IntFunction<TopologicalOrderGraph> graphCreator) {
75-
// TODO empty shows up in VRP example when using it as CVRP, not CVRPTW
76-
// In that case, TimeWindowedCustomer does not exist
77-
// and therefore Customer has no shadow variable.
78-
// Surely there has to be an earlier way to catch this?
7974
if (instanceList.isEmpty()) {
8075
return EmptyVariableReferenceGraph.INSTANCE;
8176
}

core/src/test/java/ai/timefold/solver/core/impl/domain/variable/declarative/SingleDirectionalParentVariableReferenceGraphTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
import org.mockito.Mockito;
1616

1717
class SingleDirectionalParentVariableReferenceGraphTest {
18+
1819
@Test
19-
public void supplierMethodsAreOnlyCalledOnce() {
20+
void supplierMethodsAreOnlyCalledOnce() {
2021
var solutionDescriptor = TestdataCountingSolution.buildSolutionDescriptor();
2122
var graphStructureAndDirection = GraphStructure.determineGraphStructure(solutionDescriptor);
2223

@@ -123,4 +124,5 @@ public void supplierMethodsAreOnlyCalledOnce() {
123124
assertThat(value4.getCount()).isEqualTo(3);
124125
assertThat(value5.getCount()).isZero();
125126
}
127+
126128
}

0 commit comments

Comments
 (0)