diff --git a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/BeanArbitraryIntrospector.java b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/BeanArbitraryIntrospector.java index e10421a25..b73039e02 100644 --- a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/BeanArbitraryIntrospector.java +++ b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/BeanArbitraryIntrospector.java @@ -19,7 +19,7 @@ package com.navercorp.fixturemonkey.api.introspector; import static com.navercorp.fixturemonkey.api.exception.Exceptions.throwAsUnchecked; -import static com.navercorp.fixturemonkey.api.property.DefaultPropertyGenerator.FIELD_PROPERTY_GENERATOR; +import static com.navercorp.fixturemonkey.api.property.DefaultPropertyGenerator.CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; @@ -122,6 +122,6 @@ private Function, Object> combine( @Override public PropertyGenerator getRequiredPropertyGenerator(Property property) { - return FIELD_PROPERTY_GENERATOR; + return CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR; } } diff --git a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/FieldReflectionArbitraryIntrospector.java b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/FieldReflectionArbitraryIntrospector.java index dc9fd1590..76624761b 100644 --- a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/FieldReflectionArbitraryIntrospector.java +++ b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/introspector/FieldReflectionArbitraryIntrospector.java @@ -18,7 +18,7 @@ package com.navercorp.fixturemonkey.api.introspector; import static com.navercorp.fixturemonkey.api.exception.Exceptions.throwAsUnchecked; -import static com.navercorp.fixturemonkey.api.property.DefaultPropertyGenerator.FIELD_PROPERTY_GENERATOR; +import static com.navercorp.fixturemonkey.api.property.DefaultPropertyGenerator.CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR; import java.lang.reflect.Field; import java.lang.reflect.Modifier; @@ -126,6 +126,6 @@ private Function, Object> combine( @Override public PropertyGenerator getRequiredPropertyGenerator(Property property) { - return FIELD_PROPERTY_GENERATOR; + return CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR; } } diff --git a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/property/DefaultPropertyGenerator.java b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/property/DefaultPropertyGenerator.java index 5e17c8432..6063625b0 100644 --- a/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/property/DefaultPropertyGenerator.java +++ b/fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/property/DefaultPropertyGenerator.java @@ -28,28 +28,43 @@ @API(since = "0.5.3", status = Status.MAINTAINED) public final class DefaultPropertyGenerator implements PropertyGenerator { - public static final PropertyGenerator FIELD_PROPERTY_GENERATOR = new CompositePropertyGenerator( - Arrays.asList( - new FieldPropertyGenerator( - it -> true, - it -> true - ), - new JavaBeansPropertyGenerator( - it -> it.getReadMethod() != null && it.getWriteMethod() != null, - it -> true - ) + public static final PropertyGenerator CACHED_DEFAULT_FIELD_PROPERTY_GENERATOR = new LazyPropertyGenerator( + new FieldPropertyGenerator( + it -> true, + it -> true ) ); - private static final CompositePropertyGenerator COMPOSITE_PROPERTY_GENERATOR = + public static final PropertyGenerator CACHED_DEFAULT_JAVA_BEANS_PROPERTY_GENERATOR = new LazyPropertyGenerator( + new JavaBeansPropertyGenerator( + it -> it.getReadMethod() != null && it.getWriteMethod() != null, + it -> true + ) + ); + + public static final PropertyGenerator CACHED_CONSTRUCTOR_PROPERTY_GENERATOR = + new LazyPropertyGenerator(ConstructorPropertiesArbitraryIntrospector.PROPERTY_GENERATOR); + + public static final PropertyGenerator CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR = new LazyPropertyGenerator( new CompositePropertyGenerator( Arrays.asList( - ConstructorPropertiesArbitraryIntrospector.PROPERTY_GENERATOR, - FIELD_PROPERTY_GENERATOR + CACHED_DEFAULT_FIELD_PROPERTY_GENERATOR, + CACHED_DEFAULT_JAVA_BEANS_PROPERTY_GENERATOR + ) + ) + ); + + private static final PropertyGenerator CACHED_COMPOSITE_PROPERTY_GENERATOR = + new LazyPropertyGenerator( + new CompositePropertyGenerator( + Arrays.asList( + CACHED_CONSTRUCTOR_PROPERTY_GENERATOR, + CACHED_ANNOTATED_FIELD_PROPERTY_GENERATOR + ) ) ); public List generateChildProperties(Property property) { - return COMPOSITE_PROPERTY_GENERATOR.generateChildProperties(property); + return CACHED_COMPOSITE_PROPERTY_GENERATOR.generateChildProperties(property); } } diff --git a/fixture-monkey-kotlin/src/main/kotlin/com/navercorp/fixturemonkey/kotlin/property/KotlinConstructorParameterPropertyGenerator.kt b/fixture-monkey-kotlin/src/main/kotlin/com/navercorp/fixturemonkey/kotlin/property/KotlinConstructorParameterPropertyGenerator.kt index d4917d638..af6865bbf 100644 --- a/fixture-monkey-kotlin/src/main/kotlin/com/navercorp/fixturemonkey/kotlin/property/KotlinConstructorParameterPropertyGenerator.kt +++ b/fixture-monkey-kotlin/src/main/kotlin/com/navercorp/fixturemonkey/kotlin/property/KotlinConstructorParameterPropertyGenerator.kt @@ -20,7 +20,7 @@ package com.navercorp.fixturemonkey.kotlin.property import com.navercorp.fixturemonkey.api.container.ConcurrentLruCache import com.navercorp.fixturemonkey.api.property.CompositeProperty -import com.navercorp.fixturemonkey.api.property.FieldPropertyGenerator +import com.navercorp.fixturemonkey.api.property.DefaultPropertyGenerator.CACHED_DEFAULT_FIELD_PROPERTY_GENERATOR import com.navercorp.fixturemonkey.api.property.Property import com.navercorp.fixturemonkey.api.property.PropertyGenerator import org.apiguardian.api.API @@ -66,6 +66,6 @@ internal class KotlinConstructorParameterPropertyGenerator( } companion object { - private val JAVA_FIELD_PROPERTY_GENERATOR = FieldPropertyGenerator({ true }) { true } + private val JAVA_FIELD_PROPERTY_GENERATOR = CACHED_DEFAULT_FIELD_PROPERTY_GENERATOR } }