Skip to content

Commit 384c4fc

Browse files
committed
#112: A bit of clean up in ExtensionPointSorter
1 parent 0ccb6f9 commit 384c4fc

File tree

3 files changed

+23
-13
lines changed

3 files changed

+23
-13
lines changed

junit5-api/src/main/java/org/junit/gen5/api/extension/ExtensionPointRegistry.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010

1111
package org.junit.gen5.api.extension;
1212

13+
import java.lang.reflect.Field;
14+
import java.util.Optional;
15+
16+
import org.junit.gen5.commons.util.ReflectionUtils;
17+
1318
import static org.junit.gen5.commons.meta.API.Usage.Experimental;
1419

1520
import org.junit.gen5.commons.meta.API;
@@ -108,6 +113,17 @@ enum ApplicationOrder {
108113
*/
109114
static class Position {
110115

116+
public static <T extends ExtensionPoint> Position[] getAllowedPositionsFor(Class<T> extensionPointType) {
117+
Optional<Field> allowedPositionsField = ReflectionUtils.findField(extensionPointType, "ALLOWED_POSITIONS");
118+
119+
Position[] positions = new Position[] { Position.DEFAULT };
120+
if (allowedPositionsField.isPresent()) {
121+
//TODO: Check for correct type of field etc.
122+
positions = (Position[]) ReflectionUtils.getFieldValue(allowedPositionsField.get(), null);
123+
}
124+
return positions;
125+
}
126+
111127
/**
112128
* Apply first.
113129
*
@@ -117,7 +133,7 @@ static class Position {
117133
*/
118134
public static Position OUTERMOST = new Position(1, true);
119135

120-
public static Position FIRST = OUTERMOST;
136+
public static Position FIRST = new Position(1, true);
121137

122138
/**
123139
* Apply after {@link #OUTERMOST} but before {@link #DEFAULT},
@@ -141,7 +157,7 @@ static class Position {
141157
// TODO Document INNERMOST position.
142158
public static Position INNERMOST = new Position(5, true);
143159

144-
public static Position LAST = INNERMOST;
160+
public static Position LAST = new Position(5, true);
145161

146162
private final int ordinalValue;
147163

junit5-engine/src/main/java/org/junit/gen5/engine/junit5/extension/ExtensionPointSorter.java

+2-11
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,14 @@
1010

1111
package org.junit.gen5.engine.junit5.extension;
1212

13-
import java.lang.reflect.Field;
1413
import java.util.Arrays;
1514
import java.util.Comparator;
1615
import java.util.List;
17-
import java.util.Optional;
1816
import java.util.stream.Collectors;
1917

2018
import org.junit.gen5.api.extension.ExtensionConfigurationException;
2119
import org.junit.gen5.api.extension.ExtensionPoint;
2220
import org.junit.gen5.api.extension.ExtensionPointRegistry.Position;
23-
import org.junit.gen5.commons.util.ReflectionUtils;
2421

2522
/**
2623
* Utility for sorting {@linkplain RegisteredExtensionPoint extension points}
@@ -52,15 +49,9 @@ public <T extends ExtensionPoint> void sort(Class<T> extensionPointType,
5249
}
5350

5451
private <T extends ExtensionPoint> List<Position> getUniquePositions(Class<T> extensionPointType) {
55-
Optional<Field> allowedPositionsField = ReflectionUtils.findField(extensionPointType, "ALLOWED_POSITIONS");
52+
Position[] positions = Position.getAllowedPositionsFor(extensionPointType);
5653

57-
if (allowedPositionsField.isPresent()) {
58-
//TODO: Check for correct type of field etc.
59-
Position[] positions = (Position[]) ReflectionUtils.getFieldValue(allowedPositionsField.get(), null);
60-
return Arrays.stream(positions).filter(position -> position.shouldBeUnique()).collect(Collectors.toList());
61-
}
62-
63-
return Arrays.asList();
54+
return Arrays.stream(positions).filter(Position::shouldBeUnique).collect(Collectors.toList());
6455
}
6556

6657
private <T extends ExtensionPoint> void checkPositionUnique(

junit5-engine/src/main/java/org/junit/gen5/engine/junit5/extension/ExtensionRegistry.java

+3
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ public void registerExtensionPoint(ExtensionPoint extension, Object source) {
184184
private void registerExtensionPoint(ExtensionPoint extension, Object source, Position position) {
185185
LOG.finer(() -> String.format("Registering extension point [%s] from source [%s] with position [%s].",
186186
extension, source, position));
187+
188+
//TODO: Check if position is allowed for the current ExtensionPoint
189+
187190
this.registeredExtensionPoints.add(new RegisteredExtensionPoint<>(extension, source, position));
188191
}
189192

0 commit comments

Comments
 (0)