mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			9 Commits
		
	
	
		
			20.45-DEV
			...
			APPS-1829-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3b25edefd1 | ||
| 
						 | 
					7e660572d6 | ||
| 
						 | 
					2a2ae2448e | ||
| 
						 | 
					c40b862012 | ||
| 
						 | 
					c4fe682c81 | ||
| 
						 | 
					12af8f5766 | ||
| 
						 | 
					ea400226ba | ||
| 
						 | 
					8c21806cf4 | ||
| 
						 | 
					cea3e37dd5 | 
							
								
								
									
										564
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										564
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,564 +0,0 @@
 | 
			
		||||
name: Alfresco Community Repo CI
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - feature/**
 | 
			
		||||
      - fix/**
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
#      - feature/**
 | 
			
		||||
      - fix/**
 | 
			
		||||
  workflow_call:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
 | 
			
		||||
  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
 | 
			
		||||
  GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60
 | 
			
		||||
  LOG_WARN: "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
 | 
			
		||||
  MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
 | 
			
		||||
  MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
 | 
			
		||||
  QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
 | 
			
		||||
  QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }}
 | 
			
		||||
  TAS_ENVIRONMENT: ./packaging/tests/environment
 | 
			
		||||
  TAS_SCRIPTS: ../alfresco-community-repo/packaging/tests/scripts
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  prepare:
 | 
			
		||||
    name: "Prepare"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
#      - name: "Prepare environment"
 | 
			
		||||
#        run: bash ./scripts/ci/prepare.sh
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  veracode:
 | 
			
		||||
    name: "Source Clear Scan (SCA)"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ((github.ref_name == 'master' || contains(github.ref_name, 'release/')) && github.event_name != 'pull_request') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - name: Cache local Maven repository
 | 
			
		||||
        uses: actions/cache@v2
 | 
			
		||||
        with:
 | 
			
		||||
          path: ~/.m2/repository
 | 
			
		||||
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
 | 
			
		||||
          restore-keys: |
 | 
			
		||||
            ${{ runner.os }}-maven-
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/veracode@master
 | 
			
		||||
        with:
 | 
			
		||||
          srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
        
 | 
			
		||||
  all_unit_tests_suite:
 | 
			
		||||
    name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: |
 | 
			
		||||
          mvn -B test -pl core,data-model -am -DfailIfNoTests=false
 | 
			
		||||
          mvn -B test -pl "repository,mmt" -am "-Dtest=AllUnitTestsSuite,AllMmtUnitTestSuite" -DfailIfNoTests=false
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  remote_api_app_context_test_suites:
 | 
			
		||||
    name: Remote-api - ${{ matrix.testSuite }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        include:
 | 
			
		||||
          - testSuite: AppContext01TestSuite
 | 
			
		||||
            compose-profile: default
 | 
			
		||||
          - testSuite: AppContext02TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContext03TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContext04TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContextExtraTestSuite
 | 
			
		||||
            compose-profile: default
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_INSTALLED_ARTIFACTS: true
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Set transformers tag"
 | 
			
		||||
        run: echo "TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)" >> $GITHUB_ENV
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl remote-api -Dtest=${{ matrix.testSuite }} -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_mariadb_tests:
 | 
			
		||||
    name: Repository - MariaDB ${{ matrix.version }} tests
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/')) &&
 | 
			
		||||
      github.event_name != 'pull_request' &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        version: ['10.2.18', '10.4', '10.5']
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d
 | 
			
		||||
        env:
 | 
			
		||||
          MARIADB_VERSION: ${{ matrix.version }}
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_mariadb_10_6_tests:
 | 
			
		||||
    name: "Repository - MariaDB 10.6 tests"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d
 | 
			
		||||
        env:
 | 
			
		||||
          MARIADB_VERSION: 10.6
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_mysql_tests:
 | 
			
		||||
    name: Repository - MySQL 8 tests
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mysql up -d
 | 
			
		||||
        env:
 | 
			
		||||
          MYSQL_VERSION: 8
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_postgresql_13_7_tests:
 | 
			
		||||
    name: "Repository - PostgreSQL 13.7 tests"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/')) && github.event_name != 'pull_request' &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d
 | 
			
		||||
        env:
 | 
			
		||||
          POSTGRES_VERSION: 10.6
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_postgresql_14_4_tests:
 | 
			
		||||
    name: "Repository - PostgreSQL 14.4 tests"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (!contains(github.event.head_commit.message, '[skip db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d
 | 
			
		||||
        env:
 | 
			
		||||
          POSTGRES_VERSION: 14.4
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_messaging_tests:
 | 
			
		||||
    name: Repository - Messaging tests
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile activemq up -d
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=CamelRoutesTest,CamelComponentsTest -DfailIfNoTests=false
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  repository_app_context_test_suites:
 | 
			
		||||
    name: Repository - ${{ matrix.testSuite }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        include:
 | 
			
		||||
          - testSuite: AppContext01TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContext02TestSuite
 | 
			
		||||
            compose-profile: default
 | 
			
		||||
          - testSuite: AppContext03TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContext04TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContext05TestSuite
 | 
			
		||||
            compose-profile: default
 | 
			
		||||
            mvn-options: '"-Didentity-service.auth-server-url=http://${HOST_IP}:8999/auth"'
 | 
			
		||||
          - testSuite: AppContext06TestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: AppContextExtraTestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: MiscContextTestSuite
 | 
			
		||||
            compose-profile: with-transform-core-aio
 | 
			
		||||
          - testSuite: SearchTestSuite
 | 
			
		||||
            compose-profile: default
 | 
			
		||||
            mvn-options: '-Dindex.subsystem.name=solr6'
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up IDS"
 | 
			
		||||
        run: |
 | 
			
		||||
          if [ "${{ matrix.testSuite }}" == 'AppContext05TestSuite' ];
 | 
			
		||||
          then
 | 
			
		||||
            mkdir -p "${HOME}/tmp"
 | 
			
		||||
            cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp"
 | 
			
		||||
            echo "HOST_IP=$(hostname  -I | cut -f1 -d' ')" >> $GITHUB_ENV
 | 
			
		||||
            docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_VENDOR=h2 -p 8999:8080 -e KEYCLOAK_IMPORT=/tmp/alfresco-realm.json -v $HOME/tmp/alfresco-realm.json:/tmp/alfresco-realm.json alfresco/alfresco-identity-service:1.2
 | 
			
		||||
          fi
 | 
			
		||||
      - name: "Set transformers tag"
 | 
			
		||||
        run: echo "TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)" >> $GITHUB_ENV
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl repository -am -Dtest=${{ matrix.testSuite }} -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco ${{ matrix.mvn-options }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  tas-tests:
 | 
			
		||||
    name: ${{ matrix.test-name }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request' ) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tas]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[tas]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        include:
 | 
			
		||||
          - test-name: "REST API TAS tests part1"
 | 
			
		||||
            pom-dir: tas-restapi
 | 
			
		||||
            test-profile: run-restapi-part1
 | 
			
		||||
          - test-name: "REST API TAS tests part2"
 | 
			
		||||
            pom-dir: tas-restapi
 | 
			
		||||
            test-profile: run-restapi-part2
 | 
			
		||||
          - test-name: "REST API TAS tests part3"
 | 
			
		||||
            pom-dir: tas-restapi
 | 
			
		||||
            test-profile: run-restapi-part3
 | 
			
		||||
          - test-name: "CMIS TAS tests - BROWSER binding"
 | 
			
		||||
            pom-dir: tas-cmis
 | 
			
		||||
            test-profile: run-cmis-browser
 | 
			
		||||
          - test-name: "CMIS TAS tests - ATOM binding"
 | 
			
		||||
            pom-dir: tas-cmis
 | 
			
		||||
            test-profile: run-cmis-atom
 | 
			
		||||
          - test-name: "CMIS TAS tests - WEBSERVICES binding"
 | 
			
		||||
            pom-dir: tas-cmis
 | 
			
		||||
            test-profile: run-cmis-webservices
 | 
			
		||||
          - test-name: "Email TAS tests"
 | 
			
		||||
            pom-dir: tas-email
 | 
			
		||||
          - test-name: "WebDAV TAS tests"
 | 
			
		||||
            pom-dir: tas-webdav
 | 
			
		||||
          - test-name: "Integration TAS tests"
 | 
			
		||||
            pom-dir: tas-integration
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_LOCAL_IMAGES: true
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: |
 | 
			
		||||
          ${{ env.TAS_SCRIPTS }}/start-compose.sh ${{ env.TAS_ENVIRONMENT }}/docker-compose-minimal+transforms.yml
 | 
			
		||||
          ${{ env.TAS_SCRIPTS }}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco"
 | 
			
		||||
      - name: "Set up the environment for integration tests"
 | 
			
		||||
        run: |
 | 
			
		||||
          if [ "${{ matrix.test-name }}" == 'Integration TAS tests' ];
 | 
			
		||||
          then
 | 
			
		||||
            mvn install -pl :alfresco-community-repo-integration-test -am -DskipTests -Pall-tas-tests
 | 
			
		||||
          fi
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        id: tests
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: mvn -B verify -f packaging/tests/${{ matrix.pom-dir }}/pom.xml -Pall-tas-tests,${{ matrix.test-profile }} -Denvironment=default -DrunBugs=false
 | 
			
		||||
      - name: "Print output after success"
 | 
			
		||||
        if: ${{ always() }} && outcome.tests.outcome == 'success'
 | 
			
		||||
        run: ${TAS_SCRIPTS}/output_tests_run.sh "packaging/tests/${{ matrix.pom-dir }}"
 | 
			
		||||
      - name: "Print output after failure"
 | 
			
		||||
        if: ${{ always() }} && outcome.tests.outcome == 'failure'
 | 
			
		||||
        run: ${TAS_SCRIPTS}/output_logs_for_failures.sh "packaging/tests/${{ matrix.pom-dir }}"
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  share_services_share_services_test_suite:
 | 
			
		||||
    name: Share Services - ShareServicesTestSuite
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        run: docker-compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile postgres up -d
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
        run: mvn -B test -pl :alfresco-share-services -am -Dtest=ShareServicesTestSuite -DfailIfNoTests=false -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  ags_tests_postgressql:
 | 
			
		||||
    name: AGS Integration Tests 0${{ matrix.part }} (PostgreSQL) ${{ matrix.test-name }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request' ) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip ags]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[ags]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        part: [1, 2, 3, 4]
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_INSTALLED_ARTIFACTS: true
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Verify"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: mvn --file amps/ags/pom.xml -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt${{ matrix.part }} ${{ env.LOG_WARN }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  ags_tests_mysql:
 | 
			
		||||
    name: AGS Integration Tests 0${{ matrix.part }} (MySQL) ${{ matrix.test-name }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request' ) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip ags]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[ags on MySQL]')) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        part: [1, 2, 3, 4]
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_INSTALLED_ARTIFACTS: true
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Verify"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: mvn --file amps/ags/pom.xml -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql -PagsAllTestSuitePt${{ matrix.part }} ${{ env.LOG_WARN }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  ags_community_rest_api_tests:
 | 
			
		||||
    name: "AGS Community Rest API Tests"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.event_name == 'pull_request' ) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip ags]') && ! contains(github.event.head_commit.message, '[skip tas]')) ||
 | 
			
		||||
      (contains(github.event.head_commit.message, '[ags]') && contains(github.event.head_commit.message, '[tas]'))) &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      ! contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_LOCAL_IMAGES: true
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Set up the environment"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          ${{ env.TAS_SCRIPTS }}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml
 | 
			
		||||
          ${{ env.TAS_SCRIPTS }}/wait-for-alfresco-start.sh "http://localhost:8080/alfresco"
 | 
			
		||||
          mvn -B install -pl :alfresco-governance-services-automation-community-rest-api -am -Pags -Pall-tas-tests -DskipTests
 | 
			
		||||
      - name: "Test"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags -Pall-tas-tests
 | 
			
		||||
      - name: "Get logs and move to deploy_dir"
 | 
			
		||||
        shell: bash
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash amps/ags/ci/scripts/getLogs.sh
 | 
			
		||||
          mkdir -p deploy_dir/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests
 | 
			
		||||
          mv "alfresco.log" "deploy_dir/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests"
 | 
			
		||||
          mv "solr.log" "deploy_dir/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests"
 | 
			
		||||
          mv "./amps/ags/rm-automation/rm-automation-community-rest-api/target/reports" "deploy_dir/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests"
 | 
			
		||||
      - name: "Configure AWS credentials"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        uses: aws-actions/configure-aws-credentials@v1
 | 
			
		||||
        with:
 | 
			
		||||
          aws-access-key-id: ${{ secrets.AGS_AWS_ACCESS_KEY_ID }}
 | 
			
		||||
          aws-secret-access-key: ${{ secrets.AGS_AWS_SECRET_ACCESS_KEY }}
 | 
			
		||||
          aws-region: us-east-1
 | 
			
		||||
      - name: "Upload artifacts to Amazon S3 bucket"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: aws s3 cp --recursive ./deploy_dir s3://ags-travis-artifacts
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
							
								
								
									
										71
									
								
								.github/workflows/master_release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.github/workflows/master_release.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,71 +0,0 @@
 | 
			
		||||
name: Master/Release branch workflow
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - master
 | 
			
		||||
      - release/**
 | 
			
		||||
      - feature/ACS-3841_test_migration
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  GIT_USERNAME: ${{ secrets.BOT_GITHUB_USERNAME }}
 | 
			
		||||
  GIT_EMAIL: ${{ secrets.BOT_GITHUB_EMAIL }}
 | 
			
		||||
  GIT_PASSWORD: ${{ secrets.BOT_GITHUB_TOKEN }}
 | 
			
		||||
  DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
 | 
			
		||||
  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
 | 
			
		||||
  MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
 | 
			
		||||
  MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
 | 
			
		||||
  QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
 | 
			
		||||
  QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }}
 | 
			
		||||
  GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run_ci:
 | 
			
		||||
    uses: ./.github/workflows/ci.yml
 | 
			
		||||
    secrets: inherit
 | 
			
		||||
  push_to_nexus:
 | 
			
		||||
    name: "Push to Nexus"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [run_ci]
 | 
			
		||||
    if: >
 | 
			
		||||
      always() &&
 | 
			
		||||
      (needs.run_ci.result == 'skipped' || needs.run_ci.result == 'success') &&
 | 
			
		||||
      (! contains(github.event.head_commit.message, '[no release]')) &&
 | 
			
		||||
      (github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.ref_name == 'feature/ACS-3841_test_migration') &&
 | 
			
		||||
      (github.event_name != 'pull_request')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Release"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash scripts/ci/verify_release_tag.sh
 | 
			
		||||
          bash scripts/ci/maven_release.sh
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
  update_downstream:
 | 
			
		||||
    name: "Update alfresco-enterprise-repo"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [run_ci, push_to_nexus]
 | 
			
		||||
    if: >
 | 
			
		||||
      always() &&
 | 
			
		||||
      (needs.run_ci.result == 'skipped' || needs.run_ci.result == 'success') &&
 | 
			
		||||
      (! contains(github.event.head_commit.message, '[no downstream]')) &&
 | 
			
		||||
      ((github.ref_name == 'master' || contains(github.ref_name, 'release/') || github.ref_name == 'feature/ACS-3841_test_migration') && github.event_name != 'pull_request')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/acs-community-packaging/.github/actions/get-build-info@feature/ACS-3844_migrate-to-GHA
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@master
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Update downstream"
 | 
			
		||||
        run: bash ./scripts/ci/update_downstream.sh
 | 
			
		||||
        env:
 | 
			
		||||
          COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        if: ${{ always() }}
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
@@ -19,7 +19,10 @@ before_cache: bash scripts/travis/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
branches:
 | 
			
		||||
  only:
 | 
			
		||||
    - none
 | 
			
		||||
    - master
 | 
			
		||||
    - /release\/.*/
 | 
			
		||||
    - /feature\/.*/
 | 
			
		||||
    - /fix\/.*/
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  global:
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <build>
 | 
			
		||||
@@ -42,18 +42,6 @@
 | 
			
		||||
   </build>
 | 
			
		||||
 | 
			
		||||
   <dependencies>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.apache.logging.log4j</groupId>
 | 
			
		||||
         <artifactId>log4j-slf4j2-impl</artifactId>
 | 
			
		||||
         <version>${dependency.log4j.version}</version>
 | 
			
		||||
         <scope>test</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.apache.logging.log4j</groupId>
 | 
			
		||||
         <artifactId>log4j-core</artifactId>
 | 
			
		||||
         <version>${dependency.log4j.version}</version>
 | 
			
		||||
         <scope>test</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.alfresco.tas</groupId>
 | 
			
		||||
         <artifactId>restapi</artifactId>
 | 
			
		||||
@@ -69,17 +57,6 @@
 | 
			
		||||
         <groupId>org.alfresco.tas</groupId>
 | 
			
		||||
         <artifactId>utility</artifactId>
 | 
			
		||||
         <version>${dependency.tas-utility.version}</version>
 | 
			
		||||
         <!-- These exclusions can be removed once tas-utility does not rely on Reload4j anymore -->
 | 
			
		||||
         <exclusions>
 | 
			
		||||
            <exclusion>
 | 
			
		||||
               <groupId>ch.qos.reload4j</groupId>
 | 
			
		||||
               <artifactId>reload4j</artifactId>
 | 
			
		||||
            </exclusion>
 | 
			
		||||
            <exclusion>
 | 
			
		||||
               <groupId>org.slf4j</groupId>
 | 
			
		||||
               <artifactId>slf4j-reload4j</artifactId>
 | 
			
		||||
            </exclusion>
 | 
			
		||||
         </exclusions>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.projectlombok</groupId>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Records Management Module
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2022 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software.
 | 
			
		||||
 * -
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of
 | 
			
		||||
 * the paid license agreement will prevail.  Otherwise, the software is
 | 
			
		||||
 * provided under the following open source license terms:
 | 
			
		||||
 * -
 | 
			
		||||
 * Alfresco is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 * -
 | 
			
		||||
 * Alfresco is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU Lesser General Public License for more details.
 | 
			
		||||
 * -
 | 
			
		||||
 * You should have received a copy of the GNU Lesser General Public License
 | 
			
		||||
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.rest.rm.community.utils;
 | 
			
		||||
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import org.testng.IMethodInstance;
 | 
			
		||||
import org.testng.IMethodInterceptor;
 | 
			
		||||
import org.testng.ITestContext;
 | 
			
		||||
 | 
			
		||||
