Class HexagonalArchitectureExtension

java.lang.Object
com.arc_e_tect.gradle.architecture.HexagonalArchitectureExtension

public class HexagonalArchitectureExtension extends Object
Nested hexagonalArchitecture {} configuration block for the built-in hexagonal rule pack, exposed via ArchitectureValidatorExtension.getHexagonalArchitecture().

Every property here is a package-pattern list matched against classes under ArchitectureValidatorExtension.getBasePackage(), each with a real default reflecting a conventional hexagonal-architecture layout - override only the ones that don't fit.

  • Constructor Summary

    Constructors
    Constructor
    Description
    HexagonalArchitectureExtension(org.gradle.api.model.ObjectFactory objects)
    Creates the extension, with every property already set to its default.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.gradle.api.provider.ListProperty<String>
    Adapter package patterns, matching both inbound and outbound adapters not already covered by getInboundAdapters()/getOutboundAdapters().
    org.gradle.api.provider.ListProperty<String>
    Shared/common package patterns, excluded from layer-boundary rules that would otherwise flag code every layer is allowed to depend on.
    org.gradle.api.provider.ListProperty<String>
    Package patterns holding Spring (or other DI-framework) wiring/configuration classes.
    org.gradle.api.provider.ListProperty<String>
    JDK package patterns the domain model is allowed to depend on, in addition to its own getDomainModel() packages.
    org.gradle.api.provider.ListProperty<String>
    Domain model package patterns - the innermost ring, holding pure value objects/entities.
    org.gradle.api.provider.ListProperty<String>
    Domain service package patterns - the layer that implements use-case orchestration and cross-aggregate business rules on top of the domain model.
    org.gradle.api.provider.ListProperty<String>
    Framework/library package patterns the domain model, domain services, and ports must never depend on (directly or transitively), enforced by core_application_layer_must_have_no_denylisted_dependencies.
    org.gradle.api.provider.ListProperty<String>
    Additional package patterns inbound adapters must never depend on.
    org.gradle.api.provider.ListProperty<String>
    Inbound adapter package patterns.
    org.gradle.api.provider.ListProperty<String>
    Inbound port package patterns.
    org.gradle.api.provider.Property<Boolean>
    Whether naming-convention rules (bidirectional suffix/package checks, e.g.
    org.gradle.api.provider.ListProperty<String>
    Outbound adapter package patterns.
    org.gradle.api.provider.ListProperty<String>
    Outbound port package patterns.
    org.gradle.api.provider.ListProperty<String>
    Package patterns nested inside a port package that hold pure data-transfer types (commands, queries, results) rather than the port interfaces themselves - excluded from the "ports must be interfaces" and port-naming-convention rules, which apply only to the port contracts.

    Methods inherited from class java.lang.Object

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

    • HexagonalArchitectureExtension

      @Inject public HexagonalArchitectureExtension(org.gradle.api.model.ObjectFactory objects)
      Creates the extension, with every property already set to its default. Instantiated by Gradle's extension-creation infrastructure.
      Parameters:
      objects - Gradle's object factory
  • Method Details

    • getInPorts

      public org.gradle.api.provider.ListProperty<String> getInPorts()
      Inbound port package patterns.
      Returns:
      mutable list property of inbound port package patterns
    • getOutPorts

      public org.gradle.api.provider.ListProperty<String> getOutPorts()
      Outbound port package patterns.
      Returns:
      mutable list property of outbound port package patterns
    • getDomainModel

      public org.gradle.api.provider.ListProperty<String> getDomainModel()
      Domain model package patterns - the innermost ring, holding pure value objects/entities. Kept disjoint from getDomainServices() by default (siblings under application.domain, not one nested inside the other) so the domain-model-isolation and domain-service-isolation rules never both match the same class.
      Returns:
      mutable list property of domain model package patterns
    • getDomainServices

      public org.gradle.api.provider.ListProperty<String> getDomainServices()
      Domain service package patterns - the layer that implements use-case orchestration and cross-aggregate business rules on top of the domain model. Distinct from getDomainModel() (siblings, not nested) so the two isolation rules stay mutually exclusive.
      Returns:
      mutable list property of domain service package patterns
    • getAdapters

      public org.gradle.api.provider.ListProperty<String> getAdapters()
      Adapter package patterns, matching both inbound and outbound adapters not already covered by getInboundAdapters()/getOutboundAdapters().
      Returns:
      mutable list property of adapter package patterns
    • getInboundAdapters

      public org.gradle.api.provider.ListProperty<String> getInboundAdapters()
      Inbound adapter package patterns.
      Returns:
      mutable list property of inbound adapter package patterns
    • getOutboundAdapters

      public org.gradle.api.provider.ListProperty<String> getOutboundAdapters()
      Outbound adapter package patterns.
      Returns:
      mutable list property of outbound adapter package patterns
    • getCommonPackages

      public org.gradle.api.provider.ListProperty<String> getCommonPackages()
      Shared/common package patterns, excluded from layer-boundary rules that would otherwise flag code every layer is allowed to depend on.
      Returns:
      mutable list property of common package patterns
    • getPortDataTypePackages

      public org.gradle.api.provider.ListProperty<String> getPortDataTypePackages()
      Package patterns nested inside a port package that hold pure data-transfer types (commands, queries, results) rather than the port interfaces themselves - excluded from the "ports must be interfaces" and port-naming-convention rules, which apply only to the port contracts.
      Returns:
      mutable list property of port data-type package patterns
    • getConfigurationPackages

      public org.gradle.api.provider.ListProperty<String> getConfigurationPackages()
      Package patterns holding Spring (or other DI-framework) wiring/configuration classes. Only classes in these packages - plus domain service classes themselves - may reference domain service implementations directly; every other class must go through a port instead.
      Returns:
      mutable list property of configuration package patterns
    • getDomainAllowedPackages

      public org.gradle.api.provider.ListProperty<String> getDomainAllowedPackages()
      JDK package patterns the domain model is allowed to depend on, in addition to its own getDomainModel() packages. Enforced by the domain_must_only_depend_on_domain_or_jdk_core rule, which requires every non-JDK dependency of a domain class to resolve back into getDomainModel() - keeping the domain layer free of adapters, application services, ports, and any third-party or framework dependency by construction, rather than by naming a growing list of things it must avoid.
      Returns:
      mutable list property of JDK package patterns allowed from the domain model
    • getFrameworkDenylistPackages

      public org.gradle.api.provider.ListProperty<String> getFrameworkDenylistPackages()
      Framework/library package patterns the domain model, domain services, and ports must never depend on (directly or transitively), enforced by core_application_layer_must_have_no_denylisted_dependencies. Empty by default so the rule is a no-op until a project opts in with its own framework list (e.g. 'org.springframework..', 'jakarta..', 'org.hibernate..').
      Returns:
      mutable list property of denylisted framework package patterns
    • getInboundAdapterDenylistPackages

      public org.gradle.api.provider.ListProperty<String> getInboundAdapterDenylistPackages()
      Additional package patterns inbound adapters must never depend on. The built-in inbound_adapters_must_access_application_through_inbound_ports rule always blocks direct dependencies on the domain model, outbound ports, outbound adapters, and configuration; this list lets a project extend that deny-list for its own libraries.
      Returns:
      mutable list property of additional inbound-adapter denylisted package patterns
    • getNamingConventionsEnabled

      public org.gradle.api.provider.Property<Boolean> getNamingConventionsEnabled()
      Whether naming-convention rules (bidirectional suffix/package checks, e.g. inbound port interfaces must end in UseCase/InputPort and vice versa) are enabled, in addition to the layer-boundary rules.
      Returns:
      mutable property for the naming-conventions-enabled flag