Merge branch '6.0.x'
This commit is contained in:
		
						commit
						889fca98ac
					
				|  | @ -78,7 +78,7 @@ public class DefaultGenerationContext implements GenerationContext { | ||||||
| 	 * @param generatedFiles the generated files | 	 * @param generatedFiles the generated files | ||||||
| 	 * @param runtimeHints the runtime hints | 	 * @param runtimeHints the runtime hints | ||||||
| 	 */ | 	 */ | ||||||
| 	protected DefaultGenerationContext(GeneratedClasses generatedClasses, | 	DefaultGenerationContext(GeneratedClasses generatedClasses, | ||||||
| 			GeneratedFiles generatedFiles, RuntimeHints runtimeHints) { | 			GeneratedFiles generatedFiles, RuntimeHints runtimeHints) { | ||||||
| 
 | 
 | ||||||
| 		Assert.notNull(generatedClasses, "'generatedClasses' must not be null"); | 		Assert.notNull(generatedClasses, "'generatedClasses' must not be null"); | ||||||
|  | @ -90,9 +90,18 @@ public class DefaultGenerationContext implements GenerationContext { | ||||||
| 		this.runtimeHints = runtimeHints; | 		this.runtimeHints = runtimeHints; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private DefaultGenerationContext(DefaultGenerationContext existing, String name) { | 	/** | ||||||
| 		int sequence = existing.sequenceGenerator.computeIfAbsent(name, key -> new AtomicInteger()).getAndIncrement(); | 	 * Create a new {@link DefaultGenerationContext} instance based on the | ||||||
| 		String featureName = (sequence > 0 ? name + sequence : name); | 	 * supplied {@code existing} context and feature name. | ||||||
|  | 	 * @param existing the existing context upon which to base the new one | ||||||
|  | 	 * @param featureName the feature name to use | ||||||
|  | 	 * @since 6.0.12 | ||||||
|  | 	 */ | ||||||
|  | 	protected DefaultGenerationContext(DefaultGenerationContext existing, String featureName) { | ||||||
|  | 		int sequence = existing.sequenceGenerator.computeIfAbsent(featureName, key -> new AtomicInteger()).getAndIncrement(); | ||||||
|  | 		if (sequence > 0) { | ||||||
|  | 			featureName += sequence; | ||||||
|  | 		} | ||||||
| 		this.sequenceGenerator = existing.sequenceGenerator; | 		this.sequenceGenerator = existing.sequenceGenerator; | ||||||
| 		this.generatedClasses = existing.generatedClasses.withFeatureNamePrefix(featureName); | 		this.generatedClasses = existing.generatedClasses.withFeatureNamePrefix(featureName); | ||||||
| 		this.generatedFiles = existing.generatedFiles; | 		this.generatedFiles = existing.generatedFiles; | ||||||
|  |  | ||||||
|  | @ -176,19 +176,6 @@ public class GeneratedClasses { | ||||||
| 		return addForFeatureComponent(featureName, ClassName.get(targetComponent), type); | 		return addForFeatureComponent(featureName, ClassName.get(targetComponent), type); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** |  | ||||||
| 	 * Create a new {@link GeneratedClasses} instance using the specified feature |  | ||||||
| 	 * name prefix to qualify generated class names for a dedicated round of code |  | ||||||
| 	 * generation. |  | ||||||
| 	 * @param featureNamePrefix the feature name prefix to use |  | ||||||
| 	 * @return a new instance for the specified feature name prefix |  | ||||||
| 	 * @since 6.0.12 |  | ||||||
| 	 */ |  | ||||||
| 	public GeneratedClasses withFeatureNamePrefix(String featureNamePrefix) { |  | ||||||
| 		return new GeneratedClasses(this.classNameGenerator.withFeatureNamePrefix(featureNamePrefix), |  | ||||||
| 				this.classes, this.classesByOwner); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	private GeneratedClass createAndAddGeneratedClass(String featureName, | 	private GeneratedClass createAndAddGeneratedClass(String featureName, | ||||||
| 			@Nullable ClassName targetComponent, Consumer<TypeSpec.Builder> type) { | 			@Nullable ClassName targetComponent, Consumer<TypeSpec.Builder> type) { | ||||||
| 
 | 
 | ||||||
|  | @ -212,6 +199,18 @@ public class GeneratedClasses { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Create a new {@link GeneratedClasses} instance using the specified feature | ||||||
|  | 	 * name prefix to qualify generated class names for a dedicated round of code | ||||||
|  | 	 * generation. | ||||||
|  | 	 * @param featureNamePrefix the feature name prefix to use | ||||||
|  | 	 * @return a new instance for the specified feature name prefix | ||||||
|  | 	 */ | ||||||
|  | 	GeneratedClasses withFeatureNamePrefix(String featureNamePrefix) { | ||||||
|  | 		return new GeneratedClasses(this.classNameGenerator.withFeatureNamePrefix(featureNamePrefix), | ||||||
|  | 				this.classes, this.classesByOwner); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	private record Owner(String featureNamePrefix, String featureName, @Nullable ClassName target) { | 	private record Owner(String featureNamePrefix, String featureName, @Nullable ClassName target) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -18,7 +18,6 @@ package org.springframework.test.context.aot; | ||||||
| 
 | 
 | ||||||
| import org.springframework.aot.generate.ClassNameGenerator; | import org.springframework.aot.generate.ClassNameGenerator; | ||||||
| import org.springframework.aot.generate.DefaultGenerationContext; | import org.springframework.aot.generate.DefaultGenerationContext; | ||||||
| import org.springframework.aot.generate.GeneratedClasses; |  | ||||||
| import org.springframework.aot.generate.GeneratedFiles; | import org.springframework.aot.generate.GeneratedFiles; | ||||||
| import org.springframework.aot.hint.RuntimeHints; | import org.springframework.aot.hint.RuntimeHints; | ||||||
| 
 | 
 | ||||||
|  | @ -49,16 +48,13 @@ class TestContextGenerationContext extends DefaultGenerationContext { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Create a new {@link TestContextGenerationContext} instance backed by the | 	 * Create a new {@link TestContextGenerationContext} instance based on the | ||||||
| 	 * specified {@link GeneratedClasses}, {@link GeneratedFiles}, and | 	 * supplied {@code existing} context and feature name. | ||||||
| 	 * {@link RuntimeHints}. | 	 * @param existing the existing context upon which to base the new one | ||||||
| 	 * @param generatedClasses the generated classes | 	 * @param featureName the feature name to use | ||||||
| 	 * @param generatedFiles the generated files |  | ||||||
| 	 * @param runtimeHints the runtime hints |  | ||||||
| 	 */ | 	 */ | ||||||
| 	private TestContextGenerationContext(GeneratedClasses generatedClasses, GeneratedFiles generatedFiles, | 	private TestContextGenerationContext(TestContextGenerationContext existing, String featureName) { | ||||||
| 			RuntimeHints runtimeHints, String featureName) { | 		super(existing, featureName); | ||||||
| 		super(generatedClasses, generatedFiles, runtimeHints); |  | ||||||
| 		this.featureName = featureName; | 		this.featureName = featureName; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -67,8 +63,8 @@ class TestContextGenerationContext extends DefaultGenerationContext { | ||||||
| 	 * Create a new {@link TestContextGenerationContext} instance using the specified | 	 * Create a new {@link TestContextGenerationContext} instance using the specified | ||||||
| 	 * feature name to qualify generated assets for a dedicated round of code generation. | 	 * feature name to qualify generated assets for a dedicated round of code generation. | ||||||
| 	 * <p>If <em>this</em> {@code TestContextGenerationContext} has a configured feature | 	 * <p>If <em>this</em> {@code TestContextGenerationContext} has a configured feature | ||||||
| 	 * name, the supplied feature name will be appended to the existing feature name | 	 * name, the existing feature name will prepended to the supplied feature name in | ||||||
| 	 * in order to avoid naming collisions. | 	 * order to avoid naming collisions. | ||||||
| 	 * @param featureName the feature name to use | 	 * @param featureName the feature name to use | ||||||
| 	 * @return a specialized {@link TestContextGenerationContext} for the specified | 	 * @return a specialized {@link TestContextGenerationContext} for the specified | ||||||
| 	 * feature name | 	 * feature name | ||||||
|  | @ -78,8 +74,7 @@ class TestContextGenerationContext extends DefaultGenerationContext { | ||||||
| 		if (this.featureName != null) { | 		if (this.featureName != null) { | ||||||
| 			featureName = this.featureName + featureName; | 			featureName = this.featureName + featureName; | ||||||
| 		} | 		} | ||||||
| 		GeneratedClasses generatedClasses = getGeneratedClasses().withFeatureNamePrefix(featureName); | 		return new TestContextGenerationContext(this, featureName); | ||||||
| 		return new TestContextGenerationContext(generatedClasses, getGeneratedFiles(), getRuntimeHints(), featureName); |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue