Skip to content

Commit 61a7bc0

Browse files
committed
chore: checkstyle issues
Signed-off-by: Simon Schrottner <[email protected]>
1 parent b177459 commit 61a7bc0

File tree

6 files changed

+105
-52
lines changed

6 files changed

+105
-52
lines changed

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/Flag.java

+18-1
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,34 @@
22

33
import org.junit.jupiter.api.extension.ExtendWith;
44

5-
import java.lang.annotation.*;
5+
import java.lang.annotation.ElementType;
6+
import java.lang.annotation.Repeatable;
7+
import java.lang.annotation.Retention;
8+
import java.lang.annotation.RetentionPolicy;
9+
import java.lang.annotation.Target;
610

11+
/**
12+
* Annotation for Flag Configuration for the default domain.
13+
* Can be used as a standalone flag configuration but also within {@link OpenFeature}.
14+
*/
715
@Target({ElementType.METHOD, ElementType.TYPE})
816
@Retention(RetentionPolicy.RUNTIME)
917
@Repeatable(Flags.class)
1018
@ExtendWith(OpenFeatureExtension.class)
1119
public @interface Flag {
20+
/**
21+
* The key of the FeatureFlag.
22+
*/
1223
String name();
1324

25+
/**
26+
* The value of the FeatureFlag.
27+
*/
1428
String value();
1529

30+
/**
31+
* The type of the FeatureFlag.
32+
*/
1633
Class<?> valueType() default Boolean.class;
1734
}
1835

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/Flags.java

+6
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@
77
import java.lang.annotation.RetentionPolicy;
88
import java.lang.annotation.Target;
99

10+
/**
11+
* Collection of {@link Flag} configurations.
12+
*/
1013
@Target({ElementType.METHOD, ElementType.TYPE})
1114
@Retention(RetentionPolicy.RUNTIME)
1215
@ExtendWith(OpenFeatureExtension.class)
1316
public @interface Flags {
17+
/**
18+
* Collection of {@link Flag} configurations.
19+
*/
1420
Flag[] value() default {};
1521
}
1622

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/OpenFeature.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
package dev.openfeature.contrib.tools.junitopenfeature;
22

3-
import dev.openfeature.sdk.FlagValueType;
43
import org.junit.jupiter.api.extension.ExtendWith;
54

6-
import java.lang.annotation.*;
5+
import java.lang.annotation.ElementType;
6+
import java.lang.annotation.Repeatable;
7+
import java.lang.annotation.Retention;
8+
import java.lang.annotation.RetentionPolicy;
9+
import java.lang.annotation.Target;
710

11+
/**
12+
* Annotation for generating an extended configuration for OpenFeature.
13+
* This annotation allows you to specify a list of flags for a specific domain.
14+
*/
815
@Target({ ElementType.METHOD, ElementType.TYPE })
916
@Retention(RetentionPolicy.RUNTIME)
1017
@Repeatable(value = OpenFeatures.class)
1118
@ExtendWith(OpenFeatureExtension.class)
1219
public @interface OpenFeature {
20+
/**
21+
* the provider domain used for this configuration.
22+
*/
1323
String domain() default "";
24+
/**
25+
* Collection of {@link Flag} configurations for this domain.
26+
*/
1427
Flag[] value();
1528
}
1629

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/OpenFeatureDefaultDomain.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22

33
import org.junit.jupiter.api.extension.ExtendWith;
44

5-
import java.lang.annotation.*;
5+
import java.lang.annotation.ElementType;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
import java.lang.annotation.Target;
69

10+
/**
11+
* Configuration of a default domain for standalone {@link Flag} configurations.
12+
*/
713
@Target({ElementType.TYPE})
814
@Retention(RetentionPolicy.RUNTIME)
915
@ExtendWith(OpenFeatureExtension.class)
1016
public @interface OpenFeatureDefaultDomain {
17+
/**
18+
* the default domain.
19+
*/
1120
String value() default "";
1221
}
1322

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/OpenFeatureExtension.java