public class AlphabeticallyPriorityInterceptor implements IMethodInterceptor
 | 
			
		||||
{
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<IMethodInstance> intercept(List<IMethodInstance> methods,
 | 
			
		||||
        ITestContext context)
 | 
			
		||||
    {
 | 
			
		||||
        return methods.stream().sorted(Comparator.comparing(el -> el.getMethod().getTestClass().toString()))
 | 
			
		||||
            .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,7 @@
 | 
			
		||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 | 
			
		||||
 | 
			
		||||
<suite name="TestNG AllTestSuite" configfailurepolicy="continue" verbose="1" time-out="300000">
 | 
			
		||||
   <listeners>
 | 
			
		||||
      <listener class-name="org.alfresco.rest.rm.community.utils.AlphabeticallyPriorityInterceptor" />
 | 
			
		||||
   </listeners>
 | 
			
		||||
   <test name="restapi" preserve-order="false">
 | 
			
		||||
   <test name="restapi">
 | 
			
		||||
      <packages>
 | 
			
		||||
         <package name="org.alfresco.rest.rm.community.*"/>
 | 
			
		||||
      </packages>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
      <version>20.45-DEV</version>
 | 
			
		||||
      <version>20.48-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <organization>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -128,5 +128,52 @@ This must be unique within the parent category.
 | 
			
		||||
                ", count=" + count +
 | 
			
		||||
                '}';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Builder builder()
 | 
			
		||||
    {
 | 
			
		||||
        return new Builder();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static class Builder
 | 
			
		||||
    {
 | 
			
		||||
        private String id;
 | 
			
		||||
        private String name;
 | 
			
		||||
        private String parentId;
 | 
			
		||||
        private boolean hasChildren;
 | 
			
		||||
 | 
			
		||||
        public Builder id(String id)
 | 
			
		||||
        {
 | 
			
		||||
            this.id = id;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder name(String name)
 | 
			
		||||
        {
 | 
			
		||||
            this.name = name;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder parentId(String parentId)
 | 
			
		||||
        {
 | 
			
		||||
            this.parentId = parentId;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder hasChildren(boolean hasChildren)
 | 
			
		||||
        {
 | 
			
		||||
            this.hasChildren = hasChildren;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public RestCategoryModel create()
 | 
			
		||||
        {
 | 
			
		||||
            final RestCategoryModel category = new RestCategoryModel();
 | 
			
		||||
            category.setId(id);
 | 
			
		||||
            category.setName(name);
 | 
			
		||||
            category.setParentId(parentId);
 | 
			
		||||
            category.setHasChildren(hasChildren);
 | 
			
		||||
            return category;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,7 @@ public class Categories extends ModelRequest<Categories>
 | 
			
		||||
    /**
 | 
			
		||||
     * Create single category.
 | 
			
		||||
     *
 | 
			
		||||
     * @param restCategoryModel The categories to create.
 | 
			
		||||
     * @param restCategoryModel The category to create.
 | 
			
		||||
     * @return Created category with additional data populated by the repository.
 | 
			
		||||
     */
 | 
			
		||||
    public RestCategoryModel createSingleCategory(RestCategoryModel restCategoryModel)
 | 
			
		||||
@@ -93,8 +93,19 @@ public class Categories extends ModelRequest<Categories>
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Delete category.
 | 
			
		||||
     * Update single category.
 | 
			
		||||
     * - PUT /categories/{categoryId}
 | 
			
		||||
     *
 | 
			
		||||
     * @param restCategoryModel The categories to update.
 | 
			
		||||
     * @return Created category with additional data populated by the repository.
 | 
			
		||||
     */
 | 
			
		||||
    public RestCategoryModel updateCategory(RestCategoryModel restCategoryModel)
 | 
			
		||||
    {
 | 
			
		||||
        RestRequest request = RestRequest.requestWithBody(HttpMethod.PUT, restCategoryModel.toJson(), "categories/{categoryId}", category.getId());
 | 
			
		||||
        return restWrapper.processModel(RestCategoryModel.class, request);
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Delete category.
 | 
			
		||||
     * - DELETE /categories/{categoryId}
 | 
			
		||||
     */
 | 
			
		||||
    public void deleteCategory()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -0,0 +1,91 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2022 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software.
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of
 | 
			
		||||
 * the paid license agreement will prevail.  Otherwise, the software is
 | 
			
		||||
 * provided under the following open source license terms:
 | 
			
		||||
 *
 | 
			
		||||
 * Alfresco is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * Alfresco is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *  GNU Lesser General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Lesser General Public License
 | 
			
		||||
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.alfresco.rest.categories;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.utility.data.RandomData.getRandomName;
 | 
			
		||||
import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
import static org.springframework.http.HttpStatus.CREATED;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.RestTest;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
 | 
			
		||||
abstract class CategoriesRestTest extends RestTest
 | 
			
		||||
{
 | 
			
		||||
    protected static final String ROOT_CATEGORY_ID = "-root-";
 | 
			
		||||
    protected static final String CATEGORY_NAME_PREFIX = "CategoryName";
 | 
			
		||||
    protected static final String FIELD_NAME = "name";
 | 
			
		||||
    protected static final String FIELD_ID = "id";
 | 
			
		||||
    protected static final String FIELD_PARENT_ID = "parentId";
 | 
			
		||||
    protected static final String FIELD_HAS_CHILDREN = "hasChildren";
 | 
			
		||||
 | 
			
		||||
    protected UserModel user;
 | 
			
		||||
 | 
			
		||||
    @BeforeClass(alwaysRun = true)
 | 
			
		||||
    public void dataPreparation() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a user");
 | 
			
		||||
        user = dataUser.createRandomTestUser();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected RestCategoryModel prepareCategoryUnderRoot()
 | 
			
		||||
    {
 | 
			
		||||
        return prepareCategoryUnder(ROOT_CATEGORY_ID);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected RestCategoryModel prepareCategoryUnder(final String parentId)
 | 
			
		||||
    {
 | 
			
		||||
        final RestCategoryModel parentCategory = createCategoryModelWithId(parentId);
 | 
			
		||||
        final RestCategoryModel categoryModel = createCategoryModelWithName(getRandomName(CATEGORY_NAME_PREFIX));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(parentCategory)
 | 
			
		||||
            .createSingleCategory(categoryModel);
 | 
			
		||||
        restClient.assertStatusCodeIs(CREATED);
 | 
			
		||||
 | 
			
		||||
        return createdCategory;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected RestCategoryModel createCategoryModelWithId(final String id)
 | 
			
		||||
    {
 | 
			
		||||
        return createCategoryModelWithIdAndName(id, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected RestCategoryModel createCategoryModelWithName(final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return createCategoryModelWithIdAndName(null, name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected RestCategoryModel createCategoryModelWithIdAndName(final String id, final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return RestCategoryModel.builder()
 | 
			
		||||
            .id(id)
 | 
			
		||||
            .name(name)
 | 
			
		||||
            .create();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -36,32 +36,17 @@ import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.IntStream;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.RestTest;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModelsCollection;
 | 
			
		||||
import org.alfresco.utility.data.RandomData;
 | 
			
		||||
import org.alfresco.utility.model.FolderModel;
 | 
			
		||||
import org.alfresco.utility.model.SiteModel;
 | 
			
		||||
import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
public class CreateCategoriesTests extends RestTest
 | 
			
		||||
public class CreateCategoriesTests extends CategoriesRestTest
 | 
			
		||||
{
 | 
			
		||||
    private static final String FIELD_NAME = "name";
 | 
			
		||||
    private static final String FIELD_PARENT_ID = "parentId";
 | 
			
		||||
    private static final String FIELD_HAS_CHILDREN = "hasChildren";
 | 
			
		||||
    private static final String FIELD_ID = "id";
 | 
			
		||||
    private UserModel user;
 | 
			
		||||
 | 
			
		||||
    @BeforeClass(alwaysRun = true)
 | 
			
		||||
    public void dataPreparation() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a user");
 | 
			
		||||
        user = dataUser.createRandomTestUser();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Check we can create a category as direct child of root category
 | 
			
		||||
@@ -70,10 +55,8 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateCategoryUnderRoot()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -92,10 +75,8 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateCategoryWithoutName_andFail()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(StringUtils.EMPTY);
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(StringUtils.EMPTY);
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -110,10 +91,8 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateSeveralSubCategories()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -160,10 +139,8 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateOver100SubCategories()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -208,15 +185,13 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateCategoryUnderRootAsRegularUser_andFail()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as user)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        restClient.authenticateUser(user)
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
                .createSingleCategory(aCategory);
 | 
			
		||||
        restClient.assertStatusCodeIs(FORBIDDEN).assertLastError().containsSummary("Current user does not have permission to create a category");
 | 
			
		||||
        restClient.assertStatusCodeIs(FORBIDDEN).assertLastError().containsSummary("Current user does not have permission to manage a category");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -226,11 +201,9 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    public void testCreateCategoryUnderNonExistingParent_andFail()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under non existing category node (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        final String id = "non-existing-node-id";
 | 
			
		||||
        rootCategory.setId(id);
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(id);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -249,10 +222,8 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
        final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder();
 | 
			
		||||
 | 
			
		||||
        STEP("Create a category under folder node (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId(folder.getNodeRef());
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(folder.getNodeRef());
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -263,11 +234,7 @@ public class CreateCategoriesTests extends RestTest
 | 
			
		||||
    static List<RestCategoryModel> getCategoriesToCreate(final int count)
 | 
			
		||||
    {
 | 
			
		||||
        return IntStream.range(0, count)
 | 
			
		||||
                .mapToObj(i -> {
 | 
			
		||||
                    final RestCategoryModel aSubCategory = new RestCategoryModel();
 | 
			
		||||
                    aSubCategory.setName((RandomData.getRandomName("SubCategory")));
 | 
			
		||||
                    return aSubCategory;
 | 
			
		||||
                })
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
            .mapToObj(i -> RestCategoryModel.builder().name(RandomData.getRandomName("SubCategory")).create())
 | 
			
		||||
            .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,34 +26,20 @@
 | 
			
		||||
 | 
			
		||||
package org.alfresco.rest.categories;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.RestTest;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.utility.data.RandomData;
 | 
			
		||||
import org.alfresco.utility.model.FolderModel;
 | 
			
		||||
import org.alfresco.utility.model.SiteModel;
 | 
			
		||||
import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
import static org.springframework.http.HttpStatus.BAD_REQUEST;
 | 
			
		||||
import static org.springframework.http.HttpStatus.CREATED;
 | 
			
		||||
import static org.springframework.http.HttpStatus.FORBIDDEN;
 | 
			
		||||
import static org.springframework.http.HttpStatus.NOT_FOUND;
 | 
			
		||||
import static org.springframework.http.HttpStatus.NO_CONTENT;
 | 
			
		||||
 | 
			
		||||
public class DeleteCategoriesTests extends RestTest {
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.utility.model.FolderModel;
 | 
			
		||||
import org.alfresco.utility.model.SiteModel;
 | 
			
		||||
import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
    private UserModel user;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @BeforeClass(alwaysRun = true)
 | 
			
		||||
    public void dataPreparation() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a user");
 | 
			
		||||
        user = dataUser.createRandomTestUser();
 | 
			
		||||
    }
 | 
			
		||||
public class DeleteCategoriesTests extends CategoriesRestTest
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Check we can delete a category.
 | 
			
		||||
@@ -62,7 +48,7 @@ public class DeleteCategoriesTests extends RestTest {
 | 
			
		||||
    public void testDeleteCategory()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category and send a request to delete it.");
 | 
			
		||||
        RestCategoryModel aCategory = createCategory();
 | 
			
		||||
        RestCategoryModel aCategory = prepareCategoryUnderRoot();
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingCategory(aCategory).deleteCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(NO_CONTENT);
 | 
			
		||||
 | 
			
		||||
@@ -77,9 +63,9 @@ public class DeleteCategoriesTests extends RestTest {
 | 
			
		||||
    @Test(groups = {TestGroup.REST_API})
 | 
			
		||||
    public void testDeleteCategoryAsRegularUser_andFail()
 | 
			
		||||
    {
 | 
			
		||||
        RestCategoryModel aCategory = createCategory();
 | 
			
		||||
        RestCategoryModel aCategory = prepareCategoryUnderRoot();
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(aCategory).deleteCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(FORBIDDEN).assertLastError().containsSummary("Current user does not have permission to delete a category");
 | 
			
		||||
        restClient.assertStatusCodeIs(FORBIDDEN).assertLastError().containsSummary("Current user does not have permission to manage a category");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -89,9 +75,8 @@ public class DeleteCategoriesTests extends RestTest {
 | 
			
		||||
    public void testDeleteNonExistentCategory()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Get category with non-existent id");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        final String id = "non-existing-dummy-id";
 | 
			
		||||
        rootCategory.setId(id);
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(id);
 | 
			
		||||
 | 
			
		||||
        STEP("Attempt to delete category with non-existent id and receive 404");
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingCategory(rootCategory).deleteCategory();
 | 
			
		||||
@@ -110,24 +95,8 @@ public class DeleteCategoriesTests extends RestTest {
 | 
			
		||||
        String id = folder.getNodeRef();
 | 
			
		||||
 | 
			
		||||
        STEP("Create a category, set its id to the folder id and attempt to delete it");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setId(id);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithId(id);
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingCategory(aCategory).deleteCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST).assertLastError().containsSummary("Node id does not refer to a valid category");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RestCategoryModel createCategory()
 | 
			
		||||
    {
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId("-root-");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
                .createSingleCategory(aCategory);
 | 
			
		||||
        restClient.assertStatusCodeIs(CREATED);
 | 
			
		||||
 | 
			
		||||
        return createdCategory;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,35 +35,20 @@ import static org.testng.Assert.assertTrue;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.IntStream;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.RestTest;
 | 
			
		||||
import org.alfresco.rest.core.RestResponse;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModelsCollection;
 | 
			
		||||
import org.alfresco.utility.data.RandomData;
 | 
			
		||||
import org.alfresco.utility.model.FolderModel;
 | 
			
		||||
import org.alfresco.utility.model.SiteModel;
 | 
			
		||||
import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
public class GetCategoriesTests extends RestTest
 | 
			
		||||
public class GetCategoriesTests extends CategoriesRestTest
 | 
			
		||||
{
 | 
			
		||||
    private static final List<String> DEFAULT_ROOT_CATEGORIES = List.of("Software Document Classification", "Languages", "Regions", "Tags");
 | 
			
		||||
    private static final String ROOT = "-root-";
 | 
			
		||||
    private static final String NON_EXISTING_CATEGORY_ID = "non-existing-category-id";
 | 
			
		||||
 | 
			
		||||
    private UserModel user;
 | 
			
		||||
 | 
			
		||||
    @BeforeClass(alwaysRun = true)
 | 
			
		||||
    public void dataPreparation() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a user");
 | 
			
		||||
        user = dataUser.createRandomTestUser();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Check we can get a category which we just created in as direct child of root category
 | 
			
		||||
     */
 | 
			
		||||
@@ -71,22 +56,17 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
    public void testGetCategoryById()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a category under root category (as admin)");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId(ROOT);
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("Category"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
                .createSingleCategory(aCategory);
 | 
			
		||||
        restClient.assertStatusCodeIs(CREATED);
 | 
			
		||||
 | 
			
		||||
        createdCategory.assertThat()
 | 
			
		||||
                .field("name").is(aCategory.getName());
 | 
			
		||||
        createdCategory.assertThat()
 | 
			
		||||
                .field("parentId").is(rootCategory.getId());
 | 
			
		||||
        createdCategory.assertThat()
 | 
			
		||||
                .field("hasChildren").is(false);
 | 
			
		||||
        createdCategory.assertThat().field("name").is(aCategory.getName());
 | 
			
		||||
        createdCategory.assertThat().field("parentId").is(rootCategory.getId());
 | 
			
		||||
        createdCategory.assertThat().field("hasChildren").is(false);
 | 
			
		||||
 | 
			
		||||
        STEP("Get the created category (as regular user)");
 | 
			
		||||
        final RestCategoryModel categoryFromGet =
 | 
			
		||||
@@ -102,8 +82,7 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
    public void testGetCategoryByIdProvidingRootAsId()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Get category with -root- as id");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId(ROOT);
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(rootCategory).getCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST).assertLastError().containsSummary("Node id does not refer to a valid category");
 | 
			
		||||
    }
 | 
			
		||||
@@ -119,8 +98,7 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
        final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder();
 | 
			
		||||
 | 
			
		||||
        STEP("Get category with folder id passed as id");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId(folder.getNodeRef());
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(folder.getNodeRef());
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(rootCategory).getCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST).assertLastError().containsSummary("Node id does not refer to a valid category");
 | 
			
		||||
    }
 | 
			
		||||
@@ -132,9 +110,8 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
    public void testGetCategoryByIdProvidingNonExistingId()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Get category with id which does not exist");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        final String id = NON_EXISTING_CATEGORY_ID;
 | 
			
		||||
        rootCategory.setId(id);
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(id);
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(rootCategory).getCategory();
 | 
			
		||||
        restClient.assertStatusCodeIs(NOT_FOUND).assertLastError().containsSummary(id);
 | 
			
		||||
    }
 | 
			
		||||
@@ -146,8 +123,7 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
    public void testGetCategoryChildren()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Get category children with -root- as parent id");
 | 
			
		||||
        final RestCategoryModel rootCategory = new RestCategoryModel();
 | 
			
		||||
        rootCategory.setId(ROOT);
 | 
			
		||||
        final RestCategoryModel rootCategory = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
        RestCategoryModelsCollection childCategoriesList =
 | 
			
		||||
                restClient.authenticateUser(user).withCoreAPI().usingCategory(rootCategory).getCategoryChildren();
 | 
			
		||||
        restClient.assertStatusCodeIs(OK);
 | 
			
		||||
@@ -159,8 +135,7 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
                .collect(Collectors.toList())
 | 
			
		||||
                .containsAll(DEFAULT_ROOT_CATEGORIES));
 | 
			
		||||
        STEP("Create a new category under root and make sure it is returned as one of root's children");
 | 
			
		||||
        final RestCategoryModel aCategory = new RestCategoryModel();
 | 
			
		||||
        aCategory.setName((RandomData.getRandomName("newCategoryUnderRoot")));
 | 
			
		||||
        final RestCategoryModel aCategory = createCategoryModelWithName(RandomData.getRandomName("newCategoryUnderRoot"));
 | 
			
		||||
        final RestCategoryModel createdCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
                .withCoreAPI()
 | 
			
		||||
                .usingCategory(rootCategory)
 | 
			
		||||
@@ -199,8 +174,7 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
        final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder();
 | 
			
		||||
 | 
			
		||||
        STEP("Get category children with folder id passed as parent id");
 | 
			
		||||
        final RestCategoryModel parentCategory = new RestCategoryModel();
 | 
			
		||||
        parentCategory.setId(folder.getNodeRef());
 | 
			
		||||
        final RestCategoryModel parentCategory = createCategoryModelWithId(folder.getNodeRef());
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(parentCategory).getCategoryChildren();
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST).assertLastError().containsSummary("Node id does not refer to a valid category");
 | 
			
		||||
    }
 | 
			
		||||
@@ -213,9 +187,8 @@ public class GetCategoriesTests extends RestTest
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        STEP("Get category with folder id passed as id");
 | 
			
		||||
        final RestCategoryModel parentCategory = new RestCategoryModel();
 | 
			
		||||
        final String parentId = NON_EXISTING_CATEGORY_ID;
 | 
			
		||||
        parentCategory.setId(parentId);
 | 
			
		||||
        final RestCategoryModel parentCategory = createCategoryModelWithId(parentId);
 | 
			
		||||
        restClient.authenticateUser(user).withCoreAPI().usingCategory(parentCategory).getCategoryChildren();
 | 
			
		||||
        restClient.assertStatusCodeIs(NOT_FOUND).assertLastError().containsSummary(parentId);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,214 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2022 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software.
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of
 | 
			
		||||
 * the paid license agreement will prevail.  Otherwise, the software is
 | 
			
		||||
 * provided under the following open source license terms:
 | 
			
		||||
 *
 | 
			
		||||
 * Alfresco is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * Alfresco is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *  GNU Lesser General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Lesser General Public License
 | 
			
		||||
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.alfresco.rest.categories;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.utility.data.RandomData.getRandomName;
 | 
			
		||||
import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
import static org.springframework.http.HttpStatus.BAD_REQUEST;
 | 
			
		||||
import static org.springframework.http.HttpStatus.FORBIDDEN;
 | 
			
		||||
import static org.springframework.http.HttpStatus.NOT_FOUND;
 | 
			
		||||
import static org.springframework.http.HttpStatus.OK;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.model.RestCategoryModel;
 | 
			
		||||
import org.alfresco.utility.model.FolderModel;
 | 
			
		||||
import org.alfresco.utility.model.SiteModel;
 | 
			
		||||
import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
public class UpdateCategoriesTests extends CategoriesRestTest
 | 
			
		||||
{
 | 
			
		||||
    private static final String CATEGORY_NEW_NAME_PREFIX = "NewCategoryName";
 | 
			
		||||
    private static final String IGNORE_FIELD_NAME = FIELD_NAME;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update a category (direct child of root category)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_asAdmin()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare as admin a category under root category");
 | 
			
		||||
        final RestCategoryModel createdCategory = prepareCategoryUnderRoot();
 | 
			
		||||
 | 
			
		||||
        STEP("Update as admin newly created category");
 | 
			
		||||
        final String categoryNewName = getRandomName(CATEGORY_NEW_NAME_PREFIX);
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(categoryNewName);
 | 
			
		||||
        final RestCategoryModel updatedCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(createdCategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(OK);
 | 
			
		||||
        updatedCategory.assertThat().isEqualTo(createdCategory, IGNORE_FIELD_NAME);
 | 
			
		||||
        updatedCategory.assertThat().field(FIELD_NAME).isNot(createdCategory.getName());
 | 
			
		||||
        updatedCategory.assertThat().field(FIELD_NAME).is(categoryNewName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update a subcategory of root's child category
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateSubcategory_asAdmin()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare as admin a category under root category");
 | 
			
		||||
        final RestCategoryModel createdCategory = prepareCategoryUnderRoot();
 | 
			
		||||
 | 
			
		||||
        STEP("Prepare as admin a subcategory of root's child category");
 | 
			
		||||
        final RestCategoryModel createdSubcategory = prepareCategoryUnder(createdCategory.getId());
 | 
			
		||||
 | 
			
		||||
        STEP("Update as admin newly created subcategory");
 | 
			
		||||
        final String categoryNewName = getRandomName(CATEGORY_NEW_NAME_PREFIX);
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(categoryNewName);
 | 
			
		||||
        final RestCategoryModel updatedCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(createdSubcategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(OK);
 | 
			
		||||
        updatedCategory.assertThat().isEqualTo(createdSubcategory, IGNORE_FIELD_NAME);
 | 
			
		||||
        updatedCategory.assertThat().field(FIELD_NAME).is(categoryNewName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a category as a user and expect 403 (Forbidden) in response
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_asUserAndExpect403()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare as admin a category under root category");
 | 
			
		||||
        final RestCategoryModel createdCategory = prepareCategoryUnderRoot();
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as user newly created category");
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(getRandomName(CATEGORY_NEW_NAME_PREFIX));
 | 
			
		||||
        restClient.authenticateUser(user)
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(createdCategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(FORBIDDEN);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a non-existing category and receive 404 (Not Found)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_usingNonExistingCategoryAndExpect404()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create a fake parent category");
 | 
			
		||||
        final RestCategoryModel nonExistingCategory = createCategoryModelWithIdAndName("non-existing-dummy-id", getRandomName(CATEGORY_NAME_PREFIX));
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as admin fake category");
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(getRandomName(CATEGORY_NEW_NAME_PREFIX));
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(nonExistingCategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(NOT_FOUND);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a non-category (folder) node and receive 400 (Bad Request)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_usingFolderNodeAndExpect400()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare a site and a folder inside it");
 | 
			
		||||
        final UserModel user = dataUser.createRandomTestUser();
 | 
			
		||||
        final SiteModel site = dataSite.usingUser(user).createPublicRandomSite();
 | 
			
		||||
        final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder();
 | 
			
		||||
        final RestCategoryModel categoryWithFolderId = createCategoryModelWithIdAndName(folder.getNodeRef(), getRandomName(CATEGORY_NAME_PREFIX));
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as admin folder node as category");
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(getRandomName(CATEGORY_NEW_NAME_PREFIX));
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(categoryWithFolderId)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a root category and receive 400 (Bad Request)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_usingRootCategoryAndExpect400()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Create root category model");
 | 
			
		||||
        final RestCategoryModel rootCategoryModel = createCategoryModelWithId(ROOT_CATEGORY_ID);
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as admin root category");
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(getRandomName(CATEGORY_NEW_NAME_PREFIX));
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(rootCategoryModel)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a category with an empty name and receive 400 (Bad Request)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_withEmptyNameAndExpect400()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare as admin a category under root category");
 | 
			
		||||
        final RestCategoryModel createdCategory = prepareCategoryUnderRoot();
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as admin newly created category with a category without name");
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithName(null);
 | 
			
		||||
        restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(createdCategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(BAD_REQUEST);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to update a category with an invalid, but not important ID in body and receive 200 (OK)
 | 
			
		||||
     */
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API})
 | 
			
		||||
    public void testUpdateCategory_withIgnoredInvalidIdInBodyAndExpect200()
 | 
			
		||||
    {
 | 
			
		||||
        STEP("Prepare as admin a category under root category");
 | 
			
		||||
        final RestCategoryModel createdCategory = prepareCategoryUnderRoot();
 | 
			
		||||
 | 
			
		||||
        STEP("Try to update as admin newly created category with a category with invalid ID and receive 200");
 | 
			
		||||
        final String categoryNewName = getRandomName(CATEGORY_NEW_NAME_PREFIX);
 | 
			
		||||
        final RestCategoryModel fixedCategoryModel = createCategoryModelWithIdAndName("non-existing-dummy-id", categoryNewName);
 | 
			
		||||
        final RestCategoryModel updatedCategory = restClient.authenticateUser(dataUser.getAdminUser())
 | 
			
		||||
            .withCoreAPI()
 | 
			
		||||
            .usingCategory(createdCategory)
 | 
			
		||||
            .updateCategory(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        restClient.assertStatusCodeIs(OK);
 | 
			
		||||
        updatedCategory.assertThat().field(FIELD_NAME).is(categoryNewName);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
log4j.rootLogger=INFO, file, stdout
 | 
			
		||||
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
 | 
			
		||||
log4j.appender.file.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# Direct log messages to stdout
 | 
			
		||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.stdout.Target=System.out
 | 
			
		||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
 | 
			
		||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
 | 
			
		||||
log4j.appender.testrailLog.MaxBackupIndex=10
 | 
			
		||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
log4j.category.testrail=INFO, testrailLog
 | 
			
		||||
log4j.additivity.testrail=false
 | 
			
		||||
@@ -0,0 +1,42 @@
 | 
			
		||||
# Root logger option
 | 
			
		||||
rootLogger.level=info
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=./target/reports/alfresco-tas.log
 | 
			
		||||
appender.rolling.filePattern=./target/reports/alfresco-tas.log.%i
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.size.size=10MB
 | 
			
		||||
appender.rolling.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.rolling.strategy.max=10
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
# TestRail particular log file
 | 
			
		||||
# Direct log messages to a log file
 | 
			
		||||
logger.testrail.name=testrail
 | 
			
		||||
logger.testrail.level=info
 | 
			
		||||
logger.testrail.additivity=false
 | 
			
		||||
logger.testrail.appenderRef.testrail.ref=TestrailAppender
 | 
			
		||||
 | 
			
		||||
appender.testrail.name=TestrailAppender
 | 
			
		||||
appender.testrail.type=RollingFile
 | 
			
		||||
appender.testrail.fileName=./target/reports/alfresco-testrail.log
 | 
			
		||||
appender.testrail.filePattern=./target/reports/alfresco-testrail.log.%i
 | 
			
		||||
appender.testrail.layout.type=PatternLayout
 | 
			
		||||
appender.testrail.layout.pattern=%d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.testrail.policies.type=Policies
 | 
			
		||||
appender.testrail.policies.size.type=SizeBasedTriggeringPolicy
 | 
			
		||||
appender.testrail.policies.size.size=10MB
 | 
			
		||||
appender.testrail.strategy.type=DefaultRolloverStrategy
 | 
			
		||||
appender.testrail.strategy.max=10
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,6 @@ appender.rolling.policies.time.interval = 1
 | 
			
		||||
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
 | 
			
		||||
 | 
			
		||||
# Hibernate
 | 
			
		||||
 | 
			
		||||
logger.hibernate.name=org.hibernate
 | 
			
		||||
logger.hibernate.level=error
 | 
			
		||||
 | 
			
		||||
@@ -45,42 +44,29 @@ logger.hibernate-type.level=warn
 | 
			
		||||
logger.hibernate-cfg-SettingsFactory.name=org.hibernate.cfg.SettingsFactory
 | 
			
		||||
logger.hibernate-cfg-SettingsFactory.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Spring
 | 
			
		||||
 | 
			
		||||
logger.springframework.name=org.springframework
 | 
			
		||||
logger.springframework.level=warn
 | 
			
		||||
 | 
			
		||||
# Turn off Spring remoting warnings that should really be info or debug.
 | 
			
		||||
 | 
			
		||||
logger.springframework-remoting-support.name=org.springframework.remoting.support
 | 
			
		||||
logger.springframework-remoting-support.level=error
 | 
			
		||||
 | 
			
		||||
logger.springframework-util.name=org.springframework.util
 | 
			
		||||
logger.springframework-util.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Axis/WSS4J
 | 
			
		||||
 | 
			
		||||
logger.apache-axis.name=org.apache.axis
 | 
			
		||||
logger.apache-axis.level=info
 | 
			
		||||
 | 
			
		||||
logger.apache-ws.name=org.apache.ws
 | 
			
		||||
logger.apache-ws.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# CXF
 | 
			
		||||
 | 
			
		||||
logger.apache-cxf.name=org.apache.cxf
 | 
			
		||||
logger.apache-cxf.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# MyFaces
 | 
			
		||||
 | 
			
		||||
logger.apache-myfaces-util-DebugUtils.name=org.apache.myfaces.util.DebugUtils
 | 
			
		||||
logger.apache-myfaces-util-DebugUtils.level=info
 | 
			
		||||
 | 
			
		||||
@@ -93,17 +79,11 @@ logger.apache-myfaces-application-jsp-JspViewHandlerImpl.level=error
 | 
			
		||||
logger.apache-myfaces-taglib.name=org.apache.myfaces.taglib
 | 
			
		||||
logger.apache-myfaces-taglib.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# log prepared statement cache activity ###
 | 
			
		||||
 | 
			
		||||
logger.hibernate-ps-PreparedStatementCache.name=org.hibernate.ps.PreparedStatementCache
 | 
			
		||||
logger.hibernate-ps-PreparedStatementCache.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Alfresco
 | 
			
		||||
 | 
			
		||||
logger.alfresco.name=org.alfresco
 | 
			
		||||
logger.alfresco.level=error
 | 
			
		||||
 | 
			
		||||
@@ -146,8 +126,6 @@ logger.alfresco-repo-security-sync.level=info
 | 
			
		||||
logger.alfresco-repo-security-person.name=org.alfresco.repo.security.person
 | 
			
		||||
logger.alfresco-repo-security-person.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-sample.name=org.alfresco.sample
 | 
			
		||||
logger.alfresco-sample.level=info
 | 
			
		||||
 | 
			
		||||
@@ -172,34 +150,25 @@ logger.alfresco-service-descriptor-DescriptorService.level=info
 | 
			
		||||
#logger.alfresco-web-page.name=org.alfresco.web.page
 | 
			
		||||
#logger.alfresco-web-page.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap
 | 
			
		||||
logger.alfresco-repo-importer-ImporterBootstrap.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap
 | 
			
		||||
#logger.alfresco-repo-importer-ImporterBootstrap.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-admin-patch-PatchExecuter.name=org.alfresco.repo.admin.patch.PatchExecuter
 | 
			
		||||
logger.alfresco-repo-admin-patch-PatchExecuter.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.name=org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl
 | 
			
		||||
logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Specific patches
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.name=org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch
 | 
			
		||||
logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-version-VersionMigrator.name=org.alfresco.repo.version.VersionMigrator
 | 
			
		||||
logger.alfresco-repo-version-VersionMigrator.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-module-ModuleServiceImpl.name=org.alfresco.repo.module.ModuleServiceImpl
 | 
			
		||||
logger.alfresco-repo-module-ModuleServiceImpl.level=info
 | 
			
		||||
 | 
			
		||||
@@ -239,74 +208,49 @@ logger.alfresco-enterprise-repo-cluster.level=info
 | 
			
		||||
logger.alfresco-repo-version-Version2ServiceImpl.name=org.alfresco.repo.version.Version2ServiceImpl
 | 
			
		||||
logger.alfresco-repo-version-Version2ServiceImpl.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-app-DebugPhaseListener.name=org.alfresco.web.app.DebugPhaseListener
 | 
			
		||||
#logger.alfresco-web-app-DebugPhaseListener.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-db-NodeStringLengthWorker.name=org.alfresco.repo.node.db.NodeStringLengthWorker
 | 
			
		||||
logger.alfresco-repo-node-db-NodeStringLengthWorker.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-workflow.name=org.alfresco.repo.workflow
 | 
			
		||||
logger.alfresco-repo-workflow.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# FTP server debugging
 | 
			
		||||
 | 
			
		||||
logger.alfresco-ftp-protocol.name=org.alfresco.ftp.protocol
 | 
			
		||||
logger.alfresco-ftp-protocol.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-ftp-server.name=org.alfresco.ftp.server
 | 
			
		||||
#logger.alfresco-ftp-server.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# WebDAV debugging
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol
 | 
			
		||||
#logger.alfresco-webdav-protocol.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol
 | 
			
		||||
logger.alfresco-webdav-protocol.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Kerberos servlet filters
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.name=org.alfresco.web.app.servlet.KerberosAuthenticationFilter
 | 
			
		||||
#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.name=org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter
 | 
			
		||||
#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# File servers
 | 
			
		||||
 | 
			
		||||
logger.alfresco-fileserver.name=org.alfresco.fileserver
 | 
			
		||||
logger.alfresco-fileserver.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Repo filesystem debug logging
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-filesys-repo-ContentDiskDriver.name=org.alfresco.filesys.repo.ContentDiskDriver
 | 
			
		||||
#logger.alfresco-filesys-repo-ContentDiskDriver.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-integrity.name=org.alfresco.repo.node.integrity
 | 
			
		||||
logger.alfresco-repo-node-integrity.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Authentication
 | 
			
		||||
 | 
			
		||||
logger.alfresco-filesys-auth-ftp.name=org.alfresco.filesys.auth.ftp
 | 
			
		||||
logger.alfresco-filesys-auth-ftp.level=warn
 | 
			
		||||
 | 
			
		||||
@@ -323,22 +267,16 @@ logger.alfresco-web-app-servlet.name=org.alfresco.web.app.servlet
 | 
			
		||||
logger.alfresco-web-app-servlet.level=warn
 | 
			
		||||
 | 
			
		||||
# Used also for brute force attack detection
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-security-authentication.name=org.alfresco.repo.security.authentication
 | 
			
		||||
logger.alfresco-repo-security-authentication.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Indexer debugging
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer
 | 
			
		||||
logger.alfresco-repo-search-Indexer.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer
 | 
			
		||||
#logger.alfresco-repo-search-Indexer.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index.level=error
 | 
			
		||||
 | 
			
		||||
@@ -348,97 +286,62 @@ logger.alfresco-repo-search-impl-lucene-fts-FullTextSearchIndexerImpl.level=warn
 | 
			
		||||
#logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index
 | 
			
		||||
#logger.alfresco-repo-search-impl-lucene-index.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Audit debugging
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-audit.name=org.alfresco.repo.audit
 | 
			
		||||
#logger.alfresco-repo-audit.level=debug
 | 
			
		||||
#logger.alfresco-repo-audit-model.name=org.alfresco.repo.audit.model
 | 
			
		||||
#logger.alfresco-repo-audit-model.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Property sheet and modelling debugging
 | 
			
		||||
 | 
			
		||||
# change to error to hide the warnings about missing properties and associations
 | 
			
		||||
 | 
			
		||||
logger.missingProperties.name=alfresco.missingProperties
 | 
			
		||||
logger.missingProperties.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dictionary/Model debugging
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-dictionary.name=org.alfresco.repo.dictionary
 | 
			
		||||
logger.alfresco-repo-dictionary.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-dictionary-types-period.name=org.alfresco.repo.dictionary.types.period
 | 
			
		||||
logger.alfresco-repo-dictionary-types-period.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Virtualization Server Registry
 | 
			
		||||
 | 
			
		||||
logger.alfresco-mbeans-VirtServerRegistry.name=org.alfresco.mbeans.VirtServerRegistry
 | 
			
		||||
logger.alfresco-mbeans-VirtServerRegistry.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Spring context runtime property setter
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-RuntimeSystemPropertiesSetter.name=org.alfresco.util.RuntimeSystemPropertiesSetter
 | 
			
		||||
logger.alfresco-util-RuntimeSystemPropertiesSetter.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Debugging options for clustering
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-content-ReplicatingContentStore.name=org.alfresco.repo.content.ReplicatingContentStore
 | 
			
		||||
logger.alfresco-repo-content-ReplicatingContentStore.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-content-replication.name=org.alfresco.repo.content.replication
 | 
			
		||||
logger.alfresco-repo-content-replication.level=error
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-deploy-DeploymentServiceImpl.name=org.alfresco.repo.deploy.DeploymentServiceImpl
 | 
			
		||||
#logger.alfresco-repo-deploy-DeploymentServiceImpl.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Activity service
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-activities.name=org.alfresco.repo.activities
 | 
			
		||||
logger.alfresco-repo-activities.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# User usage tracking
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-usage.name=org.alfresco.repo.usage
 | 
			
		||||
logger.alfresco-repo-usage.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Sharepoint
 | 
			
		||||
 | 
			
		||||
logger.alfresco-module-vti.name=org.alfresco.module.vti
 | 
			
		||||
logger.alfresco-module-vti.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Forms Engine
 | 
			
		||||
 | 
			
		||||
logger.alfresco-web-config-forms.name=org.alfresco.web.config.forms
 | 
			
		||||
logger.alfresco-web-config-forms.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-web-scripts-forms.name=org.alfresco.web.scripts.forms
 | 
			
		||||
logger.alfresco-web-scripts-forms.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# CMIS
 | 
			
		||||
 | 
			
		||||
logger.alfresco-opencmis.name=org.alfresco.opencmis
 | 
			
		||||
logger.alfresco-opencmis.level=error
 | 
			
		||||
 | 
			
		||||
@@ -460,35 +363,20 @@ logger.apache-chemistry-opencmis-server-impl-browser-CmisBrowserBindingServlet.l
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.name=org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.level=off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# IMAP
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-imap.name=org.alfresco.repo.imap
 | 
			
		||||
logger.alfresco-repo-imap.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# JBPM
 | 
			
		||||
 | 
			
		||||
# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler
 | 
			
		||||
 | 
			
		||||
logger.jbpm-graph-def-GraphElement.name=org.jbpm.graph.def.GraphElement
 | 
			
		||||
logger.jbpm-graph-def-GraphElement.level=fatal
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-googledocs.name=org.alfresco.repo.googledocs
 | 
			
		||||
#logger.alfresco-repo-googledocs.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
###### Scripting #######
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Web Framework
 | 
			
		||||
 | 
			
		||||
logger.springframework-extensions-webscripts.name=org.springframework.extensions.webscripts
 | 
			
		||||
logger.springframework-extensions-webscripts.level=info
 | 
			
		||||
 | 
			
		||||
@@ -498,10 +386,7 @@ logger.springframework-extensions-webscripts-ScriptLogger.level=warn
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptDebugger.name=org.springframework.extensions.webscripts.ScriptDebugger
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptDebugger.level=off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Repository
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-web-scripts.name=org.alfresco.repo.web.scripts
 | 
			
		||||
logger.alfresco-repo-web-scripts.level=warn
 | 
			
		||||
 | 
			
		||||
@@ -520,8 +405,6 @@ logger.alfresco-repo-jscript-ScriptLogger.level=warn
 | 
			
		||||
logger.alfresco-repo-cmis-rest-CMISTest.name=org.alfresco.repo.cmis.rest.CMISTest
 | 
			
		||||
logger.alfresco-repo-cmis-rest-CMISTest.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.name=org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.level=off
 | 
			
		||||
 | 
			
		||||
@@ -531,103 +414,63 @@ logger.alfresco-repo-domain-schema-script-ScriptExecutorImpl.level=info
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.name=org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.level=off
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.name=org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl
 | 
			
		||||
logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Bulk Filesystem Import Tool
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-bulkimport.name=org.alfresco.repo.bulkimport
 | 
			
		||||
logger.alfresco-repo-bulkimport.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Freemarker
 | 
			
		||||
 | 
			
		||||
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
 | 
			
		||||
 | 
			
		||||
logger.runtime.name=freemarker.runtime
 | 
			
		||||
logger.runtime.level=
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Metadata extraction
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.name=org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter
 | 
			
		||||
logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# no index support
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.name=org.alfresco.repo.search.impl.noindex.NoIndexIndexer
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.level=fatal
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.name=org.alfresco.repo.search.impl.noindex.NoIndexSearchService
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.level=fatal
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# lucene index warnings
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index-IndexInfo.name=org.alfresco.repo.search.impl.lucene.index.IndexInfo
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index-IndexInfo.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Warn about RMI socket bind retries.
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.name=org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory
 | 
			
		||||
logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-usage-RepoUsageMonitor.name=org.alfresco.repo.usage.RepoUsageMonitor
 | 
			
		||||
logger.alfresco-repo-usage-RepoUsageMonitor.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Authorization
 | 
			
		||||
 | 
			
		||||
logger.alfresco-enterprise-repo-authorization-AuthorizationService.name=org.alfresco.enterprise.repo.authorization.AuthorizationService
 | 
			
		||||
logger.alfresco-enterprise-repo-authorization-AuthorizationService.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-enterprise-repo-authorization-AuthorizationsConsistencyMonitor.name=org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor
 | 
			
		||||
logger.alfresco-enterprise-repo-authorization-AuthorizationsConsistencyMonitor.level=warn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# HeartBeat
 | 
			
		||||
 | 
			
		||||
logger.alfresco-heartbeat.name=org.alfresco.heartbeat
 | 
			
		||||
logger.alfresco-heartbeat.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Transformations
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-content-transform-TransformerDebug.name=org.alfresco.repo.content.transform.TransformerDebug
 | 
			
		||||
#logger.alfresco-repo-content-transform-TransformerDebug.level=debug
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-content-transform.name=org.alfresco.repo.content.transform
 | 
			
		||||
logger.alfresco-repo-content-transform.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Repository probes
 | 
			
		||||
 | 
			
		||||
logger.alfresco-rest-api-probes-ProbeEntityResource.name=org.alfresco.rest.api.probes.ProbeEntityResource
 | 
			
		||||
logger.alfresco-rest-api-probes-ProbeEntityResource.level=info
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ActiveMQ
 | 
			
		||||
 | 
			
		||||
logger.apache-activemq-transport-failover.name=org.apache.activemq.transport.failover
 | 
			
		||||
logger.apache-activemq-transport-failover.level=warn
 | 
			
		||||
 | 
			
		||||
logger.apache-activemq-transport-failover.level=warn
 | 
			
		||||
							
								
								
									
										6
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								pom.xml
									
									
									
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
    <version>20.45-DEV</version>
 | 
			
		||||
    <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
    <name>Alfresco Community Repo Parent</name>
 | 
			
		||||
 | 
			
		||||
@@ -120,7 +120,7 @@
 | 
			
		||||
        <dependency.mysql.version>8.0.30</dependency.mysql.version>
 | 
			
		||||
        <dependency.mysql-image.version>8</dependency.mysql-image.version>
 | 
			
		||||
        <dependency.mariadb.version>2.7.4</dependency.mariadb.version>
 | 
			
		||||
        <dependency.tas-utility.version>3.0.56</dependency.tas-utility.version>
 | 
			
		||||
        <dependency.tas-utility.version>3.0.57</dependency.tas-utility.version>
 | 
			
		||||
        <dependency.rest-assured.version>5.2.0</dependency.rest-assured.version>
 | 
			
		||||
        <dependency.tas-email.version>1.11</dependency.tas-email.version>
 | 
			
		||||
        <dependency.tas-webdav.version>1.7</dependency.tas-webdav.version>
 | 
			
		||||
@@ -148,7 +148,7 @@
 | 
			
		||||
        <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
 | 
			
		||||
        <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
 | 
			
		||||
        <url>https://github.com/Alfresco/alfresco-community-repo</url>
 | 
			
		||||
        <tag>20.45-DEV</tag>
 | 
			
		||||
        <tag>HEAD</tag>
 | 
			
		||||
    </scm>
 | 
			
		||||
 | 
			
		||||
    <distributionManagement>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -36,12 +36,21 @@ import org.alfresco.service.Experimental;
 | 
			
		||||
@Experimental
 | 
			
		||||
public interface Categories
 | 
			
		||||
{
 | 
			
		||||
    Category getCategoryById(String id, Parameters params);
 | 
			
		||||
    Category getCategoryById(String id, Parameters parameters);
 | 
			
		||||
 | 
			
		||||
    List<Category> createSubcategories(String parentCategoryId, List<Category> categories, Parameters parameters);
 | 
			
		||||
 | 
			
		||||
    CollectionWithPagingInfo<Category> getCategoryChildren(String parentCategoryId, Parameters params);
 | 
			
		||||
    CollectionWithPagingInfo<Category> getCategoryChildren(String parentCategoryId, Parameters parameters);
 | 
			
		||||
 | 
			
		||||
    void deleteCategoryById(String id, Parameters params);
 | 
			
		||||
    /**
 | 
			
		||||
     * Update category by ID. Currently, it's possible only to update the name of category.
 | 
			
		||||
     *
 | 
			
		||||
     * @param id Category ID.
 | 
			
		||||
     * @param fixedCategoryModel Fixed category model.
 | 
			
		||||
     * @return Updated category.
 | 
			
		||||
     */
 | 
			
		||||
    Category updateCategoryById(String id, Category fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
    void deleteCategoryById(String id, Parameters parameters);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,8 @@ import org.alfresco.rest.framework.resource.parameters.Parameters;
 | 
			
		||||
 */
 | 
			
		||||
@EntityResource(name = "categories", title = "Categories")
 | 
			
		||||
public class CategoriesEntityResource implements EntityResourceAction.ReadById<Category>,
 | 
			
		||||
                                                EntityResourceAction.Delete
 | 
			
		||||
                                                 EntityResourceAction.Update<Category>,
 | 
			
		||||
                                                 EntityResourceAction.Delete
 | 
			
		||||
{
 | 
			
		||||
    private final Categories categories;
 | 
			
		||||
 | 
			
		||||
@@ -51,20 +52,45 @@ public class CategoriesEntityResource implements EntityResourceAction.ReadById<C
 | 
			
		||||
        this.categories = categories;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @WebApiDescription(title = "Get category by its id",
 | 
			
		||||
            description = "Retrieves a category given category node id",
 | 
			
		||||
            successStatus = HttpServletResponse.SC_OK)
 | 
			
		||||
    /**
 | 
			
		||||
     * GET /categories/{categoryId}
 | 
			
		||||
     */
 | 
			
		||||
    @WebApiDescription(
 | 
			
		||||
        title = "Get category by its ID",
 | 
			
		||||
        description = "Retrieves a category given category node id",
 | 
			
		||||
        successStatus = HttpServletResponse.SC_OK
 | 
			
		||||
    )
 | 
			
		||||
    @Override
 | 
			
		||||
    public Category readById(String id, Parameters parameters) throws EntityNotFoundException
 | 
			
		||||
    {
 | 
			
		||||
        return categories.getCategoryById(id, parameters);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @WebApiDescription(title = "Delete category",
 | 
			
		||||
                description = "Delete a category given its node id",
 | 
			
		||||
                successStatus = HttpServletResponse.SC_NO_CONTENT)
 | 
			
		||||
    /**
 | 
			
		||||
     * PUT /categories/{categoryId}
 | 
			
		||||
     */
 | 
			
		||||
    @WebApiDescription(
 | 
			
		||||
        title = "Update category",
 | 
			
		||||
        description = "Update a single category by its ID",
 | 
			
		||||
        successStatus = HttpServletResponse.SC_OK
 | 
			
		||||
    )
 | 
			
		||||
    @Override
 | 
			
		||||
    public void delete(String id, Parameters parameters) {
 | 
			
		||||
    public Category update(String id, Category categoryModel, Parameters parameters)
 | 
			
		||||
    {
 | 
			
		||||
        return categories.updateCategoryById(id, categoryModel);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * DELETE /categories/{categoryId}
 | 
			
		||||
     */
 | 
			
		||||
    @WebApiDescription(
 | 
			
		||||
        title = "Delete category",
 | 
			
		||||
        description = "Delete a category given its node ID",
 | 
			
		||||
        successStatus = HttpServletResponse.SC_NO_CONTENT
 | 
			
		||||
    )
 | 
			
		||||
    @Override
 | 
			
		||||
    public void delete(String id, Parameters parameters)
 | 
			
		||||
    {
 | 
			
		||||
        categories.deleteCategoryById(id, parameters);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,8 @@ import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
 | 
			
		||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
 | 
			
		||||
 | 
			
		||||
@RelationshipResource(name = "subcategories",  entityResource = CategoriesEntityResource.class, title = "Subcategories")
 | 
			
		||||
public class SubcategoriesRelation implements RelationshipResourceAction.Create<Category>, RelationshipResourceAction.Read<Category>
 | 
			
		||||
public class SubcategoriesRelation implements RelationshipResourceAction.Create<Category>,
 | 
			
		||||
                                              RelationshipResourceAction.Read<Category>
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    private final Categories categories;
 | 
			
		||||
@@ -49,6 +50,9 @@ public class SubcategoriesRelation implements RelationshipResourceAction.Create<
 | 
			
		||||
        this.categories = categories;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * POST /categories/{categoryId}/subcategories
 | 
			
		||||
     */
 | 
			
		||||
    @WebApiDescription(title = "Create a category",
 | 
			
		||||
            description = "Creates one or more categories under a parent category",
 | 
			
		||||
            successStatus = HttpServletResponse.SC_CREATED)
 | 
			
		||||
@@ -58,6 +62,9 @@ public class SubcategoriesRelation implements RelationshipResourceAction.Create<
 | 
			
		||||
        return categories.createSubcategories(parentCategoryId, categoryList, parameters);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * GET /categories/{categoryId}/subcategories
 | 
			
		||||
     */
 | 
			
		||||
    @WebApiDescription(title = "List category direct children",
 | 
			
		||||
            description = "Lists direct children of a parent category",
 | 
			
		||||
            successStatus = HttpServletResponse.SC_OK)
 | 
			
		||||
 
 | 
			
		||||
@@ -49,6 +49,7 @@ import org.alfresco.service.cmr.repository.NodeService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.StoreRef;
 | 
			
		||||
import org.alfresco.service.cmr.search.CategoryService;
 | 
			
		||||
import org.alfresco.service.cmr.security.AuthorityService;
 | 
			
		||||
import org.alfresco.service.namespace.QName;
 | 
			
		||||
import org.alfresco.service.namespace.RegexQNamePattern;
 | 
			
		||||
import org.apache.commons.collections.CollectionUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
@@ -57,9 +58,9 @@ import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
public class CategoriesImpl implements Categories
 | 
			
		||||
{
 | 
			
		||||
    static final String NOT_A_VALID_CATEGORY = "Node id does not refer to a valid category";
 | 
			
		||||
    static final String NO_PERMISSION_TO_CREATE_A_CATEGORY = "Current user does not have permission to create a category";
 | 
			
		||||
    static final String NO_PERMISSION_TO_DELETE_A_CATEGORY = "Current user does not have permission to delete a category";
 | 
			
		||||
    private static final String NOT_NULL_OR_EMPTY = "Category name must not be null or empty";
 | 
			
		||||
    static final String NO_PERMISSION_TO_MANAGE_A_CATEGORY = "Current user does not have permission to manage a category";
 | 
			
		||||
    static final String NOT_NULL_OR_EMPTY = "Category name must not be null or empty";
 | 
			
		||||
    static final String FIELD_NOT_MATCH = "Category field: %s does not match the original one";
 | 
			
		||||
 | 
			
		||||
    private final AuthorityService authorityService;
 | 
			
		||||
    private final CategoryService categoryService;
 | 
			
		||||
@@ -89,10 +90,7 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Category> createSubcategories(String parentCategoryId, List<Category> categories, Parameters parameters)
 | 
			
		||||
    {
 | 
			
		||||
        if (!authorityService.hasAdminAuthority())
 | 
			
		||||
        {
 | 
			
		||||
            throw new PermissionDeniedException(NO_PERMISSION_TO_CREATE_A_CATEGORY);
 | 
			
		||||
        }
 | 
			
		||||
        verifyAdminAuthority();
 | 
			
		||||
        final NodeRef parentNodeRef = getCategoryNodeRef(parentCategoryId);
 | 
			
		||||
        final List<NodeRef> categoryNodeRefs = categories.stream()
 | 
			
		||||
                .map(c -> createCategoryNodeRef(parentNodeRef, c))
 | 
			
		||||
@@ -116,15 +114,26 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCategoryById(String id, Parameters params)
 | 
			
		||||
    public Category updateCategoryById(final String id, final Category fixedCategoryModel)
 | 
			
		||||
    {
 | 
			
		||||
        if (!authorityService.hasAdminAuthority())
 | 
			
		||||
        verifyAdminAuthority();
 | 
			
		||||
        final NodeRef categoryNodeRef = getCategoryNodeRef(id);
 | 
			
		||||
        if (isRootCategory(categoryNodeRef))
 | 
			
		||||
        {
 | 
			
		||||
            throw new PermissionDeniedException(NO_PERMISSION_TO_DELETE_A_CATEGORY);
 | 
			
		||||
            throw new InvalidArgumentException(NOT_A_VALID_CATEGORY, new String[]{id});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        final NodeRef nodeRef = nodes.validateNode(id);
 | 
			
		||||
        if (isNotACategory(nodeRef) || isRootCategory(nodeRef))
 | 
			
		||||
        verifyCategoryFields(fixedCategoryModel);
 | 
			
		||||
 | 
			
		||||
        return mapToCategory(changeCategoryName(categoryNodeRef, fixedCategoryModel.getName()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteCategoryById(String id, Parameters parameters)
 | 
			
		||||
    {
 | 
			
		||||
        verifyAdminAuthority();
 | 
			
		||||
        final NodeRef nodeRef = getCategoryNodeRef(id);
 | 
			
		||||
        if (isRootCategory(nodeRef))
 | 
			
		||||
        {
 | 
			
		||||
            throw new InvalidArgumentException(NOT_A_VALID_CATEGORY, new String[]{id});
 | 
			
		||||
        }
 | 
			
		||||
@@ -132,6 +141,14 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
        nodeService.deleteNode(nodeRef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void verifyAdminAuthority()
 | 
			
		||||
    {
 | 
			
		||||
        if (!authorityService.hasAdminAuthority())
 | 
			
		||||
        {
 | 
			
		||||
            throw new PermissionDeniedException(NO_PERMISSION_TO_MANAGE_A_CATEGORY);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This method gets category NodeRef for a given category id.
 | 
			
		||||
     * If '-root-' is passed as category id, then it's retrieved as a call to {@link org.alfresco.service.cmr.search.CategoryService#getRootCategoryNodeRef}
 | 
			
		||||
@@ -164,17 +181,10 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
 | 
			
		||||
    private NodeRef createCategoryNodeRef(NodeRef parentNodeRef, Category c)
 | 
			
		||||
    {
 | 
			
		||||
        if (StringUtils.isEmpty(c.getName())) {
 | 
			
		||||
            throw new InvalidArgumentException(NOT_NULL_OR_EMPTY);
 | 
			
		||||
        }
 | 
			
		||||
        verifyCategoryFields(c);
 | 
			
		||||
        return categoryService.createCategory(parentNodeRef, c.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isNotACategory(NodeRef nodeRef)
 | 
			
		||||
    {
 | 
			
		||||
        return !nodes.isSubClass(nodeRef, ContentModel.TYPE_CATEGORY, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Category mapToCategory(NodeRef nodeRef)
 | 
			
		||||
    {
 | 
			
		||||
        final Node categoryNode = nodes.getNode(nodeRef.getId());
 | 
			
		||||
@@ -188,6 +198,11 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
                .create();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isNotACategory(NodeRef nodeRef)
 | 
			
		||||
    {
 | 
			
		||||
        return !nodes.isSubClass(nodeRef, ContentModel.TYPE_CATEGORY, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isRootCategory(final NodeRef nodeRef)
 | 
			
		||||
    {
 | 
			
		||||
        final List<ChildAssociationRef> parentAssocs = nodeService.getParentAssocs(nodeRef);
 | 
			
		||||
@@ -199,4 +214,37 @@ public class CategoriesImpl implements Categories
 | 
			
		||||
        final NodeRef parentRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
 | 
			
		||||
        return isRootCategory(parentRef) ? PATH_ROOT : parentRef.getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Change category qualified name.
 | 
			
		||||
     *
 | 
			
		||||
     * @param categoryNodeRef Category node reference.
 | 
			
		||||
     * @param newName New name.
 | 
			
		||||
     * @return Updated category.
 | 
			
		||||
     */
 | 
			
		||||
    private NodeRef changeCategoryName(final NodeRef categoryNodeRef, final String newName)
 | 
			
		||||
    {
 | 
			
		||||
        final ChildAssociationRef parentAssociation = nodeService.getPrimaryParent(categoryNodeRef);
 | 
			
		||||
        if (parentAssociation == null)
 | 
			
		||||
        {
 | 
			
		||||
            throw new InvalidArgumentException(NOT_A_VALID_CATEGORY, new String[]{categoryNodeRef.getId()});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        nodeService.setProperty(categoryNodeRef, ContentModel.PROP_NAME, newName);
 | 
			
		||||
        final QName newQName = QName.createQName(parentAssociation.getQName().getNamespaceURI(), QName.createValidLocalName(newName));
 | 
			
		||||
        return nodeService.moveNode(parentAssociation.getChildRef(), parentAssociation.getParentRef(), parentAssociation.getTypeQName(), newQName).getChildRef();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Verify if fixed category name is not empty.
 | 
			
		||||
     *
 | 
			
		||||
     * @param fixedCategoryModel Fixed category model.
 | 
			
		||||
     */
 | 
			
		||||
    private void verifyCategoryFields(final Category fixedCategoryModel)
 | 
			
		||||
    {
 | 
			
		||||
        if (StringUtils.isEmpty(fixedCategoryModel.getName()))
 | 
			
		||||
        {
 | 
			
		||||
            throw new InvalidArgumentException(NOT_NULL_OR_EMPTY);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -137,5 +137,4 @@ public class Category
 | 
			
		||||
            return category;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,9 @@
 | 
			
		||||
 | 
			
		||||
package org.alfresco.rest.api.categories;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.any;
 | 
			
		||||
import static org.mockito.BDDMockito.given;
 | 
			
		||||
import static org.mockito.BDDMockito.then;
 | 
			
		||||
 | 
			
		||||
@@ -65,4 +67,17 @@ public class CategoriesEntityResourceTest
 | 
			
		||||
        then(categoriesMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        assertEquals(categoryMock, category);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById()
 | 
			
		||||
    {
 | 
			
		||||
        given(categoriesMock.updateCategoryById(any(), any())).willReturn(categoryMock);
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        final Category actualCategory = objectUnderTest.update(CATEGORY_ID, categoryMock, parametersMock);
 | 
			
		||||
 | 
			
		||||
        then(categoriesMock).should().updateCategoryById(CATEGORY_ID, categoryMock);
 | 
			
		||||
        then(categoriesMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        assertThat(actualCategory).isNotNull();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,15 @@
 | 
			
		||||
package org.alfresco.rest.api.impl;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.rest.api.Nodes.PATH_ROOT;
 | 
			
		||||
import static org.alfresco.rest.api.impl.CategoriesImpl.NOT_A_VALID_CATEGORY;
 | 
			
		||||
import static org.alfresco.rest.api.impl.CategoriesImpl.NOT_NULL_OR_EMPTY;
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.junit.Assert.assertThrows;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.any;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.anyBoolean;
 | 
			
		||||
import static org.mockito.ArgumentMatchers.eq;
 | 
			
		||||
import static org.mockito.BDDMockito.given;
 | 
			
		||||
import static org.mockito.BDDMockito.then;
 | 
			
		||||
import static org.mockito.Mockito.mock;
 | 
			
		||||
@@ -56,7 +63,9 @@ import org.alfresco.service.cmr.repository.NodeService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.StoreRef;
 | 
			
		||||
import org.alfresco.service.cmr.search.CategoryService;
 | 
			
		||||
import org.alfresco.service.cmr.security.AuthorityService;
 | 
			
		||||
import org.alfresco.service.namespace.QName;
 | 
			
		||||
import org.alfresco.service.namespace.RegexQNamePattern;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
import org.mockito.InjectMocks;
 | 
			
		||||
@@ -70,6 +79,8 @@ public class CategoriesImplTest
 | 
			
		||||
    private static final String CATEGORY_NAME = "categoryName";
 | 
			
		||||
    private static final String PARENT_ID = "parent-node-id";
 | 
			
		||||
    private static final String CAT_ROOT_NODE_ID = "cat-root-node-id";
 | 
			
		||||
    private static final NodeRef CATEGORY_NODE_REF = createNodeRefWithId(CATEGORY_ID);
 | 
			
		||||
    private static final Category CATEGORY = createDefaultCategoryWithName(CATEGORY_NAME);
 | 
			
		||||
 | 
			
		||||
    @Mock
 | 
			
		||||
    private Nodes nodesMock;
 | 
			
		||||
@@ -89,12 +100,19 @@ public class CategoriesImplTest
 | 
			
		||||
    @InjectMocks
 | 
			
		||||
    private CategoriesImpl objectUnderTest;
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(true);
 | 
			
		||||
        given(nodesMock.validateNode(eq(CATEGORY_ID))).willReturn(CATEGORY_NODE_REF);
 | 
			
		||||
        given(nodesMock.isSubClass(any(), any(), anyBoolean())).willReturn(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void shouldNotGetRootCategoryById()
 | 
			
		||||
    {
 | 
			
		||||
        final NodeRef categoryRootNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CAT_ROOT_NODE_ID);
 | 
			
		||||
        given(nodesMock.validateNode(CAT_ROOT_NODE_ID)).willReturn(categoryRootNodeRef);
 | 
			
		||||
        given(nodesMock.isSubClass(categoryRootNodeRef, ContentModel.TYPE_CATEGORY, false)).willReturn(true);
 | 
			
		||||
        given(categoryChildAssociationRefMock.getQName()).willReturn(ContentModel.ASPECT_GEN_CLASSIFIABLE);
 | 
			
		||||
        given(nodeServiceMock.getParentAssocs(categoryRootNodeRef)).willReturn(List.of(categoryChildAssociationRefMock));
 | 
			
		||||
 | 
			
		||||
@@ -107,7 +125,7 @@ public class CategoriesImplTest
 | 
			
		||||
        then(nodeServiceMock).should().getParentAssocs(categoryRootNodeRef);
 | 
			
		||||
        then(nodeServiceMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        then(categoryServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
        then(authorityServiceMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        then(authorityServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@@ -115,7 +133,6 @@ public class CategoriesImplTest
 | 
			
		||||
    {
 | 
			
		||||
        final NodeRef categoryNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CATEGORY_ID);
 | 
			
		||||
        given(nodesMock.validateNode(CATEGORY_ID)).willReturn(categoryNodeRef);
 | 
			
		||||
        given(nodesMock.isSubClass(categoryNodeRef, ContentModel.TYPE_CATEGORY, false)).willReturn(true);
 | 
			
		||||
        final Node categoryNode = new Node();
 | 
			
		||||
        categoryNode.setName(CATEGORY_NAME);
 | 
			
		||||
        categoryNode.setNodeId(CATEGORY_ID);
 | 
			
		||||
@@ -158,7 +175,6 @@ public class CategoriesImplTest
 | 
			
		||||
    {
 | 
			
		||||
        final NodeRef categoryNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CATEGORY_ID);
 | 
			
		||||
        given(nodesMock.validateNode(CATEGORY_ID)).willReturn(categoryNodeRef);
 | 
			
		||||
        given(nodesMock.isSubClass(categoryNodeRef, ContentModel.TYPE_CATEGORY, false)).willReturn(true);
 | 
			
		||||
        final Node categoryNode = new Node();
 | 
			
		||||
        categoryNode.setName(CATEGORY_NAME);
 | 
			
		||||
        categoryNode.setNodeId(CATEGORY_ID);
 | 
			
		||||
@@ -319,11 +335,10 @@ public class CategoriesImplTest
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateCategoryUnderRoot()
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(true);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, PATH_ROOT);
 | 
			
		||||
        given(categoryServiceMock.getRootCategoryNodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE))
 | 
			
		||||
                .willReturn(Optional.of(parentCategoryNodeRef));
 | 
			
		||||
        final NodeRef categoryNodeRef = prepareCategoryNodeRef();
 | 
			
		||||
        final NodeRef categoryNodeRef = createNodeRefWithId(CATEGORY_ID);
 | 
			
		||||
        given(categoryServiceMock.createCategory(parentCategoryNodeRef, CATEGORY_NAME)).willReturn(categoryNodeRef);
 | 
			
		||||
        given(nodesMock.getNode(CATEGORY_ID)).willReturn(prepareCategoryNode());
 | 
			
		||||
        final ChildAssociationRef parentAssoc = new ChildAssociationRef(null, parentCategoryNodeRef, null, categoryNodeRef);
 | 
			
		||||
@@ -361,11 +376,9 @@ public class CategoriesImplTest
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateCategory()
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(true);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, PARENT_ID);
 | 
			
		||||
        given(nodesMock.validateNode(PARENT_ID)).willReturn(parentCategoryNodeRef);
 | 
			
		||||
        given(nodesMock.isSubClass(parentCategoryNodeRef, ContentModel.TYPE_CATEGORY, false)).willReturn(true);
 | 
			
		||||
        final NodeRef categoryNodeRef = prepareCategoryNodeRef();
 | 
			
		||||
        final NodeRef categoryNodeRef = createNodeRefWithId(CATEGORY_ID);
 | 
			
		||||
        given(categoryServiceMock.createCategory(parentCategoryNodeRef, CATEGORY_NAME)).willReturn(categoryNodeRef);
 | 
			
		||||
        given(nodesMock.getNode(CATEGORY_ID)).willReturn(prepareCategoryNode());
 | 
			
		||||
        final ChildAssociationRef parentAssoc = new ChildAssociationRef(null, parentCategoryNodeRef, null, categoryNodeRef);
 | 
			
		||||
@@ -420,7 +433,6 @@ public class CategoriesImplTest
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateCategories_wrongParentNodeType()
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(true);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, PARENT_ID);
 | 
			
		||||
        given(nodesMock.validateNode(PARENT_ID)).willReturn(parentCategoryNodeRef);
 | 
			
		||||
        given(nodesMock.isSubClass(parentCategoryNodeRef, ContentModel.TYPE_CATEGORY, false)).willReturn(false);
 | 
			
		||||
@@ -441,7 +453,6 @@ public class CategoriesImplTest
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateCategories_nonExistingParentNode()
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(true);
 | 
			
		||||
        given(nodesMock.validateNode(PARENT_ID)).willThrow(EntityNotFoundException.class);
 | 
			
		||||
 | 
			
		||||
        //when
 | 
			
		||||
@@ -590,10 +601,177 @@ public class CategoriesImplTest
 | 
			
		||||
        then(authorityServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Node prepareCategoryNode()
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById()
 | 
			
		||||
    {
 | 
			
		||||
        final NodeRef parentNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, PARENT_ID);
 | 
			
		||||
        return prepareCategoryNode(CATEGORY_NAME, CATEGORY_ID, parentNodeRef);
 | 
			
		||||
        final String categoryNewName = "categoryNewName";
 | 
			
		||||
        final Category fixedCategory = createCategoryOnlyWithName(categoryNewName);
 | 
			
		||||
        final QName categoryQName = createCmQNameOf(CATEGORY_NAME);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = createNodeRefWithId(PARENT_ID);
 | 
			
		||||
        final ChildAssociationRef parentAssociation = createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, categoryQName);
 | 
			
		||||
        given(nodesMock.getNode(any())).willReturn(prepareCategoryNode(categoryNewName));
 | 
			
		||||
        given(nodeServiceMock.getPrimaryParent(any())).willReturn(parentAssociation);
 | 
			
		||||
        given(nodeServiceMock.moveNode(any(), any(), any(), any())).willReturn(createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, createCmQNameOf(categoryNewName)));
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        final Category actualCategory = objectUnderTest.updateCategoryById(CATEGORY_ID, fixedCategory);
 | 
			
		||||
 | 
			
		||||
        then(authorityServiceMock).should().hasAdminAuthority();
 | 
			
		||||
        then(authorityServiceMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        then(nodesMock).should().validateNode(CATEGORY_ID);
 | 
			
		||||
        then(nodesMock).should().isSubClass(CATEGORY_NODE_REF, ContentModel.TYPE_CATEGORY, false);
 | 
			
		||||
        then(nodesMock).should().getNode(CATEGORY_ID);
 | 
			
		||||
        then(nodesMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        then(nodeServiceMock).should().getParentAssocs(CATEGORY_NODE_REF);
 | 
			
		||||
        then(nodeServiceMock).should().getChildAssocs(CATEGORY_NODE_REF, RegexQNamePattern.MATCH_ALL, RegexQNamePattern.MATCH_ALL, false);
 | 
			
		||||
        then(nodeServiceMock).should().setProperty(CATEGORY_NODE_REF, ContentModel.PROP_NAME, categoryNewName);
 | 
			
		||||
        then(nodeServiceMock).should(times(2)).getPrimaryParent(CATEGORY_NODE_REF);
 | 
			
		||||
        final QName expectedNewQName = createCmQNameOf(categoryNewName);
 | 
			
		||||
        then(nodeServiceMock).should().moveNode(CATEGORY_NODE_REF, parentCategoryNodeRef, ContentModel.ASSOC_SUBCATEGORIES, expectedNewQName);
 | 
			
		||||
        then(nodeServiceMock).should().getParentAssocs(parentCategoryNodeRef);
 | 
			
		||||
        then(nodeServiceMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
        then(categoryServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
        final Category expectedCategory = createDefaultCategoryWithName(categoryNewName);
 | 
			
		||||
        assertThat(actualCategory)
 | 
			
		||||
            .isNotNull().usingRecursiveComparison()
 | 
			
		||||
            .isEqualTo(expectedCategory);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_noPermission()
 | 
			
		||||
    {
 | 
			
		||||
        given(authorityServiceMock.hasAdminAuthority()).willReturn(false);
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        assertThatExceptionOfType(PermissionDeniedException.class).isThrownBy(() -> objectUnderTest.updateCategoryById(CATEGORY_ID, CATEGORY));
 | 
			
		||||
 | 
			
		||||
        then(nodesMock).shouldHaveNoInteractions();
 | 
			
		||||
        then(nodeServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_categoryNodeNotFound()
 | 
			
		||||
    {
 | 
			
		||||
        given(nodesMock.validateNode(any(String.class))).willThrow(EntityNotFoundException.class);
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        assertThatExceptionOfType(EntityNotFoundException.class).isThrownBy(() -> objectUnderTest.updateCategoryById(CATEGORY_ID, CATEGORY));
 | 
			
		||||
 | 
			
		||||
        then(nodeServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_notACategory()
 | 
			
		||||
    {
 | 
			
		||||
        given(nodesMock.isSubClass(any(), any(), eq(false))).willReturn(false);
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        assertThatExceptionOfType(InvalidArgumentException.class).isThrownBy(() -> objectUnderTest.updateCategoryById(CATEGORY_ID, CATEGORY))
 | 
			
		||||
            .withMessageContaining(NOT_A_VALID_CATEGORY);
 | 
			
		||||
 | 
			
		||||
        then(nodeServiceMock).shouldHaveNoInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_isRootCategory()
 | 
			
		||||
    {
 | 
			
		||||
        given(categoryServiceMock.getRootCategoryNodeRef(any())).willReturn(Optional.of(createNodeRefWithId(PATH_ROOT)));
 | 
			
		||||
        given(nodeServiceMock.getParentAssocs(any())).willReturn(List.of(categoryChildAssociationRefMock));
 | 
			
		||||
        given(categoryChildAssociationRefMock.getQName()).willReturn(ContentModel.ASPECT_GEN_CLASSIFIABLE);
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        assertThatExceptionOfType(InvalidArgumentException.class).isThrownBy(() -> objectUnderTest.updateCategoryById(PATH_ROOT, CATEGORY))
 | 
			
		||||
            .withMessageContaining(NOT_A_VALID_CATEGORY);
 | 
			
		||||
 | 
			
		||||
        then(categoryServiceMock).should().getRootCategoryNodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
 | 
			
		||||
        then(categoryServiceMock).shouldHaveNoMoreInteractions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<String> getInvalidCategoryNames()
 | 
			
		||||
    {
 | 
			
		||||
        final List<String> invalidNames = new ArrayList<>();
 | 
			
		||||
        invalidNames.add(null);
 | 
			
		||||
        invalidNames.add("");
 | 
			
		||||
        return invalidNames;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_emptyName()
 | 
			
		||||
    {
 | 
			
		||||
        for (String invalidName : getInvalidCategoryNames())
 | 
			
		||||
        {
 | 
			
		||||
            final Category categoryWithoutName = createCategoryOnlyWithName(invalidName);
 | 
			
		||||
 | 
			
		||||
            // when
 | 
			
		||||
            assertThatExceptionOfType(InvalidArgumentException.class).isThrownBy(() -> objectUnderTest.updateCategoryById(CATEGORY_ID, categoryWithoutName))
 | 
			
		||||
                .withMessageContaining(NOT_NULL_OR_EMPTY);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_notMatchingIdField()
 | 
			
		||||
    {
 | 
			
		||||
        final String categoryNewName = "categoryNewName";
 | 
			
		||||
        final Category categoryWithInvalidId = createCategoryOnlyWithName(categoryNewName);
 | 
			
		||||
        categoryWithInvalidId.setId("different-" + CATEGORY_ID);
 | 
			
		||||
        final QName categoryQName = createCmQNameOf(CATEGORY_NAME);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = createNodeRefWithId(PARENT_ID);
 | 
			
		||||
        final ChildAssociationRef parentAssociation = createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, categoryQName);
 | 
			
		||||
        given(nodesMock.getNode(any())).willReturn(prepareCategoryNode(categoryNewName));
 | 
			
		||||
        given(nodeServiceMock.getPrimaryParent(any())).willReturn(parentAssociation);
 | 
			
		||||
        given(nodeServiceMock.moveNode(any(), any(), any(), any())).willReturn(createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, createCmQNameOf(categoryNewName)));
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        final Category actualCategory = objectUnderTest.updateCategoryById(CATEGORY_ID, categoryWithInvalidId);
 | 
			
		||||
 | 
			
		||||
        final Category expectedCategory = createDefaultCategoryWithName(categoryNewName);
 | 
			
		||||
        assertThat(actualCategory)
 | 
			
		||||
            .isNotNull().usingRecursiveComparison()
 | 
			
		||||
            .isEqualTo(expectedCategory);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_notMatchingParentIdField()
 | 
			
		||||
    {
 | 
			
		||||
        final String categoryNewName = "categoryNewName";
 | 
			
		||||
        final Category categoryWithInvalidParentId = createCategoryOnlyWithName(categoryNewName);
 | 
			
		||||
        categoryWithInvalidParentId.setParentId("different-" + PARENT_ID);
 | 
			
		||||
        final QName categoryQName = createCmQNameOf(CATEGORY_NAME);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = createNodeRefWithId(PARENT_ID);
 | 
			
		||||
        final ChildAssociationRef parentAssociation = createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, categoryQName);
 | 
			
		||||
        given(nodesMock.getNode(any())).willReturn(prepareCategoryNode(categoryNewName));
 | 
			
		||||
        given(nodeServiceMock.getPrimaryParent(any())).willReturn(parentAssociation);
 | 
			
		||||
        given(nodeServiceMock.moveNode(any(), any(), any(), any())).willReturn(createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, createCmQNameOf(categoryNewName)));
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        final Category actualCategory = objectUnderTest.updateCategoryById(CATEGORY_ID, categoryWithInvalidParentId);
 | 
			
		||||
 | 
			
		||||
        final Category expectedCategory = createDefaultCategoryWithName(categoryNewName);
 | 
			
		||||
        assertThat(actualCategory)
 | 
			
		||||
            .isNotNull().usingRecursiveComparison()
 | 
			
		||||
            .isEqualTo(expectedCategory);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testUpdateCategoryById_notMatchingHasChildrenField()
 | 
			
		||||
    {
 | 
			
		||||
        final String categoryNewName = "categoryNewName";
 | 
			
		||||
        final Category categoryWithInvalidHasChildren = createCategoryOnlyWithName(categoryNewName);
 | 
			
		||||
        categoryWithInvalidHasChildren.setHasChildren(true);
 | 
			
		||||
        final QName categoryQName = createCmQNameOf(CATEGORY_NAME);
 | 
			
		||||
        final NodeRef parentCategoryNodeRef = createNodeRefWithId(PARENT_ID);
 | 
			
		||||
        final ChildAssociationRef parentAssociation = createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, categoryQName);
 | 
			
		||||
        given(nodesMock.getNode(any())).willReturn(prepareCategoryNode(categoryNewName));
 | 
			
		||||
        given(nodeServiceMock.getPrimaryParent(any())).willReturn(parentAssociation);
 | 
			
		||||
        given(nodeServiceMock.moveNode(any(), any(), any(), any())).willReturn(createAssociationOf(parentCategoryNodeRef, CATEGORY_NODE_REF, createCmQNameOf(categoryNewName)));
 | 
			
		||||
 | 
			
		||||
        // when
 | 
			
		||||
        final Category actualCategory = objectUnderTest.updateCategoryById(CATEGORY_ID, categoryWithInvalidHasChildren);
 | 
			
		||||
 | 
			
		||||
        final Category expectedCategory = createDefaultCategoryWithName(categoryNewName);
 | 
			
		||||
        assertThat(actualCategory)
 | 
			
		||||
            .isNotNull().usingRecursiveComparison()
 | 
			
		||||
            .isEqualTo(expectedCategory);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Node prepareCategoryNode(final String name, final String id, final NodeRef parentNodeRef)
 | 
			
		||||
@@ -605,9 +783,15 @@ public class CategoriesImplTest
 | 
			
		||||
        return categoryNode;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private NodeRef prepareCategoryNodeRef()
 | 
			
		||||
    private Node prepareCategoryNode(final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CATEGORY_ID);
 | 
			
		||||
        final NodeRef parentNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, PARENT_ID);
 | 
			
		||||
        return prepareCategoryNode(name, CATEGORY_ID, parentNodeRef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Node prepareCategoryNode()
 | 
			
		||||
    {
 | 
			
		||||
        return prepareCategoryNode(CATEGORY_NAME);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<Category> prepareCategories()
 | 
			
		||||
@@ -626,8 +810,7 @@ public class CategoriesImplTest
 | 
			
		||||
                    .willReturn(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CATEGORY_ID + "-" + i));
 | 
			
		||||
            given(dummyChildAssocMock.getParentRef()).willReturn(parentCategoryNodeRef);
 | 
			
		||||
            return dummyChildAssocMock;
 | 
			
		||||
        })
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
        }).collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void prepareCategoryNodeMocks(ChildAssociationRef childAssociationRef)
 | 
			
		||||
@@ -652,4 +835,34 @@ public class CategoriesImplTest
 | 
			
		||||
                .create();
 | 
			
		||||
        assertEquals(expectedCategory, category);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static NodeRef createNodeRefWithId(final String id)
 | 
			
		||||
    {
 | 
			
		||||
        return new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static Category createCategoryOnlyWithName(final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return Category.builder().name(name).create();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static Category createDefaultCategoryWithName(final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return Category.builder()
 | 
			
		||||
            .id(CATEGORY_ID)
 | 
			
		||||
            .name(name)
 | 
			
		||||
            .parentId(PARENT_ID)
 | 
			
		||||
            .hasChildren(false)
 | 
			
		||||
            .create();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static QName createCmQNameOf(final String name)
 | 
			
		||||
    {
 | 
			
		||||
        return QName.createQName(ContentModel.TYPE_CATEGORY.getNamespaceURI(), QName.createValidLocalName(name));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static ChildAssociationRef createAssociationOf(final NodeRef parentNode, final NodeRef childNode, final QName childNodeName)
 | 
			
		||||
    {
 | 
			
		||||
        return new ChildAssociationRef(ContentModel.ASSOC_SUBCATEGORIES, parentNode, childNodeName, childNode);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,25 +0,0 @@
 | 
			
		||||
log4j.rootLogger=error, Console
 | 
			
		||||
 | 
			
		||||
log4j.appender.Console=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n 
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco=WARN
 | 
			
		||||
log4j.logger.org.alfresco.rest.api=DEBUG
 | 
			
		||||
log4j.logger.org.eclipse.jetty.util.log=INFO
 | 
			
		||||
 | 
			
		||||
# Renditions and Transforms
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.rendition2=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition2.LocalTransformClient=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition.RenditionServiceImpl=debug
 | 
			
		||||
#log4j.logger.org.alfresco.enterprise.repo.rendition2.RemoteTransformClient=debug
 | 
			
		||||
log4j.logger.org.alfresco.repo.thumbnail.ThumbnailServiceImplTest=DEBUG
 | 
			
		||||
log4j.logger.org.alfresco.repo.rendition2.RenditionService2Impl=DEBUG
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.transform.LocalTransformServiceRegistry=debug
 | 
			
		||||
#log4j.logger.org.alfresco.enterprise.repo.rendition2.RemoteTransformServiceRegistry=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition2.RenditionDefinitionRegistry2Impl=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.MimetypeMap=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.transform.LocalTransform=trace
 | 
			
		||||
							
								
								
									
										56
									
								
								remote-api/src/test/resources/log4j2.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								remote-api/src/test/resources/log4j2.properties
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
# Set root logger level to error
 | 
			
		||||
rootLogger.level=error
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
# All outputs currently set to be a ConsoleAppender.
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
appender.console.layout.pattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
logger.alfresco.name=org.alfresco
 | 
			
		||||
logger.alfresco.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-rest-api.name=org.alfresco.rest.api
 | 
			
		||||
logger.alfresco-rest-api.level=debug
 | 
			
		||||
 | 
			
		||||
logger.eclipse-jetty-util-log.name=org.eclipse.jetty.util.log
 | 
			
		||||
logger.eclipse-jetty-util-log.level=info
 | 
			
		||||
 | 
			
		||||
# Renditions and Transforms
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.name=org.alfresco.repo.content.transform.TransformerDebug
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-rendition2.name=org.alfresco.repo.rendition2
 | 
			
		||||
logger.alfresco-repo-rendition2.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-rendition2-LocalTransformClient.name=org.alfresco.repo.rendition2.LocalTransformClient
 | 
			
		||||
#logger.alfresco-repo-rendition2-LocalTransformClient.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-rendition-RenditionServiceImpl.name=org.alfresco.repo.rendition.RenditionServiceImpl
 | 
			
		||||
#logger.alfresco-repo-rendition-RenditionServiceImpl.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-enterprise-repo-rendition2-RemoteTransformClient.name=org.alfresco.enterprise.repo.rendition2.RemoteTransformClient
 | 
			
		||||
#logger.alfresco-enterprise-repo-rendition2-RemoteTransformClient.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-thumbnail-ThumbnailServiceImplTest.name=org.alfresco.repo.thumbnail.ThumbnailServiceImplTest
 | 
			
		||||
logger.alfresco-repo-thumbnail-ThumbnailServiceImplTest.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-rendition2-RenditionService2Impl.name=org.alfresco.repo.rendition2.RenditionService2Impl
 | 
			
		||||
logger.alfresco-repo-rendition2-RenditionService2Impl.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-content-transform-LocalTransformServiceRegistry.name=org.alfresco.repo.content.transform.LocalTransformServiceRegistry
 | 
			
		||||
#logger.alfresco-repo-content-transform-LocalTransformServiceRegistry.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-enterprise-repo-rendition2-RemoteTransformServiceRegistry.name=org.alfresco.enterprise.repo.rendition2.RemoteTransformServiceRegistry
 | 
			
		||||
#logger.alfresco-enterprise-repo-rendition2-RemoteTransformServiceRegistry.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-rendition2-RenditionDefinitionRegistry2Impl.name=org.alfresco.repo.rendition2.RenditionDefinitionRegistry2Impl
 | 
			
		||||
#logger.alfresco-repo-rendition2-RenditionDefinitionRegistry2Impl.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-content-MimetypeMap.name=org.alfresco.repo.content.MimetypeMap
 | 
			
		||||
#logger.alfresco-repo-content-MimetypeMap.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-content-transform-LocalTransform.name=org.alfresco.repo.content.transform.LocalTransform
 | 
			
		||||
#logger.alfresco-repo-content-transform-LocalTransform.level=trace
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>20.45-DEV</version>
 | 
			
		||||
        <version>20.48-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug
 | 
			
		||||
log4j.logger.org.alfresco.util.exec.RuntimeExecBootstrapBean=debug
 | 
			
		||||
log4j.logger.org.alfresco.util.exec.RuntimeExec=debug
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.name=org.alfresco.repo.content.transform.TransformerDebug
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-exec-RuntimeExecBootstrapBean.name=org.alfresco.util.exec.RuntimeExecBootstrapBean
 | 
			
		||||
logger.alfresco-util-exec-RuntimeExecBootstrapBean.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-exec-RuntimeExec.name=org.alfresco.util.exec.RuntimeExec
 | 
			
		||||
logger.alfresco-util-exec-RuntimeExec.level=debug
 | 
			
		||||
@@ -1,266 +0,0 @@
 | 
			
		||||
#TAKEN FROM ALFRESCO_CORE PROJECT
 | 
			
		||||
# Set root logger level to error
 | 
			
		||||
log4j.rootLogger=error, Console, File
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
 | 
			
		||||
# All outputs currently set to be a ConsoleAppender.
 | 
			
		||||
log4j.appender.Console=org.apache.log4j.ConsoleAppender
 | 
			
		||||
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
 | 
			
		||||
# use log4j NDC to replace %x with tenant domain / username
 | 
			
		||||
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n 
 | 
			
		||||
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
 | 
			
		||||
log4j.appender.File.File=alfresco.log
 | 
			
		||||
log4j.appender.File.Append=true
 | 
			
		||||
log4j.appender.File.DatePattern='.'yyyy-MM-dd
 | 
			
		||||
log4j.appender.File.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
 | 
			
		||||
 | 
			
		||||
###### Hibernate specific appender definition #######
 | 
			
		||||
#log4j.appender.file=org.apache.log4j.FileAppender
 | 
			
		||||
#log4j.appender.file.File=hibernate.log
 | 
			
		||||
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
 | 
			
		||||
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
 | 
			
		||||
 | 
			
		||||
###### Log level overrides #######
 | 
			
		||||
 | 
			
		||||
# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
 | 
			
		||||
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
 | 
			
		||||
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
 | 
			
		||||
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
 | 
			
		||||
 | 
			
		||||
# Hibernate
 | 
			
		||||
log4j.logger.org.hibernate=error
 | 
			
		||||
log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal
 | 
			
		||||
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal
 | 
			
		||||
log4j.logger.org.hibernate.type=warn
 | 
			
		||||
log4j.logger.org.hibernate.cfg.SettingsFactory=warn
 | 
			
		||||
 | 
			
		||||
# Spring
 | 
			
		||||
log4j.logger.org.springframework=warn
 | 
			
		||||
# Turn off Spring remoting warnings that should really be info or debug.
 | 
			
		||||
log4j.logger.org.springframework.remoting.support=error
 | 
			
		||||
log4j.logger.org.springframework.util=error
 | 
			
		||||
 | 
			
		||||
# Axis/WSS4J
 | 
			
		||||
log4j.logger.org.apache.axis=info
 | 
			
		||||
log4j.logger.org.apache.ws=info
 | 
			
		||||
 | 
			
		||||
# CXF
 | 
			
		||||
log4j.logger.org.apache.cxf=error
 | 
			
		||||
 | 
			
		||||
# MyFaces
 | 
			
		||||
log4j.logger.org.apache.myfaces.util.DebugUtils=info
 | 
			
		||||
log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error
 | 
			
		||||
log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error
 | 
			
		||||
log4j.logger.org.apache.myfaces.taglib=error
 | 
			
		||||
 | 
			
		||||
# log prepared statement cache activity ###
 | 
			
		||||
log4j.logger.org.hibernate.ps.PreparedStatementCache=info
 | 
			
		||||
 | 
			
		||||
# Alfresco
 | 
			
		||||
log4j.logger.org.alfresco=error
 | 
			
		||||
log4j.logger.org.alfresco.repo.admin=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.model.filefolder=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.tenant=info
 | 
			
		||||
log4j.logger.org.alfresco.config=warn
 | 
			
		||||
log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
 | 
			
		||||
log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.management.subsystems=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.security.sync=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.security.person=info
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.sample=info
 | 
			
		||||
log4j.logger.org.alfresco.web=info
 | 
			
		||||
#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug
 | 
			
		||||
#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug
 | 
			
		||||
#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug
 | 
			
		||||
#log4j.logger.org.alfresco.web.bean.clipboard=debug
 | 
			
		||||
log4j.logger.org.alfresco.service.descriptor.DescriptorService=info
 | 
			
		||||
#log4j.logger.org.alfresco.web.page=debug
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error
 | 
			
		||||
#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info
 | 
			
		||||
 | 
			
		||||
# Specific patches
 | 
			
		||||
log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.version.VersionMigrator=info
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=debug
 | 
			
		||||
log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn
 | 
			
		||||
log4j.logger.org.alfresco.util.AbstractTriggerBean=warn
 | 
			
		||||
log4j.logger.org.alfresco.enterprise.repo.cluster=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn
 | 
			
		||||
#log4j.logger.org.alfresco.repo.thumbnail=debug
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.workflow=info
 | 
			
		||||
 | 
			
		||||
# FTP server debugging
 | 
			
		||||
log4j.logger.org.alfresco.ftp.protocol=error
 | 
			
		||||
#log4j.logger.org.alfresco.ftp.server=debug
 | 
			
		||||
 | 
			
		||||
# WebDAV debugging
 | 
			
		||||
#log4j.logger.org.alfresco.webdav.protocol=debug
 | 
			
		||||
log4j.logger.org.alfresco.webdav.protocol=info
 | 
			
		||||
 | 
			
		||||
# Kerberos servlet filters
 | 
			
		||||
#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug
 | 
			
		||||
 | 
			
		||||
# File servers
 | 
			
		||||
log4j.logger.org.alfresco.fileserver=warn
 | 
			
		||||
 | 
			
		||||
# Repo filesystem debug logging
 | 
			
		||||
#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug
 | 
			
		||||
 | 
			
		||||
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
 | 
			
		||||
log4j.logger.org.alfresco.repo.node.integrity=ERROR
 | 
			
		||||
 | 
			
		||||
# Indexer debugging
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.Indexer=error
 | 
			
		||||
#log4j.logger.org.alfresco.repo.search.Indexer=debug
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn
 | 
			
		||||
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG
 | 
			
		||||
 | 
			
		||||
# Audit debugging
 | 
			
		||||
# log4j.logger.org.alfresco.repo.audit=DEBUG
 | 
			
		||||
# log4j.logger.org.alfresco.repo.audit.model=DEBUG
 | 
			
		||||
 | 
			
		||||
# Property sheet and modelling debugging
 | 
			
		||||
# change to error to hide the warnings about missing properties and associations
 | 
			
		||||
log4j.logger.alfresco.missingProperties=warn
 | 
			
		||||
 | 
			
		||||
# Dictionary/Model debugging
 | 
			
		||||
log4j.logger.org.alfresco.repo.dictionary=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.dictionary.types.period=warn
 | 
			
		||||
 | 
			
		||||
# Virtualization Server Registry
 | 
			
		||||
log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error
 | 
			
		||||
 | 
			
		||||
# Spring context runtime property setter
 | 
			
		||||
log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info
 | 
			
		||||
 | 
			
		||||
# Debugging options for clustering
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.replication=error
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug
 | 
			
		||||
 | 
			
		||||
# Activity service
 | 
			
		||||
log4j.logger.org.alfresco.repo.activities=warn
 | 
			
		||||
 | 
			
		||||
# User usage tracking
 | 
			
		||||
log4j.logger.org.alfresco.repo.usage=info
 | 
			
		||||
 | 
			
		||||
# Sharepoint
 | 
			
		||||
log4j.logger.org.alfresco.module.vti=info
 | 
			
		||||
 | 
			
		||||
# Forms Engine
 | 
			
		||||
log4j.logger.org.alfresco.web.config.forms=info
 | 
			
		||||
log4j.logger.org.alfresco.web.scripts.forms=info
 | 
			
		||||
 | 
			
		||||
# CMIS
 | 
			
		||||
log4j.logger.org.alfresco.opencmis=error
 | 
			
		||||
log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error
 | 
			
		||||
log4j.logger.org.alfresco.cmis=error
 | 
			
		||||
log4j.logger.org.alfresco.cmis.dictionary=warn
 | 
			
		||||
log4j.logger.org.apache.chemistry.opencmis=info
 | 
			
		||||
log4j.logger.org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet=OFF
 | 
			
		||||
log4j.logger.org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet=OFF
 | 
			
		||||
 | 
			
		||||
# IMAP
 | 
			
		||||
log4j.logger.org.alfresco.repo.imap=info
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.googledocs=debug
 | 
			
		||||
 | 
			
		||||
###### Scripting #######
 | 
			
		||||
 | 
			
		||||
# Web Framework
 | 
			
		||||
log4j.logger.org.springframework.extensions.webscripts=info
 | 
			
		||||
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn
 | 
			
		||||
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off
 | 
			
		||||
 | 
			
		||||
# Repository
 | 
			
		||||
log4j.logger.org.alfresco.repo.web.scripts=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off
 | 
			
		||||
log4j.logger.org.alfresco.repo.jscript=error
 | 
			
		||||
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn
 | 
			
		||||
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl=off
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.schema.script.ScriptExecutorImpl=info
 | 
			
		||||
log4j.logger.org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor=off
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl=info
 | 
			
		||||
 | 
			
		||||
# Bulk Filesystem Import Tool
 | 
			
		||||
log4j.logger.org.alfresco.repo.bulkimport=warn
 | 
			
		||||
 | 
			
		||||
# Freemarker
 | 
			
		||||
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
 | 
			
		||||
log4j.logger.freemarker.runtime=
 | 
			
		||||
 | 
			
		||||
# Metadata extraction
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn
 | 
			
		||||
 | 
			
		||||
# no index support
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal
 | 
			
		||||
 | 
			
		||||
# lucene index warnings
 | 
			
		||||
log4j.logger.org.alfresco.repo.search.impl.lucene.index.IndexInfo=warn
 | 
			
		||||
 | 
			
		||||
# Warn about RMI socket bind retries.
 | 
			
		||||
log4j.logger.org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory=warn
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.usage.RepoUsageMonitor=info
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.site.SiteServiceImpl=DEBUG
 | 
			
		||||
#log4j.logger.org.alfresco.repo.action.ActionServiceImpl=DEBUG
 | 
			
		||||
log4j.logger.org.alfresco.repo.security.person.PersonServiceImpl=DEBUG
 | 
			
		||||
 | 
			
		||||
# identity service authentication
 | 
			
		||||
log4j.logger.org.alfresco.repo.security.authentication.identityservice=debug
 | 
			
		||||
log4j.logger.org.keycloak=debug
 | 
			
		||||
 | 
			
		||||
# Renditions and Transforms
 | 
			
		||||
log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug
 | 
			
		||||
 | 
			
		||||
log4j.logger.org.alfresco.repo.rendition2=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition2.LocalTransformClient=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition.RenditionServiceImpl=debug
 | 
			
		||||
#log4j.logger.org.alfresco.enterprise.repo.rendition2.RemoteTransformClient=debug
 | 
			
		||||
log4j.logger.org.alfresco.repo.thumbnail.ThumbnailServiceImplTest=DEBUG
 | 
			
		||||
log4j.logger.org.alfresco.repo.rendition2.RenditionService2Impl=DEBUG
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.transform.LocalTransformServiceRegistry=debug
 | 
			
		||||
#log4j.logger.org.alfresco.enterprise.repo.rendition2.RemoteTransformServiceRegistry=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rendition2.RenditionDefinitionRegistry2Impl=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.MimetypeMap=debug
 | 
			
		||||
#log4j.logger.org.alfresco.repo.content.transform.LocalTransform=trace
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.rawevents=debug
 | 
			
		||||
 | 
			
		||||
#log4j.logger.org.alfresco.repo.event2=trace
 | 
			
		||||
							
								
								
									
										469
									
								
								repository/src/test/resources/log4j2.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										469
									
								
								repository/src/test/resources/log4j2.properties
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,469 @@
 | 
			
		||||
# Set root logger level to error
 | 
			
		||||
rootLogger.level=error
 | 
			
		||||
rootLogger.appenderRef.stdout.ref=ConsoleAppender
 | 
			
		||||
rootLogger.appenderRef.rolling.ref=RollingAppender
 | 
			
		||||
 | 
			
		||||
###### Console appender definition #######
 | 
			
		||||
# All outputs currently set to be a ConsoleAppender.
 | 
			
		||||
appender.console.type=Console
 | 
			
		||||
appender.console.name=ConsoleAppender
 | 
			
		||||
appender.console.layout.type=PatternLayout
 | 
			
		||||
# use log4j NDC to replace %x with tenant domain / username
 | 
			
		||||
appender.console.layout.pattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
 | 
			
		||||
###### File appender definition #######
 | 
			
		||||
appender.rolling.type=RollingFile
 | 
			
		||||
appender.rolling.name=RollingAppender
 | 
			
		||||
appender.rolling.fileName=alfresco.log
 | 
			
		||||
appender.rolling.filePattern=alfresco.log.%d{yyyy-MM-dd}
 | 
			
		||||
appender.rolling.layout.type=PatternLayout
 | 
			
		||||
appender.rolling.layout.pattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %replace{%m}{[\r\n]+}{}%n
 | 
			
		||||
appender.rolling.policies.type = Policies
 | 
			
		||||
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
 | 
			
		||||
appender.rolling.policies.time.interval = 1
 | 
			
		||||
 | 
			
		||||
###### Log level overrides #######
 | 
			
		||||
# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
 | 
			
		||||
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
 | 
			
		||||
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
 | 
			
		||||
# Log4j addLoggerMBean as long as the logger exists and has been loaded.
 | 
			
		||||
 | 
			
		||||
# Hibernate
 | 
			
		||||
logger.hibernate.name=org.hibernate
 | 
			
		||||
logger.hibernate.level=error
 | 
			
		||||
 | 
			
		||||
logger.hibernate-util-JDBCExceptionReporter.name=org.hibernate.util.JDBCExceptionReporter
 | 
			
		||||
logger.hibernate-util-JDBCExceptionReporter.level=fatal
 | 
			
		||||
 | 
			
		||||
logger.hibernate-event-def-AbstractFlushingEventListener.name=org.hibernate.event.def.AbstractFlushingEventListener
 | 
			
		||||
logger.hibernate-event-def-AbstractFlushingEventListener.level=fatal
 | 
			
		||||
 | 
			
		||||
logger.hibernate-type.name=org.hibernate.type
 | 
			
		||||
logger.hibernate-type.level=warn
 | 
			
		||||
 | 
			
		||||
logger.hibernate-cfg-SettingsFactory.name=org.hibernate.cfg.SettingsFactory
 | 
			
		||||
logger.hibernate-cfg-SettingsFactory.level=warn
 | 
			
		||||
 | 
			
		||||
# Spring
 | 
			
		||||
logger.springframework.name=org.springframework
 | 
			
		||||
logger.springframework.level=warn
 | 
			
		||||
 | 
			
		||||
# Turn off Spring remoting warnings that should really be info or debug.
 | 
			
		||||
logger.springframework-remoting-support.name=org.springframework.remoting.support
 | 
			
		||||
logger.springframework-remoting-support.level=error
 | 
			
		||||
 | 
			
		||||
logger.springframework-util.name=org.springframework.util
 | 
			
		||||
logger.springframework-util.level=error
 | 
			
		||||
 | 
			
		||||
# Axis/WSS4J
 | 
			
		||||
logger.apache-axis.name=org.apache.axis
 | 
			
		||||
logger.apache-axis.level=info
 | 
			
		||||
 | 
			
		||||
logger.apache-ws.name=org.apache.ws
 | 
			
		||||
logger.apache-ws.level=info
 | 
			
		||||
 | 
			
		||||
# CXF
 | 
			
		||||
logger.apache-cxf.name=org.apache.cxf
 | 
			
		||||
logger.apache-cxf.level=error
 | 
			
		||||
 | 
			
		||||
# MyFaces
 | 
			
		||||
logger.apache-myfaces-util-DebugUtils.name=org.apache.myfaces.util.DebugUtils
 | 
			
		||||
logger.apache-myfaces-util-DebugUtils.level=info
 | 
			
		||||
 | 
			
		||||
logger.apache-myfaces-el-VariableResolverImpl.name=org.apache.myfaces.el.VariableResolverImpl
 | 
			
		||||
logger.apache-myfaces-el-VariableResolverImpl.level=error
 | 
			
		||||
 | 
			
		||||
logger.apache-myfaces-application-jsp-JspViewHandlerImpl.name=org.apache.myfaces.application.jsp.JspViewHandlerImpl
 | 
			
		||||
logger.apache-myfaces-application-jsp-JspViewHandlerImpl.level=error
 | 
			
		||||
 | 
			
		||||
logger.apache-myfaces-taglib.name=org.apache.myfaces.taglib
 | 
			
		||||
logger.apache-myfaces-taglib.level=error
 | 
			
		||||
 | 
			
		||||
# log prepared statement cache activity ###
 | 
			
		||||
logger.hibernate-ps-PreparedStatementCache.name=org.hibernate.ps.PreparedStatementCache
 | 
			
		||||
logger.hibernate-ps-PreparedStatementCache.level=info
 | 
			
		||||
 | 
			
		||||
# Alfresco
 | 
			
		||||
logger.alfresco.name=org.alfresco
 | 
			
		||||
logger.alfresco.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-admin.name=org.alfresco.repo.admin
 | 
			
		||||
logger.alfresco-repo-admin.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-transaction.name=org.alfresco.repo.transaction
 | 
			
		||||
logger.alfresco-repo-transaction.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-cache-TransactionalCache.name=org.alfresco.repo.cache.TransactionalCache
 | 
			
		||||
logger.alfresco-repo-cache-TransactionalCache.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-model-filefolder.name=org.alfresco.repo.model.filefolder
 | 
			
		||||
logger.alfresco-repo-model-filefolder.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-tenant.name=org.alfresco.repo.tenant
 | 
			
		||||
logger.alfresco-repo-tenant.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-config.name=org.alfresco.config
 | 
			
		||||
logger.alfresco-config.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-config-JndiObjectFactoryBean.name=org.alfresco.config.JndiObjectFactoryBean
 | 
			
		||||
logger.alfresco-config-JndiObjectFactoryBean.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-config-JBossEnabledWebApplicationContext.name=org.alfresco.config.JBossEnabledWebApplicationContext
 | 
			
		||||
logger.alfresco-config-JBossEnabledWebApplicationContext.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-management-subsystems.name=org.alfresco.repo.management.subsystems
 | 
			
		||||
logger.alfresco-repo-management-subsystems.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory.name=org.alfresco.repo.management.subsystems.ChildApplicationContextFactory
 | 
			
		||||
logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory$ChildApplicationContext.name=org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext
 | 
			
		||||
logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory$ChildApplicationContext.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-security-sync.name=org.alfresco.repo.security.sync
 | 
			
		||||
logger.alfresco-repo-security-sync.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-security-person.name=org.alfresco.repo.security.person
 | 
			
		||||
logger.alfresco-repo-security-person.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-sample.name=org.alfresco.sample
 | 
			
		||||
logger.alfresco-sample.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-web.name=org.alfresco.web
 | 
			
		||||
logger.alfresco-web.level=info
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-app-AlfrescoNavigationHandler.name=org.alfresco.web.app.AlfrescoNavigationHandler
 | 
			
		||||
#logger.alfresco-web-app-AlfrescoNavigationHandler.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-ui-repo-component-UIActions.name=org.alfresco.web.ui.repo.component.UIActions
 | 
			
		||||
#logger.alfresco-web-ui-repo-component-UIActions.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-ui-repo-tag-PageTag.name=org.alfresco.web.ui.repo.tag.PageTag
 | 
			
		||||
#logger.alfresco-web-ui-repo-tag-PageTag.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-bean-clipboard.name=org.alfresco.web.bean.clipboard
 | 
			
		||||
#logger.alfresco-web-bean-clipboard.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-service-descriptor-DescriptorService.name=org.alfresco.service.descriptor.DescriptorService
 | 
			
		||||
logger.alfresco-service-descriptor-DescriptorService.level=info
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-page.name=org.alfresco.web.page
 | 
			
		||||
#logger.alfresco-web-page.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap
 | 
			
		||||
logger.alfresco-repo-importer-ImporterBootstrap.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap
 | 
			
		||||
#logger.alfresco-repo-importer-ImporterBootstrap.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-admin-patch-PatchExecuter.name=org.alfresco.repo.admin.patch.PatchExecuter
 | 
			
		||||
logger.alfresco-repo-admin-patch-PatchExecuter.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.name=org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl
 | 
			
		||||
logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.level=info
 | 
			
		||||
 | 
			
		||||
# Specific patches
 | 
			
		||||
logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.name=org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch
 | 
			
		||||
logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-version-VersionMigrator.name=org.alfresco.repo.version.VersionMigrator
 | 
			
		||||
logger.alfresco-repo-version-VersionMigrator.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-module-ModuleServiceImpl.name=org.alfresco.repo.module.ModuleServiceImpl
 | 
			
		||||
logger.alfresco-repo-module-ModuleServiceImpl.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-schema-SchemaBootstrap.name=org.alfresco.repo.domain.schema.SchemaBootstrap
 | 
			
		||||
logger.alfresco-repo-domain-schema-SchemaBootstrap.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-admin-ConfigurationChecker.name=org.alfresco.repo.admin.ConfigurationChecker
 | 
			
		||||
logger.alfresco-repo-admin-ConfigurationChecker.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-index-AbstractReindexComponent.name=org.alfresco.repo.node.index.AbstractReindexComponent
 | 
			
		||||
logger.alfresco-repo-node-index-AbstractReindexComponent.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-index-IndexTransactionTracker.name=org.alfresco.repo.node.index.IndexTransactionTracker
 | 
			
		||||
logger.alfresco-repo-node-index-IndexTransactionTracker.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-index-FullIndexRecoveryComponent.name=org.alfresco.repo.node.index.FullIndexRecoveryComponent
 | 
			
		||||
logger.alfresco-repo-node-index-FullIndexRecoveryComponent.level=info
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-node-db-hibernate-HibernateNodeDaoServiceImpl.name=org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl
 | 
			
		||||
#logger.alfresco-repo-node-db-hibernate-HibernateNodeDaoServiceImpl.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-hibernate-DirtySessionMethodInterceptor.name=org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor
 | 
			
		||||
logger.alfresco-repo-domain-hibernate-DirtySessionMethodInterceptor.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-transaction-RetryingTransactionHelper.name=org.alfresco.repo.transaction.RetryingTransactionHelper
 | 
			
		||||
logger.alfresco-repo-transaction-RetryingTransactionHelper.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-transaction-SpringAwareUserTransaction-trace.name=org.alfresco.util.transaction.SpringAwareUserTransaction.trace
 | 
			
		||||
logger.alfresco-util-transaction-SpringAwareUserTransaction-trace.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-util-AbstractTriggerBean.name=org.alfresco.util.AbstractTriggerBean
 | 
			
		||||
logger.alfresco-util-AbstractTriggerBean.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-enterprise-repo-cluster.name=org.alfresco.enterprise.repo.cluster
 | 
			
		||||
logger.alfresco-enterprise-repo-cluster.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-version-Version2ServiceImpl.name=org.alfresco.repo.version.Version2ServiceImpl
 | 
			
		||||
logger.alfresco-repo-version-Version2ServiceImpl.level=warn
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-web-app-DebugPhaseListener.name=org.alfresco.web.app.DebugPhaseListener
 | 
			
		||||
#logger.alfresco-web-app-DebugPhaseListener.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-node-db-NodeStringLengthWorker.name=org.alfresco.repo.node.db.NodeStringLengthWorker
 | 
			
		||||
logger.alfresco-repo-node-db-NodeStringLengthWorker.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-workflow.name=org.alfresco.repo.workflow
 | 
			
		||||
logger.alfresco-repo-workflow.level=info
 | 
			
		||||
 | 
			
		||||
# FTP server debugging
 | 
			
		||||
logger.alfresco-ftp-protocol.name=org.alfresco.ftp.protocol
 | 
			
		||||
logger.alfresco-ftp-protocol.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-ftp-server.name=org.alfresco.ftp.server
 | 
			
		||||
#logger.alfresco-ftp-server.level=debug
 | 
			
		||||
 | 
			
		||||
# WebDAV debugging
 | 
			
		||||
#logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol
 | 
			
		||||
#logger.alfresco-webdav-protocol.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol
 | 
			
		||||
logger.alfresco-webdav-protocol.level=info
 | 
			
		||||
 | 
			
		||||
# Kerberos servlet filters
 | 
			
		||||
#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.name=org.alfresco.web.app.servlet.KerberosAuthenticationFilter
 | 
			
		||||
#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.level=debug
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.name=org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter
 | 
			
		||||
#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.level=debug
 | 
			
		||||
 | 
			
		||||
# File servers
 | 
			
		||||
logger.alfresco-fileserver.name=org.alfresco.fileserver
 | 
			
		||||
logger.alfresco-fileserver.level=warn
 | 
			
		||||
 | 
			
		||||
# Repo filesystem debug logging
 | 
			
		||||
#logger.alfresco-filesys-repo-ContentDiskDriver.name=org.alfresco.filesys.repo.ContentDiskDriver
 | 
			
		||||
#logger.alfresco-filesys-repo-ContentDiskDriver.level=debug
 | 
			
		||||
 | 
			
		||||
# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
 | 
			
		||||
logger.alfresco-repo-node-integrity.name=org.alfresco.repo.node.integrity
 | 
			
		||||
logger.alfresco-repo-node-integrity.level=error
 | 
			
		||||
 | 
			
		||||
# Authentication
 | 
			
		||||
logger.alfresco-filesys-auth-ftp.name=org.alfresco.filesys.auth.ftp
 | 
			
		||||
logger.alfresco-filesys-auth-ftp.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-ftp-protocol-auth.name=org.alfresco.ftp.protocol.auth
 | 
			
		||||
logger.alfresco-ftp-protocol-auth.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-webdav-auth.name=org.alfresco.repo.webdav.auth
 | 
			
		||||
logger.alfresco-repo-webdav-auth.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-web-auth.name=org.alfresco.repo.web.auth
 | 
			
		||||
logger.alfresco-repo-web-auth.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-web-app-servlet.name=org.alfresco.web.app.servlet
 | 
			
		||||
logger.alfresco-web-app-servlet.level=warn
 | 
			
		||||
 | 
			
		||||
# Used also for brute force attack detection
 | 
			
		||||
logger.alfresco-repo-security-authentication.name=org.alfresco.repo.security.authentication
 | 
			
		||||
logger.alfresco-repo-security-authentication.level=warn
 | 
			
		||||
 | 
			
		||||
# Indexer debugging
 | 
			
		||||
logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer
 | 
			
		||||
logger.alfresco-repo-search-Indexer.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer
 | 
			
		||||
#logger.alfresco-repo-search-Indexer.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-fts-FullTextSearchIndexerImpl.name=org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-fts-FullTextSearchIndexerImpl.level=warn
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index
 | 
			
		||||
#logger.alfresco-repo-search-impl-lucene-index.level=debug
 | 
			
		||||
 | 
			
		||||
# Audit debugging
 | 
			
		||||
#logger.alfresco-repo-audit.name=org.alfresco.repo.audit
 | 
			
		||||
#logger.alfresco-repo-audit.level=debug
 | 
			
		||||
#logger.alfresco-repo-audit-model.name=org.alfresco.repo.audit.model
 | 
			
		||||
#logger.alfresco-repo-audit-model.level=debug
 | 
			
		||||
 | 
			
		||||
# Property sheet and modelling debugging
 | 
			
		||||
# change to error to hide the warnings about missing properties and associations
 | 
			
		||||
logger.missingProperties.name=alfresco.missingProperties
 | 
			
		||||
logger.missingProperties.level=warn
 | 
			
		||||
 | 
			
		||||
# Dictionary/Model debugging
 | 
			
		||||
logger.alfresco-repo-dictionary.name=org.alfresco.repo.dictionary
 | 
			
		||||
logger.alfresco-repo-dictionary.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-dictionary-types-period.name=org.alfresco.repo.dictionary.types.period
 | 
			
		||||
logger.alfresco-repo-dictionary-types-period.level=warn
 | 
			
		||||
 | 
			
		||||
# Virtualization Server Registry
 | 
			
		||||
logger.alfresco-mbeans-VirtServerRegistry.name=org.alfresco.mbeans.VirtServerRegistry
 | 
			
		||||
logger.alfresco-mbeans-VirtServerRegistry.level=error
 | 
			
		||||
 | 
			
		||||
# Spring context runtime property setter
 | 
			
		||||
logger.alfresco-util-RuntimeSystemPropertiesSetter.name=org.alfresco.util.RuntimeSystemPropertiesSetter
 | 
			
		||||
logger.alfresco-util-RuntimeSystemPropertiesSetter.level=info
 | 
			
		||||
 | 
			
		||||
# Debugging options for clustering
 | 
			
		||||
logger.alfresco-repo-content-ReplicatingContentStore.name=org.alfresco.repo.content.ReplicatingContentStore
 | 
			
		||||
logger.alfresco-repo-content-ReplicatingContentStore.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-content-replication.name=org.alfresco.repo.content.replication
 | 
			
		||||
logger.alfresco-repo-content-replication.level=error
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-deploy-DeploymentServiceImpl.name=org.alfresco.repo.deploy.DeploymentServiceImpl
 | 
			
		||||
#logger.alfresco-repo-deploy-DeploymentServiceImpl.level=debug
 | 
			
		||||
 | 
			
		||||
# Activity service
 | 
			
		||||
logger.alfresco-repo-activities.name=org.alfresco.repo.activities
 | 
			
		||||
logger.alfresco-repo-activities.level=warn
 | 
			
		||||
 | 
			
		||||
# User usage tracking
 | 
			
		||||
logger.alfresco-repo-usage.name=org.alfresco.repo.usage
 | 
			
		||||
logger.alfresco-repo-usage.level=info
 | 
			
		||||
 | 
			
		||||
# Sharepoint
 | 
			
		||||
logger.alfresco-module-vti.name=org.alfresco.module.vti
 | 
			
		||||
logger.alfresco-module-vti.level=info
 | 
			
		||||
 | 
			
		||||
# Forms Engine
 | 
			
		||||
logger.alfresco-web-config-forms.name=org.alfresco.web.config.forms
 | 
			
		||||
logger.alfresco-web-config-forms.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-web-scripts-forms.name=org.alfresco.web.scripts.forms
 | 
			
		||||
logger.alfresco-web-scripts-forms.level=info
 | 
			
		||||
 | 
			
		||||
# CMIS
 | 
			
		||||
logger.alfresco-opencmis.name=org.alfresco.opencmis
 | 
			
		||||
logger.alfresco-opencmis.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-opencmis-AlfrescoCmisServiceInterceptor.name=org.alfresco.opencmis.AlfrescoCmisServiceInterceptor
 | 
			
		||||
logger.alfresco-opencmis-AlfrescoCmisServiceInterceptor.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-cmis.name=org.alfresco.cmis
 | 
			
		||||
logger.alfresco-cmis.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-cmis-dictionary.name=org.alfresco.cmis.dictionary
 | 
			
		||||
logger.alfresco-cmis-dictionary.level=warn
 | 
			
		||||
 | 
			
		||||
logger.apache-chemistry-opencmis.name=org.apache.chemistry.opencmis
 | 
			
		||||
logger.apache-chemistry-opencmis.level=info
 | 
			
		||||
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-browser-CmisBrowserBindingServlet.name=org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-browser-CmisBrowserBindingServlet.level=off
 | 
			
		||||
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.name=org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet
 | 
			
		||||
logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.level=off
 | 
			
		||||
 | 
			
		||||
# IMAP
 | 
			
		||||
logger.alfresco-repo-imap.name=org.alfresco.repo.imap
 | 
			
		||||
logger.alfresco-repo-imap.level=info
 | 
			
		||||
 | 
			
		||||
# JBPM
 | 
			
		||||
# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler
 | 
			
		||||
logger.jbpm-graph-def-GraphElement.name=org.jbpm.graph.def.GraphElement
 | 
			
		||||
logger.jbpm-graph-def-GraphElement.level=fatal
 | 
			
		||||
 | 
			
		||||
#logger.alfresco-repo-googledocs.name=org.alfresco.repo.googledocs
 | 
			
		||||
#logger.alfresco-repo-googledocs.level=debug
 | 
			
		||||
 | 
			
		||||
###### Scripting #######
 | 
			
		||||
# Web Framework
 | 
			
		||||
logger.springframework-extensions-webscripts.name=org.springframework.extensions.webscripts
 | 
			
		||||
logger.springframework-extensions-webscripts.level=info
 | 
			
		||||
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptLogger.name=org.springframework.extensions.webscripts.ScriptLogger
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptLogger.level=warn
 | 
			
		||||
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptDebugger.name=org.springframework.extensions.webscripts.ScriptDebugger
 | 
			
		||||
logger.springframework-extensions-webscripts-ScriptDebugger.level=off
 | 
			
		||||
 | 
			
		||||
# Repository
 | 
			
		||||
logger.alfresco-repo-web-scripts.name=org.alfresco.repo.web.scripts
 | 
			
		||||
logger.alfresco-repo-web-scripts.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-web-scripts-BaseWebScriptTest.name=org.alfresco.repo.web.scripts.BaseWebScriptTest
 | 
			
		||||
logger.alfresco-repo-web-scripts-BaseWebScriptTest.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-web-scripts-AlfrescoRhinoScriptDebugger.name=org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger
 | 
			
		||||
logger.alfresco-repo-web-scripts-AlfrescoRhinoScriptDebugger.level=off
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-jscript.name=org.alfresco.repo.jscript
 | 
			
		||||
logger.alfresco-repo-jscript.level=error
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-jscript-ScriptLogger.name=org.alfresco.repo.jscript.ScriptLogger
 | 
			
		||||
logger.alfresco-repo-jscript-ScriptLogger.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-cmis-rest-CMISTest.name=org.alfresco.repo.cmis.rest.CMISTest
 | 
			
		||||
logger.alfresco-repo-cmis-rest-CMISTest.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.name=org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.level=off
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptExecutorImpl.name=org.alfresco.repo.domain.schema.script.ScriptExecutorImpl
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-ScriptExecutorImpl.level=info
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.name=org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor
 | 
			
		||||
logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.level=off
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.name=org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl
 | 
			
		||||
logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.level=info
 | 
			
		||||
 | 
			
		||||
# Bulk Filesystem Import Tool
 | 
			
		||||
logger.alfresco-repo-bulkimport.name=org.alfresco.repo.bulkimport
 | 
			
		||||
logger.alfresco-repo-bulkimport.level=warn
 | 
			
		||||
 | 
			
		||||
# Freemarker
 | 
			
		||||
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
 | 
			
		||||
logger.runtime.name=freemarker.runtime
 | 
			
		||||
logger.runtime.level=
 | 
			
		||||
 | 
			
		||||
# Metadata extraction
 | 
			
		||||
logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.name=org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter
 | 
			
		||||
logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.level=warn
 | 
			
		||||
 | 
			
		||||
# no index support
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.name=org.alfresco.repo.search.impl.noindex.NoIndexIndexer
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.level=fatal
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.name=org.alfresco.repo.search.impl.noindex.NoIndexSearchService
 | 
			
		||||
logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.level=fatal
 | 
			
		||||
 | 
			
		||||
# lucene index warnings
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index-IndexInfo.name=org.alfresco.repo.search.impl.lucene.index.IndexInfo
 | 
			
		||||
logger.alfresco-repo-search-impl-lucene-index-IndexInfo.level=warn
 | 
			
		||||
 | 
			
		||||
# Warn about RMI socket bind retries.
 | 
			
		||||
logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.name=org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory
 | 
			
		||||
logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.level=warn
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-usage-RepoUsageMonitor.name=org.alfresco.repo.usage.RepoUsageMonitor
 | 
			
		||||
logger.alfresco-repo-usage-RepoUsageMonitor.level=info
 | 
			
		||||
 | 
			
		||||
# identity service authentication
 | 
			
		||||
logger.alfresco-repo-security-authentication-identityservice.name=org.alfresco.repo.security.authentication.identityservice
 | 
			
		||||
logger.alfresco-repo-security-authentication-identityservice.level=debug
 | 
			
		||||
 | 
			
		||||
logger.keycloak.name=org.keycloak
 | 
			
		||||
logger.keycloak.level=debug
 | 
			
		||||
 | 
			
		||||
# Renditions and Transforms
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.name=org.alfresco.repo.content.transform.TransformerDebug
 | 
			
		||||
logger.alfresco-repo-content-transform-TransformerDebug.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-rendition2.name=org.alfresco.repo.rendition2
 | 
			
		||||
logger.alfresco-repo-rendition2.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-thumbnail-ThumbnailServiceImplTest.name=org.alfresco.repo.thumbnail.ThumbnailServiceImplTest
 | 
			
		||||
logger.alfresco-repo-thumbnail-ThumbnailServiceImplTest.level=debug
 | 
			
		||||
 | 
			
		||||
logger.alfresco-repo-rendition2-RenditionService2Impl.name=org.alfresco.repo.rendition2.RenditionService2Impl
 | 
			
		||||
logger.alfresco-repo-rendition2-RenditionService2Impl.level=debug
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
set +vx
 | 
			
		||||
 | 
			
		||||
function cloneRepo() {
 | 
			
		||||
  local REPO="${1}"
 | 
			
		||||
  local TAG_OR_BRANCH="${2}"
 | 
			
		||||
 | 
			
		||||
  printf "Cloning \"%s\" on %s\n" "${TAG_OR_BRANCH}" "${REPO}"
 | 
			
		||||
 | 
			
		||||
  # clone the repository branch/tag
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null
 | 
			
		||||
 | 
			
		||||
  rm -rf "$(basename "${REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  git clone -b "${TAG_OR_BRANCH}" --depth=1 "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}"
 | 
			
		||||
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set -vx
 | 
			
		||||
@@ -1,40 +0,0 @@
 | 
			
		||||
version: "3"
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  postgres:
 | 
			
		||||
    profiles: ["postgres"]
 | 
			
		||||
    image: postgres:${POSTGRES_VERSION}
 | 
			
		||||
    environment:
 | 
			
		||||
      - POSTGRES_PASSWORD=alfresco
 | 
			
		||||
      - POSTGRES_USER=alfresco
 | 
			
		||||
      - POSTGRES_DB=alfresco
 | 
			
		||||
    command: postgres -c max_connections=300
 | 
			
		||||
    ports:
 | 
			
		||||
      - "5433:5432"
 | 
			
		||||
  mariadb:
 | 
			
		||||
    profiles: ["mariadb"]
 | 
			
		||||
    image: mariadb:${MARIADB_VERSION}
 | 
			
		||||
    command: --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
 | 
			
		||||
    environment:
 | 
			
		||||
      - MYSQL_ROOT_PASSWORD=alfresco
 | 
			
		||||
      - MYSQL_USER=alfresco
 | 
			
		||||
      - MYSQL_DATABASE=alfresco
 | 
			
		||||
      - MYSQL_PASSWORD=alfresco
 | 
			
		||||
    ports:
 | 
			
		||||
      - "3307:3306"
 | 
			
		||||
  mysql:
 | 
			
		||||
    profiles: ["mysql"]
 | 
			
		||||
    image: mysql:${MYSQL_VERSION}
 | 
			
		||||
    command: --transaction-isolation='READ-COMMITTED'
 | 
			
		||||
    environment:
 | 
			
		||||
      - MYSQL_ROOT_PASSWORD=alfresco
 | 
			
		||||
      - MYSQL_USER=alfresco
 | 
			
		||||
      - MYSQL_DATABASE=alfresco
 | 
			
		||||
      - MYSQL_PASSWORD=alfresco
 | 
			
		||||
    ports:
 | 
			
		||||
      - "3307:3306"
 | 
			
		||||
  activemq:
 | 
			
		||||
    image: alfresco/alfresco-activemq:5.17.1-jre11-rockylinux8
 | 
			
		||||
    ports:
 | 
			
		||||
      - "5672:5672" # AMQP
 | 
			
		||||
      - "61616:61616" # OpenWire
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
version: "3"
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  transform-core-aio:
 | 
			
		||||
    profiles: ["with-transform-core-aio"]
 | 
			
		||||
    image: alfresco/alfresco-transform-core-aio:${TRANSFORMERS_TAG}
 | 
			
		||||
    environment:
 | 
			
		||||
      JAVA_OPTS: " -Xms256m -Xmx256m"
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8090:8090"
 | 
			
		||||
  postgres:
 | 
			
		||||
    image: postgres:14.4
 | 
			
		||||
    profiles: ["default", "with-transform-core-aio", "postgres"]
 | 
			
		||||
    environment:
 | 
			
		||||
      - POSTGRES_PASSWORD=alfresco
 | 
			
		||||
      - POSTGRES_USER=alfresco
 | 
			
		||||
      - POSTGRES_DB=alfresco
 | 
			
		||||
    command: postgres -c max_connections=300
 | 
			
		||||
    ports:
 | 
			
		||||
      - "5433:5432"
 | 
			
		||||
  activemq:
 | 
			
		||||
    profiles: ["default", "with-transform-core-aio", "activemq"]
 | 
			
		||||
    image: alfresco/alfresco-activemq:5.17.1-jre11-rockylinux8
 | 
			
		||||
    ports:
 | 
			
		||||
      - "5672:5672" # AMQP
 | 
			
		||||
      - "61616:61616" # OpenWire
 | 
			
		||||
							
								
								
									
										193
									
								
								scripts/travis/build_functions.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								scripts/travis/build_functions.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,193 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
set +vx
 | 
			
		||||
 | 
			
		||||
function isPullRequestBuild() {
 | 
			
		||||
  test "${TRAVIS_PULL_REQUEST}" != "false"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function isBranchBuild() {
 | 
			
		||||
  test "${TRAVIS_PULL_REQUEST}" = "false"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function cloneRepo() {
 | 
			
		||||
  local REPO="${1}"
 | 
			
		||||
  local TAG_OR_BRANCH="${2}"
 | 
			
		||||
 | 
			
		||||
  printf "Clonning \"%s\" on %s\n" "${TAG_OR_BRANCH}" "${REPO}"
 | 
			
		||||
 | 
			
		||||
  # clone the repository branch/tag
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null
 | 
			
		||||
 | 
			
		||||
  rm -rf "$(basename "${REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  git clone -b "${TAG_OR_BRANCH}" --depth=1 "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}"
 | 
			
		||||
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function retrievePomParentVersion() {
 | 
			
		||||
  local REPO="${1}"
 | 
			
		||||
 | 
			
		||||
  if [ -z "${REPO}" ]; then
 | 
			
		||||
    pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
 | 
			
		||||
  else
 | 
			
		||||
    pushd "$(dirname "${BASH_SOURCE[0]}")/../../../$(basename "${REPO%.git}")" >/dev/null
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  sed -n '/<parent>/,/<\/parent>/p' pom.xml \
 | 
			
		||||
    | sed -n '/<version>/,/<\/version>/p' \
 | 
			
		||||
    | tr -d '\n' \
 | 
			
		||||
    | grep -oP '(?<=<version>).*(?=</version>)' \
 | 
			
		||||
    | xargs
 | 
			
		||||
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function retrievePomProperty() {
 | 
			
		||||
  local KEY="${1}"
 | 
			
		||||
  local REPO="${2}"
 | 
			
		||||
 | 
			
		||||
  if [ -z "${REPO}" ]; then
 | 
			
		||||
    pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
 | 
			
		||||
  else
 | 
			
		||||
    pushd "$(dirname "${BASH_SOURCE[0]}")/../../../$(basename "${REPO%.git}")" >/dev/null
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  sed -n '/<properties>/,/<\/properties>/p' pom.xml \
 | 
			
		||||
    | sed -n "/<${KEY}>/,/<\/${KEY}>/p" \
 | 
			
		||||
    | tr -d '\n' \
 | 
			
		||||
    | grep -oP "(?<=<${KEY}>).*(?=</${KEY}>)" \
 | 
			
		||||
    | xargs
 | 
			
		||||
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function evaluatePomProperty() {
 | 
			
		||||
  local KEY="${1}"
 | 
			
		||||
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../" >/dev/null
 | 
			
		||||
 | 
			
		||||
  mvn -B -q help:evaluate -Dexpression="${KEY}" -DforceStdout
 | 
			
		||||
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function remoteBranchExists() {
 | 
			
		||||
  local REMOTE_REPO="${1}"
 | 
			
		||||
  local BRANCH="${2}"
 | 
			
		||||
 | 
			
		||||
  git ls-remote --exit-code --heads "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REMOTE_REPO}" "${BRANCH}" &>/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function identifyUpstreamSourceBranch() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
 | 
			
		||||
  # if it's a pull request, use the source branch name (if it exists)
 | 
			
		||||
  if isPullRequestBuild && remoteBranchExists "${UPSTREAM_REPO}" "${TRAVIS_PULL_REQUEST_BRANCH}" ; then
 | 
			
		||||
    echo "${TRAVIS_PULL_REQUEST_BRANCH}"
 | 
			
		||||
    exit 0
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # otherwise use the current branch name (or in case of PRs, the target branch name)
 | 
			
		||||
  if remoteBranchExists "${UPSTREAM_REPO}" "${TRAVIS_BRANCH}" ; then
 | 
			
		||||
    echo "${TRAVIS_BRANCH}"
 | 
			
		||||
    exit 0
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # if none of the previous exists, use the "master" branch
 | 
			
		||||
  echo "master"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function pullUpstreamTag() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
  local TAG="${2}"
 | 
			
		||||
 | 
			
		||||
  cloneRepo "${UPSTREAM_REPO}" "${TAG}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function pullSameBranch() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
 | 
			
		||||
  local SOURCE_BRANCH="$(identifyUpstreamSourceBranch "${UPSTREAM_REPO}")"
 | 
			
		||||
 | 
			
		||||
  cloneRepo "${UPSTREAM_REPO}" "${SOURCE_BRANCH}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function buildUpstreamTag() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
  local TAG="${2}"
 | 
			
		||||
  local EXTRA_BUILD_ARGUMENTS="${3}"
 | 
			
		||||
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
 | 
			
		||||
 | 
			
		||||
  cd "$(basename "${UPSTREAM_REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  mvn -B -V clean package -DskipTests -Dmaven.javadoc.skip=true "-Dimage.tag=${TAG}" ${EXTRA_BUILD_ARGUMENTS}
 | 
			
		||||
 | 
			
		||||
  popd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function buildSameBranchOnUpstream() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
  local EXTRA_BUILD_ARGUMENTS="${2}"
 | 
			
		||||
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
 | 
			
		||||
 | 
			
		||||
  cd "$(basename "${UPSTREAM_REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  mvn -B -V -q clean install -DskipTests -Dmaven.javadoc.skip=true ${EXTRA_BUILD_ARGUMENTS}
 | 
			
		||||
  mvn -B -V -q install -DskipTests -f packaging/tests/pom.xml
 | 
			
		||||
 | 
			
		||||
  popd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function pullUpstreamTagAndBuildDockerImage() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
  local TAG="${2}"
 | 
			
		||||
  local EXTRA_BUILD_ARGUMENTS="${3}"
 | 
			
		||||
 | 
			
		||||
  cloneRepo "${UPSTREAM_REPO}" "${TAG}"
 | 
			
		||||
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
 | 
			
		||||
 | 
			
		||||
  cd "$(basename "${UPSTREAM_REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  mvn -B -V clean package -DskipTests -Dmaven.javadoc.skip=true "-Dimage.tag=${TAG}" ${EXTRA_BUILD_ARGUMENTS}
 | 
			
		||||
 | 
			
		||||
  popd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function pullAndBuildSameBranchOnUpstream() {
 | 
			
		||||
  local UPSTREAM_REPO="${1}"
 | 
			
		||||
  local EXTRA_BUILD_ARGUMENTS="${2}"
 | 
			
		||||
 | 
			
		||||
  local SOURCE_BRANCH="$(identifyUpstreamSourceBranch "${UPSTREAM_REPO}")"
 | 
			
		||||
 | 
			
		||||
  cloneRepo "${UPSTREAM_REPO}" "${SOURCE_BRANCH}"
 | 
			
		||||
 | 
			
		||||
  pushd "$(dirname "${BASH_SOURCE[0]}")/../../../"
 | 
			
		||||
 | 
			
		||||
  cd "$(basename "${UPSTREAM_REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  mvn -B -V -q clean install -DskipTests -Dmaven.javadoc.skip=true ${EXTRA_BUILD_ARGUMENTS}
 | 
			
		||||
  mvn -B -V -q install -DskipTests -f packaging/tests/pom.xml
 | 
			
		||||
 | 
			
		||||
  popd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function retieveLatestTag() {
 | 
			
		||||
  local REPO="${1}"
 | 
			
		||||
  local BRANCH="${2}"
 | 
			
		||||
 | 
			
		||||
  local LOCAL_PATH="/tmp/$(basename "${REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
  git clone -q -b "${BRANCH}" "https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO}" "${LOCAL_PATH}"
 | 
			
		||||
 | 
			
		||||
  pushd "${LOCAL_PATH}" >/dev/null
 | 
			
		||||
  git describe --abbrev=0 --tags
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
 | 
			
		||||
  rm -rf "${LOCAL_PATH}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set -vx
 | 
			
		||||
@@ -5,7 +5,7 @@ set -vex
 | 
			
		||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
 | 
			
		||||
 | 
			
		||||
# Maven Setup
 | 
			
		||||
mkdir -p "${HOME}/.m2" && cp -f .github/.ci.settings.xml "${HOME}/.m2/settings.xml"
 | 
			
		||||
mkdir -p "${HOME}/.m2" && cp -f .travis.settings.xml "${HOME}/.m2/settings.xml"
 | 
			
		||||
find "${HOME}/.m2/repository/" -type d -name "*-SNAPSHOT*" | xargs -r -l rm -rf
 | 
			
		||||
 | 
			
		||||
# Docker Logins
 | 
			
		||||
@@ -4,22 +4,23 @@ PS4="\[\e[35m\]+ \[\e[m\]"
 | 
			
		||||
set -vex
 | 
			
		||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Use full history for release
 | 
			
		||||
git checkout -B "${BRANCH_NAME}"
 | 
			
		||||
# Define git identity for commits
 | 
			
		||||
git checkout -B "${TRAVIS_BRANCH}"
 | 
			
		||||
# Add email to link commits to user
 | 
			
		||||
git config user.email "${GIT_EMAIL}"
 | 
			
		||||
git config user.name "${GIT_USERNAME}"
 | 
			
		||||
 | 
			
		||||
# Run the release plugin - with "[skip ci]" in the release commit message
 | 
			
		||||
mvn -B \
 | 
			
		||||
  -Pall-tas-tests \
 | 
			
		||||
  -Pags \
 | 
			
		||||
  "-Darguments=-Pall-tas-tests -Pags -DskipTests -Dbuild-number=${BUILD_NUMBER}" \
 | 
			
		||||
  "-Darguments=-Pall-tas-tests -Pags -DskipTests -Dbuild-number=${TRAVIS_BUILD_NUMBER}" \
 | 
			
		||||
  release:clean release:prepare release:perform \
 | 
			
		||||
  -DscmCommentPrefix="[maven-release-plugin][skip ci] " \
 | 
			
		||||
  -Dusername="${GIT_USERNAME}" \
 | 
			
		||||
  -Dpassword="${GIT_PASSWORD}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
popd
 | 
			
		||||
set +vex
 | 
			
		||||
echo "=========================== Finishing Release Script =========================="
 | 
			
		||||
							
								
								
									
										26
									
								
								scripts/travis/source_clear.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								scripts/travis/source_clear.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
echo "=========================== Starting SourceClear Script ==========================="
 | 
			
		||||
PS4="\[\e[35m\]+ \[\e[m\]"
 | 
			
		||||
set +e -v -x
 | 
			
		||||
pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
 | 
			
		||||
 | 
			
		||||
mvn -B -q clean install \
 | 
			
		||||
    -DskipTests \
 | 
			
		||||
    -Dmaven.javadoc.skip=true \
 | 
			
		||||
    com.srcclr:srcclr-maven-plugin:scan \
 | 
			
		||||
    -Dcom.srcclr.apiToken=${SRCCLR_API_TOKEN} > scan.log
 | 
			
		||||
 | 
			
		||||
SUCCESS=$?   # this will read exit code of the previous command
 | 
			
		||||
 | 
			
		||||
if [ -z "$VERACODE_FAILS_BUILD" ] || [ "$VERACODE_FAILS_BUILD" = false ] ; then
 | 
			
		||||
    SUCCESS=0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
cat scan.log | grep -e 'Full Report Details' -e 'Failed'
 | 
			
		||||
 | 
			
		||||
popd
 | 
			
		||||
set +vex
 | 
			
		||||
echo "=========================== Finishing SourceClear Script =========================="
 | 
			
		||||
 | 
			
		||||
exit ${SUCCESS}
 | 
			
		||||
@@ -7,8 +7,8 @@ pushd "$(dirname "${BASH_SOURCE[0]}")/../../"
 | 
			
		||||
source "$(dirname "${BASH_SOURCE[0]}")/build_functions.sh"
 | 
			
		||||
 | 
			
		||||
#Fetch the latest changes, as Travis will only checkout the PR commit
 | 
			
		||||
git fetch origin "${BRANCH_NAME}"
 | 
			
		||||
git checkout "${BRANCH_NAME}"
 | 
			
		||||
git fetch origin "${TRAVIS_BRANCH}"
 | 
			
		||||
git checkout "${TRAVIS_BRANCH}"
 | 
			
		||||
git pull
 | 
			
		||||
 | 
			
		||||
# Retrieve the current Community version - latest tag on the current branch
 | 
			
		||||
@@ -16,7 +16,7 @@ VERSION="$(git describe --abbrev=0 --tags)"
 | 
			
		||||
 | 
			
		||||
DOWNSTREAM_REPO="github.com/Alfresco/alfresco-enterprise-repo.git"
 | 
			
		||||
 | 
			
		||||
cloneRepo "${DOWNSTREAM_REPO}" "${BRANCH_NAME}"
 | 
			
		||||
cloneRepo "${DOWNSTREAM_REPO}" "${TRAVIS_BRANCH}"
 | 
			
		||||
 | 
			
		||||
cd "$(dirname "${BASH_SOURCE[0]}")/../../../$(basename "${DOWNSTREAM_REPO%.git}")"
 | 
			
		||||
 | 
			
		||||
@@ -33,8 +33,8 @@ git status
 | 
			
		||||
git --no-pager diff pom.xml
 | 
			
		||||
git add pom.xml
 | 
			
		||||
 | 
			
		||||
if [[ "${COMMIT_MESSAGE}" =~ \[force[^\]]*\] ]]; then
 | 
			
		||||
  FORCE_TOKEN=$(echo "${COMMIT_MESSAGE}" | sed "s|^.*\(\[force[^]]*\]\).*$|\1|g")
 | 
			
		||||
if [[ "${TRAVIS_COMMIT_MESSAGE}" =~ \[force[^\]]*\] ]]; then
 | 
			
		||||
  FORCE_TOKEN=$(echo "${TRAVIS_COMMIT_MESSAGE}" | sed "s|^.*\(\[force[^]]*\]\).*$|\1|g")
 | 
			
		||||
  git commit --allow-empty -m "${FORCE_TOKEN} Update upstream version to ${VERSION}"
 | 
			
		||||
  git push
 | 
			
		||||
elif git status --untracked-files=no --porcelain | grep -q '^' ; then
 | 
			
		||||
		Reference in New Issue
	
	Block a user