name: Samples Java Spring

on:
  push:
    paths:
      - 'samples/server/petstore/spring*/**'
      - 'samples/openapi3/server/petstore/spring*/**'
  pull_request:
    paths:
      - 'samples/server/petstore/spring*/**'
      - 'samples/openapi3/server/petstore/spring*/**'
jobs:
  build:
    name: Build Java Spring
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        sample:
          # clients
          - samples/client/petstore/spring-cloud
          - samples/openapi3/client/petstore/spring-cloud
          - samples/client/petstore/spring-cloud-date-time
          - samples/openapi3/client/petstore/spring-cloud-date-time
          - samples/openapi3/client/petstore/spring-stubs
          - samples/openapi3/client/petstore/spring-stubs-skip-default-interface
          - samples/openapi3/client/petstore/spring-cloud-async
          - samples/openapi3/client/petstore/spring-cloud-spring-pageable
          - samples/client/petstore/spring-cloud-tags
          # servers
          - samples/server/petstore/springboot
          - samples/openapi3/server/petstore/springboot
          - samples/server/petstore/springboot-beanvalidation
          - samples/server/petstore/springboot-useoptional
          - samples/server/petstore/springboot-reactive
          - samples/server/petstore/springboot-implicitHeaders
          - samples/openapi3/server/petstore/springboot-implicitHeaders
          - samples/server/petstore/springboot-delegate
          - samples/server/petstore/springboot-delegate-no-response-entity
          - samples/openapi3/server/petstore/springboot-delegate
          - samples/server/petstore/spring-boot-nullable-set
          - samples/server/petstore/spring-boot-defaultInterface-unhandledException
          - samples/openapi3/server/petstore/spring-boot-oneof
          - samples/server/petstore/springboot-virtualan
          - samples/server/petstore/springboot-implicitHeaders-annotationLibrary
          - samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8
          - samples/server/petstore/springboot-spring-pageable-delegatePattern
          - samples/server/petstore/springboot-spring-pageable-without-j8
          - samples/server/petstore/springboot-spring-pageable
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: 8
      - name: Cache maven dependencies
        uses: actions/cache@v3
        env:
          cache-name: maven-repository
        with:
          path: |
            ~/.m2
          key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
      - name: Build
        working-directory: ${{ matrix.sample }}
        run: mvn clean package
