You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our annotations for testing are excellent, and they greatly ease the developer experience. Currently, all the values need to be provided as a string. This is a limitation of java annotation as java annotation members can only be (https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1):
An array type whose component type is one of the preceding types
Furthermore, annotations can't be generic, nor do they support inheritance.
@Flag(name = "BOOLEAN_FLAG", value = "true")
Goal
Evaluate the feasibility and effort of using meta-annotations or some kind of inheritance.
We should not make the API more complex than it already is.
Maybe we only support those convenience annotations for the simple annotation approach and not in the extended configuration.
like instead of
@Flag(name = "BOOLEAN_FLAG", value = "true")
@Flag(name = "STRING_FLAG", value = "true")
@Flag(name = "Number_FLAG", value = "1")
we would love to use
@BooleanFlag(name = "BOOLEAN_FLAG", value = true)
/* optional boolean improvement@BooleanFlagTrue(name = "BOOLEAN_FLAG")@BooleanFlagFalse(name = "BOOLEAN_FLAG")*/@StringFlag(name = "STRING_FLAG", value = "true")
@NumberFlag(name = "Number_FLAG", value = 1)
The text was updated successfully, but these errors were encountered:
Hi, @aepfli
I would like to implement this if it’s still free.
I had a look at JUnit CartesianTest and I want to make sure I understand your idea correctly.
I think we can create annotations like this:
public @interface BooleanFlag {
/** * The key of the FeatureFlag. */Stringname();
/** * The value of the FeatureFlag. */booleanvalue();
}
And add them in extended configuration annotation like the CartesianTest values:
public @interface OpenFeature {
/** * the provider domain used for this configuration. */Stringdomain() default"";
/** * Collection of {@link Flag} configurations for this domain. */Flag[] value();
BooleanFlag[] booleanFlags() default {};
StringFlag[] stringFlags() default {};
// ... other flag annotations
}
This way we can support this annotations for both simple and extended configuration, but we need to decide how to solve collisions between different flags.
Does it seem reasonable?
Problem
Our annotations for testing are excellent, and they greatly ease the developer experience. Currently, all the values need to be provided as a string. This is a limitation of java annotation as java annotation members can only be (https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1):
Furthermore, annotations can't be generic, nor do they support inheritance.
Goal
Evaluate the feasibility and effort of using meta-annotations or some kind of inheritance.
We should not make the API more complex than it already is.
Maybe we only support those convenience annotations for the simple annotation approach and not in the extended configuration.
like instead of
we would love to use
The text was updated successfully, but these errors were encountered: