Skip to content

Commit 4ff2b76

Browse files
authored
create a specific exception for filter cycle detection (#89)
1 parent 1fd6c33 commit 4ff2b76

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Copyright (c) 2025, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
8+
package org.gridsuite.filter.exceptions;
9+
10+
/**
11+
* @author Mohamed BENREJEB <mohamed.ben-rejeb at rte-france.com>
12+
*/
13+
public class FilterCycleException extends RuntimeException {
14+
public FilterCycleException(String message) {
15+
super(message);
16+
}
17+
}

src/main/java/org/gridsuite/filter/utils/expertfilter/FilterCycleDetector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
package org.gridsuite.filter.utils.expertfilter;
99

10-
import com.powsybl.commons.PowsyblException;
1110
import org.gridsuite.filter.AbstractFilter;
1211
import org.gridsuite.filter.FilterLoader;
12+
import org.gridsuite.filter.exceptions.FilterCycleException;
1313
import org.gridsuite.filter.expertfilter.ExpertFilter;
1414
import org.gridsuite.filter.expertfilter.expertrule.AbstractExpertRule;
1515
import org.gridsuite.filter.expertfilter.expertrule.CombinatorExpertRule;
@@ -44,7 +44,7 @@ private static void checkNoCycle(AbstractFilter filter, FilterLoader loader,
4444
UUID id = filter.getId();
4545
if (id != null) {
4646
if (visiting.contains(id)) {
47-
throw new PowsyblException("Cycle detected in filters");
47+
throw new FilterCycleException("Cycle detected in filters");
4848
}
4949
visiting.add(id);
5050
}

src/test/java/org/gridsuite/filter/utils/FilterCycleDetectorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
*/
77
package org.gridsuite.filter.utils;
88

9-
import com.powsybl.commons.PowsyblException;
109
import org.gridsuite.filter.AbstractFilter;
1110
import org.gridsuite.filter.FilterLoader;
11+
import org.gridsuite.filter.exceptions.FilterCycleException;
1212
import org.gridsuite.filter.expertfilter.ExpertFilter;
1313
import org.gridsuite.filter.expertfilter.expertrule.AbstractExpertRule;
1414
import org.gridsuite.filter.expertfilter.expertrule.CombinatorExpertRule;
@@ -58,7 +58,7 @@ void testDetectCycleBetweenExpertFilters() {
5858
Map<UUID, AbstractFilter> filters = Map.of(filterIdA, filterA, filterIdB, filterB);
5959
FilterLoader loader = ids -> ids.stream().map(filters::get).toList();
6060

61-
PowsyblException ex = assertThrows(PowsyblException.class, () -> FilterCycleDetector.checkNoCycle(filterA, loader));
61+
FilterCycleException ex = assertThrows(FilterCycleException.class, () -> FilterCycleDetector.checkNoCycle(filterA, loader));
6262
assertEquals("Cycle detected in filters", ex.getMessage());
6363
}
6464

@@ -92,7 +92,7 @@ void testNoCycle() {
9292

9393
try {
9494
FilterCycleDetector.checkNoCycle(filterA, loader);
95-
} catch (PowsyblException e) {
95+
} catch (FilterCycleException e) {
9696
fail("Unexpected cycle detected");
9797
}
9898
}

0 commit comments

Comments
 (0)