Skip to content

Commit db42f74

Browse files
authored
Refactor the structure of ArbitraryGenerator (#1164)
1 parent aa62496 commit db42f74

File tree

6 files changed

+193
-120
lines changed

6 files changed

+193
-120
lines changed

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/generator/IntrospectedArbitraryGenerator.java

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

3434
/**
3535
* Generates a {@link CombinableArbitrary} by {@link ArbitraryIntrospector}.
36+
* It uses the {@link PropertyGenerator} for the given {@link ArbitraryIntrospector}.
3637
*/
3738
@API(since = "0.6.2", status = Status.MAINTAINED)
3839
public final class IntrospectedArbitraryGenerator implements ArbitraryGenerator {

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/generator/JavaDefaultArbitraryGeneratorBuilder.java

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@
3232
import com.navercorp.fixturemonkey.api.arbitrary.JavaTimeArbitraryGeneratorSet;
3333
import com.navercorp.fixturemonkey.api.arbitrary.JavaTypeArbitraryGeneratorSet;
3434
import com.navercorp.fixturemonkey.api.introspector.ArbitraryIntrospector;
35-
import com.navercorp.fixturemonkey.api.introspector.ArbitraryIntrospectorResult;
3635
import com.navercorp.fixturemonkey.api.introspector.ArrayIntrospector;
37-
import com.navercorp.fixturemonkey.api.introspector.BeanArbitraryIntrospector;
3836
import com.navercorp.fixturemonkey.api.introspector.BooleanIntrospector;
3937
import com.navercorp.fixturemonkey.api.introspector.EnumIntrospector;
4038
import com.navercorp.fixturemonkey.api.introspector.FunctionalInterfaceArbitraryIntrospector;
@@ -56,10 +54,15 @@
5654
import com.navercorp.fixturemonkey.api.matcher.AssignableTypeMatcher;
5755
import com.navercorp.fixturemonkey.api.matcher.MatcherOperator;
5856

57+
/**
58+
* This is a builder to generate the default {@link ArbitraryGenerator}.
59+
* It is for Java types. For example, primitives, collections, maps, etc.
60+
*/
5961
@SuppressWarnings("UnusedReturnValue")
60-
@API(since = "0.4.0", status = Status.MAINTAINED)
62+
@API(since = "0.4.0", status = Status.INTERNAL)
6163
public final class JavaDefaultArbitraryGeneratorBuilder {
62-
public static final ArbitraryIntrospector JAVA_INTROSPECTOR = new MatchArbitraryIntrospector(
64+
@Deprecated
65+
public static final ArbitraryIntrospector UNCONSTRAINT_JAVA_INTROSPECTOR = new MatchArbitraryIntrospector(
6366
Arrays.asList(
6467
new BooleanIntrospector(),
6568
new EnumIntrospector(),
@@ -88,15 +91,16 @@ public final class JavaDefaultArbitraryGeneratorBuilder {
8891
new SingleGenericCollectionIntrospector()
8992
)
9093
);
91-
public static final ArbitraryIntrospector DEFAULT_FALLBACK_INTROSPECTOR =
92-
(context) -> ArbitraryIntrospectorResult.NOT_INTROSPECTED;
9394

94-
private ArbitraryIntrospector priorityIntrospector = JavaDefaultArbitraryGeneratorBuilder.JAVA_INTROSPECTOR;
95+
/**
96+
* It contains the Java type, which cannot be constrained programmatically.
97+
* It may vary from time to time.
98+
*/
99+
private ArbitraryIntrospector unconstraintJavaIntrospector =
100+
JavaDefaultArbitraryGeneratorBuilder.UNCONSTRAINT_JAVA_INTROSPECTOR;
95101
private ArbitraryIntrospector containerIntrospector =
96102
JavaDefaultArbitraryGeneratorBuilder.JAVA_CONTAINER_INTROSPECTOR;
97-
private ArbitraryIntrospector objectIntrospector = BeanArbitraryIntrospector.INSTANCE;
98103

99-
private ArbitraryIntrospector fallbackIntrospector = DEFAULT_FALLBACK_INTROSPECTOR;
100104
@SuppressWarnings("assignment")
101105
private JavaTypeArbitraryGeneratorSet javaTypeArbitraryGeneratorSet = null;
102106
@SuppressWarnings("assignment")
@@ -105,15 +109,11 @@ public final class JavaDefaultArbitraryGeneratorBuilder {
105109
JavaDefaultArbitraryGeneratorBuilder() {
106110
}
107111

108-
public JavaDefaultArbitraryGeneratorBuilder priorityIntrospector(ArbitraryIntrospector priorityIntrospector) {
109-
this.priorityIntrospector = priorityIntrospector;
110-
return this;
111-
}
112-
113-
public JavaDefaultArbitraryGeneratorBuilder priorityIntrospector(
114-
UnaryOperator<ArbitraryIntrospector> priorityIntrospector
112+
@Deprecated
113+
public JavaDefaultArbitraryGeneratorBuilder unconstraintJavaIntrospector(
114+
UnaryOperator<ArbitraryIntrospector> unconstraintJavaIntrospectorOperator
115115
) {
116-
this.priorityIntrospector = priorityIntrospector.apply(this.priorityIntrospector);
116+
this.unconstraintJavaIntrospector = unconstraintJavaIntrospectorOperator.apply(unconstraintJavaIntrospector);
117117
return this;
118118
}
119119

@@ -129,30 +129,6 @@ public JavaDefaultArbitraryGeneratorBuilder containerIntrospector(
129129
return this;
130130
}
131131

132-
public JavaDefaultArbitraryGeneratorBuilder objectIntrospector(ArbitraryIntrospector objectIntrospector) {
133-
this.objectIntrospector = objectIntrospector;
134-
return this;
135-
}
136-
137-
public JavaDefaultArbitraryGeneratorBuilder objectIntrospector(
138-
UnaryOperator<ArbitraryIntrospector> objectIntrospector
139-
) {
140-
this.objectIntrospector = objectIntrospector.apply(this.objectIntrospector);
141-
return this;
142-
}
143-
144-
public JavaDefaultArbitraryGeneratorBuilder fallbackIntrospector(ArbitraryIntrospector fallbackIntrospector) {
145-
this.fallbackIntrospector = fallbackIntrospector;
146-
return this;
147-
}
148-
149-
public JavaDefaultArbitraryGeneratorBuilder fallbackIntrospector(
150-
UnaryOperator<ArbitraryIntrospector> fallbackIntrospector
151-
) {
152-
this.fallbackIntrospector = fallbackIntrospector.apply(this.fallbackIntrospector);
153-
return this;
154-
}
155-
156132
public JavaDefaultArbitraryGeneratorBuilder javaTypeArbitraryGeneratorSet(
157133
JavaTypeArbitraryGeneratorSet javaTypeArbitraryGeneratorSet
158134
) {
@@ -173,10 +149,8 @@ public IntrospectedArbitraryGenerator build() {
173149
Arrays.asList(
174150
new JavaArbitraryIntrospector(this.javaTypeArbitraryGeneratorSet),
175151
new JavaTimeArbitraryIntrospector(this.javaTimeArbitraryGeneratorSet),
176-
this.priorityIntrospector,
177-
this.containerIntrospector,
178-
this.objectIntrospector,
179-
this.fallbackIntrospector
152+
this.unconstraintJavaIntrospector,
153+
this.containerIntrospector
180154
)
181155
)
182156
);

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/option/FixtureMonkeyOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public final class FixtureMonkeyOptions {
105105
),
106106
MatcherOperator.exactTypeMatchOperator(
107107
GeneratingWildcardType.class,
108-
context -> new ArbitraryIntrospectorResult(CombinableArbitrary.from(new Object()))
108+
context -> ArbitraryIntrospectorResult.NOT_INTROSPECTED
109109
)
110110
);
111111
public static final ObjectPropertyGenerator DEFAULT_OBJECT_PROPERTY_GENERATOR =
@@ -133,6 +133,8 @@ public final class FixtureMonkeyOptions {
133133
context -> NOT_NULL_INJECT
134134
)
135135
);
136+
public static final ArbitraryIntrospector DEFAULT_FALLBACK_INTROSPECTOR =
137+
(context) -> new ArbitraryIntrospectorResult(CombinableArbitrary.from((Object)null));
136138

137139
static {
138140
List<String> defaultJavaPackages = new ArrayList<>();

0 commit comments

Comments
 (0)