Class NameGenerator

java.lang.Object
org.springframework.aot.generate.NameGenerator

public final class NameGenerator extends Object
Generator for unique names based on a target ClassName and a feature name. Supports generating class names and resource paths.

This class is stateful, so the same instance should be used for all name generation.

Since:
7.1
Author:
Phillip Webb, Stephane Nicoll
  • Constructor Summary

    Constructors
    Constructor
    Description
    NameGenerator(org.springframework.javapoet.ClassName defaultTarget)
    Create a new instance using the specified defaultTarget and no feature name prefix.
    NameGenerator(org.springframework.javapoet.ClassName defaultTarget, String featureNamePrefix)
    Create a new instance using the specified defaultTarget and feature name prefix.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.springframework.javapoet.ClassName
    generateClassName(String featureName, @Nullable org.springframework.javapoet.ClassName target)
    Generate a unique ClassName based on the specified featureName and target.
    generateResourcePath(String extension, String featureName, @Nullable org.springframework.javapoet.ClassName target)
    Generate a unique resource path based on the specified extension, featureName and target.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • NameGenerator

      public NameGenerator(org.springframework.javapoet.ClassName defaultTarget)
      Create a new instance using the specified defaultTarget and no feature name prefix.
      Parameters:
      defaultTarget - the default target class to use
    • NameGenerator

      public NameGenerator(org.springframework.javapoet.ClassName defaultTarget, String featureNamePrefix)
      Create a new instance using the specified defaultTarget and feature name prefix.
      Parameters:
      defaultTarget - the default target class to use
      featureNamePrefix - the prefix to use to qualify feature names
  • Method Details

    • generateClassName

      public org.springframework.javapoet.ClassName generateClassName(String featureName, @Nullable org.springframework.javapoet.ClassName target)
      Generate a unique ClassName based on the specified featureName and target. If the target is null, the configured main target of this instance is used.

      The class name is a suffixed version of the target. For instance, a com.example.Demo target with an Initializer feature name leads to a com.example.Demo__Initializer generated class name. The feature name is qualified by the configured feature name prefix, if any.

      Generated class names are unique. If such a feature was already requested for this target, a counter is used to ensure uniqueness.

      Parameters:
      featureName - the name of the feature that the generated class supports
      target - the class the newly generated class relates to, or null to use the main target
      Returns:
      a unique generated class name
    • generateResourcePath

      public String generateResourcePath(String extension, String featureName, @Nullable org.springframework.javapoet.ClassName target)
      Generate a unique resource path based on the specified extension, featureName and target. If the target is null, the configured main target of this instance is used.

      The resource path is a suffixed version of the target. For instance, a com.example.Demo target with a metadata feature name and a json extension leads to a com/example/Demo-metadata.json generated resource path. The feature name is qualified by the configured feature name prefix, if any.

      Generated resource paths are unique. If such a feature was already requested for this target, a counter is used to ensure uniqueness.

      Parameters:
      extension - the file extension
      featureName - the name of the feature that the generated path supports
      target - the class the generated resource relates to, or null to use the main target
      Returns:
      a unique absolute path for the resource