Class DoppelgangerApiDetectorExtension

java.lang.Object
com.arc_e_tect.gradle.doppelganger.DoppelgangerApiDetectorExtension

public abstract class DoppelgangerApiDetectorExtension extends Object
DSL extension for the Doppelganger API Detector Gradle plugin.
 doppelgangerApiDetector {
     controllerDirs.from('src/main/java')                                    // default
     testDirs.from('src/test/java')                                          // default
     rootDocument   = file('src/main/resources/openapi/openapi.yaml')       // required
     // openApiDir  = rootDocument.get().asFile.parentFile                  // default
     // contractsDir = file('src/test/resources/contracts')                // default
     useRestDocs                 = true                                      // default
     useOpenApiRequestValidator  = false                                     // default
     useSpringCloudContract      = false                                     // default
     failOnDoppelganger = false                                              // default
     reportDir      = layout.buildDirectory.dir('reports/doppelganger-api-detector') // default
     reportFileName = 'doppelganger-apis.adoc'                               // default
     // systemUnderTestVersion = 'v1.0.0'          // optional; default: project.version
 }
 
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    Default relative path of the directory searched for Spring Cloud Contract DSL files.
    static final String
    Default relative path of the directory searched for @RestController classes.
    static final String
    Default name of the generated AsciiDoc report file.
    static final String
    Default relative path of the directory searched for test classes.
    static final String
    Extension DSL block name, i.e.
  • Constructor Summary

    Constructors
    Constructor
    Description
    For use by the Gradle-generated concrete subclass.
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract org.gradle.api.file.DirectoryProperty
    Directory searched for Spring Cloud Contract DSL files (*.groovy and *.yml), scanned recursively when getUseSpringCloudContract() is true.
    abstract org.gradle.api.file.ConfigurableFileCollection
    Directories to search recursively for @RestController classes.
    abstract org.gradle.api.provider.Property<Boolean>
    Whether the build should fail when doppelganger APIs are found.
    abstract org.gradle.api.file.DirectoryProperty
    Directory where OpenAPI descriptions are stored.
    abstract org.gradle.api.file.DirectoryProperty
    Directory the AsciiDoc report is written to.
    abstract org.gradle.api.provider.Property<String>
    Name of the generated AsciiDoc report file (without path).
    abstract org.gradle.api.file.RegularFileProperty
    The root OpenAPI document describing the API.
    abstract org.gradle.api.provider.Property<String>
    Version of the system under test whose @RestController classes are scanned, printed in the generated report as e.g.
    abstract org.gradle.api.file.ConfigurableFileCollection
    Directories to search recursively for test classes, scanned by the Spring RestDocs and OpenAPI request validator verification sources when enabled.
    abstract org.gradle.api.provider.Property<Boolean>
    Whether to treat Atlassian OpenAPI request validator usage as verification evidence.
    abstract org.gradle.api.provider.Property<Boolean>
    Whether to treat Spring RestDocs test methods (a mockMvc.perform(...) call paired with .andDo(document(...))) as verification evidence.
    abstract org.gradle.api.provider.Property<Boolean>
    Whether to treat Spring Cloud Contract DSL files under getContractsDir() as verification evidence.

    Methods inherited from class java.lang.Object

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

    • NAME

      public static final String NAME
      Extension DSL block name, i.e. the name used to register the extension with the project.
      See Also:
    • DEFAULT_CONTROLLER_DIR

      public static final String DEFAULT_CONTROLLER_DIR
      Default relative path of the directory searched for @RestController classes.
      See Also:
    • DEFAULT_TEST_DIR

      public static final String DEFAULT_TEST_DIR
      Default relative path of the directory searched for test classes.
      See Also:
    • DEFAULT_CONTRACTS_DIR

      public static final String DEFAULT_CONTRACTS_DIR
      Default relative path of the directory searched for Spring Cloud Contract DSL files.
      See Also:
    • DEFAULT_REPORT_FILE_NAME

      public static final String DEFAULT_REPORT_FILE_NAME
      Default name of the generated AsciiDoc report file.
      See Also:
  • Constructor Details

    • DoppelgangerApiDetectorExtension

      public DoppelgangerApiDetectorExtension()
      For use by the Gradle-generated concrete subclass.
  • Method Details

    • getControllerDirs

      public abstract org.gradle.api.file.ConfigurableFileCollection getControllerDirs()
      Directories to search recursively for @RestController classes. One or more directories may be configured. Defaults to "src/main/java".
      Returns:
      mutable file collection of controller source directories
    • getTestDirs

      public abstract org.gradle.api.file.ConfigurableFileCollection getTestDirs()
      Directories to search recursively for test classes, scanned by the Spring RestDocs and OpenAPI request validator verification sources when enabled. One or more directories may be configured. Defaults to "src/test/java".
      Returns:
      mutable file collection of test source directories
    • getRootDocument

      public abstract org.gradle.api.file.RegularFileProperty getRootDocument()
      The root OpenAPI document describing the API. Required: every other OpenAPI document is expected to be reachable from this one via $ref links relative to it.
      Returns:
      mutable file property for the root OpenAPI document
    • getOpenApiDir

      public abstract org.gradle.api.file.DirectoryProperty getOpenApiDir()
      Directory where OpenAPI descriptions are stored. Used only to determine which files the task should track as inputs for up-to-date checks; every document actually consulted is discovered by following the $ref links reachable from getRootDocument(). Defaults to the root document's own parent directory.
      Returns:
      mutable directory property for the OpenAPI description directory
    • getContractsDir

      public abstract org.gradle.api.file.DirectoryProperty getContractsDir()
      Directory searched for Spring Cloud Contract DSL files (*.groovy and *.yml), scanned recursively when getUseSpringCloudContract() is true. Defaults to "src/test/resources/contracts".
      Returns:
      mutable directory property for the Spring Cloud Contract directory
    • getUseRestDocs

      public abstract org.gradle.api.provider.Property<Boolean> getUseRestDocs()
      Whether to treat Spring RestDocs test methods (a mockMvc.perform(...) call paired with .andDo(document(...))) as verification evidence. Defaults to true.
      Returns:
      mutable boolean property controlling whether the Spring RestDocs source is enabled
    • getUseOpenApiRequestValidator

      public abstract org.gradle.api.provider.Property<Boolean> getUseOpenApiRequestValidator()
      Whether to treat Atlassian OpenAPI request validator usage as verification evidence. Defaults to false.
      Returns:
      mutable boolean property controlling whether the OpenAPI request validator source is enabled
    • getUseSpringCloudContract

      public abstract org.gradle.api.provider.Property<Boolean> getUseSpringCloudContract()
      Whether to treat Spring Cloud Contract DSL files under getContractsDir() as verification evidence. Defaults to false.
      Returns:
      mutable boolean property controlling whether the Spring Cloud Contract source is enabled
    • getFailOnDoppelganger

      public abstract org.gradle.api.provider.Property<Boolean> getFailOnDoppelganger()
      Whether the build should fail when doppelganger APIs are found. The report is written either way. Defaults to false.
      Returns:
      mutable boolean property controlling whether the build fails on doppelganger APIs
    • getReportDir

      public abstract org.gradle.api.file.DirectoryProperty getReportDir()
      Directory the AsciiDoc report is written to. Defaults to build/reports/doppelganger-api-detector.
      Returns:
      mutable directory property for the report output directory
    • getReportFileName

      public abstract org.gradle.api.provider.Property<String> getReportFileName()
      Name of the generated AsciiDoc report file (without path). Defaults to "doppelganger-apis.adoc".
      Returns:
      mutable string property for the report file name
    • getSystemUnderTestVersion

      public abstract org.gradle.api.provider.Property<String> getSystemUnderTestVersion()
      Version of the system under test whose @RestController classes are scanned, printed in the generated report as e.g. System Under Test version: v1.0.0. Defaults to the project's own version (as set in the build file or a properties file); set this property to override that default, e.g. when the controllers scanned belong to a different artifact than the one being built.
      Returns:
      mutable string property for the system-under-test version