mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
			dependabot
			...
			feature/AC
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3b77e4f2a3 | ||
| 
						 | 
					d3e78b4705 | ||
| 
						 | 
					f93213d342 | ||
| 
						 | 
					812959be2e | ||
| 
						 | 
					5b8c52db67 | ||
| 
						 | 
					20c42b6561 | ||
| 
						 | 
					52dfea9b21 | ||
| 
						 | 
					d04dada44e | ||
| 
						 | 
					2e85de7c81 | ||
| 
						 | 
					42324368e5 | ||
| 
						 | 
					8d885220d8 | ||
| 
						 | 
					6367f5304d | ||
| 
						 | 
					f17b309c27 | ||
| 
						 | 
					bb2cc1765d | ||
| 
						 | 
					d20e8ee158 | ||
| 
						 | 
					254193f9aa | ||
| 
						 | 
					4293f21618 | ||
| 
						 | 
					e0eb43c479 | ||
| 
						 | 
					f1bbb6cce7 | ||
| 
						 | 
					e6e2a2d8ac | 
							
								
								
									
										41
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -15,6 +15,7 @@ on:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  JAVA_VERSION: '21'
 | 
			
		||||
  DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
 | 
			
		||||
  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
 | 
			
		||||
  GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60
 | 
			
		||||
@@ -44,6 +45,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v8.24.1
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
@@ -65,6 +68,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v8.24.1
 | 
			
		||||
@@ -88,6 +93,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/github-download-file@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.BOT_GITHUB_TOKEN }}
 | 
			
		||||
@@ -144,6 +151,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - uses: Alfresco/ya-pmd-scan@v4.3.0
 | 
			
		||||
        with:
 | 
			
		||||
          classpath-build-command: "mvn test-compile -ntp -Pags -pl \"-:alfresco-community-repo-docker\""
 | 
			
		||||
@@ -177,6 +186,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run tests"
 | 
			
		||||
@@ -214,6 +225,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -249,6 +262,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: Run MariaDB ${{ matrix.version }} database
 | 
			
		||||
@@ -276,6 +291,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run MariaDB 10.11 database"
 | 
			
		||||
@@ -303,6 +320,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run MySQL 8 database"
 | 
			
		||||
@@ -329,6 +348,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run PostgreSQL 14.15 database"
 | 
			
		||||
@@ -355,6 +376,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run PostgreSQL 15.10 database"
 | 
			
		||||
@@ -381,6 +404,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run PostgreSQL 16.6 database"
 | 
			
		||||
@@ -405,6 +430,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run ActiveMQ"
 | 
			
		||||
@@ -461,6 +488,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Set transformers tag"
 | 
			
		||||
@@ -531,6 +560,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -570,6 +601,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - name: "Run Postgres 16.6 database"
 | 
			
		||||
@@ -600,6 +633,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -632,6 +667,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -660,6 +697,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -706,6 +745,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								.github/workflows/master_release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/master_release.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
			
		||||
      - release/**
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  JAVA_VERSION: '21'
 | 
			
		||||
  GIT_USERNAME: ${{ secrets.BOT_GITHUB_USERNAME }}
 | 
			
		||||
  GIT_EMAIL: ${{ secrets.BOT_GITHUB_EMAIL }}
 | 
			
		||||
  GIT_PASSWORD: ${{ secrets.BOT_GITHUB_TOKEN }}
 | 
			
		||||
@@ -37,6 +38,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.24.1
 | 
			
		||||
@@ -66,6 +69,8 @@ jobs:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: ${{ env.JAVA_VERSION }}
 | 
			
		||||
      - name: "Init"
 | 
			
		||||
        run: bash ./scripts/ci/init.sh
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.24.1
 | 
			
		||||
 
 | 
			
		||||
@@ -133,7 +133,7 @@
 | 
			
		||||
        "filename": ".github/workflows/master_release.yml",
 | 
			
		||||
        "hashed_secret": "3e26d6750975d678acb8fa35a0f69237881576b0",
 | 
			
		||||
        "is_verified": false,
 | 
			
		||||
        "line_number": 24,
 | 
			
		||||
        "line_number": 25,
 | 
			
		||||
        "is_secret": false
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
@@ -1845,5 +1845,5 @@
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "generated_at": "2025-06-09T16:43:14Z"
 | 
			
		||||
  "generated_at": "2025-09-04T08:27:43Z"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ import com.github.dockerjava.core.command.LogContainerResultCallback;
 | 
			
		||||
import com.github.dockerjava.netty.NettyDockerCmdExecFactory;
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.Setter;
 | 
			
		||||
import org.apache.commons.lang.SystemUtils;
 | 
			
		||||
import org.apache.commons.lang3.SystemUtils;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPr
 | 
			
		||||
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.json.JSONObject;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
@@ -56,7 +56,7 @@ import org.alfresco.test.AlfrescoTest;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add Relationship tests
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kavit Shah
 | 
			
		||||
 */
 | 
			
		||||
public class AddRelationshipTests extends BaseRMRestTest
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ import java.time.Instant;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.apache.http.HttpEntity;
 | 
			
		||||
import org.apache.http.HttpResponse;
 | 
			
		||||
import org.apache.http.HttpStatus;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -51,8 +51,8 @@
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>commons-lang</groupId>
 | 
			
		||||
            <artifactId>commons-lang</artifactId>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
            <artifactId>commons-lang3</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ import java.util.ResourceBundle;
 | 
			
		||||
import java.util.regex.Matcher;
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringEscapeUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringEscapeUtils;
 | 
			
		||||
import org.json.simple.JSONObject;
 | 
			
		||||
import org.springframework.extensions.webscripts.Cache;
 | 
			
		||||
import org.springframework.extensions.webscripts.Status;
 | 
			
		||||
@@ -92,7 +92,7 @@ public class WikiPageGet extends AbstractWikiWebScript
 | 
			
		||||
                {
 | 
			
		||||
                    links.add(link);
 | 
			
		||||
                    // build the list of available pages
 | 
			
		||||
                    WikiPageInfo wikiPage = wikiService.getWikiPage(site.getShortName(), StringEscapeUtils.unescapeHtml(link));
 | 
			
		||||
                    WikiPageInfo wikiPage = wikiService.getWikiPage(site.getShortName(), StringEscapeUtils.unescapeHtml4(link));
 | 
			
		||||
                    if (wikiPage != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        pageTitles.add(wikiPage.getTitle());
 | 
			
		||||
 
 | 
			
		||||
@@ -91,6 +91,15 @@ function doclist_getAllNodes(parsedArgs, filterParams, query, totalItemCount)
 | 
			
		||||
   };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function sanitizeJunkFavouriteKeys(favourites){
 | 
			
		||||
   for (var key in favourites) {
 | 
			
		||||
      if (!key || key.trim() === "") {
 | 
			
		||||
         delete favourites[key];
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   return favourites;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Main entry point: Create collection of documents and folders in the given space
 | 
			
		||||
 *
 | 
			
		||||
@@ -123,6 +132,28 @@ function doclist_main()
 | 
			
		||||
   
 | 
			
		||||
   if (logger.isLoggingEnabled())
 | 
			
		||||
      logger.log("doclist.lib.js - NodeRef: " + parsedArgs.nodeRef + " Query: " + query);
 | 
			
		||||
 | 
			
		||||
   favourites = sanitizeJunkFavouriteKeys(favourites);
 | 
			
		||||
 | 
			
		||||
   if(Object.keys(favourites).length === 0 && query === null)
 | 
			
		||||
   {
 | 
			
		||||
      return {
 | 
			
		||||
         luceneQuery: "",
 | 
			
		||||
         paging: {
 | 
			
		||||
            totalRecords: 0,
 | 
			
		||||
            startIndex: 0
 | 
			
		||||
         },
 | 
			
		||||
         container: parsedArgs.rootNode,
 | 
			
		||||
         parent: null,
 | 
			
		||||
         onlineEditing: utils.moduleInstalled("org.alfresco.module.vti"),
 | 
			
		||||
         itemCount: {
 | 
			
		||||
            folders: 0,
 | 
			
		||||
            documents: 0
 | 
			
		||||
         },
 | 
			
		||||
         items: [],
 | 
			
		||||
         customJSON: slingshotDocLib.getJSON()
 | 
			
		||||
      };
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   var totalItemCount = filterParams.limitResults ? parseInt(filterParams.limitResults, 10) : -1;
 | 
			
		||||
   // For all sites documentLibrary query we pull in all available results and post filter
 | 
			
		||||
 
 | 
			
		||||
@@ -182,11 +182,14 @@ var Filters =
 | 
			
		||||
         case "favourites":
 | 
			
		||||
            for (var favourite in favourites)
 | 
			
		||||
            {
 | 
			
		||||
               if (filterQuery)
 | 
			
		||||
               if (favourite && favourite.trim() !== "")
 | 
			
		||||
               {
 | 
			
		||||
                  filterQuery += " OR ";
 | 
			
		||||
                  if (filterQuery)
 | 
			
		||||
                  {
 | 
			
		||||
                     filterQuery += " OR ";
 | 
			
		||||
                  }
 | 
			
		||||
                  filterQuery += "ID:\"" + favourite + "\"";
 | 
			
		||||
               }
 | 
			
		||||
               filterQuery += "ID:\"" + favourite + "\"";
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            if (filterQuery.length !== 0)
 | 
			
		||||
@@ -201,7 +204,13 @@ var Filters =
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
               // empty favourites query
 | 
			
		||||
               filterQuery = "+ID:\"\"";
 | 
			
		||||
               logger.warn("No favourites found for user: " + person.properties.userName);
 | 
			
		||||
               return {
 | 
			
		||||
                  query: null,
 | 
			
		||||
                  limitResults: 0,
 | 
			
		||||
                  sort: [],
 | 
			
		||||
                  language: "lucene"
 | 
			
		||||
               };
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            filterParams.query = filterQuery;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ import java.util.regex.Matcher;
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
import jakarta.transaction.UserTransaction;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.lang.StringEscapeUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringEscapeUtils;
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
import org.json.JSONArray;
 | 
			
		||||
@@ -958,7 +958,7 @@ public class WikiRestApiTest extends BaseWebScriptTest
 | 
			
		||||
                String link = m.group(1);
 | 
			
		||||
                link += "?title=<script>alert('xss');</script>";
 | 
			
		||||
                WikiPageInfo wikiPage2 = this.wikiService.getWikiPage(SITE_SHORT_NAME_WIKI, link);
 | 
			
		||||
                WikiPageInfo wikiPage1 = this.wikiService.getWikiPage(SITE_SHORT_NAME_WIKI, StringEscapeUtils.unescapeHtml(link));
 | 
			
		||||
                WikiPageInfo wikiPage1 = this.wikiService.getWikiPage(SITE_SHORT_NAME_WIKI, StringEscapeUtils.unescapeHtml4(link));
 | 
			
		||||
                assertEquals(wikiPage2, wikiPage1);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
      <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
      <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,7 @@ commons-fileupload  http://jakarta.apache.org/commons/
 | 
			
		||||
commons-httpclient  http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-io  http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-jxpath  http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-lang    http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-lang3   http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-lang3   http://jakarta.apache.org/commons/
 | 
			
		||||
commons-logging http://jakarta.apache.org/commons/ 
 | 
			
		||||
commons-net http://jakarta.apache.org/commons/
 | 
			
		||||
commons-pool    http://jakarta.apache.org/commons/ 
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# More infos about this image: https://github.com/Alfresco/alfresco-docker-base-tomcat
 | 
			
		||||
FROM alfresco/alfresco-base-tomcat:tomcat10-jre17-rockylinux9@sha256:00d89fb84bda7bb37c17b0117adb2cfe4f7cbddcd6c1e42b0a67ea8dbb41a734
 | 
			
		||||
FROM alfresco/alfresco-base-tomcat:tomcat10-jre21-rockylinux9@sha256:ed568167f4c28efc9db4c5bc44a882ee117c475463b526b21ada99e1b6d568dd
 | 
			
		||||
# Set default docker_context.
 | 
			
		||||
ARG resource_path=target
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <organization>
 | 
			
		||||
@@ -16,11 +16,11 @@
 | 
			
		||||
    </organization>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <maven.build.sourceVersion>17</maven.build.sourceVersion>
 | 
			
		||||
        <maven.build.sourceVersion>21</maven.build.sourceVersion>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
 | 
			
		||||
        <maven-release.version>2.5.3</maven-release.version>
 | 
			
		||||
        <java.version>17</java.version>
 | 
			
		||||
        <java.version>21</java.version>
 | 
			
		||||
        <suiteXmlFile>${project.basedir}/src/test/resources/cmis-suite.xml</suiteXmlFile>
 | 
			
		||||
        <cmis.binding />
 | 
			
		||||
        <cmis.basePath />
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import java.util.Date;
 | 
			
		||||
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
 | 
			
		||||
import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
 | 
			
		||||
import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
 | 
			
		||||
import org.apache.commons.lang.time.DateUtils;
 | 
			
		||||
import org.apache.commons.lang3.time.DateUtils;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,18 +8,18 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <suiteXmlFile>${project.basedir}/src/test/resources/restapi-suite.xml</suiteXmlFile>
 | 
			
		||||
        <maven.build.sourceVersion>17</maven.build.sourceVersion>
 | 
			
		||||
        <maven.build.sourceVersion>21</maven.build.sourceVersion>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <rest.api.explorer.branch>master</rest.api.explorer.branch>
 | 
			
		||||
        <httpclient-osgi-version>4.5.6</httpclient-osgi-version>
 | 
			
		||||
        <commons-lang3.version>3.18.0</commons-lang3.version>
 | 
			
		||||
        <scribejava-apis.version>8.3.3</scribejava-apis.version>
 | 
			
		||||
        <java.version>17</java.version>
 | 
			
		||||
        <java.version>21</java.version>
 | 
			
		||||
    </properties>
 | 
			
		||||
 | 
			
		||||
    <profiles>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
    <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
    <name>Alfresco Community Repo Parent</name>
 | 
			
		||||
 | 
			
		||||
@@ -38,7 +38,7 @@
 | 
			
		||||
        <builder.name>entitled-builder</builder.name>
 | 
			
		||||
        <local.registry>127.0.0.1:5000</local.registry>
 | 
			
		||||
 | 
			
		||||
        <java.version>17</java.version>
 | 
			
		||||
        <java.version>21</java.version>
 | 
			
		||||
        <maven.compiler.source>${java.version}</maven.compiler.source>
 | 
			
		||||
        <maven.compiler.target>${java.version}</maven.compiler.target>
 | 
			
		||||
        <maven.build.sourceVersion>${java.version}</maven.build.sourceVersion>
 | 
			
		||||
@@ -422,9 +422,9 @@
 | 
			
		||||
                <version>1.18.0</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-lang</groupId>
 | 
			
		||||
                <artifactId>commons-lang</artifactId>
 | 
			
		||||
                <version>2.6</version>
 | 
			
		||||
                <groupId>org.apache.commons</groupId>
 | 
			
		||||
                <artifactId>commons-lang3</artifactId>
 | 
			
		||||
                <version>3.18.0</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-io</groupId>
 | 
			
		||||
@@ -714,7 +714,7 @@
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.jsoup</groupId>
 | 
			
		||||
                <artifactId>jsoup</artifactId>
 | 
			
		||||
                <version>1.21.2</version>
 | 
			
		||||
                <version>1.21.1</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <!-- upgrade dependency from TIKA -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>25.3.0.28-SNAPSHOT</version>
 | 
			
		||||
        <version>25.3.0.33-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
@@ -94,7 +94,6 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
            <artifactId>commons-lang3</artifactId>
 | 
			
		||||
            <version>3.18.0</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>commons-codec</groupId>
 | 
			
		||||
@@ -737,10 +736,6 @@
 | 
			
		||||
            <artifactId>reflections</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>commons-lang</groupId>
 | 
			
		||||
            <artifactId>commons-lang</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
@@ -845,12 +840,12 @@
 | 
			
		||||
                    </execution>
 | 
			
		||||
                </executions>
 | 
			
		||||
                <configuration>
 | 
			
		||||
                    <complianceLevel>17</complianceLevel>
 | 
			
		||||
                    <complianceLevel>${java.version}</complianceLevel>
 | 
			
		||||
                    <outxml>false</outxml>
 | 
			
		||||
                    <verbose>true</verbose>
 | 
			
		||||
                    <showWeaveInfo>true</showWeaveInfo>
 | 
			
		||||
                    <source>17</source>
 | 
			
		||||
                    <target>17</target>
 | 
			
		||||
                    <source>${java.version}</source>
 | 
			
		||||
                    <target>${java.version}</target>
 | 
			
		||||
                    <additionalCompilerArgs>
 | 
			
		||||
                        <arg>-parameters</arg>
 | 
			
		||||
                    </additionalCompilerArgs>
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,7 @@ public class NodeDAOImpl extends AbstractNodeDAOImpl
 | 
			
		||||
    private static final String SELECT_NODE_MAX_ID = "alfresco.node.select_NodeMaxId";
 | 
			
		||||
    private static final String SELECT_NODE_INTERVAL_BY_TYPE = "alfresco.node.select_MinMaxNodeIdForNodeType";
 | 
			
		||||
    private static final String SELECT_NODES_WITH_ASPECT_IDS = "alfresco.node.select_NodesWithAspectIds";
 | 
			
		||||
    private static final String SELECT_NODES_WITH_ASPECT_IDS_LIMITED = "alfresco.node.select_NodesWithAspectIds_Limited";
 | 
			
		||||
    private static final String SELECT_NODES_WITH_ASPECT_IDS_LIMITED = "alfresco.node.select.select_NodesWithAspectIds_Limited";
 | 
			
		||||
    private static final String INSERT_NODE_ASSOC = "alfresco.node.insert.insert_NodeAssoc";
 | 
			
		||||
    private static final String UPDATE_NODE_ASSOC = "alfresco.node.update_NodeAssoc";
 | 
			
		||||
    private static final String DELETE_NODE_ASSOC = "alfresco.node.delete_NodeAssoc";
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Repository
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2025 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -124,6 +124,9 @@ public class RhinoScriptProcessor extends BaseProcessor implements ScriptProcess
 | 
			
		||||
    /** Number of (bytecode) instructions that will trigger the observer */
 | 
			
		||||
    private int observerInstructionCount = 100;
 | 
			
		||||
 | 
			
		||||
    /** Flag to enable or disable scope cleaning at the end of each script execution */
 | 
			
		||||
    private boolean cleanScope = true;
 | 
			
		||||
 | 
			
		||||
    /** Custom context factory */
 | 
			
		||||
    public static AlfrescoContextFactory contextFactory;
 | 
			
		||||
 | 
			
		||||
@@ -210,6 +213,15 @@ public class RhinoScriptProcessor extends BaseProcessor implements ScriptProcess
 | 
			
		||||
        this.observerInstructionCount = observerInstructionCount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param cleanScope
 | 
			
		||||
     *            true to enable scope cleaning at the end of each script execution - set to false to disable this feature.
 | 
			
		||||
     */
 | 
			
		||||
    public void setCleanScope(boolean cleanScope)
 | 
			
		||||
    {
 | 
			
		||||
        this.cleanScope = cleanScope;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @see org.alfresco.service.cmr.repository.ScriptProcessor#reset()
 | 
			
		||||
     */
 | 
			
		||||
@@ -619,7 +631,7 @@ public class RhinoScriptProcessor extends BaseProcessor implements ScriptProcess
 | 
			
		||||
        }
 | 
			
		||||
        finally
 | 
			
		||||
        {
 | 
			
		||||
            if (!secure)
 | 
			
		||||
            if (!secure && cleanScope)
 | 
			
		||||
            {
 | 
			
		||||
                unsetScope(model, scope);
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -81,11 +81,19 @@ public class RenditionService2Impl implements RenditionService2, InitializingBea
 | 
			
		||||
 | 
			
		||||
    public static final QName DEFAULT_RENDITION_CONTENT_PROP = ContentModel.PROP_CONTENT;
 | 
			
		||||
    public static final String DEFAULT_MIMETYPE = MimetypeMap.MIMETYPE_TEXT_PLAIN;
 | 
			
		||||
    public static final String MIMETYPE_METADATA_EXTRACT = "alfresco-metadata-extract";
 | 
			
		||||
    public static final String MIMETYPE_METADATA_EMBED = "alfresco-metadata-embed";
 | 
			
		||||
    public static final String DEFAULT_ENCODING = "UTF-8";
 | 
			
		||||
 | 
			
		||||
    public static final int SOURCE_HAS_NO_CONTENT = -1;
 | 
			
		||||
    public static final int RENDITION2_DOES_NOT_EXIST = -2;
 | 
			
		||||
 | 
			
		||||
    // Allowed mimetypes to support text or metadata extract transforms when thumbnails are disabled.
 | 
			
		||||
    private static final Set<String> ALLOWED_MIMETYPES = Set.of(
 | 
			
		||||
            MimetypeMap.MIMETYPE_TEXT_PLAIN,
 | 
			
		||||
            MIMETYPE_METADATA_EXTRACT,
 | 
			
		||||
            MIMETYPE_METADATA_EMBED);
 | 
			
		||||
 | 
			
		||||
    private static Log logger = LogFactory.getLog(RenditionService2Impl.class);
 | 
			
		||||
 | 
			
		||||
    // As Async transforms and renditions are so similar, this class provides a way to provide the code that is different.
 | 
			
		||||
@@ -288,7 +296,7 @@ public class RenditionService2Impl implements RenditionService2, InitializingBea
 | 
			
		||||
    {
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            if (!isEnabled())
 | 
			
		||||
            if (!isAsyncAllowed(renderOrTransform))
 | 
			
		||||
            {
 | 
			
		||||
                throw new RenditionService2Exception("Async transforms and renditions are disabled " +
 | 
			
		||||
                        "(system.thumbnail.generate=false or renditionService2.enabled=false).");
 | 
			
		||||
@@ -967,4 +975,24 @@ public class RenditionService2Impl implements RenditionService2, InitializingBea
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Checks if the given transform callback is a text extract transform for content indexing or metadata extract/embed.
 | 
			
		||||
    private boolean isTextOrMetadataExtractTransform(RenderOrTransformCallBack renderOrTransform)
 | 
			
		||||
    {
 | 
			
		||||
        RenditionDefinition2 renditionDefinition = renderOrTransform.getRenditionDefinition();
 | 
			
		||||
        return renditionDefinition != null && ALLOWED_MIMETYPES.contains(renditionDefinition.getTargetMimetype());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isAsyncAllowed(RenderOrTransformCallBack renderOrTransform)
 | 
			
		||||
    {
 | 
			
		||||
        // If enabled is false, all async transforms/renditions must be blocked
 | 
			
		||||
        if (!enabled)
 | 
			
		||||
        {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // If thumbnails are disabled, allow only text extract or metadata extract/embed transforms
 | 
			
		||||
        return thumbnailsEnabled || isTextOrMetadataExtractTransform(renderOrTransform);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ import com.nimbusds.oauth2.sdk.id.Identifier;
 | 
			
		||||
import com.nimbusds.oauth2.sdk.id.Issuer;
 | 
			
		||||
import com.nimbusds.openid.connect.sdk.claims.PersonClaims;
 | 
			
		||||
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
import org.apache.hc.client5.http.classic.HttpClient;
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import com.nimbusds.oauth2.sdk.Scope;
 | 
			
		||||
import com.nimbusds.oauth2.sdk.id.Identifier;
 | 
			
		||||
import com.nimbusds.oauth2.sdk.id.State;
 | 
			
		||||
import org.apache.commons.lang.StringUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.security.oauth2.client.registration.ClientRegistration;
 | 
			
		||||
 
 | 
			
		||||
@@ -782,25 +782,6 @@
 | 
			
		||||
        <if test="ordered == true">order by node.id ASC</if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <select id="select_NodesWithAspectIds_Limited" parameterType="Ids" resultMap="result_NodeRef" >
 | 
			
		||||
        select
 | 
			
		||||
            node.id             as id,
 | 
			
		||||
            store.protocol      as protocol,
 | 
			
		||||
            store.identifier    as identifier,
 | 
			
		||||
            node.uuid           as uuid
 | 
			
		||||
        from
 | 
			
		||||
            alf_node_aspects na
 | 
			
		||||
            join alf_node node on (na.node_id = node.id)
 | 
			
		||||
            left join alf_store store on (store.id = node.store_id)
 | 
			
		||||
        where
 | 
			
		||||
            <![CDATA[na.node_id >= #{idOne}]]>
 | 
			
		||||
            <if test="idTwo != null"><![CDATA[and na.node_id < #{idTwo}]]></if>
 | 
			
		||||
            and na.qname_id in
 | 
			
		||||
                <foreach item="item" index="i" collection="ids" open="(" separator="," close=")">#{item}</foreach>
 | 
			
		||||
        <if test="ordered == true">order by node.id ASC</if>
 | 
			
		||||
        <if test="maxResults != null"><![CDATA[limit #{maxResults}]]></if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
    <!-- Common results for result_NodeAssoc -->
 | 
			
		||||
    <sql id="select_NodeAssoc_Results">
 | 
			
		||||
        select
 | 
			
		||||
@@ -1566,4 +1547,4 @@
 | 
			
		||||
        </foreach>
 | 
			
		||||
    </delete>
 | 
			
		||||
        
 | 
			
		||||
</mapper>
 | 
			
		||||
</mapper>
 | 
			
		||||
 
 | 
			
		||||
@@ -30,4 +30,23 @@
 | 
			
		||||
      <![CDATA[and commit_time_ms <= #{maxCommitTime}]]>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
    <select id="select_NodesWithAspectIds_Limited" parameterType="Ids" resultMap="alfresco.node.result_NodeRef" >
 | 
			
		||||
        select
 | 
			
		||||
            node.id             as id,
 | 
			
		||||
            store.protocol      as protocol,
 | 
			
		||||
            store.identifier    as identifier,
 | 
			
		||||
            node.uuid           as uuid
 | 
			
		||||
        from
 | 
			
		||||
            alf_node_aspects na
 | 
			
		||||
            join alf_node node on (na.node_id = node.id)
 | 
			
		||||
            left join alf_store store on (store.id = node.store_id)
 | 
			
		||||
        where
 | 
			
		||||
            <![CDATA[na.node_id >= #{idOne}]]>
 | 
			
		||||
            <if test="idTwo != null"><![CDATA[and na.node_id < #{idTwo}]]></if>
 | 
			
		||||
            and na.qname_id in
 | 
			
		||||
                <foreach item="item" index="i" collection="ids" open="(" separator="," close=")">#{item}</foreach>
 | 
			
		||||
        <if test="ordered == true">order by node.id ASC</if>
 | 
			
		||||
        <if test="maxResults != null"><![CDATA[limit #{maxResults}]]></if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
 
 | 
			
		||||
@@ -30,4 +30,23 @@
 | 
			
		||||
      <![CDATA[and commit_time_ms <= #{maxCommitTime}]]>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
    <select id="select_NodesWithAspectIds_Limited" parameterType="Ids" resultMap="alfresco.node.result_NodeRef" >
 | 
			
		||||
        select
 | 
			
		||||
            node.id             as id,
 | 
			
		||||
            store.protocol      as protocol,
 | 
			
		||||
            store.identifier    as identifier,
 | 
			
		||||
            node.uuid           as uuid
 | 
			
		||||
        from
 | 
			
		||||
            alf_node_aspects na
 | 
			
		||||
            join alf_node node on (na.node_id = node.id)
 | 
			
		||||
            left join alf_store store on (store.id = node.store_id)
 | 
			
		||||
        where
 | 
			
		||||
            <![CDATA[na.node_id >= #{idOne}]]>
 | 
			
		||||
            <if test="idTwo != null"><![CDATA[and na.node_id < #{idTwo}]]></if>
 | 
			
		||||
            and na.qname_id in
 | 
			
		||||
                <foreach item="item" index="i" collection="ids" open="(" separator="," close=")">#{item}</foreach>
 | 
			
		||||
        <if test="ordered == true">order by node.id ASC</if>
 | 
			
		||||
        <if test="maxResults != null"><![CDATA[limit #{maxResults}]]></if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
 
 | 
			
		||||
@@ -1394,6 +1394,9 @@ scripts.execution.maxMemoryUsedInBytes=-1
 | 
			
		||||
# Number of instructions that will trigger the observer
 | 
			
		||||
scripts.execution.observerInstructionCount=5000
 | 
			
		||||
 | 
			
		||||
# Flag to control if the scope is cleaned at the end of script execution
 | 
			
		||||
scripts.execution.clean.scope=true
 | 
			
		||||
 | 
			
		||||
# Default value being used in POST/size-details endpoint to partition a huge folder into smaller chunks
 | 
			
		||||
# so that we can compute more efficiently and consolidate all sizes into a single unit.
 | 
			
		||||
default.async.folder.items=1000
 | 
			
		||||
 
 | 
			
		||||
@@ -60,6 +60,9 @@
 | 
			
		||||
        <property name="observerInstructionCount">
 | 
			
		||||
            <value>${scripts.execution.observerInstructionCount}</value>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="cleanScope">
 | 
			
		||||
            <value>${scripts.execution.clean.scope}</value>
 | 
			
		||||
        </property>
 | 
			
		||||
    </bean>
 | 
			
		||||
 | 
			
		||||
    <!-- base config implementation that script extension beans extend from - for auto registration
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
import org.alfresco.model.RenditionModel;
 | 
			
		||||
import org.alfresco.repo.content.MimetypeMap;
 | 
			
		||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
 | 
			
		||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
 | 
			
		||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
 | 
			
		||||
@@ -776,4 +777,58 @@ public class RenditionService2IntegrationTest extends AbstractRenditionIntegrati
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testTextExtractTransformAllowedWhenThumbnailDisabled()
 | 
			
		||||
    {
 | 
			
		||||
        // create a source node
 | 
			
		||||
        NodeRef sourceNodeRef = createSource(ADMIN, "quick.pdf");
 | 
			
		||||
        assertNotNull("Node not generated", sourceNodeRef);
 | 
			
		||||
        String replyQueue = "org.test.queue";
 | 
			
		||||
        String targetMimetype = MimetypeMap.MIMETYPE_TEXT_PLAIN;
 | 
			
		||||
 | 
			
		||||
        TransformDefinition textExtractTransform = new TransformDefinition(
 | 
			
		||||
                targetMimetype,
 | 
			
		||||
                java.util.Collections.emptyMap(),
 | 
			
		||||
                "clientData",
 | 
			
		||||
                replyQueue,
 | 
			
		||||
                "requestId");
 | 
			
		||||
 | 
			
		||||
        renditionService2.setThumbnailsEnabled(false);
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            // Should NOT throw, as this is a text extract transform
 | 
			
		||||
            AuthenticationUtil.runAs(() -> {
 | 
			
		||||
                transactionService.getRetryingTransactionHelper().doInTransaction(() -> {
 | 
			
		||||
                    renditionService2.transform(sourceNodeRef, textExtractTransform);
 | 
			
		||||
                    return null;
 | 
			
		||||
                });
 | 
			
		||||
                return null;
 | 
			
		||||
            }, ADMIN);
 | 
			
		||||
        }
 | 
			
		||||
        finally
 | 
			
		||||
        {
 | 
			
		||||
            renditionService2.setThumbnailsEnabled(true);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testMetadataExtractTransformAllowedWhenThumbnailDisabled()
 | 
			
		||||
    {
 | 
			
		||||
        // create a source node
 | 
			
		||||
        NodeRef sourceNodeRef = createSource(ADMIN, "quick.pdf");
 | 
			
		||||
        assertNotNull("Node not generated", sourceNodeRef);
 | 
			
		||||
        renditionService2.setThumbnailsEnabled(false);
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            // Should NOT throw, as this is a metadata extract transform
 | 
			
		||||
            extract(ADMIN, sourceNodeRef);
 | 
			
		||||
            waitForExtract(ADMIN, sourceNodeRef, true);
 | 
			
		||||
        }
 | 
			
		||||
        finally
 | 
			
		||||
        {
 | 
			
		||||
            renditionService2.setThumbnailsEnabled(true);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user