+45-46
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,28 @@
55
import dev.openfeature.sdk.providers.memory.Flag;
66
import dev.openfeature.sdk.providers.memory.InMemoryProvider;
77
import org.apache.commons.lang3.BooleanUtils;
8-
import org.junit.jupiter.api.extension.*;
8+
import org.junit.jupiter.api.extension.AfterEachCallback;
9+
import org.junit.jupiter.api.extension.BeforeEachCallback;
10+
import org.junit.jupiter.api.extension.ExtensionContext;
911
import org.junitpioneer.internal.PioneerAnnotationUtils;
1012

1113
import java.util.Arrays;
1214
import java.util.HashMap;
1315
import java.util.Map;
1416

15-
public class OpenFeatureExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {
17+
/**
18+
* JUnit5 Extension for OpenFeature.
19+
*/
20+
public class OpenFeatureExtension implements BeforeEachCallback, AfterEachCallback {
1621

1722
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
1823

19-
20-
@Override
21-
public void afterEach(ExtensionContext extensionContext) throws Exception {
22-
23-
@SuppressWarnings("unchecked") Map<String, Map<String, Flag<?>>> configuration =
24-
(Map<String, Map<String, Flag<?>>>) getStore(extensionContext).get("config");
25-
for (Map.Entry<String, Map<String, Flag<?>>> stringMapEntry : configuration.entrySet()) {
26-
InMemoryProvider inMemoryProvider = new InMemoryProvider(stringMapEntry.getValue());
27-
if (stringMapEntry.getKey().isEmpty()) {
28-
api.setProvider(new NoOpProvider());
29-
} else {
30-
api.setProvider(stringMapEntry.getKey(), new NoOpProvider());
31-
}
32-
}
33-
}
34-
35-
36-
@Override
37-
public void beforeEach(ExtensionContext extensionContext) throws Exception {
38-
Map<String, Map<String, Flag<?>>> configuration = handleSimpleConfiguration(extensionContext);
39-
configuration.putAll(handleExtendedConfiguration(extensionContext, configuration));
40-
41-
for (Map.Entry<String, Map<String, Flag<?>>> stringMapEntry : configuration.entrySet()) {
42-
InMemoryProvider inMemoryProvider = new InMemoryProvider(stringMapEntry.getValue());
43-
if (stringMapEntry.getKey().isEmpty()) {
44-
api.setProvider(inMemoryProvider);
45-
} else {
46-
api.setProvider(stringMapEntry.getKey(), inMemoryProvider);
47-
}
48-
}
49-
50-
getStore(extensionContext).put("config", configuration);
51-
}
52-
53-
private static Map<String, Map<String, Flag<?>>> handleExtendedConfiguration(ExtensionContext extensionContext, Map<String, Map<String, Flag<?>>> configuration) {
54-
PioneerAnnotationUtils.findAllEnclosingRepeatableAnnotations(extensionContext, OpenFeature.class)
24+
private static Map<String, Map<String, Flag<?>>> handleExtendedConfiguration(
25+
ExtensionContext extensionContext,
26+
Map<String, Map<String, Flag<?>>> configuration
27+
) {
28+
PioneerAnnotationUtils
29+
.findAllEnclosingRepeatableAnnotations(extensionContext, OpenFeature.class)
5530
.forEachOrdered(annotation -> {
5631
Map<String, Flag<?>> domainFlags = configuration.getOrDefault(annotation.domain(), new HashMap<>());
5732

@@ -68,10 +43,13 @@ private static Map<String, Map<String, Flag<?>>> handleExtendedConfiguration(Ext
6843

6944
private static Map<String, Map<String, Flag<?>>> handleSimpleConfiguration(ExtensionContext extensionContext) {
7045
Map<String, Map<String, Flag<?>>> configuration = new HashMap<>();
71-
String defaultDomain = PioneerAnnotationUtils.findClosestEnclosingAnnotation(extensionContext, OpenFeatureDefaultDomain.class)
72-
.map(OpenFeatureDefaultDomain::value)
73-
.orElse("");
74-
PioneerAnnotationUtils.findAllEnclosingRepeatableAnnotations(extensionContext, dev.openfeature.contrib.tools.junitopenfeature.Flag.class)
46+
String defaultDomain = PioneerAnnotationUtils
47+
.findClosestEnclosingAnnotation(extensionContext, OpenFeatureDefaultDomain.class)
48+
.map(OpenFeatureDefaultDomain::value).orElse("");
49+
PioneerAnnotationUtils
50+
.findAllEnclosingRepeatableAnnotations(
51+
extensionContext,
52+
dev.openfeature.contrib.tools.junitopenfeature.Flag.class)
7553
.forEachOrdered(flag -> {
7654
Map<String, Flag<?>> domainFlags = configuration.getOrDefault(defaultDomain, new HashMap<>());
7755
if (!domainFlags.containsKey(flag.name())) {
@@ -103,13 +81,34 @@ private static Flag.FlagBuilder<?> generateFlagBuilder(dev.openfeature.contrib.t
10381
}
10482

10583
@Override
106-
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
107-
return false;
84+
public void afterEach(ExtensionContext extensionContext) throws Exception {
85+
86+
@SuppressWarnings("unchecked") Map<String, Map<String, Flag<?>>> configuration =
87+
(Map<String, Map<String, Flag<?>>>) getStore(extensionContext).get("config");
88+
for (Map.Entry<String, Map<String, Flag<?>>> stringMapEntry : configuration.entrySet()) {
89+
if (stringMapEntry.getKey().isEmpty()) {
90+
api.setProvider(new NoOpProvider());
91+
} else {
92+
api.setProvider(stringMapEntry.getKey(), new NoOpProvider());
93+
}
94+
}
10895
}
10996

11097
@Override
111-
public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
112-
return null;
98+
public void beforeEach(ExtensionContext extensionContext) throws Exception {
99+
Map<String, Map<String, Flag<?>>> configuration = handleSimpleConfiguration(extensionContext);
100+
configuration.putAll(handleExtendedConfiguration(extensionContext, configuration));
101+
102+
for (Map.Entry<String, Map<String, Flag<?>>> stringMapEntry : configuration.entrySet()) {
103+
InMemoryProvider inMemoryProvider = new InMemoryProvider(stringMapEntry.getValue());
104+
if (stringMapEntry.getKey().isEmpty()) {
105+
api.setProvider(inMemoryProvider);
106+
} else {
107+
api.setProvider(stringMapEntry.getKey(), inMemoryProvider);
108+
}
109+
}
110+
111+
getStore(extensionContext).put("config", configuration);
113112
}
114113

115114
private ExtensionContext.Store getStore(ExtensionContext context) {

Diff for: tools/junit-openfeature/src/main/java/dev/openfeature/contrib/tools/junitopenfeature/OpenFeatures.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22

33
import org.junit.jupiter.api.extension.ExtendWith;
44

5-
import java.lang.annotation.*;
5+
import java.lang.annotation.ElementType;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
import java.lang.annotation.Target;
69

7-
@Target({ ElementType.METHOD, ElementType.TYPE })
10+
/**
11+
* Collection of {@link OpenFeature} configurations.
12+
*/
13+
@Target({ElementType.METHOD, ElementType.TYPE})
814
@Retention(RetentionPolicy.RUNTIME)
915
@ExtendWith(OpenFeatureExtension.class)
1016
public @interface OpenFeatures {
17+
/**
18+
* Collection of {@link OpenFeature} configurations.
19+
*/
1120
OpenFeature[] value() default {};
1221
}
1322

0 commit comments

Comments
 (0)