Compare commits

...

28 Commits

Author SHA1 Message Date
alfresco-build
36bc1dc1a4 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-25 08:55:18 +00:00
alfresco-build
8407159a17 [maven-release-plugin][skip ci] prepare release 25.2.0.51 2025-06-25 08:55:15 +00:00
SatyamSah5
917dd35c27 ACS-9734 Context aware documentation links (#3394) 2025-06-25 13:40:51 +05:30
alfresco-build
6e815ebd34 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-23 06:16:19 +00:00
alfresco-build
ad0668cce3 [maven-release-plugin][skip ci] prepare release 25.2.0.50 2025-06-23 06:16:16 +00:00
bsayan2
11fd7ca1dd MNT-24883 sourceFilename added in transform options / Bumped ATS to 4.1.8-A.2 (#3379) 2025-06-23 10:53:24 +05:30
alfresco-build
6be0c3031f [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-22 00:08:11 +00:00
alfresco-build
a1d869bdef [maven-release-plugin][skip ci] prepare release 25.2.0.49 2025-06-22 00:08:09 +00:00
Alfresco CI User
d130c12f2a [force] Force release for 2025-06-22. 2025-06-22 00:05:04 +00:00
alfresco-build
24e987e735 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-19 09:21:30 +00:00
alfresco-build
63e7492823 [maven-release-plugin][skip ci] prepare release 25.2.0.48 2025-06-19 09:21:27 +00:00
KushalBanik
545a957a1b [PRODSEC-10189] Apache Common BeanUtils bumped up to 1.11.0 (#3393) 2025-06-19 13:58:49 +05:30
alfresco-build
325e980cf0 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-17 15:08:54 +00:00
alfresco-build
e2a4dcc6ad [maven-release-plugin][skip ci] prepare release 25.2.0.47 2025-06-17 15:08:52 +00:00
jakubkochman
a993c9ed97 ACS-6928 handling restricted nodes in queries API (#3387) 2025-06-17 16:24:06 +02:00
alfresco-build
85d2a5176b [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-17 10:30:51 +00:00
alfresco-build
3c245ae64c [maven-release-plugin][skip ci] prepare release 25.2.0.46 2025-06-17 10:30:49 +00:00
tathagta15
fbf5966d10 ACS-9745-removed-reportPortal-integration (#3383) 2025-06-17 15:04:33 +05:30
alfresco-build
8fca14df40 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-15 00:08:17 +00:00
alfresco-build
e38e7b4bda [maven-release-plugin][skip ci] prepare release 25.2.0.45 2025-06-15 00:08:15 +00:00
Alfresco CI User
b378de58d8 [force] Force release for 2025-06-15. 2025-06-15 00:05:16 +00:00
alfresco-build
8a64d9fb0b [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-11 10:29:56 +00:00
alfresco-build
3c092b696d [maven-release-plugin][skip ci] prepare release 25.2.0.44 2025-06-11 10:29:54 +00:00
Damian Ujma
6f222106c5 MNT-25089 Bump ATS to 4.1.8-A1 (#3384) 2025-06-11 11:48:13 +02:00
alfresco-build
bd5a016382 [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-11 09:24:32 +00:00
alfresco-build
dc24718717 [maven-release-plugin][skip ci] prepare release 25.2.0.43 2025-06-11 09:24:30 +00:00
Piotr Żurek
e65614d3c2 Trigger CI 2025-06-11 10:31:40 +02:00
alfresco-build
698f9b15ce [maven-release-plugin][skip ci] prepare for next development iteration 2025-06-08 00:08:13 +00:00
102 changed files with 660 additions and 1002 deletions

View File

@@ -29,9 +29,6 @@ env:
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_OIDC_ADMIN_CLIENT_ID }} AUTH0_CLIENT_ID: ${{ secrets.AUTH0_OIDC_ADMIN_CLIENT_ID }}
AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_OIDC_CLIENT_SECRET }} AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_OIDC_CLIENT_SECRET }}
AUTH0_ADMIN_PASSWORD: ${{ secrets.AUTH0_OIDC_ADMIN_PASSWORD }} AUTH0_ADMIN_PASSWORD: ${{ secrets.AUTH0_OIDC_ADMIN_PASSWORD }}
# Report Portal settings
RP_LAUNCH_PREFIX: "${{ github.workflow }} - ${{ github.job }}"
RP_PROJECT: alfresco-backend
jobs: jobs:
prepare: prepare:
@@ -182,52 +179,9 @@ jobs:
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testModule }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: run-tests
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: | run: |
eval "args=($RP_OPTS)"
mvn -B test -pl ${{ matrix.testModule }} -am ${{ matrix.testAttributes }} -DfailIfNoTests=false "${args[@]}" mvn -B test -pl ${{ matrix.testModule }} -am ${{ matrix.testAttributes }} -DfailIfNoTests=false "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -270,52 +224,8 @@ jobs:
- name: "Set up the environment" - name: "Set up the environment"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -345,52 +255,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d
env: env:
MARIADB_VERSION: ${{ matrix.version }} MARIADB_VERSION: ${{ matrix.version }}
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.version }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -416,52 +282,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mariadb up -d
env: env:
MARIADB_VERSION: 10.11 MARIADB_VERSION: 10.11
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -487,52 +309,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mysql up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile mysql up -d
env: env:
MYSQL_VERSION: 8 MYSQL_VERSION: 8
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
mvn -B test -pl repository -am -Dtest=AllDBTestsTestSuite -DfailIfNoTests=false -Ddb.driver=com.mysql.cj.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -557,52 +335,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d
env: env:
POSTGRES_VERSION: 14.15 POSTGRES_VERSION: 14.15
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -627,52 +361,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d
env: env:
POSTGRES_VERSION: 15.10 POSTGRES_VERSION: 15.10
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -697,52 +387,8 @@ jobs:
run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose-db.yaml --profile postgres up -d
env: env:
POSTGRES_VERSION: 16.6 POSTGRES_VERSION: 16.6
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -763,52 +409,8 @@ jobs:
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run ActiveMQ" - name: "Run ActiveMQ"
run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile activemq up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile activemq up -d
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: run-tests run: mvn -B test -pl repository -am -Dtest=CamelRoutesTest,CamelComponentsTest -DfailIfNoTests=false # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
mvn -B test -pl repository -am -Dtest=MessagingUnitTestSuite -DfailIfNoTests=false "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -879,52 +481,8 @@ jobs:
- name: "Set up the environment" - name: "Set up the environment"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile ${{ matrix.compose-profile }} up -d
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }} ${{ matrix.idp }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 }} # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 }} "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -986,59 +544,16 @@ jobs:
- name: "Build TAS integration tests" - name: "Build TAS integration tests"
if: ${{ matrix.test-name }} == 'Integration TAS tests' if: ${{ matrix.test-name }} == 'Integration TAS tests'
run: mvn install -pl :alfresco-community-repo-integration-test -am -DskipTests -Pall-tas-tests run: mvn install -pl :alfresco-community-repo-integration-test -am -DskipTests -Pall-tas-tests
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.test-name }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: tests id: tests
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: mvn -B verify -f packaging/tests/${{ matrix.pom-dir }}/pom.xml -Pall-tas-tests,${{ matrix.test-profile }} -Denvironment=default -DrunBugs=false
eval "args=($RP_OPTS)"
mvn -B verify -f packaging/tests/${{ matrix.pom-dir }}/pom.xml -Pall-tas-tests,${{ matrix.test-profile }} -Denvironment=default -DrunBugs=false "${args[@]}"
continue-on-error: true
- name: "Print output after success" - name: "Print output after success"
if: ${{ always() && steps.tests.outcome == 'success' }} if: ${{ always() && steps.tests.outcome == 'success' }}
run: ${TAS_SCRIPTS}/output_tests_run.sh "packaging/tests/${{ matrix.pom-dir }}" run: ${TAS_SCRIPTS}/output_tests_run.sh "packaging/tests/${{ matrix.pom-dir }}"
- name: "Print output after failure" - name: "Print output after failure"
if: ${{ always() && steps.tests.outcome == 'failure' }} if: ${{ always() && steps.tests.outcome == 'failure' }}
run: ${TAS_SCRIPTS}/output_logs_for_failures.sh "packaging/tests/${{ matrix.pom-dir }}" run: ${TAS_SCRIPTS}/output_logs_for_failures.sh "packaging/tests/${{ matrix.pom-dir }}"
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.tests.outcome != 'success'
run: |
echo "::error title=tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -1059,52 +574,8 @@ jobs:
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run Postgres 16.6 database" - name: "Run Postgres 16.6 database"
run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile postgres up -d run: docker compose -f ./scripts/ci/docker-compose/docker-compose.yaml --profile postgres up -d
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Run tests" - name: "Run tests"
id: 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 # pragma: allowlist secret
env:
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -1134,23 +605,9 @@ jobs:
run: | run: |
bash ./scripts/ci/init.sh bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh bash ./scripts/ci/build.sh
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (PostgreSQL) ${{ matrix.test-name }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Verify" - name: "Verify"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
env: 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 }}
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 }} "${args[@]}"
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -1180,23 +637,9 @@ jobs:
run: | run: |
bash ./scripts/ci/init.sh bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh bash ./scripts/ci/build.sh
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (MySQL) ${{ matrix.test-name }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Verify" - name: "Verify"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
env: 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 }}
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
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 }} "${args[@]}"
- name: "Clean Maven cache" - name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh run: bash ./scripts/ci/cleanup_cache.sh
@@ -1228,53 +671,9 @@ jobs:
${{ env.TAS_SCRIPTS }}/start-compose.sh ./amps/ags/rm-community/rm-community-repo/docker-compose.yml ${{ 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" ${{ 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 mvn -B install -pl :alfresco-governance-services-automation-community-rest-api -am -Pags -Pall-tas-tests -DskipTests
- name: "Prepare Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.16.0
id: rp-prepare
with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
rp-project: ${{ env.RP_PROJECT }}
rp-use-static-launch-name: true
continue-on-error: true
- name: "Add GitHub Step Summary"
if: github.ref_name == 'master'
env:
RP_ENABLED: ${{ steps.rp-prepare.outputs.enabled }}
RP_KEY: ${{ steps.rp-prepare.outputs.key }}
RP_URL: ${{ steps.rp-prepare.outputs.url }}
run: bash scripts/ci/add_step_summary.sh
continue-on-error: true
- name: "Test" - name: "Test"
id: run-tests
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
env: run: mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags -Pall-tas-tests
RP_OPTS: ${{ github.ref_name == 'master' && steps.rp-prepare.outputs.mvn-opts || '' }}
run: |
eval "args=($RP_OPTS)"
mvn -B test -pl :alfresco-governance-services-automation-community-rest-api -Dskip.automationtests=false -Pags -Pall-tas-tests "${args[@]}"
continue-on-error: true
- name: "Update GitHub Step Summary"
if: github.ref_name == 'master'
run: |
echo "#### ⏱ After Tests: $(date -u +'%Y-%m-%d %H:%M:%S%:z')" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: "Summarize Report Portal"
if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.16.0
id: rp-summarize
with:
tests-outcome: ${{ steps.run-tests.outcome }}
rp-launch-key: ${{ steps.rp-prepare.outputs.key }}
rp-project: ${{ env.RP_PROJECT }}
rp-token: ${{ secrets.REPORT_PORTAL_TOKEN }}
continue-on-error: true
- name: "Exit on failure"
if: steps.run-tests.outcome != 'success'
run: |
echo "::error title=run-tests::Tests failed: re-throwing on error."
exit 1
- name: "Configure AWS credentials" - name: "Configure AWS credentials"
if: ${{ always() }} if: ${{ always() }}
uses: aws-actions/configure-aws-credentials@v4 uses: aws-actions/configure-aws-credentials@v4

View File

@@ -127,29 +127,6 @@
} }
], ],
"results": { "results": {
".github/workflows/ci.yml": [
{
"type": "Secret Keyword",
"filename": ".github/workflows/ci.yml",
"hashed_secret": "b86dc2f033a63f2b7b9e7d270ab806d2910d7572",
"is_verified": false,
"line_number": 295
},
{
"type": "Secret Keyword",
"filename": ".github/workflows/ci.yml",
"hashed_secret": "1bfb0e20f886150ba59b853bcd49dea893e00966",
"is_verified": false,
"line_number": 370
},
{
"type": "Secret Keyword",
"filename": ".github/workflows/ci.yml",
"hashed_secret": "128f14373ccfaff49e3664045d3a11b50cbb7b39",
"is_verified": false,
"line_number": 904
}
],
".github/workflows/master_release.yml": [ ".github/workflows/master_release.yml": [
{ {
"type": "Secret Keyword", "type": "Secret Keyword",
@@ -1868,5 +1845,5 @@
} }
] ]
}, },
"generated_at": "2025-04-22T06:32:47Z" "generated_at": "2025-06-09T16:43:14Z"
} }

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-automation-community-repo</artifactId> <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<build> <build>
@@ -74,16 +74,6 @@
<artifactId>alfresco-testng</artifactId> <artifactId>alfresco-testng</artifactId>
<version>1.1</version> <version>1.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.awaitility</groupId> <groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId> <artifactId>awaitility</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -23,7 +23,7 @@ Recorded content can be explicitly destroyed whilst maintaining the original nod
* License: Alfresco Community * License: Alfresco Community
* Issue Tracker Link: [JIRA RM](https://issues.alfresco.com/jira/projects/RM/summary) * Issue Tracker Link: [JIRA RM](https://issues.alfresco.com/jira/projects/RM/summary)
* Contribution Model: Alfresco Closed Source * Contribution Model: Alfresco Closed Source
* Documentation: [docs.alfresco.com (Records Management)](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services-Community-Edition/23.4/Alfresco-Governance-Services-Community-Edition/Introduction) * Documentation: [docs.alfresco.com (Records Management)](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1&component=Alfresco%20Governance%20Services%20Community%20Edition)
*** ***

View File

@@ -21,18 +21,18 @@ RM is split into two main parts - a repository integration and a Share integrati
* [Community License](../LICENSE.txt) * [Community License](../LICENSE.txt)
* [Enterprise License](../../rm-enterprise/LICENSE.txt) (this file will only be present in clones of the Enterprise repository) * [Enterprise License](../../rm-enterprise/LICENSE.txt) (this file will only be present in clones of the Enterprise repository)
* [Issue Tracker Link](https://issues.alfresco.com/jira/projects/RM) * [Issue Tracker Link](https://issues.alfresco.com/jira/projects/RM)
* [Community Documentation Link](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services-Community-Edition/23.4/Alfresco-Governance-Services-Community-Edition/Introduction) * [Community Documentation Link](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1&component=Alfresco%20Governance%20Services%20Community%20Edition)
* [Enterprise Documentation Link](https://support.hyland.com/r/Alfresco/Alfresco-Governance-Services/23.4/Alfresco-Governance-Services/Introduction) * [Enterprise Documentation Link](https://support.hyland.com/access?dita:id=job1721300866386&vrm_version=25.1)
* [Contribution Model](../../CONTRIBUTING.md) * [Contribution Model](../../CONTRIBUTING.md)
*** ***
### Prerequisite Knowledge ### Prerequisite Knowledge
An understanding of Alfresco Content Services is assumed. The following pages from the [developer documentation](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Develop) give useful background information: An understanding of Alfresco Content Services is assumed. The following pages from the [developer documentation](https://support.hyland.com/access?dita:id=lsl1724405261585&vrm_version=25.2&component=Alfresco%20Content%20Services%20Community%20Edition) give useful background information:
* [ACS Architecture](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Software-Architecture) * [ACS Architecture](https://support.hyland.com/access?dita:id=lfo1719554691023&vrm_version=25.2)
* [Platform Extensions](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Extension-Points-Overview) * [Platform Extensions](https://support.hyland.com/access?dita:id=ifr1720080387005&vrm_version=25.2)
* [Share Extensions](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Share-UI-Extension-Points) * [Share Extensions](https://support.hyland.com/access?dita:id=wqu1720687386891&vrm_version=25.2)
*** ***
@@ -44,12 +44,12 @@ The RM Share module communicates with the repository module via REST APIs. Inter
* A DAO layer responsible for CRUD operations against the database. * A DAO layer responsible for CRUD operations against the database.
#### REST API #### REST API
The REST API endpoints fall into two main types - v0 (Webscripts) and v1. The [v0 API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Web-Scripts) is older and not recommended for integrations. The [v1 API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/REST-API-Guide) is newer but isn't yet feature complete. If you are running RM locally then the GS API Explorer will be available at [this link](http://localhost:8080/gs-api-explorer/). The REST API endpoints fall into two main types - v0 (Webscripts) and v1. The [v0 API](https://support.hyland.com/access?dita:id=fga1720080409048&vrm_version=25.2) is older and not recommended for integrations. The [v1 API](https://support.hyland.com/access?dita:id=cmm1721136574006&vrm_version=25.2) is newer but isn't yet feature complete. If you are running RM locally then the GS API Explorer will be available at [this link](http://localhost:8080/gs-api-explorer/).
Internally the GS v1 REST API is built on the [Alfresco v1 REST API framework](https://community.alfresco.com/community/ecm/blog/2016/10/11/v1-rest-api-part-1-introduction). It aims to be consistent with this in terms of behaviour and naming. Internally the GS v1 REST API is built on the [Alfresco v1 REST API framework](https://community.alfresco.com/community/ecm/blog/2016/10/11/v1-rest-api-part-1-introduction). It aims to be consistent with this in terms of behaviour and naming.
#### Java Public API #### Java Public API
The Java service layer is fronted by a [Java Public API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Reference/Java-Foundation-API), which we will ensure backward compatible with previous releases. Before we remove any methods there will first be a release containing that method deprecated to allow third party integrations to migrate to a new method. The Java Public API also includes a set of POJO objects which are needed to communicate with the services. It is easy to identify classes that are part of the Java Public API as they are annotated `@AlfrescoPublicApi`. The Java service layer is fronted by a [Java Public API](https://support.hyland.com/access?dita:id=lol1721390191517&vrm_version=25.2), which we will ensure backward compatible with previous releases. Before we remove any methods there will first be a release containing that method deprecated to allow third party integrations to migrate to a new method. The Java Public API also includes a set of POJO objects which are needed to communicate with the services. It is easy to identify classes that are part of the Java Public API as they are annotated `@AlfrescoPublicApi`.
Each Java service will have at least four beans defined for it: Each Java service will have at least four beans defined for it:
@@ -61,7 +61,7 @@ Each Java service will have at least four beans defined for it:
#### DAOs #### DAOs
The DAOs are not part of the Java Public API, but handle CRUD operations against RM stored data. We have some custom queries to improve performance for particularly heavy operations. The DAOs are not part of the Java Public API, but handle CRUD operations against RM stored data. We have some custom queries to improve performance for particularly heavy operations.
We use standard Alfresco [data modelling](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Content-Model-Extension-Point) to store RM metadata. We extend the [Alfresco patching mechanism](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/In-Process-Platform-Extension-Points/Patches) to provide community and enterprise schema upgrades. We use standard Alfresco [data modelling](https://support.hyland.com/access?dita:id=ekx1720080373621&vrm_version=25.2) to store RM metadata. We extend the [Alfresco patching mechanism](https://support.hyland.com/access?dita:id=ato1720080396825&vrm_version=25.2) to provide community and enterprise schema upgrades.
*** ***

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
@@ -84,11 +84,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
@@ -70,11 +70,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
@@ -126,11 +126,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId> <artifactId>mockito-core</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
@@ -247,11 +247,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.antlr</groupId> <groupId>org.antlr</groupId>
<artifactId>gunit</artifactId> <artifactId>gunit</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
@@ -46,11 +46,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId> <artifactId>mockito-core</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -9,6 +9,6 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
</project> </project>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -27,7 +27,7 @@
## Synopsis ## Synopsis
**TAS**( **T**est **A**utomation **S**ystem)- **CMIS** is the project that handles the automated tests related only to CMIS API integrated with Alfresco One [Alfresco CMIS API](https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Develop/Reference/CMIS-API). **TAS**( **T**est **A**utomation **S**ystem)- **CMIS** is the project that handles the automated tests related only to CMIS API integrated with Alfresco One [Alfresco CMIS API](https://support.hyland.com/access?dita:id=kvf1721390177551&vrm_version=25.2).
It is based on Apache Maven, compatible with major IDEs and is using also Spring capabilities for dependency injection. It is based on Apache Maven, compatible with major IDEs and is using also Spring capabilities for dependency injection.

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<organization> <organization>
@@ -68,16 +68,6 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>
@@ -36,11 +36,6 @@
<artifactId>jakarta.mail-api</artifactId> <artifactId>jakarta.mail-api</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>
@@ -44,18 +44,6 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>com.sun.mail</groupId> <groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId> <artifactId>jakarta.mail</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
@@ -79,18 +79,6 @@
<version>${commons-lang3.version}</version> <version>${commons-lang3.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.awaitility</groupId> <groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId> <artifactId>awaitility</artifactId>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>
@@ -31,11 +31,6 @@
<artifactId>webdav</artifactId> <artifactId>webdav</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

22
pom.xml
View File

@@ -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"> <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> <modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Alfresco Community Repo Parent</name> <name>Alfresco Community Repo Parent</name>
@@ -51,8 +51,8 @@
<dependency.alfresco-server-root.version>7.0.2</dependency.alfresco-server-root.version> <dependency.alfresco-server-root.version>7.0.2</dependency.alfresco-server-root.version>
<dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version> <dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version>
<dependency.activiti.version>5.23.0</dependency.activiti.version> <dependency.activiti.version>5.23.0</dependency.activiti.version>
<dependency.alfresco-transform-core.version>5.1.7</dependency.alfresco-transform-core.version> <dependency.alfresco-transform-core.version>5.1.8-A.2</dependency.alfresco-transform-core.version>
<dependency.alfresco-transform-service.version>4.1.7</dependency.alfresco-transform-service.version> <dependency.alfresco-transform-service.version>4.1.8-A.2</dependency.alfresco-transform-service.version>
<dependency.alfresco-greenmail.version>7.1</dependency.alfresco-greenmail.version> <dependency.alfresco-greenmail.version>7.1</dependency.alfresco-greenmail.version>
<dependency.acs-event-model.version>1.0.2</dependency.acs-event-model.version> <dependency.acs-event-model.version>1.0.2</dependency.acs-event-model.version>
@@ -154,7 +154,7 @@
<connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection> <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
<developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection> <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
<url>https://github.com/Alfresco/alfresco-community-repo</url> <url>https://github.com/Alfresco/alfresco-community-repo</url>
<tag>25.2.0.42</tag> <tag>HEAD</tag>
</scm> </scm>
<distributionManagement> <distributionManagement>
@@ -414,7 +414,7 @@
<dependency> <dependency>
<groupId>commons-beanutils</groupId> <groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId> <artifactId>commons-beanutils</artifactId>
<version>1.9.4</version> <version>1.11.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-codec</groupId> <groupId>commons-codec</groupId>
@@ -828,18 +828,6 @@
<version>4.13.2</version> <version>4.13.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.antlr</groupId> <groupId>org.antlr</groupId>
<artifactId>gunit</artifactId> <artifactId>gunit</artifactId>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
@@ -66,11 +66,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId> <artifactId>mockito-core</artifactId>

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Remote API * Alfresco Remote API
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -38,14 +38,19 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.extensions.surf.util.I18NUtil; import org.springframework.extensions.surf.util.I18NUtil;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingRequest;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.site.SiteModel;
import org.alfresco.rest.api.Nodes; import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.People; import org.alfresco.rest.api.People;
@@ -89,6 +94,7 @@ import org.alfresco.util.SearchLanguageConversion;
*/ */
public class QueriesImpl implements Queries, InitializingBean public class QueriesImpl implements Queries, InitializingBean
{ {
private static final Log LOGGER = LogFactory.getLog(QueriesImpl.class);
private final static Map<String, QName> NODE_SORT_PARAMS_TO_QNAMES = sortParamsToQNames( private final static Map<String, QName> NODE_SORT_PARAMS_TO_QNAMES = sortParamsToQNames(
PARAM_NAME, ContentModel.PROP_NAME, PARAM_NAME, ContentModel.PROP_NAME,
PARAM_CREATEDAT, ContentModel.PROP_CREATED, PARAM_CREATEDAT, ContentModel.PROP_CREATED,
@@ -247,7 +253,7 @@ public class QueriesImpl implements Queries, InitializingBean
{ {
// first request for this namespace prefix, get and cache result // first request for this namespace prefix, get and cache result
Collection<String> prefixes = namespaceService.getPrefixes(qname.getNamespaceURI()); Collection<String> prefixes = namespaceService.getPrefixes(qname.getNamespaceURI());
prefix = prefixes.size() != 0 ? prefixes.iterator().next() : ""; prefix = !prefixes.isEmpty() ? prefixes.iterator().next() : "";
cache.put(qname.getNamespaceURI(), prefix); cache.put(qname.getNamespaceURI(), prefix);
} }
buf.append('/').append(prefix).append(':').append(ISO9075.encode(qname.getLocalName())); buf.append('/').append(prefix).append(':').append(ISO9075.encode(qname.getLocalName()));
@@ -261,12 +267,6 @@ public class QueriesImpl implements Queries, InitializingBean
return buf.toString(); return buf.toString();
} }
@Override
protected List<Node> newList(int capacity)
{
return new ArrayList<Node>(capacity);
}
@Override @Override
protected Node convert(NodeRef nodeRef, List<String> includeParam) protected Node convert(NodeRef nodeRef, List<String> includeParam)
{ {
@@ -303,18 +303,11 @@ public class QueriesImpl implements Queries, InitializingBean
query.append("*\")"); query.append("*\")");
} }
@Override
protected List<Person> newList(int capacity)
{
return new ArrayList<Person>(capacity);
}
@Override @Override
protected Person convert(NodeRef nodeRef, List<String> includeParam) protected Person convert(NodeRef nodeRef, List<String> includeParam)
{ {
String personId = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_USERNAME); String personId = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_USERNAME);
Person person = people.getPerson(personId); return people.getPerson(personId);
return person;
} }
// TODO Do the sort in the query on day. A comment in the code for the V0 API used for live people // TODO Do the sort in the query on day. A comment in the code for the V0 API used for live people
@@ -341,28 +334,18 @@ public class QueriesImpl implements Queries, InitializingBean
query.append("*\")"); query.append("*\")");
} }
@Override
protected List<Site> newList(int capacity)
{
return new ArrayList<>(capacity);
}
@Override @Override
protected Site convert(NodeRef nodeRef, List<String> includeParam) protected Site convert(NodeRef nodeRef, List<String> includeParam)
{ {
return getSite(siteService.getSite(nodeRef), true); return getSite(siteService.getSite(nodeRef));
} }
// note: see also Sites.getSite // note: see also Sites.getSite
private Site getSite(SiteInfo siteInfo, boolean includeRole) private Site getSite(SiteInfo siteInfo)
{ {
// set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url) // set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url)
String siteId = siteInfo.getShortName(); String siteId = siteInfo.getShortName();
String role = null; String role = sites.getSiteRole(siteId);
if (includeRole)
{
role = sites.getSiteRole(siteId);
}
return new Site(siteInfo, role); return new Site(siteInfo, role);
} }
}.find(parameters, PARAM_TERM, MIN_TERM_LENGTH_SITES, "_SITE", POST_QUERY_SORT, SITE_SORT_PARAMS_TO_QNAMES, new SortColumn(PARAM_SITE_TITLE, true)); }.find(parameters, PARAM_TERM, MIN_TERM_LENGTH_SITES, "_SITE", POST_QUERY_SORT, SITE_SORT_PARAMS_TO_QNAMES, new SortColumn(PARAM_SITE_TITLE, true));
@@ -412,34 +395,38 @@ public class QueriesImpl implements Queries, InitializingBean
} }
ResultSet queryResults = null; ResultSet queryResults = null;
List<T> collection = null;
try try
{ {
queryResults = searchService.query(sp); queryResults = searchService.query(sp);
List<NodeRef> nodeRefs = queryResults.getNodeRefs(); List<NodeRef> nodeRefs = queryResults.getNodeRefs();
Map<NodeRef, T> collection = new LinkedHashMap<>(nodeRefs.size());
if (sort == POST_QUERY_SORT)
{
nodeRefs = postQuerySort(parameters, sortParamsToQNames, defaultSortCols, nodeRefs);
}
collection = newList(nodeRefs.size());
List<String> includeParam = parameters.getInclude(); List<String> includeParam = parameters.getInclude();
for (NodeRef nodeRef : nodeRefs) for (NodeRef nodeRef : nodeRefs)
{
try
{ {
T t = convert(nodeRef, includeParam); T t = convert(nodeRef, includeParam);
collection.add(t); collection.put(nodeRef, t);
}
catch (AccessDeniedException ade)
{
LOGGER.debug("Ignoring search result for nodeRef " + nodeRef + " due to access denied exception", ade);
}
} }
if (sort == POST_QUERY_SORT) if (sort == POST_QUERY_SORT)
{ {
return listPage(collection, paging); List<T> postQuerySortedCollection = postQuerySort(parameters, sortParamsToQNames, defaultSortCols, collection.keySet())
.stream()
.map(collection::get)
.toList();
return listPage(postQuerySortedCollection, paging);
} }
else else
{ {
return CollectionWithPagingInfo.asPaged(paging, collection, queryResults.hasMore(), Long.valueOf(queryResults.getNumberFound()).intValue()); return CollectionWithPagingInfo.asPaged(paging, collection.values(), queryResults.hasMore(), Long.valueOf(queryResults.getNumberFound()).intValue());
} }
} }
finally finally
@@ -464,15 +451,6 @@ public class QueriesImpl implements Queries, InitializingBean
*/ */
protected abstract void buildQuery(StringBuilder query, String term, SearchParameters sp, String queryTemplateName); protected abstract void buildQuery(StringBuilder query, String term, SearchParameters sp, String queryTemplateName);
/**
* Returns a list of the correct type.
*
* @param capacity
* of the list
* @return a new list.
*/
protected abstract List<T> newList(int capacity);
/** /**
* Converts a nodeRef into the an object of the required type. * Converts a nodeRef into the an object of the required type.
* *
@@ -551,7 +529,7 @@ public class QueriesImpl implements Queries, InitializingBean
private List<SortColumn> getSorting(Parameters parameters, List<SortColumn> defaultSortCols) private List<SortColumn> getSorting(Parameters parameters, List<SortColumn> defaultSortCols)
{ {
List<SortColumn> sortCols = parameters.getSorting(); List<SortColumn> sortCols = parameters.getSorting();
if (sortCols == null || sortCols.size() == 0) if (sortCols == null || sortCols.isEmpty())
{ {
sortCols = defaultSortCols == null ? Collections.emptyList() : defaultSortCols; sortCols = defaultSortCols == null ? Collections.emptyList() : defaultSortCols;
} }
@@ -559,14 +537,18 @@ public class QueriesImpl implements Queries, InitializingBean
} }
protected List<NodeRef> postQuerySort(Parameters parameters, Map<String, QName> sortParamsToQNames, protected List<NodeRef> postQuerySort(Parameters parameters, Map<String, QName> sortParamsToQNames,
List<SortColumn> defaultSortCols, List<NodeRef> nodeRefs) List<SortColumn> defaultSortCols, Set<NodeRef> unsortedNodeRefs)
{ {
final List<SortColumn> sortCols = getSorting(parameters, defaultSortCols); final List<SortColumn> sortCols = getSorting(parameters, defaultSortCols);
int sortColCount = sortCols.size(); int sortColCount = sortCols.size();
if (sortColCount > 0)
if (sortColCount == 0)
{ {
return new ArrayList<>(unsortedNodeRefs);
}
// make copy of nodeRefs because it can be unmodifiable list. // make copy of nodeRefs because it can be unmodifiable list.
nodeRefs = new ArrayList<NodeRef>(nodeRefs); List<NodeRef> sortedNodeRefs = new ArrayList<>(unsortedNodeRefs);
List<QName> sortPropQNames = new ArrayList<>(sortColCount); List<QName> sortPropQNames = new ArrayList<>(sortColCount);
for (SortColumn sortCol : sortCols) for (SortColumn sortCol : sortCols)
@@ -580,7 +562,7 @@ public class QueriesImpl implements Queries, InitializingBean
} }
final Collator col = AlfrescoCollator.getInstance(I18NUtil.getLocale()); final Collator col = AlfrescoCollator.getInstance(I18NUtil.getLocale());
Collections.sort(nodeRefs, new Comparator<NodeRef>() { Collections.sort(sortedNodeRefs, new Comparator<NodeRef>() {
@Override @Override
public int compare(NodeRef n1, NodeRef n2) public int compare(NodeRef n1, NodeRef n2)
{ {
@@ -613,8 +595,8 @@ public class QueriesImpl implements Queries, InitializingBean
} }
}); });
}
return nodeRefs; return sortedNodeRefs;
} }
// note: see also AbstractNodeRelation // note: see also AbstractNodeRelation

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Admin Console admin-console.header=Admin Console
admin-console.help=Help admin-console.help=Help
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Successfully saved values. admin-console.success=Successfully saved values.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Konzole pro spr\u00e1vce admin-console.header=Konzole pro spr\u00e1vce
admin-console.help=N\u00e1pov\u011bda admin-console.help=N\u00e1pov\u011bda
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Hodnoty byly \u00fasp\u011b\u0161n\u011b ulo\u017eeny. admin-console.success=Hodnoty byly \u00fasp\u011b\u0161n\u011b ulo\u017eeny.
admin-console.host=Hostitel admin-console.host=Hostitel

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Administrationskonsol admin-console.header=Administrationskonsol
admin-console.help=Hj\u00e6lp admin-console.help=Hj\u00e6lp
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=V\u00e6rdierne blev gemt. admin-console.success=V\u00e6rdierne blev gemt.
admin-console.host=V\u00e6rt admin-console.host=V\u00e6rt

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Administratorkonsole admin-console.header=Administratorkonsole
admin-console.help=Hilfe admin-console.help=Hilfe
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Erfolgreich gespeicherte Werte. admin-console.success=Erfolgreich gespeicherte Werte.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Consola de administraci\u00f3n admin-console.header=Consola de administraci\u00f3n
admin-console.help=Ayuda admin-console.help=Ayuda
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Valores guardados correctamente. admin-console.success=Valores guardados correctamente.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Hallintakonsoli admin-console.header=Hallintakonsoli
admin-console.help=Ohje admin-console.help=Ohje
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Arvot tallennettiin. admin-console.success=Arvot tallennettiin.
admin-console.host=Is\u00e4nt\u00e4 admin-console.host=Is\u00e4nt\u00e4

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Console d'administration admin-console.header=Console d'administration
admin-console.help=Aide admin-console.help=Aide
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Les valeurs ont bien \u00e9t\u00e9 enregistr\u00e9es. admin-console.success=Les valeurs ont bien \u00e9t\u00e9 enregistr\u00e9es.
admin-console.host=H\u00f4te admin-console.host=H\u00f4te

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Console di amministrazione admin-console.header=Console di amministrazione
admin-console.help=Aiuto admin-console.help=Aiuto
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=I valori sono stati salvati. admin-console.success=I valori sono stati salvati.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb admin-console.header=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb
admin-console.help=\u30d8\u30eb\u30d7 admin-console.help=\u30d8\u30eb\u30d7
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u5024\u3092\u6b63\u5e38\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002 admin-console.success=\u5024\u3092\u6b63\u5e38\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002
admin-console.host=\u30db\u30b9\u30c8 admin-console.host=\u30db\u30b9\u30c8

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Admin-konsoll admin-console.header=Admin-konsoll
admin-console.help=Hjelp admin-console.help=Hjelp
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Verdier som ble lagret. admin-console.success=Verdier som ble lagret.
admin-console.host=Vert admin-console.host=Vert

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Beheerconsole admin-console.header=Beheerconsole
admin-console.help=Help admin-console.help=Help
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Waarden zijn opgeslagen. admin-console.success=Waarden zijn opgeslagen.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Konsola administracyjna admin-console.header=Konsola administracyjna
admin-console.help=Pomoc admin-console.help=Pomoc
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Warto\u015bci zosta\u0142y zapisane pomy\u015blnie. admin-console.success=Warto\u015bci zosta\u0142y zapisane pomy\u015blnie.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Console de administra\u00e7\u00e3o admin-console.header=Console de administra\u00e7\u00e3o
admin-console.help=Ajuda admin-console.help=Ajuda
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=Valores salvos com sucesso. admin-console.success=Valores salvos com sucesso.
admin-console.host=Host admin-console.host=Host

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 admin-console.header=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
admin-console.help=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 admin-console.help=\u0421\u043f\u0440\u0430\u0432\u043a\u0430
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. admin-console.success=\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.
admin-console.host=\u0425\u043e\u0441\u0442 admin-console.host=\u0425\u043e\u0441\u0442

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=Admin-konsol admin-console.header=Admin-konsol
admin-console.help=Hj\u00e4lp admin-console.help=Hj\u00e4lp
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=V\u00e4rden sparades. admin-console.success=V\u00e4rden sparades.
admin-console.host=V\u00e4rd admin-console.host=V\u00e4rd

View File

@@ -1,7 +1,7 @@
# I18N messages for the Repository Admin Console # I18N messages for the Repository Admin Console
admin-console.header=\u7ba1\u7406\u63a7\u5236\u53f0 admin-console.header=\u7ba1\u7406\u63a7\u5236\u53f0
admin-console.help=\u5e2e\u52a9 admin-console.help=\u5e2e\u52a9
admin-console.help-link=https://support.hyland.com/p/alfresco admin-console.help-link-topic=qvs1720602310678
admin-console.success=\u5df2\u6210\u529f\u4fdd\u5b58\u7684\u503c\u3002 admin-console.success=\u5df2\u6210\u529f\u4fdd\u5b58\u7684\u503c\u3002
admin-console.host=\u4e3b\u673a admin-console.host=\u4e3b\u673a

View File

@@ -554,7 +554,7 @@ Admin.addEventListener(window, 'load', function() {
<div class="header"> <div class="header">
<span><a href="${url.serviceContext}${DEFAULT_CONTROLLER!"/admin"}">${msg("admin-console.header")}</a></span><#if metadata??><span class="meta">${HOSTNAME}</span><span class="meta">${HOSTADDR}</span></#if> <span><a href="${url.serviceContext}${DEFAULT_CONTROLLER!"/admin"}">${msg("admin-console.header")}</a></span><#if metadata??><span class="meta">${HOSTNAME}</span><span class="meta">${HOSTADDR}</span></#if>
<div style="float:right"><a href="${msg("admin-console.help-link", docsEdition)}" target="_blank">${msg("admin-console.help")}</a></div> <div style="float:right"><a href="${documentationUrl(msg("admin-console.help-link-topic"),"&component=Alfresco%20Content%20Services")}" target="_blank">${msg("admin-console.help")}</a></div>
</div> </div>
<div class="navigation-wrapper"> <div class="navigation-wrapper">

View File

@@ -29,6 +29,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -203,8 +204,8 @@ public class MoveMethodTest
@Test @Test
public void canRenameFoldersWhenNewNameMatchesShufflePattern() throws Exception public void canRenameFoldersWhenNewNameMatchesShufflePattern() throws Exception
{ {
when(davHelper.isRenameShuffle(destPath)).thenReturn(true); lenient().when(davHelper.isRenameShuffle(destPath)).thenReturn(true);
when(davHelper.isRenameShuffle(sourcePath)).thenReturn(false); lenient().when(davHelper.isRenameShuffle(sourcePath)).thenReturn(false);
// Test: Perform the rename // Test: Perform the rename
moveMethod.moveOrCopy(sourceNodeRef, sourceParentNodeRef, destParentNodeRef, "dest.doc"); moveMethod.moveOrCopy(sourceNodeRef, sourceParentNodeRef, destParentNodeRef, "dest.doc");
@@ -247,8 +248,8 @@ public class MoveMethodTest
sourcePath = "/path/from/test.doc"; sourcePath = "/path/from/test.doc";
moveMethod.m_strPath = sourcePath; moveMethod.m_strPath = sourcePath;
when(davHelper.getServiceRegistry()).thenReturn(mockServiceRegistry); lenient().when(davHelper.getServiceRegistry()).thenReturn(mockServiceRegistry);
when(mockServiceRegistry.getContentService()).thenReturn(mockContentService); lenient().when(mockServiceRegistry.getContentService()).thenReturn(mockContentService);
List<String> sourcePathSplit = Arrays.asList("path", "from", "test.doc"); List<String> sourcePathSplit = Arrays.asList("path", "from", "test.doc");
when(davHelper.splitAllPaths(sourcePath)).thenReturn(sourcePathSplit); when(davHelper.splitAllPaths(sourcePath)).thenReturn(sourcePathSplit);
@@ -366,7 +367,7 @@ public class MoveMethodTest
when(mockFileFolderService.resolveNamePath(rootNode, sourcePathSplit)).thenReturn(tmpFI); when(mockFileFolderService.resolveNamePath(rootNode, sourcePathSplit)).thenReturn(tmpFI);
when(davHelper.isRenameShuffle(destPath)).thenReturn(false); when(davHelper.isRenameShuffle(destPath)).thenReturn(false);
when(davHelper.isRenameShuffle(sourcePath)).thenReturn(true); lenient().when(davHelper.isRenameShuffle(sourcePath)).thenReturn(true);
moveMethod.moveOrCopy(atmpFI.getNodeRef(), companyHomeNodeRef, companyHomeNodeRef, bakFileName); moveMethod.moveOrCopy(atmpFI.getNodeRef(), companyHomeNodeRef, companyHomeNodeRef, bakFileName);

View File

@@ -130,6 +130,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
public void testLiveSearchSites() throws Exception public void testLiveSearchSites() throws Exception
{ {
setRequestContext(user1); setRequestContext(user1);
AuthenticationUtil.setFullyAuthenticatedUser(user1);
int sCount = 5; int sCount = 5;
assertTrue(sCount > 4); // as relied on by test below assertTrue(sCount > 4); // as relied on by test below
@@ -231,7 +232,11 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
private NodeRef getNodeRef(String createdSiteId) private NodeRef getNodeRef(String createdSiteId)
{ {
AuthenticationUtil.setFullyAuthenticatedUser(user1); // Created sites do not return NodeRefs to the caller so we need to get the NodeRef from the siteService.
// Temporarily as admin we will get NodeRefs to handle ACL authorization.
String userUnderTest = AuthenticationUtil.getFullyAuthenticatedUser();
AuthenticationUtil.setFullyAuthenticatedUser(DEFAULT_ADMIN);
// The following call to siteService.getSite(createdSiteId).getNodeRef() returns a NodeRef like: // The following call to siteService.getSite(createdSiteId).getNodeRef() returns a NodeRef like:
// workspace://SpacesStore/9db76769-96de-4de4-bdb4-a127130af362 // workspace://SpacesStore/9db76769-96de-4de4-bdb4-a127130af362
// We call tenantService.getName(nodeRef) to get a fully qualified NodeRef as Solr returns this. // We call tenantService.getName(nodeRef) to get a fully qualified NodeRef as Solr returns this.
@@ -239,6 +244,8 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
// workspace://@org.alfresco.rest.api.tests.queriespeopleapitest@SpacesStore/9db76769-96de-4de4-bdb4-a127130af362 // workspace://@org.alfresco.rest.api.tests.queriespeopleapitest@SpacesStore/9db76769-96de-4de4-bdb4-a127130af362
NodeRef nodeRef = siteService.getSite(createdSiteId).getNodeRef(); NodeRef nodeRef = siteService.getSite(createdSiteId).getNodeRef();
nodeRef = tenantService.getName(nodeRef); nodeRef = tenantService.getName(nodeRef);
AuthenticationUtil.setFullyAuthenticatedUser(userUnderTest);
return nodeRef; return nodeRef;
} }
@@ -246,6 +253,7 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
public void testLiveSearchSites_SortPage() throws Exception public void testLiveSearchSites_SortPage() throws Exception
{ {
setRequestContext(user1); setRequestContext(user1);
AuthenticationUtil.setFullyAuthenticatedUser(user1);
List<String> siteIds = new ArrayList<>(5); List<String> siteIds = new ArrayList<>(5);
@@ -306,6 +314,51 @@ public class QueriesSitesApiTest extends AbstractSingleNetworkSiteTest
} }
} }
/**
* If the search service do not support ACL filtering, then the Queries API should handle the response to exclude private sites and potential unauthorized error when building response.
*/
@Test
public void testLiveSearchExcludesPrivateSites() throws Exception
{
String publicSiteId = null;
String privateSiteId = null;
try
{
// given
setRequestContext(null, DEFAULT_ADMIN, DEFAULT_ADMIN_PWD);
createUser("bartender");
publicSiteId = createSite("samePrefixPublicSite", "samePrefixPublicSite", "Visible to all users", SiteVisibility.PUBLIC, 201).getId();
privateSiteId = createSite("samePrefixPrivateSite", "samePrefixPrivateSite", "Hidden from bartender", SiteVisibility.PRIVATE, 201).getId();
String[] searchResults = {publicSiteId, privateSiteId};
String[] expectedSites = {publicSiteId};
// when
setRequestContext(null, "bartender", "password");
AuthenticationUtil.setFullyAuthenticatedUser("bartender");
// then
checkApiCall("samePrefix", null, getPaging(0, 100), 200, expectedSites, searchResults);
}
finally
{
// cleanup
AuthenticationUtil.setFullyAuthenticatedUser(DEFAULT_ADMIN);
setRequestContext(null, DEFAULT_ADMIN, DEFAULT_ADMIN_PWD);
if (publicSiteId != null)
{
deleteSite(publicSiteId, true, 204);
}
if (privateSiteId != null)
{
deleteSite(privateSiteId, true, 204);
}
deleteUser("bartender", null);
}
}
@Override @Override
public String getScope() public String getScope()
{ {

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

View File

@@ -27,7 +27,7 @@ to integrate with a number of external Authentication providers including
* https://github.com/Alfresco/alfresco-data-model/tree/master/src/main/java/org/alfresco/repo/security/authentication * https://github.com/Alfresco/alfresco-data-model/tree/master/src/main/java/org/alfresco/repo/security/authentication
* License: LGPL * License: LGPL
* Issue Tracker Link: https://issues.alfresco.com/jira/issues/?jql=project%3DREPO * Issue Tracker Link: https://issues.alfresco.com/jira/issues/?jql=project%3DREPO
* Documentation Link: https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Administer/Manage-Security/Authentication-and-sync * Documentation Link: https://support.hyland.com/access?dita:id=byj1720776091160&vrm_version=25.2&component=Alfresco%20Content%20Services%20Community%20Edition
* Contribution Model: Alfresco Open Source * Contribution Model: Alfresco Open Source
*** ***

View File

@@ -16,7 +16,7 @@
* Source Code Link:m https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/ * Source Code Link:m https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/
* License: LGPL * License: LGPL
* Issue Tracker Link: https://issues.alfresco.com/jira/secure/RapidBoard.jspa?projectKey=REPO&useStoredSettings=true&rapidView=379 * Issue Tracker Link: https://issues.alfresco.com/jira/secure/RapidBoard.jspa?projectKey=REPO&useStoredSettings=true&rapidView=379
* Documentation Link: https://support.hyland.com/r/Alfresco/Alfresco-Content-Services/23.4/Alfresco-Content-Services/Configure/Repository/About-Versioning * Documentation Link: https://support.hyland.com/access?dita:id=ybx1720084724583&vrm_version=25.2
* Contribution Model: Alfresco publishes the source code and will review proposed patch requests * Contribution Model: Alfresco publishes the source code and will review proposed patch requests
*** ***

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>25.2.0.42</version> <version>25.2.0.52-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
@@ -627,11 +627,6 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epam.reportportal</groupId>
<artifactId>agent-java-testng</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2019 - 2022 Alfresco Software Limited * Copyright (C) 2019 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -39,6 +39,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.TransformOptionGroup; import org.alfresco.transform.config.TransformOptionGroup;
import org.alfresco.transform.config.TransformOptionValue; import org.alfresco.transform.config.TransformOptionValue;
@@ -52,6 +53,7 @@ public abstract class AbstractLocalTransform implements LocalTransform
protected final String name; protected final String name;
protected final MimetypeService mimetypeService; protected final MimetypeService mimetypeService;
protected final NodeService nodeService;
protected final TransformerDebug transformerDebug; protected final TransformerDebug transformerDebug;
protected final Set<String> transformsTransformOptionNames = new HashSet<>(); protected final Set<String> transformsTransformOptionNames = new HashSet<>();
@@ -65,7 +67,8 @@ public abstract class AbstractLocalTransform implements LocalTransform
MimetypeService mimetypeService, boolean strictMimeTypeCheck, MimetypeService mimetypeService, boolean strictMimeTypeCheck,
Map<String, Set<String>> strictMimetypeExceptions, boolean retryTransformOnDifferentMimeType, Map<String, Set<String>> strictMimetypeExceptions, boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions, Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry) LocalTransformServiceRegistry localTransformServiceRegistry,
NodeService nodeService)
{ {
this.name = name; this.name = name;
this.transformerDebug = transformerDebug; this.transformerDebug = transformerDebug;
@@ -74,6 +77,7 @@ public abstract class AbstractLocalTransform implements LocalTransform
this.strictMimetypeExceptions = strictMimetypeExceptions; this.strictMimetypeExceptions = strictMimetypeExceptions;
this.retryTransformOnDifferentMimeType = retryTransformOnDifferentMimeType; this.retryTransformOnDifferentMimeType = retryTransformOnDifferentMimeType;
this.localTransformServiceRegistry = localTransformServiceRegistry; this.localTransformServiceRegistry = localTransformServiceRegistry;
this.nodeService = nodeService;
addOptionNames(transformsTransformOptionNames, transformsTransformOptions); addOptionNames(transformsTransformOptionNames, transformsTransformOptions);
} }

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2019 - 2022 Alfresco Software Limited * Copyright (C) 2019 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -37,6 +37,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.TempFileProvider; import org.alfresco.util.TempFileProvider;
@@ -54,10 +55,10 @@ public class LocalFailoverTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions, Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType, boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions, Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry) LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{ {
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions, super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry); retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
} }
@Override @Override

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -41,6 +41,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.SupportedSourceAndTarget; import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.Transformer; import org.alfresco.transform.config.Transformer;
@@ -63,10 +64,10 @@ public class LocalPassThroughTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions, Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType, boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions, Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry) LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{ {
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions, super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry); retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
} }
public static Transformer getConfig(List<String> mimetypes) public static Transformer getConfig(List<String> mimetypes)

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -38,6 +38,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.TempFileProvider; import org.alfresco.util.TempFileProvider;
@@ -61,10 +62,10 @@ public class LocalPipelineTransform extends AbstractLocalTransform
Map<String, Set<String>> strictMimetypeExceptions, Map<String, Set<String>> strictMimetypeExceptions,
boolean retryTransformOnDifferentMimeType, boolean retryTransformOnDifferentMimeType,
Set<TransformOption> transformsTransformOptions, Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry) LocalTransformServiceRegistry localTransformServiceRegistry, NodeService nodeService)
{ {
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions, super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry); retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
} }
@Override @Override

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2022 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -26,19 +26,24 @@
package org.alfresco.repo.content.transform; package org.alfresco.repo.content.transform;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_ENCODING; import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_ENCODING;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_FILENAME;
import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_NODE_REF; import static org.alfresco.repo.rendition2.RenditionDefinition2.SOURCE_NODE_REF;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.alfresco.httpclient.HttpClientConfig; import org.alfresco.httpclient.HttpClientConfig;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.metadata.AsynchronousExtractor; import org.alfresco.repo.content.metadata.AsynchronousExtractor;
import org.alfresco.repo.rendition2.RenditionDefinition2; import org.alfresco.repo.rendition2.RenditionDefinition2;
import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
@@ -60,10 +65,11 @@ public class LocalTransformImpl extends AbstractLocalTransform
Set<TransformOption> transformsTransformOptions, Set<TransformOption> transformsTransformOptions,
LocalTransformServiceRegistry localTransformServiceRegistry, String baseUrl, LocalTransformServiceRegistry localTransformServiceRegistry, String baseUrl,
HttpClientConfig httpClientConfig, HttpClientConfig httpClientConfig,
NodeService nodeService,
int startupRetryPeriodSeconds) int startupRetryPeriodSeconds)
{ {
super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions, super(name, transformerDebug, mimetypeService, strictMimeTypeCheck, strictMimetypeExceptions,
retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry); retryTransformOnDifferentMimeType, transformsTransformOptions, localTransformServiceRegistry, nodeService);
remoteTransformerClient = new RemoteTransformerClient(name, baseUrl, httpClientConfig); remoteTransformerClient = new RemoteTransformerClient(name, baseUrl, httpClientConfig);
remoteTransformerClient.setStartupRetryPeriodSeconds(startupRetryPeriodSeconds); remoteTransformerClient.setStartupRetryPeriodSeconds(startupRetryPeriodSeconds);
@@ -155,6 +161,17 @@ public class LocalTransformImpl extends AbstractLocalTransform
transformOptions.put(SOURCE_NODE_REF, sourceNodeRef.toString()); transformOptions.put(SOURCE_NODE_REF, sourceNodeRef.toString());
} }
String filename = null;
if (sourceNodeRef != null && nodeService.exists(sourceNodeRef))
{
filename = (String) nodeService.getProperty(sourceNodeRef, ContentModel.PROP_NAME);
}
if (StringUtils.isNotEmpty(filename))
{
transformOptions.put(SOURCE_FILENAME, filename);
}
// Build an array of option names and values and extract the timeout. // Build an array of option names and values and extract the timeout.
long timeoutMs = 0; long timeoutMs = 0;
int nonOptions = transformOptions.containsKey(RenditionDefinition2.TIMEOUT) ? 1 : 0; int nonOptions = transformOptions.containsKey(RenditionDefinition2.TIMEOUT) ? 1 : 0;

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2019 - 2023 Alfresco Software Limited * Copyright (C) 2019 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -43,6 +43,7 @@ import org.springframework.beans.factory.InitializingBean;
import org.alfresco.httpclient.HttpClientConfig; import org.alfresco.httpclient.HttpClientConfig;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.CoreFunction; import org.alfresco.transform.config.CoreFunction;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
import org.alfresco.transform.config.TransformOptionGroup; import org.alfresco.transform.config.TransformOptionGroup;
@@ -71,6 +72,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
private Map<String, LocalTransform> localTransforms = new HashMap<>(); private Map<String, LocalTransform> localTransforms = new HashMap<>();
} }
private NodeService nodeService;
private String pipelineConfigDir; private String pipelineConfigDir;
private Properties properties; private Properties properties;
private MimetypeService mimetypeService; private MimetypeService mimetypeService;
@@ -85,6 +87,11 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
return httpClientConfig; return httpClientConfig;
} }
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
public void setHttpClientConfig(HttpClientConfig httpClientConfig) public void setHttpClientConfig(HttpClientConfig httpClientConfig)
{ {
this.httpClientConfig = httpClientConfig; this.httpClientConfig = httpClientConfig;
@@ -139,6 +146,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
PropertyCheck.mandatory(this, "mimetypeService", mimetypeService); PropertyCheck.mandatory(this, "mimetypeService", mimetypeService);
PropertyCheck.mandatory(this, "properties", properties); PropertyCheck.mandatory(this, "properties", properties);
PropertyCheck.mandatory(this, "transformerDebug", transformerDebug); PropertyCheck.mandatory(this, "transformerDebug", transformerDebug);
PropertyCheck.mandatory(this, "nodeService", nodeService);
strictMimetypeExceptions = getStrictMimetypeExceptions(); strictMimetypeExceptions = getStrictMimetypeExceptions();
super.afterPropertiesSet(); super.afterPropertiesSet();
} }
@@ -193,14 +201,14 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
{ {
localTransform = new LocalPassThroughTransform(name, transformerDebug, mimetypeService, localTransform = new LocalPassThroughTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType, strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this); transformsTransformOptions, this, nodeService);
} }
else if (!isPipeline && !isFailover) else if (!isPipeline && !isFailover)
{ {
int startupRetryPeriodSeconds = getStartupRetryPeriodSeconds(name); int startupRetryPeriodSeconds = getStartupRetryPeriodSeconds(name);
localTransform = new LocalTransformImpl(name, transformerDebug, mimetypeService, localTransform = new LocalTransformImpl(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType, strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this, baseUrl, httpClientConfig, transformsTransformOptions, this, baseUrl, httpClientConfig, nodeService,
startupRetryPeriodSeconds); startupRetryPeriodSeconds);
} }
else if (isPipeline) else if (isPipeline)
@@ -215,7 +223,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
localTransform = new LocalPipelineTransform(name, transformerDebug, mimetypeService, localTransform = new LocalPipelineTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType, strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this); transformsTransformOptions, this, nodeService);
for (int i = 0; i < transformerCount; i++) for (int i = 0; i < transformerCount; i++)
{ {
TransformStep intermediateTransformerStep = pipeline.get(i); TransformStep intermediateTransformerStep = pipeline.get(i);
@@ -264,7 +272,7 @@ public class LocalTransformServiceRegistry extends TransformServiceRegistryImpl
localTransform = new LocalFailoverTransform(name, transformerDebug, mimetypeService, localTransform = new LocalFailoverTransform(name, transformerDebug, mimetypeService,
strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType, strictMimeTypeCheck, strictMimetypeExceptions, retryTransformOnDifferentMimeType,
transformsTransformOptions, this); transformsTransformOptions, this, nodeService);
for (String transformerStepName : failover) for (String transformerStepName : failover)
{ {

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2018 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -35,6 +35,7 @@ import org.alfresco.api.AlfrescoPublicApi;
* @author adavis * @author adavis
*/ */
@AlfrescoPublicApi @AlfrescoPublicApi
@SuppressWarnings({"PMD.UnnecessaryFullyQualifiedName", "PMD.UnnecessaryModifier"})
public interface RenditionDefinition2 public interface RenditionDefinition2
{ {
public static final String TIMEOUT = "timeout"; public static final String TIMEOUT = "timeout";
@@ -106,6 +107,11 @@ public interface RenditionDefinition2
*/ */
public static final String SOURCE_NODE_REF = "sourceNodeRef"; public static final String SOURCE_NODE_REF = "sourceNodeRef";
/**
* The Source File Name is automatically added to the Transform Options if not specified and the transformer knows about it.
*/
public static final String SOURCE_FILENAME = "sourceFilename";
/** /**
* The encoding of a Target Node is automatically added to the Transform Options if not specified and the transformer knows about it. * The encoding of a Target Node is automatically added to the Transform Options if not specified and the transformer knows about it.
*/ */

View File

@@ -0,0 +1,195 @@
/*
* #%L
* Alfresco Repository
* %%
* 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
* 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.repo.template;
import java.util.List;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;
import freemarker.template.TemplateScalarModel;
import org.apache.commons.lang3.StringUtils;
public class DocumentationURLMethod extends BaseTemplateProcessorExtension implements TemplateMethodModelEx
{
private static final String COMPONENT_SEARCHENTERPRISE = "elasticsearch";
private static final String COMPONENT_SEARCH = "solr";
private String documentationBaseUrl;
private String acsVersion;
private String alfrescoSearchVersion;
private String alfrescoSearchEnterpriseVersion;
private String defaultDocumentationUrl;
public void setDefaultDocumentationUrl(String defaultDocumentationUrl)
{
this.defaultDocumentationUrl = defaultDocumentationUrl;
}
public void setAcsVersion(String acsVersion)
{
this.acsVersion = acsVersion;
}
public void setAlfrescoSearchVersion(String alfrescoSearchVersion)
{
this.alfrescoSearchVersion = alfrescoSearchVersion;
}
public void setAlfrescoSearchEnterpriseVersion(String alfrescoSearchEnterpriseVersion)
{
this.alfrescoSearchEnterpriseVersion = alfrescoSearchEnterpriseVersion;
}
public void setDocumentationBaseUrl(String documentationBaseUrl)
{
this.documentationBaseUrl = documentationBaseUrl;
}
/**
* Returns documentation URL. You can specify property key which should hold value of topic uid and url component(if required). * a) If no arguments are provided, the default documentation URL is returned.
*
* <pre>
* ${documentationUrl() -> https://support.hyland.com/p/alfresco
* </pre>
*
* b) First argument is interpreted as Topic UID of the URL. The value is retrieved and treated as Topic UID appended after baseURL and before version.
*
* <pre>
* ${documentationURL("eet567890373737")} -> https://support.hyland.com/access?dita:id=eet567890373737&vrm_version=25.1
* </pre>
*
* c) Second argument(if required) is interpreted as an additional URL component, which will be appended to the URL to denote a specific component of Alfresco.
*
* <pre>
* ${documentationUrl("eeu1720075126296", "&component=Alfresco%20Content%20Services%20Community%20Edition"} -> https://support.hyland.com/access?dita:id=eeu1720075126296&vrm_version=25.1&component=Alfresco%20Content%20Services%20Community%20Edition
* </pre>
*
* d) Third argument (if required) is interpreted as the Alfresco component (e.g., "solr", "elasticsearch", or empty) to determine which version to use in the URL.
*
* <pre>
* ${documentationUrl("eeu1720075126296", "", "solr")} -> https://support.hyland.com/access?dita:id=eeu1720075126296&vrm_version=2.0
* </pre>
*
* @param args
* arguments passed to Freemarker template method invocation first argument is interpreted as Topic UID of the URL, second argument is interpreted as an additional URL component, third argument is interpreted as the Alfresco component ("solr", "elasticsearch", or empty) to select the version.
* @return the documentation URL
* @throws TemplateModelException
* if an error occurs
*/
@Override
public Object exec(List args) throws TemplateModelException
{
String topicUid = getTopicUid(args);
String urlComponent = getUrlComponent(args);
String alfrescoComponent = getAlfrescoComponent(args);
return getDocumentationUrl(topicUid, urlComponent, alfrescoComponent);
}
/**
* Returns default landing documentation URL.
*
* @return default documentation URL
*/
public String getDocumentationUrl()
{
return defaultDocumentationUrl;
}
/**
* Constructs the documentation URL using the base URL, topic UID, version, and additional component.
*
* @param topicUid
* path segment
* @param urlComponent
* additional URL component (may be empty)
* @param alfrescoComponent
* additional Alfresco component (may be empty), to determine the version
* @return full documentation URL
*/
public String getDocumentationUrl(String topicUid, String urlComponent, String alfrescoComponent)
{
if (StringUtils.isEmpty(topicUid) && StringUtils.isEmpty(urlComponent))
{
return getDocumentationUrl();
}
String version = selectVersion(alfrescoComponent);
return documentationBaseUrl + topicUid + version + urlComponent;
}
private String selectVersion(String alfrescoComponent)
{
if (COMPONENT_SEARCHENTERPRISE.equalsIgnoreCase(alfrescoComponent))
{
return alfrescoSearchEnterpriseVersion;
}
if (COMPONENT_SEARCH.equalsIgnoreCase(alfrescoComponent))
{
return alfrescoSearchVersion;
}
return acsVersion;
}
/**
* Extracts a string argument from the list at the given index.
*
* @param args
* argument list
* @param index
* index to extract
* @return string value or empty string if not present
* @throws TemplateModelException
* if argument is not a scalar
*/
private String getStringArg(List<?> args, int index) throws TemplateModelException
{
if (args.size() > index)
{
Object arg = args.get(index);
if (arg instanceof TemplateScalarModel)
{
String value = ((TemplateScalarModel) arg).getAsString();
return value != null ? value : "";
}
}
return "";
}
private String getTopicUid(List<?> args) throws TemplateModelException
{
return getStringArg(args, 0);
}
private String getUrlComponent(List<?> args) throws TemplateModelException
{
return getStringArg(args, 1);
}
private String getAlfrescoComponent(List<?> args) throws TemplateModelException
{
return getStringArg(args, 2);
}
}

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Vlastnost ''{0}'' nebyla nastavena: {1} ({2}) system.err.property_not_set=Vlastnost ''{0}'' nebyla nastavena: {1} ({2})
system.err.duplicate_name=Duplicitn\u00ed n\u00e1zvy pod\u0159\u00edzen\u00fdch objekt\u016f nejsou povoleny ({0}) system.err.duplicate_name=Duplicitn\u00ed n\u00e1zvy pod\u0159\u00edzen\u00fdch objekt\u016f nejsou povoleny ({0})
system.err.lucene_not_supported=Subsyst\u00e9m hled\u00e1n\u00ed Lucene nen\u00ed podporov\u00e1n. Viz https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Egenskaben ''{0}'' er ikke blevet indstillet: {1} ({2}) system.err.property_not_set=Egenskaben ''{0}'' er ikke blevet indstillet: {1} ({2})
system.err.duplicate_name=Duplikeret navn p\u00e5 underordnet er ikke tilladt: {0} system.err.duplicate_name=Duplikeret navn p\u00e5 underordnet er ikke tilladt: {0}
system.err.lucene_not_supported=Lucene-s\u00f8geundersystemet underst\u00f8ttes ikke. Se https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Ominaisuutta {0} ei ole m\u00e4\u00e4ritetty: {1} ({2}) system.err.property_not_set=Ominaisuutta {0} ei ole m\u00e4\u00e4ritetty: {1} ({2})
system.err.duplicate_name=P\u00e4\u00e4llekk\u00e4ist\u00e4 alatasonime\u00e4 ei sallita: {0} system.err.duplicate_name=P\u00e4\u00e4llekk\u00e4ist\u00e4 alatasonime\u00e4 ei sallita: {0}
system.err.lucene_not_supported=Lucene-hakualij\u00e4rjestelm\u00e4\u00e4 ei tueta. Saat lis\u00e4tietoja osoitteesta https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set : {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set : {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed : {0} system.err.duplicate_name=Duplicate child name not allowed : {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Nie ustawiono w\u0142a\u015bciwo\u015bci ''{0}'': {1} ({2}) system.err.property_not_set=Nie ustawiono w\u0142a\u015bciwo\u015bci ''{0}'': {1} ({2})
system.err.duplicate_name=Zduplikowane nazwy element\u00f3w podrz\u0119dnych s\u0105 niedozwolone: {0} system.err.duplicate_name=Zduplikowane nazwy element\u00f3w podrz\u0119dnych s\u0105 niedozwolone: {0}
system.err.lucene_not_supported=Podsystem wyszukiwania Lucene nie jest obs\u0142ugiwany. Zobacz https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Egenskap ''{0}'' har inte st\u00e4llts in: {1} ({2}) system.err.property_not_set=Egenskap ''{0}'' har inte st\u00e4llts in: {1} ({2})
system.err.duplicate_name=Dubbelt underordnat namn inte till\u00e5tet: {0} system.err.duplicate_name=Dubbelt underordnat namn inte till\u00e5tet: {0}
system.err.lucene_not_supported=Lucene-s\u00f6kundersystemet st\u00f6ds inte. Se https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -5,7 +5,6 @@
system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2}) system.err.property_not_set=Property ''{0}'' has not been set: {1} ({2})
system.err.duplicate_name=Duplicate child name not allowed: {0} system.err.duplicate_name=Duplicate child name not allowed: {0}
system.err.lucene_not_supported=The lucene search subsystem is not supported. Please see https://support.hyland.com/p/alfresco
# Bootstrap configuration check messages # Bootstrap configuration check messages

View File

@@ -128,6 +128,7 @@
<property name="retryTransformOnDifferentMimeType" value="${content.transformer.retryOn.different.mimetype}"/> <property name="retryTransformOnDifferentMimeType" value="${content.transformer.retryOn.different.mimetype}"/>
<property name="shutdownIndicator" ref="shutdownIndicator" /> <property name="shutdownIndicator" ref="shutdownIndicator" />
<property name="httpClientConfig" ref="httpClientConfigTransform" /> <property name="httpClientConfig" ref="httpClientConfigTransform" />
<property name="nodeService" ref="NodeService" />
</bean> </bean>
<bean id="localTransformServiceRegistryJsonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" /> <bean id="localTransformServiceRegistryJsonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />

View File

@@ -1402,3 +1402,10 @@ default.async.folder.items=1000
default.nodeSize.corePoolSize=5 default.nodeSize.corePoolSize=5
default.nodeSize.maximumPoolSize=10 default.nodeSize.maximumPoolSize=10
default.nodeSize.workQueueSize=100 default.nodeSize.workQueueSize=100
# Documentation URLs properties
alfresco.documentation.baseurl=https://support.hyland.com/access?dita:id=
alfresco.documentation.acsVersion=&vrm_version=25.2
alfresco.documentation.searchVersion=&vrm_version=2.0
alfresco.documentation.searchEnterpriseVersion=&vrm_version=5.1
alfresco.documentation.defaultDocumentationUrl=https://support.hyland.com/p/alfresco

View File

@@ -161,4 +161,25 @@
<ref bean="ServiceRegistry"/> <ref bean="ServiceRegistry"/>
</property> </property>
</bean> </bean>
<bean id="documentationUrlExtension" parent="mailBaseTemplateImplementation" class="org.alfresco.repo.template.DocumentationURLMethod">
<property name="extensionName">
<value>documentationUrl</value>
</property>
<property name="documentationBaseUrl">
<value>${alfresco.documentation.baseurl}</value>
</property>
<property name="acsVersion">
<value>${alfresco.documentation.acsVersion}</value>
</property>
<property name="alfrescoSearchVersion">
<value>${alfresco.documentation.searchVersion}</value>
</property>
<property name="alfrescoSearchEnterpriseVersion">
<value>${alfresco.documentation.searchEnterpriseVersion}</value>
</property>
<property name="defaultDocumentationUrl">
<value>${alfresco.documentation.defaultDocumentationUrl}</value>
</property>
</bean>
</beans> </beans>

View File

@@ -171,4 +171,25 @@
<value>urldecode</value> <value>urldecode</value>
</property> </property>
</bean> </bean>
<bean id="documentationUrlExtension" parent="baseTemplateImplementation" class="org.alfresco.repo.template.DocumentationURLMethod">
<property name="extensionName">
<value>documentationUrl</value>
</property>
<property name="documentationBaseUrl">
<value>${alfresco.documentation.baseurl}</value>
</property>
<property name="acsVersion">
<value>${alfresco.documentation.acsVersion}</value>
</property>
<property name="alfrescoSearchVersion">
<value>${alfresco.documentation.searchVersion}</value>
</property>
<property name="alfrescoSearchEnterpriseVersion">
<value>${alfresco.documentation.searchEnterpriseVersion}</value>
</property>
<property name="defaultDocumentationUrl">
<value>${alfresco.documentation.defaultDocumentationUrl}</value>
</property>
</bean>
</beans> </beans>

View File

@@ -271,7 +271,8 @@ import org.alfresco.util.testing.category.NonBuildTests;
org.alfresco.util.schemacomp.SchemaDifferenceHelperUnitTest.class, org.alfresco.util.schemacomp.SchemaDifferenceHelperUnitTest.class,
org.alfresco.repo.tagging.TaggingServiceImplUnitTest.class, org.alfresco.repo.tagging.TaggingServiceImplUnitTest.class,
org.alfresco.repo.serviceaccount.ServiceAccountRegistryImplTest.class org.alfresco.repo.serviceaccount.ServiceAccountRegistryImplTest.class,
org.alfresco.repo.template.DocumentationURLMethodTest.class
}) })
public class AllUnitTestsSuite public class AllUnitTestsSuite
{} {}

View File

@@ -46,12 +46,12 @@ import org.alfresco.util.test.junitrules.WellKnownNodes;
public class DataDictionaryFolderTest extends BaseSpringTest public class DataDictionaryFolderTest extends BaseSpringTest
{ {
@ClassRule @ClassRule
private static final ApplicationContextInit APP_CONTEXT_INIT = new ApplicationContextInit(); public static final ApplicationContextInit APP_CONTEXT_INIT = new ApplicationContextInit();
private static final String DATA_DICTIONARY = "Data Dictionary"; private static final String DATA_DICTIONARY = "Data Dictionary";
@Rule @Rule
private WellKnownNodes wellKnownNodes = new WellKnownNodes(APP_CONTEXT_INIT); public WellKnownNodes wellKnownNodes = new WellKnownNodes(APP_CONTEXT_INIT);
private NodeService nodeService; private NodeService nodeService;

View File

@@ -31,7 +31,6 @@ import java.sql.Savepoint;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import junit.framework.AssertionFailedError;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mockito; import org.mockito.Mockito;
@@ -61,7 +60,7 @@ public class EntityLookupCacheTest implements EntityLookupCallbackDAO<Long, Obje
private ControlDAO controlDAO; private ControlDAO controlDAO;
@Before @Before
protected void setUp() throws Exception public void setUp() throws Exception
{ {
cache = new MemoryCache<Long, Object>(); cache = new MemoryCache<Long, Object>();
entityLookupCacheA = new EntityLookupCache<Long, Object, String>(cache, "A", this); entityLookupCacheA = new EntityLookupCache<Long, Object, String>(cache, "A", this);
@@ -72,19 +71,11 @@ public class EntityLookupCacheTest implements EntityLookupCallbackDAO<Long, Obje
Mockito.when(controlDAO.createSavepoint(Mockito.anyString())).thenReturn(Mockito.mock(Savepoint.class)); Mockito.when(controlDAO.createSavepoint(Mockito.anyString())).thenReturn(Mockito.mock(Savepoint.class));
} }
@Test @Test(expected = AssertionError.class)
public void testLookupsUsingIncorrectValue() throws Exception public void testLookupsUsingIncorrectValue() throws Exception
{ {
try
{
// Keep the "database" empty
entityLookupCacheA.getByValue(this); entityLookupCacheA.getByValue(this);
} }
catch (AssertionFailedError e)
{
// Expected
}
}
@Test @Test
public void testLookupAgainstEmpty() throws Exception public void testLookupAgainstEmpty() throws Exception

View File

@@ -37,6 +37,7 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only; import static org.mockito.Mockito.only;
@@ -161,7 +162,7 @@ public class CachingContentStoreTest
@Test @Test
public void getReaderForItemMissingFromCacheButNoContentToCache() public void getReaderForItemMissingFromCacheButNoContentToCache()
{ {
when(cache.getReader("url")).thenThrow(new CacheMissException("url")); lenient().when(cache.getReader("url")).thenThrow(new CacheMissException("url"));
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(cache.put("url", sourceContent)).thenReturn(false); when(cache.put("url", sourceContent)).thenReturn(false);
@@ -305,9 +306,9 @@ public class CachingContentStoreTest
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
// Don't veto writing the cache file. // Don't veto writing the cache file.
when(quota.beforeWritingCacheFile(1274L)).thenReturn(true); lenient().when(quota.beforeWritingCacheFile(1274L)).thenReturn(true);
// Do request cache file deletion. // Do request cache file deletion.
when(quota.afterWritingCacheFile(1234L)).thenReturn(false); lenient().when(quota.afterWritingCacheFile(1234L)).thenReturn(false);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");

View File

@@ -26,6 +26,7 @@
package org.alfresco.repo.lock; package org.alfresco.repo.lock;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import org.junit.Test; import org.junit.Test;
@@ -53,8 +54,8 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForLockOwnerWithNullLockType() public void testIsLockedAndReadOnly_ForLockOwnerWithNullLockType()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER);
when(lockService.getLockType(nodeRef)).thenReturn(null); lenient().when(lockService.getLockType(nodeRef)).thenReturn(null);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -64,8 +65,8 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForLockOwnerWithWriteLockType() public void testIsLockedAndReadOnly_ForLockOwnerWithWriteLockType()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER);
when(lockService.getLockType(nodeRef)).thenReturn(LockType.WRITE_LOCK); lenient().when(lockService.getLockType(nodeRef)).thenReturn(LockType.WRITE_LOCK);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -75,8 +76,8 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForLockOwnerWithNodeLockType() public void testIsLockedAndReadOnly_ForLockOwnerWithNodeLockType()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER);
when(lockService.getLockType(nodeRef)).thenReturn(LockType.NODE_LOCK); lenient().when(lockService.getLockType(nodeRef)).thenReturn(LockType.NODE_LOCK);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -86,8 +87,8 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForLockOwnerWithReadOnlyLockType() public void testIsLockedAndReadOnly_ForLockOwnerWithReadOnlyLockType()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_OWNER);
when(lockService.getLockType(nodeRef)).thenReturn(LockType.READ_ONLY_LOCK); lenient().when(lockService.getLockType(nodeRef)).thenReturn(LockType.READ_ONLY_LOCK);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -97,7 +98,7 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForNoLock() public void testIsLockedAndReadOnly_ForNoLock()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.NO_LOCK); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.NO_LOCK);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -107,7 +108,7 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForExpiredLock() public void testIsLockedAndReadOnly_ForExpiredLock()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_EXPIRED); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCK_EXPIRED);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(false);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);
@@ -117,7 +118,7 @@ public class LockUtilsTest
@Test @Test
public void testIsLockedAndReadOnly_ForLock() public void testIsLockedAndReadOnly_ForLock()
{ {
when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCKED); lenient().when(lockService.getLockStatus(nodeRef)).thenReturn(LockStatus.LOCKED);
when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true); when(lockService.isLockedAndReadOnly(nodeRef)).thenReturn(true);
boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService); boolean returnedVal = LockUtils.isLockedAndReadOnly(nodeRef, lockService);

View File

@@ -0,0 +1,111 @@
/*
* #%L
* Alfresco Repository
* %%
* 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
* 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.repo.template;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collections;
import freemarker.template.SimpleScalar;
import freemarker.template.TemplateModelException;
import org.junit.Before;
import org.junit.Test;
public class DocumentationURLMethodTest
{
public static final String BASE_URL = "baseUrl";
public static final String ACS_VERSION = "_acs_";
public static final String SEARCH_VERSION = "_solr_";
public static final String SEARCH_ENTERPRISE_VERSION = "_es_";
public static final String DEFAULT_DOCUMENTATION_URL = "defaultDocumentationUrl";
DocumentationURLMethod documentationURLMethod;
@Before
public void setUp() throws Exception
{
documentationURLMethod = new DocumentationURLMethod();
documentationURLMethod.setAcsVersion(ACS_VERSION);
documentationURLMethod.setAlfrescoSearchVersion(SEARCH_VERSION);
documentationURLMethod.setAlfrescoSearchEnterpriseVersion(SEARCH_ENTERPRISE_VERSION);
documentationURLMethod.setDocumentationBaseUrl(BASE_URL);
documentationURLMethod.setDefaultDocumentationUrl(DEFAULT_DOCUMENTATION_URL);
}
@Test
public void testGetDocumentationUrl_NoArgs() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Collections.emptyList());
assertEquals("defaultDocumentationUrl", result);
}
@Test
public void testGetDocumentationUrl_EmptyTopicUidAndUrlComponent() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Arrays.asList(
new SimpleScalar(""),
new SimpleScalar("")));
assertEquals("defaultDocumentationUrl", result);
}
@Test
public void testGetDocumentationUrl_WithTopicUid_AcsVersion() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Collections.singletonList(new SimpleScalar("/topic")));
assertEquals(BASE_URL + "/topic" + ACS_VERSION, result);
}
@Test
public void testGetDocumentationUrl_WithTopicUidAndUrlComponent_AcsVersion() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Arrays.asList(
new SimpleScalar("/topic"),
new SimpleScalar("urlComponent")));
assertEquals(BASE_URL + "/topic" + ACS_VERSION + "urlComponent", result);
}
@Test
public void testGetDocumentationUrl_WithSolrVersion() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Arrays.asList(
new SimpleScalar("/topic"),
new SimpleScalar("urlComponent"),
new SimpleScalar("solr")));
assertEquals(BASE_URL + "/topic" + SEARCH_VERSION + "urlComponent", result);
}
@Test
public void testGetDocumentationUrl_WithElasticSearchVersion() throws TemplateModelException
{
Object result = documentationURLMethod.exec(Arrays.asList(
new SimpleScalar("/topic"),
new SimpleScalar("urlComponent"),
new SimpleScalar("elasticsearch")));
assertEquals(BASE_URL + "/topic" + SEARCH_ENTERPRISE_VERSION + "urlComponent", result);
}
}

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2023 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -64,6 +64,7 @@ import org.alfresco.repo.content.transform.LocalPipelineTransform;
import org.alfresco.repo.content.transform.LocalTransformImpl; import org.alfresco.repo.content.transform.LocalTransformImpl;
import org.alfresco.repo.content.transform.LocalTransformServiceRegistry; import org.alfresco.repo.content.transform.LocalTransformServiceRegistry;
import org.alfresco.repo.content.transform.TransformerDebug; import org.alfresco.repo.content.transform.TransformerDebug;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.transform.config.SupportedSourceAndTarget; import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformConfig; import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.config.TransformOption; import org.alfresco.transform.config.TransformOption;
@@ -205,6 +206,9 @@ public class LocalTransformServiceRegistryConfigTest extends TransformRegistryMo
@Mock @Mock
private MimetypeMap mimetypeMap; private MimetypeMap mimetypeMap;
@Mock
private NodeService nodeService;
private Map<String, List<String>> imagemagickSupportedTransformation; private Map<String, List<String>> imagemagickSupportedTransformation;
private Map<String, List<String>> tikaSupportedTransformation; private Map<String, List<String>> tikaSupportedTransformation;
private Map<String, List<String>> pdfRendererSupportedTransformation; private Map<String, List<String>> pdfRendererSupportedTransformation;
@@ -232,6 +236,7 @@ public class LocalTransformServiceRegistryConfigTest extends TransformRegistryMo
registry.setProperties(properties); registry.setProperties(properties);
registry.setTransformerDebug(transformerDebug); registry.setTransformerDebug(transformerDebug);
registry.setMimetypeService(mimetypeMap); registry.setMimetypeService(mimetypeMap);
registry.setNodeService(nodeService);
registry.setPipelineConfigDir(""); registry.setPipelineConfigDir("");
registry.setCronExpression(null); // just read it once registry.setCronExpression(null); // just read it once
registry.afterPropertiesSet(); registry.afterPropertiesSet();

View File

@@ -1 +0,0 @@
com.epam.reportportal.testng.ReportPortalTestNGListener

Some files were not shown because too many files have changed in this diff Show More