mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-09-10 14:11:58 +00:00
Compare commits
165 Commits
feature/MN
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
|
dc8bfdc63d | ||
|
2b00e550a9 | ||
|
f3dca482ff | ||
|
94e957cb73 | ||
|
8868e64a6a | ||
|
f4af65943f | ||
|
6fe1b50741 | ||
|
f300bd6b3a | ||
|
f7195ef16a | ||
|
ef228f0614 | ||
|
6c0f231316 | ||
|
33b521b421 | ||
|
eff4e0738c | ||
|
5685fc3b17 | ||
|
7c22a2598b | ||
|
efe053167d | ||
|
4aae383637 | ||
|
ca1774ffae | ||
|
6206f67bdd | ||
|
82897f449f | ||
|
e6d30cddac | ||
|
0e6b444a25 | ||
|
61dc54bb33 | ||
|
a6c7f044df | ||
|
18016df074 | ||
|
b021c1ebfe | ||
|
e3e42137d9 | ||
|
9327814266 | ||
|
d45fd10431 | ||
|
09242daaec | ||
|
491a41e8ba | ||
|
1dac1e5fdb | ||
|
2c9d8e63ea | ||
|
a3998de1ba | ||
|
582742bbd3 | ||
|
ebe29717fa | ||
|
c6a654cbcf | ||
|
cd947b5581 | ||
|
ef4dd74580 | ||
|
7edbdd72f2 | ||
|
b7978c2a62 | ||
|
c1d9142a9c | ||
|
03a5a3cd3a | ||
|
c1ac217c44 | ||
|
1b04fef8cd | ||
|
31bb692b16 | ||
|
3222f13efe | ||
|
d66ed689a0 | ||
|
f84a7035d7 | ||
|
56177b6790 | ||
|
3c32899f6e | ||
|
d3512dd8e4 | ||
|
d8273b19cf | ||
|
8abea08762 | ||
|
42e3ead101 | ||
|
b1c095b51e | ||
|
ab85ea8ffe | ||
|
9a794cfe97 | ||
|
8e3f610f8a | ||
|
8c9edde95f | ||
|
5652317a0a | ||
|
b8a9a9588c | ||
|
a48cf7eed3 | ||
|
73f6c7a8f7 | ||
|
37aaa0d147 | ||
|
5d5d1d8680 | ||
|
120d4acdb0 | ||
|
fa3acb47a9 | ||
|
716b039c07 | ||
|
abec95881e | ||
|
58164d59bf | ||
|
8e80b87439 | ||
|
4e3591cc72 | ||
|
6aa4c37825 | ||
|
68dae275a5 | ||
|
536f8c609c | ||
|
6686863352 | ||
|
3774a0e504 | ||
|
4bf569d297 | ||
|
13bcfe4125 | ||
|
982e0d24f5 | ||
|
c2fbf53b03 | ||
|
f8b5e9cb03 | ||
|
ea0b37022b | ||
|
f20a9b441d | ||
|
7c3a9113a0 | ||
|
66d9beef14 | ||
|
4a97305505 | ||
|
9b4593e4b3 | ||
|
01a2a23c4a | ||
|
2c2b51f47e | ||
|
1e37b3308d | ||
|
84a36d68d4 | ||
|
40d475abf9 | ||
|
5d3f1f2402 | ||
|
2cd29d87ec | ||
|
8f1631fb55 | ||
|
5f6dced886 | ||
|
25fdc9ccc7 | ||
|
b6456cde34 | ||
|
27b80d8adb | ||
|
536e12ff76 | ||
|
96ab699ea8 | ||
|
9630d4cb02 | ||
|
fe9175d959 | ||
|
277d10133d | ||
|
3fb964a460 | ||
|
d630dcb7af | ||
|
7a673966aa | ||
|
65d2863b9d | ||
|
56ef484ae0 | ||
|
d619d5365e | ||
|
7096276b02 | ||
|
c9a46e1a8a | ||
|
98f9175a13 | ||
|
4e89b0a033 | ||
|
c6c0779984 | ||
|
554b26e7e7 | ||
|
93d704d44c | ||
|
0916efad7c | ||
|
6169ec0095 | ||
|
75ace2a268 | ||
|
f489c4193b | ||
|
71c3addf2d | ||
|
cc43f9338e | ||
|
45ad5045b1 | ||
|
773f99453e | ||
|
538d269f66 | ||
|
1dbf1c1314 | ||
|
3969cd8f14 | ||
|
eaa11fcb34 | ||
|
cd5c2227e2 | ||
|
757b26b1b8 | ||
|
0366449457 | ||
|
6827b2c7a1 | ||
|
36bc1dc1a4 | ||
|
8407159a17 | ||
|
917dd35c27 | ||
|
6e815ebd34 | ||
|
ad0668cce3 | ||
|
11fd7ca1dd | ||
|
6be0c3031f | ||
|
a1d869bdef | ||
|
d130c12f2a | ||
|
24e987e735 | ||
|
63e7492823 | ||
|
545a957a1b | ||
|
325e980cf0 | ||
|
e2a4dcc6ad | ||
|
a993c9ed97 | ||
|
85d2a5176b | ||
|
3c245ae64c | ||
|
fbf5966d10 | ||
|
8fca14df40 | ||
|
e38e7b4bda | ||
|
b378de58d8 | ||
|
8a64d9fb0b | ||
|
3c092b696d | ||
|
6f222106c5 | ||
|
bd5a016382 | ||
|
dc24718717 | ||
|
e65614d3c2 | ||
|
698f9b15ce | ||
|
09a254e5fd | ||
|
6f442a703a |
755
.github/workflows/ci.yml
vendored
755
.github/workflows/ci.yml
vendored
@@ -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:
|
||||||
@@ -44,10 +41,10 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Prepare maven cache and check compilation"
|
- name: "Prepare maven cache and check compilation"
|
||||||
@@ -65,12 +62,12 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v8.24.1
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }}
|
srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }}
|
||||||
@@ -88,10 +85,10 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/github-download-file@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/github-download-file@v8.24.1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||||
repository: "Alfresco/veracode-baseline-archive"
|
repository: "Alfresco/veracode-baseline-archive"
|
||||||
@@ -144,9 +141,9 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[skip tests]') &&
|
!contains(github.event.head_commit.message, '[skip tests]') &&
|
||||||
!contains(github.event.head_commit.message, '[force]')
|
!contains(github.event.head_commit.message, '[force]')
|
||||||
steps:
|
steps:
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- uses: Alfresco/ya-pmd-scan@v4.3.0
|
- uses: Alfresco/ya-pmd-scan@v4.3.0
|
||||||
with:
|
with:
|
||||||
classpath-build-command: "mvn test-compile -ntp -Pags -pl \"-:alfresco-community-repo-docker\""
|
classpath-build-command: "mvn test-compile -ntp -Pags -pl \"-:alfresco-community-repo-docker\""
|
||||||
@@ -177,57 +174,14 @@ jobs:
|
|||||||
testAttributes: "-Dtest=AllMmtUnitTestSuite"
|
testAttributes: "-Dtest=AllMmtUnitTestSuite"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- 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
|
||||||
|
|
||||||
@@ -257,9 +211,9 @@ jobs:
|
|||||||
REQUIRES_INSTALLED_ARTIFACTS: true
|
REQUIRES_INSTALLED_ARTIFACTS: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
run: |
|
run: |
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -336,61 +246,17 @@ jobs:
|
|||||||
version: ['10.5', '10.6']
|
version: ['10.5', '10.6']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: Run MariaDB ${{ matrix.version }} database
|
- name: Run MariaDB ${{ matrix.version }} database
|
||||||
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
|
||||||
|
|
||||||
@@ -407,61 +273,17 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Run MariaDB 10.11 database"
|
- name: "Run MariaDB 10.11 database"
|
||||||
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
|
||||||
|
|
||||||
@@ -478,61 +300,17 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Run MySQL 8 database"
|
- name: "Run MySQL 8 database"
|
||||||
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
|
||||||
|
|
||||||
@@ -548,61 +326,17 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Run PostgreSQL 14.15 database"
|
- name: "Run PostgreSQL 14.15 database"
|
||||||
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
|
||||||
|
|
||||||
@@ -618,61 +352,17 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Run PostgreSQL 15.10 database"
|
- name: "Run PostgreSQL 15.10 database"
|
||||||
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
|
||||||
|
|
||||||
@@ -688,61 +378,17 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Run PostgreSQL 16.6 database"
|
- name: "Run PostgreSQL 16.6 database"
|
||||||
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
|
||||||
|
|
||||||
@@ -756,59 +402,15 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
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
|
||||||
|
|
||||||
@@ -856,9 +458,9 @@ jobs:
|
|||||||
mvn-options: '-Dencryption.ssl.keystore.location=${CI_WORKSPACE}/keystores/alfresco/alfresco.keystore -Dencryption.ssl.truststore.location=${CI_WORKSPACE}/keystores/alfresco/alfresco.truststore'
|
mvn-options: '-Dencryption.ssl.keystore.location=${CI_WORKSPACE}/keystores/alfresco/alfresco.keystore -Dencryption.ssl.truststore.location=${CI_WORKSPACE}/keystores/alfresco/alfresco.truststore'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- name: "Set transformers tag"
|
- name: "Set transformers tag"
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -970,9 +528,9 @@ jobs:
|
|||||||
REQUIRES_LOCAL_IMAGES: true
|
REQUIRES_LOCAL_IMAGES: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
run: |
|
run: |
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -1052,59 +567,15 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force')
|
!contains(github.event.head_commit.message, '[force')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
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
|
||||||
|
|
||||||
@@ -1126,31 +597,17 @@ jobs:
|
|||||||
REQUIRES_INSTALLED_ARTIFACTS: true
|
REQUIRES_INSTALLED_ARTIFACTS: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
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
|
||||||
|
|
||||||
@@ -1172,31 +629,17 @@ jobs:
|
|||||||
REQUIRES_INSTALLED_ARTIFACTS: true
|
REQUIRES_INSTALLED_ARTIFACTS: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
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
|
||||||
|
|
||||||
@@ -1214,9 +657,9 @@ jobs:
|
|||||||
REQUIRES_LOCAL_IMAGES: true
|
REQUIRES_LOCAL_IMAGES: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
run: |
|
run: |
|
||||||
@@ -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
|
||||||
@@ -1304,9 +703,9 @@ jobs:
|
|||||||
!contains(github.event.head_commit.message, '[force]')
|
!contains(github.event.head_commit.message, '[force]')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
|
||||||
run: |
|
run: |
|
||||||
|
16
.github/workflows/master_release.yml
vendored
16
.github/workflows/master_release.yml
vendored
@@ -34,12 +34,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.24.1
|
||||||
with:
|
with:
|
||||||
username: ${{ env.GIT_USERNAME }}
|
username: ${{ env.GIT_USERNAME }}
|
||||||
email: ${{ env.GIT_EMAIL }}
|
email: ${{ env.GIT_EMAIL }}
|
||||||
@@ -63,12 +63,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.24.1
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.24.1
|
||||||
- name: "Init"
|
- name: "Init"
|
||||||
run: bash ./scripts/ci/init.sh
|
run: bash ./scripts/ci/init.sh
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.24.1
|
||||||
with:
|
with:
|
||||||
username: ${{ env.GIT_USERNAME }}
|
username: ${{ env.GIT_USERNAME }}
|
||||||
email: ${{ env.GIT_EMAIL }}
|
email: ${{ env.GIT_EMAIL }}
|
||||||
|
4
.github/workflows/precommit_formatter.yml
vendored
4
.github/workflows/precommit_formatter.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Set up Python ${{ inputs.python-version }}
|
- name: Set up Python ${{ inputs.python-version }}
|
||||||
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.9"
|
python-version: "3.9"
|
||||||
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
extra_args: --all-files
|
extra_args: --all-files
|
||||||
- name: Update secrets baseline
|
- name: Update secrets baseline
|
||||||
run: pip install detect-secrets && detect-secrets scan --baseline .secrets.baseline
|
run: pip install detect-secrets && detect-secrets scan --baseline .secrets.baseline
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/git-commit-changes@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/git-commit-changes@v8.24.1
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.BOT_GITHUB_USERNAME }}
|
username: ${{ secrets.BOT_GITHUB_USERNAME }}
|
||||||
add-options: -u
|
add-options: -u
|
||||||
|
@@ -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"
|
||||||
}
|
}
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
@@ -93,12 +83,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-collections4</artifactId>
|
<artifactId>commons-collections4</artifactId>
|
||||||
<version>4.4</version>
|
<version>4.5.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.docker-java</groupId>
|
<groupId>com.github.docker-java</groupId>
|
||||||
<artifactId>docker-java</artifactId>
|
<artifactId>docker-java</artifactId>
|
||||||
<version>3.4.0</version>
|
<version>3.6.0</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>org.bouncycastle</groupId>
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
@@ -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.
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
SOLR6_TAG=2.0.15
|
SOLR6_TAG=2.0.16
|
||||||
POSTGRES_TAG=16.6
|
POSTGRES_TAG=16.6
|
||||||
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8
|
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8
|
||||||
|
@@ -119,6 +119,11 @@ rm.patch.v35.holdNewChildAssocPatch.batchSize=1000
|
|||||||
rm.haspermissionmap.read=Read
|
rm.haspermissionmap.read=Read
|
||||||
rm.haspermissionmap.write=WriteProperties,AddChildren,ReadContent
|
rm.haspermissionmap.write=WriteProperties,AddChildren,ReadContent
|
||||||
|
|
||||||
|
# Extended Permissions
|
||||||
|
# Enable matching the given username with the correct casing username when retrieving an IPR group.
|
||||||
|
# Only needs to be used if there are owners that don't have the username in the correct casing.
|
||||||
|
rm.extendedSecurity.enableUsernameNormalization=false
|
||||||
|
|
||||||
#
|
#
|
||||||
# Extended auto-version behaviour. If true and other auto-version properties are satisfied, then
|
# Extended auto-version behaviour. If true and other auto-version properties are satisfied, then
|
||||||
# a document will be auto-versioned when its type is changed.
|
# a document will be auto-versioned when its type is changed.
|
||||||
|
@@ -611,6 +611,7 @@
|
|||||||
<property name="authorityService" ref="authorityService"/>
|
<property name="authorityService" ref="authorityService"/>
|
||||||
<property name="permissionService" ref="permissionService"/>
|
<property name="permissionService" ref="permissionService"/>
|
||||||
<property name="transactionService" ref="transactionService"/>
|
<property name="transactionService" ref="transactionService"/>
|
||||||
|
<property name="enableUsernameNormalization" value="${rm.extendedSecurity.enableUsernameNormalization}" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="ExtendedSecurityService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
<bean id="ExtendedSecurityService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -38,6 +38,7 @@ import org.springframework.context.ApplicationListener;
|
|||||||
import org.springframework.context.event.ContextRefreshedEvent;
|
import org.springframework.context.event.ContextRefreshedEvent;
|
||||||
import org.springframework.extensions.webscripts.ui.common.StringUtils;
|
import org.springframework.extensions.webscripts.ui.common.StringUtils;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.model.RenditionModel;
|
import org.alfresco.model.RenditionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
@@ -96,6 +97,8 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
/** transaction service */
|
/** transaction service */
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
|
|
||||||
|
private boolean enableUsernameNormalization;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param filePlanService
|
* @param filePlanService
|
||||||
* file plan service
|
* file plan service
|
||||||
@@ -141,6 +144,15 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
this.transactionService = transactionService;
|
this.transactionService = transactionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param enableUsernameNormalization
|
||||||
|
* enable username normalization to ensure correct casing
|
||||||
|
*/
|
||||||
|
public void setEnableUsernameNormalization(boolean enableUsernameNormalization)
|
||||||
|
{
|
||||||
|
this.enableUsernameNormalization = enableUsernameNormalization;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application context refresh event handler
|
* Application context refresh event handler
|
||||||
*/
|
*/
|
||||||
@@ -359,12 +371,18 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
{
|
{
|
||||||
String group = null;
|
String group = null;
|
||||||
|
|
||||||
|
// If enabled, the authorities are forced to match the correct casing of the usernames in case they were set
|
||||||
|
// with the incorrect casing.
|
||||||
|
// If not, it will just use the authorities as they are.
|
||||||
|
// In normal circumstances, the authorities are in the correct casing, so this is disabled by default.
|
||||||
|
Set<String> authoritySet = normalizeAuthorities(authorities);
|
||||||
|
|
||||||
// find group or determine what the next index is if no group exists or there is a clash
|
// find group or determine what the next index is if no group exists or there is a clash
|
||||||
Pair<String, Integer> groupResult = findIPRGroup(groupPrefix, authorities);
|
Pair<String, Integer> groupResult = findIPRGroup(groupPrefix, authoritySet);
|
||||||
|
|
||||||
if (groupResult.getFirst() == null)
|
if (groupResult.getFirst() == null)
|
||||||
{
|
{
|
||||||
group = createIPRGroup(groupPrefix, authorities, groupResult.getSecond());
|
group = createIPRGroup(groupPrefix, authoritySet, groupResult.getSecond());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -399,7 +417,8 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
while (hasMoreItems == true)
|
while (hasMoreItems == true)
|
||||||
{
|
{
|
||||||
// get matching authorities
|
// get matching authorities
|
||||||
PagingResults<String> results = authorityService.getAuthorities(AuthorityType.GROUP,
|
PagingResults<String> results = authorityService.getAuthorities(
|
||||||
|
AuthorityType.GROUP,
|
||||||
RMAuthority.ZONE_APP_RM,
|
RMAuthority.ZONE_APP_RM,
|
||||||
groupShortNamePrefix,
|
groupShortNamePrefix,
|
||||||
false,
|
false,
|
||||||
@@ -427,6 +446,63 @@ public class ExtendedSecurityServiceImpl extends ServiceBaseImpl
|
|||||||
return new Pair<>(iprGroup, nextGroupIndex);
|
return new Pair<>(iprGroup, nextGroupIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a set of authorities, normalizes the authority names to ensure correct casing.
|
||||||
|
*
|
||||||
|
* @param authNames
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Set<String> normalizeAuthorities(Set<String> authNames)
|
||||||
|
{
|
||||||
|
// If disabled or no authorities, return as is
|
||||||
|
if (!enableUsernameNormalization || authNames == null || authNames.isEmpty())
|
||||||
|
{
|
||||||
|
return authNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> normalizedAuthorities = new HashSet<>();
|
||||||
|
for (String authorityName : authNames)
|
||||||
|
{
|
||||||
|
normalizedAuthorities.add(normalizeAuthorityName(authorityName));
|
||||||
|
}
|
||||||
|
return normalizedAuthorities;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Usernames are case insensitive but affect the IPR group matching when set with different casing. For a given authority of type user, this method normalizes the authority name. If group, it returns the name as-is.
|
||||||
|
*
|
||||||
|
* @param authorityName
|
||||||
|
* the authority name to normalize
|
||||||
|
* @return the normalized authority name
|
||||||
|
*/
|
||||||
|
private String normalizeAuthorityName(String authorityName)
|
||||||
|
{
|
||||||
|
if (authorityName == null || authorityName.startsWith(GROUP_PREFIX))
|
||||||
|
{
|
||||||
|
return authorityName;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For users, attempt to get the correct casing from the username property of the user node
|
||||||
|
if (authorityService.authorityExists(authorityName))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NodeRef authorityNodeRef = authorityService.getAuthorityNodeRef(authorityName);
|
||||||
|
if (authorityNodeRef != null)
|
||||||
|
{
|
||||||
|
String username = (String) nodeService.getProperty(authorityNodeRef, ContentModel.PROP_USERNAME);
|
||||||
|
return username != null ? username : authorityName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
// If anything goes wrong, fallback to the original name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return authorityName;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether a group exactly matches a list of authorities.
|
* Determines whether a group exactly matches a list of authorities.
|
||||||
*
|
*
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
# Version label
|
# Version label
|
||||||
version.major=25
|
version.major=25
|
||||||
version.minor=2
|
version.minor=3
|
||||||
version.revision=0
|
version.revision=0
|
||||||
version.label=
|
version.label=
|
||||||
|
|
||||||
|
@@ -52,6 +52,7 @@ import java.util.Set;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.model.RenditionModel;
|
import org.alfresco.model.RenditionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
@@ -67,6 +68,7 @@ import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransacti
|
|||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.security.AccessPermission;
|
import org.alfresco.service.cmr.security.AccessPermission;
|
||||||
import org.alfresco.service.cmr.security.AccessStatus;
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
import org.alfresco.service.cmr.security.AuthorityService;
|
import org.alfresco.service.cmr.security.AuthorityService;
|
||||||
@@ -522,6 +524,104 @@ public class ExtendedSecurityServiceImplUnitTest
|
|||||||
verify(mockedPermissionService).setPermission(nodeRef, writeGroup, RMPermissionModel.FILING, true);
|
verify(mockedPermissionService).setPermission(nodeRef, writeGroup, RMPermissionModel.FILING, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a node with no previous IPR groups assigned
|
||||||
|
* And having pre-existing IPR groups matching the ones we need
|
||||||
|
* When I add some read and write authorities but with a different casing
|
||||||
|
* Then the existing IPR groups are used
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Test public void addExtendedSecurityWithMixedCasingUsernames()
|
||||||
|
{
|
||||||
|
// Have the usernames in the node as the correct usernames but with incorrect casing
|
||||||
|
String user1 = "UseR";
|
||||||
|
String user2 = "UseR_w";
|
||||||
|
|
||||||
|
// Incorrect IPR Group names
|
||||||
|
Set<String> diffCasingReaders = Stream.of(user1, GROUP).collect(Collectors.toSet());
|
||||||
|
Set<String> diffCasingWriters = Stream.of(user2, GROUP_W).collect(Collectors.toSet());
|
||||||
|
String wrongReadGroupPrefix = extendedSecurityService.getIPRGroupPrefixShortName(READER_GROUP_PREFIX, diffCasingReaders);
|
||||||
|
String wrongWriteGroupPrefix = extendedSecurityService.getIPRGroupPrefixShortName(WRITER_GROUP_PREFIX, diffCasingWriters);
|
||||||
|
String wrongReadGroup = wrongReadGroupPrefix + "0";
|
||||||
|
String wrongWriteGroup = wrongWriteGroupPrefix + "0";
|
||||||
|
|
||||||
|
// Correct Group names
|
||||||
|
String correctReadGroup = readGroupPrefix + "0";
|
||||||
|
String correctWriteGroup = writeGroupPrefix + "0";
|
||||||
|
|
||||||
|
// If queried for the correct groups, return the results
|
||||||
|
PagingResults<String> mockedCorrectReadPResults = mock(PagingResults.class);
|
||||||
|
PagingResults<String> mockedCorrectWritePResults = mock(PagingResults.class);
|
||||||
|
when(mockedCorrectReadPResults.getPage())
|
||||||
|
.thenReturn(Stream.of(GROUP_PREFIX + correctReadGroup).collect(Collectors.toList()));
|
||||||
|
when(mockedAuthorityService.getAuthorities(
|
||||||
|
eq(AuthorityType.GROUP),
|
||||||
|
eq(RMAuthority.ZONE_APP_RM),
|
||||||
|
eq(readGroupPrefix),
|
||||||
|
eq(false),
|
||||||
|
eq(false),
|
||||||
|
any(PagingRequest.class)))
|
||||||
|
.thenReturn(mockedCorrectReadPResults);
|
||||||
|
|
||||||
|
when(mockedCorrectWritePResults.getPage())
|
||||||
|
.thenReturn(Stream.of(GROUP_PREFIX + correctWriteGroup).collect(Collectors.toList()));
|
||||||
|
when(mockedAuthorityService.getAuthorities(
|
||||||
|
eq(AuthorityType.GROUP),
|
||||||
|
eq(RMAuthority.ZONE_APP_RM),
|
||||||
|
eq(writeGroupPrefix),
|
||||||
|
eq(false),
|
||||||
|
eq(false),
|
||||||
|
any(PagingRequest.class)))
|
||||||
|
.thenReturn(mockedCorrectWritePResults);
|
||||||
|
|
||||||
|
// Don't return results for the incorrect groups (lenient as these may not be called with normalization enabled)
|
||||||
|
PagingResults<String> mockedWrongReadPResults = mock(PagingResults.class);
|
||||||
|
PagingResults<String> mockedWrongWritePResults = mock(PagingResults.class);
|
||||||
|
lenient().when(mockedWrongReadPResults.getPage())
|
||||||
|
.thenReturn(Collections.emptyList());
|
||||||
|
lenient().when(mockedAuthorityService.getAuthorities(
|
||||||
|
eq(AuthorityType.GROUP),
|
||||||
|
eq(RMAuthority.ZONE_APP_RM),
|
||||||
|
eq(wrongReadGroupPrefix),
|
||||||
|
eq(false),
|
||||||
|
eq(false),
|
||||||
|
any(PagingRequest.class)))
|
||||||
|
.thenReturn(mockedWrongReadPResults);
|
||||||
|
|
||||||
|
lenient().when(mockedWrongWritePResults.getPage())
|
||||||
|
.thenReturn(Collections.emptyList());
|
||||||
|
lenient().when(mockedAuthorityService.getAuthorities(
|
||||||
|
eq(AuthorityType.GROUP),
|
||||||
|
eq(RMAuthority.ZONE_APP_RM),
|
||||||
|
eq(wrongWriteGroupPrefix),
|
||||||
|
eq(false),
|
||||||
|
eq(false),
|
||||||
|
any(PagingRequest.class)))
|
||||||
|
.thenReturn(mockedWrongWritePResults);
|
||||||
|
|
||||||
|
// The users do exist, despite being in a different casing and are able to be retrieved
|
||||||
|
NodeRef noderefUser1 = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, USER);
|
||||||
|
when(mockedAuthorityService.authorityExists(user1)).thenReturn(true);
|
||||||
|
when(mockedAuthorityService.getAuthorityNodeRef(user1)).thenReturn(noderefUser1);
|
||||||
|
when(mockedNodeService.getProperty(noderefUser1, ContentModel.PROP_USERNAME)).thenReturn(USER);
|
||||||
|
|
||||||
|
NodeRef noderefUser2 = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, USER_W);
|
||||||
|
when(mockedAuthorityService.authorityExists(user2)).thenReturn(true);
|
||||||
|
when(mockedAuthorityService.getAuthorityNodeRef(user2)).thenReturn(noderefUser2);
|
||||||
|
when(mockedNodeService.getProperty(noderefUser2, ContentModel.PROP_USERNAME)).thenReturn(USER_W);
|
||||||
|
|
||||||
|
// Set the extended security service to normalize usernames
|
||||||
|
extendedSecurityService.setEnableUsernameNormalization(true);
|
||||||
|
extendedSecurityService.set(nodeRef, diffCasingReaders, diffCasingWriters);
|
||||||
|
|
||||||
|
// Verify that the incorrect read group is not created
|
||||||
|
verify(mockedAuthorityService, never()).createAuthority(AuthorityType.GROUP, wrongReadGroup, wrongReadGroup, Collections.singleton(RMAuthority.ZONE_APP_RM));
|
||||||
|
|
||||||
|
// Verify that the incorrect write group is not created
|
||||||
|
verify(mockedAuthorityService, never()).createAuthority(AuthorityType.GROUP, wrongWriteGroup, wrongWriteGroup, Collections.singleton(RMAuthority.ZONE_APP_RM));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a node with no previous IPR groups assigned
|
* Given a node with no previous IPR groups assigned
|
||||||
@@ -571,7 +671,7 @@ public class ExtendedSecurityServiceImplUnitTest
|
|||||||
.thenReturn(Stream
|
.thenReturn(Stream
|
||||||
.of(USER_W, AlfMock.generateText())
|
.of(USER_W, AlfMock.generateText())
|
||||||
.collect(Collectors.toSet()));
|
.collect(Collectors.toSet()));
|
||||||
|
|
||||||
// add extended security
|
// add extended security
|
||||||
extendedSecurityService.set(nodeRef, READERS, WRITERS);
|
extendedSecurityService.set(nodeRef, READERS, WRITERS);
|
||||||
|
|
||||||
@@ -895,7 +995,7 @@ public class ExtendedSecurityServiceImplUnitTest
|
|||||||
// group names
|
// group names
|
||||||
String readGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_FULL_PREFIX, READERS, 0);
|
String readGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_FULL_PREFIX, READERS, 0);
|
||||||
String writeGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_FULL_PREFIX, WRITERS, 0);
|
String writeGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_FULL_PREFIX, WRITERS, 0);
|
||||||
|
|
||||||
// setup renditions
|
// setup renditions
|
||||||
NodeRef renditionNodeRef = AlfMock.generateNodeRef(mockedNodeService);
|
NodeRef renditionNodeRef = AlfMock.generateNodeRef(mockedNodeService);
|
||||||
when(mockedNodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD))
|
when(mockedNodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD))
|
||||||
@@ -904,7 +1004,7 @@ public class ExtendedSecurityServiceImplUnitTest
|
|||||||
.thenReturn(renditionNodeRef);
|
.thenReturn(renditionNodeRef);
|
||||||
when(mockedNodeService.getChildAssocs(nodeRef, RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL))
|
when(mockedNodeService.getChildAssocs(nodeRef, RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL))
|
||||||
.thenReturn(Collections.singletonList(mockedChildAssociationRef));
|
.thenReturn(Collections.singletonList(mockedChildAssociationRef));
|
||||||
|
|
||||||
// setup permissions
|
// setup permissions
|
||||||
Set<AccessPermission> permissions = Stream
|
Set<AccessPermission> permissions = Stream
|
||||||
.of(new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, readGroup, 0),
|
.of(new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, readGroup, 0),
|
||||||
@@ -913,17 +1013,17 @@ public class ExtendedSecurityServiceImplUnitTest
|
|||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
when(mockedPermissionService.getAllSetPermissions(nodeRef))
|
when(mockedPermissionService.getAllSetPermissions(nodeRef))
|
||||||
.thenReturn(permissions);
|
.thenReturn(permissions);
|
||||||
|
|
||||||
// remove extended security
|
// remove extended security
|
||||||
extendedSecurityService.remove(nodeRef);
|
extendedSecurityService.remove(nodeRef);
|
||||||
|
|
||||||
// verify that the groups permissions have been removed
|
// verify that the groups permissions have been removed
|
||||||
verify(mockedPermissionService).clearPermission(nodeRef, readGroup);
|
verify(mockedPermissionService).clearPermission(nodeRef, readGroup);
|
||||||
verify(mockedPermissionService).clearPermission(nodeRef, writeGroup);
|
verify(mockedPermissionService).clearPermission(nodeRef, writeGroup);
|
||||||
|
|
||||||
// verify that the groups permissions have been removed from the rendition
|
// verify that the groups permissions have been removed from the rendition
|
||||||
verify(mockedPermissionService).clearPermission(renditionNodeRef, readGroup);
|
verify(mockedPermissionService).clearPermission(renditionNodeRef, readGroup);
|
||||||
verify(mockedPermissionService).clearPermission(renditionNodeRef, writeGroup);
|
verify(mockedPermissionService).clearPermission(renditionNodeRef, writeGroup);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.woodstox</groupId>
|
<groupId>com.fasterxml.woodstox</groupId>
|
||||||
<artifactId>woodstox-core</artifactId>
|
<artifactId>woodstox-core</artifactId>
|
||||||
<version>7.0.0</version>
|
<version>7.1.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- the cxf libs were updated, see dependencyManagement section -->
|
<!-- the cxf libs were updated, see dependencyManagement section -->
|
||||||
@@ -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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
</project>
|
</project>
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
# More infos about this image: https://github.com/Alfresco/alfresco-docker-base-tomcat
|
# More infos about this image: https://github.com/Alfresco/alfresco-docker-base-tomcat
|
||||||
FROM alfresco/alfresco-base-tomcat:tomcat10-jre17-rockylinux9@sha256:9622418e142fb4fe1c5320666ad61ea292bc5c98f3dd0b550b6add33d18f659f
|
FROM alfresco/alfresco-base-tomcat:tomcat10-jre17-rockylinux9@sha256:00d89fb84bda7bb37c17b0117adb2cfe4f7cbddcd6c1e42b0a67ea8dbb41a734
|
||||||
|
|
||||||
# Set default docker_context.
|
# Set default docker_context.
|
||||||
ARG resource_path=target
|
ARG resource_path=target
|
||||||
|
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
SOLR6_TAG=2.0.15
|
SOLR6_TAG=2.0.16
|
||||||
POSTGRES_TAG=16.6
|
POSTGRES_TAG=16.6
|
||||||
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8
|
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@@ -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.
|
||||||
|
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<rest.api.explorer.branch>master</rest.api.explorer.branch>
|
<rest.api.explorer.branch>master</rest.api.explorer.branch>
|
||||||
<httpclient-osgi-version>4.5.6</httpclient-osgi-version>
|
<httpclient-osgi-version>4.5.6</httpclient-osgi-version>
|
||||||
<commons-lang3.version>3.17.0</commons-lang3.version>
|
<commons-lang3.version>3.18.0</commons-lang3.version>
|
||||||
<scribejava-apis.version>8.3.3</scribejava-apis.version>
|
<scribejava-apis.version>8.3.3</scribejava-apis.version>
|
||||||
<java.version>17</java.version>
|
<java.version>17</java.version>
|
||||||
</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>
|
||||||
@@ -171,14 +159,14 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.codehaus.groovy</groupId>
|
<groupId>org.codehaus.groovy</groupId>
|
||||||
<artifactId>groovy</artifactId>
|
<artifactId>groovy</artifactId>
|
||||||
<version>3.0.23</version>
|
<version>3.0.25</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-json-->
|
<!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-json-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.codehaus.groovy</groupId>
|
<groupId>org.codehaus.groovy</groupId>
|
||||||
<artifactId>groovy-json</artifactId>
|
<artifactId>groovy-json</artifactId>
|
||||||
<version>3.0.22</version>
|
<version>3.0.25</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* #%L
|
||||||
|
* Alfresco Repository
|
||||||
|
* %%
|
||||||
|
* Copyright (C) 2025 - 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.rest.search;
|
||||||
|
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import org.alfresco.rest.RestTest;
|
||||||
|
import org.alfresco.rest.model.RestNodeModel;
|
||||||
|
import org.alfresco.utility.RetryOperation;
|
||||||
|
import org.alfresco.utility.Utility;
|
||||||
|
import org.alfresco.utility.model.ContentModel;
|
||||||
|
import org.alfresco.utility.model.FileModel;
|
||||||
|
import org.alfresco.utility.model.TestGroup;
|
||||||
|
import org.alfresco.utility.model.UserModel;
|
||||||
|
import org.alfresco.utility.testrail.ExecutionType;
|
||||||
|
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||||
|
|
||||||
|
public class NodeContentTest extends RestTest
|
||||||
|
{
|
||||||
|
|
||||||
|
@TestRail(section = {TestGroup.REST_API,
|
||||||
|
TestGroup.SEARCH}, executionType = ExecutionType.SANITY, description = "Check basic functionality of GET queries/sites")
|
||||||
|
@Test(groups = {TestGroup.REST_API, TestGroup.RATINGS, TestGroup.CORE})
|
||||||
|
public void testNodeContent() throws Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
UserModel adminUser = dataContent.getAdminUser();
|
||||||
|
final String fileName = "nodecontent.pdf";
|
||||||
|
final String term = "babekyrtso";
|
||||||
|
|
||||||
|
FileModel fileModel = FileModel.getFileModelBasedOnTestDataFile(fileName);
|
||||||
|
restClient.authenticateUser(adminUser)
|
||||||
|
.configureRequestSpec()
|
||||||
|
.addMultiPart("filedata", fileModel.toFile());
|
||||||
|
RestNodeModel node = restClient.authenticateUser(adminUser).withCoreAPI().usingNode(ContentModel.my()).createNode();
|
||||||
|
restClient.assertStatusCodeIs(HttpStatus.CREATED);
|
||||||
|
|
||||||
|
SearchRequest query = new SearchRequest();
|
||||||
|
RestRequestQueryModel queryModel = new RestRequestQueryModel();
|
||||||
|
queryModel.setLanguage("afts");
|
||||||
|
queryModel.setQuery(term);
|
||||||
|
query.setQuery(queryModel);
|
||||||
|
|
||||||
|
RetryOperation op = () -> {
|
||||||
|
List<SearchNodeModel> entries = restClient.authenticateUser(adminUser)
|
||||||
|
.withSearchAPI()
|
||||||
|
.search(query).getEntries();
|
||||||
|
|
||||||
|
assertFalse(CollectionUtils.isEmpty(entries), "Search results should not be empty");
|
||||||
|
boolean fileFound = entries.stream()
|
||||||
|
.map(SearchNodeModel::getModel)
|
||||||
|
.anyMatch(e -> fileName.equals(e.getName()));
|
||||||
|
assertTrue(fileFound, "Search results should contain the file: " + fileName);
|
||||||
|
|
||||||
|
restClient.assertStatusCodeIs(HttpStatus.OK);
|
||||||
|
};
|
||||||
|
Utility.sleep(300, 100000, op);
|
||||||
|
|
||||||
|
restClient.authenticateUser(adminUser)
|
||||||
|
.withCoreAPI()
|
||||||
|
.usingNode(ContentModel.my())
|
||||||
|
.deleteNode(node);
|
||||||
|
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
}
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
BIN
packaging/tests/tas-restapi/src/test/resources/shared-resources/testdata/nodecontent.pdf
vendored
Normal file
BIN
packaging/tests/tas-restapi/src/test/resources/shared-resources/testdata/nodecontent.pdf
vendored
Normal file
Binary file not shown.
@@ -15,6 +15,7 @@
|
|||||||
<package name="org.alfresco.rest.people.*"/>
|
<package name="org.alfresco.rest.people.*"/>
|
||||||
<package name="org.alfresco.rest.queries.*"/>
|
<package name="org.alfresco.rest.queries.*"/>
|
||||||
<package name="org.alfresco.rest.ratings.*"/>
|
<package name="org.alfresco.rest.ratings.*"/>
|
||||||
|
<package name="org.alfresco.rest.search.*"/>
|
||||||
</packages>
|
</packages>
|
||||||
</test>
|
</test>
|
||||||
</suite>
|
</suite>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-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>
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
71
pom.xml
71
pom.xml
@@ -2,11 +2,10 @@
|
|||||||
<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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>Alfresco Community Repo Parent</name>
|
<name>Alfresco Community Repo Parent</name>
|
||||||
|
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.alfresco</groupId>
|
<groupId>org.alfresco</groupId>
|
||||||
<artifactId>alfresco-super-pom</artifactId>
|
<artifactId>alfresco-super-pom</artifactId>
|
||||||
@@ -25,7 +24,7 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<acs.version.major>25</acs.version.major>
|
<acs.version.major>25</acs.version.major>
|
||||||
<acs.version.minor>2</acs.version.minor>
|
<acs.version.minor>3</acs.version.minor>
|
||||||
<acs.version.revision>0</acs.version.revision>
|
<acs.version.revision>0</acs.version.revision>
|
||||||
<acs.version.label />
|
<acs.version.label />
|
||||||
<amp.min.version>${acs.version.major}.0.0</amp.min.version>
|
<amp.min.version>${acs.version.major}.0.0</amp.min.version>
|
||||||
@@ -52,26 +51,26 @@
|
|||||||
<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.2.1-A.3</dependency.alfresco-transform-core.version>
|
||||||
<dependency.alfresco-transform-service.version>4.1.7</dependency.alfresco-transform-service.version>
|
<dependency.alfresco-transform-service.version>4.2.1-A.4</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.5</dependency.acs-event-model.version>
|
||||||
|
|
||||||
<dependency.aspectj.version>1.9.22.1</dependency.aspectj.version>
|
<dependency.aspectj.version>1.9.22.1</dependency.aspectj.version>
|
||||||
<dependency.spring.version>6.2.2</dependency.spring.version>
|
<dependency.spring.version>6.2.8</dependency.spring.version>
|
||||||
<dependency.spring-security.version>6.3.9</dependency.spring-security.version>
|
<dependency.spring-security.version>6.3.9</dependency.spring-security.version>
|
||||||
<dependency.antlr.version>3.5.3</dependency.antlr.version>
|
<dependency.antlr.version>3.5.3</dependency.antlr.version>
|
||||||
<dependency.jackson.version>2.17.2</dependency.jackson.version>
|
<dependency.jackson.version>2.17.2</dependency.jackson.version>
|
||||||
<dependency.cxf.version>4.1.0</dependency.cxf.version>
|
<dependency.cxf.version>4.1.2</dependency.cxf.version>
|
||||||
<dependency.opencmis.version>1.0.0-jakarta-1</dependency.opencmis.version>
|
<dependency.opencmis.version>1.0.0-jakarta-1</dependency.opencmis.version>
|
||||||
<dependency.webscripts.version>10.0</dependency.webscripts.version>
|
<dependency.webscripts.version>10.2</dependency.webscripts.version>
|
||||||
<dependency.bouncycastle.version>1.79</dependency.bouncycastle.version>
|
<dependency.bouncycastle.version>1.81</dependency.bouncycastle.version>
|
||||||
<dependency.mockito-core.version>5.14.1</dependency.mockito-core.version>
|
<dependency.mockito-core.version>5.18.0</dependency.mockito-core.version>
|
||||||
<dependency.assertj.version>3.27.3</dependency.assertj.version>
|
<dependency.assertj.version>3.27.3</dependency.assertj.version>
|
||||||
<dependency.org-json.version>20240303</dependency.org-json.version>
|
<dependency.org-json.version>20250517</dependency.org-json.version>
|
||||||
<dependency.commons-dbcp.version>2.12.0</dependency.commons-dbcp.version>
|
<dependency.commons-dbcp.version>2.12.0</dependency.commons-dbcp.version>
|
||||||
<dependency.commons-io.version>2.18.0</dependency.commons-io.version>
|
<dependency.commons-io.version>2.20.0</dependency.commons-io.version>
|
||||||
<dependency.gson.version>2.12.1</dependency.gson.version>
|
<dependency.gson.version>2.13.1</dependency.gson.version>
|
||||||
<dependency.guava.version>33.3.1-jre</dependency.guava.version>
|
<dependency.guava.version>33.3.1-jre</dependency.guava.version>
|
||||||
<dependency.httpclient.version>4.5.14</dependency.httpclient.version>
|
<dependency.httpclient.version>4.5.14</dependency.httpclient.version>
|
||||||
<dependency.httpcore.version>4.4.16</dependency.httpcore.version>
|
<dependency.httpcore.version>4.4.16</dependency.httpcore.version>
|
||||||
@@ -81,8 +80,8 @@
|
|||||||
<dependency.commons-httpclient.version>3.1-HTTPCLIENT-1265</dependency.commons-httpclient.version>
|
<dependency.commons-httpclient.version>3.1-HTTPCLIENT-1265</dependency.commons-httpclient.version>
|
||||||
<dependency.xercesImpl.version>2.12.2</dependency.xercesImpl.version>
|
<dependency.xercesImpl.version>2.12.2</dependency.xercesImpl.version>
|
||||||
<dependency.slf4j.version>2.0.16</dependency.slf4j.version>
|
<dependency.slf4j.version>2.0.16</dependency.slf4j.version>
|
||||||
<dependency.log4j.version>2.24.3</dependency.log4j.version>
|
<dependency.log4j.version>2.25.1</dependency.log4j.version>
|
||||||
<dependency.groovy.version>3.0.23</dependency.groovy.version>
|
<dependency.groovy.version>3.0.25</dependency.groovy.version>
|
||||||
<dependency.tika.version>2.9.2</dependency.tika.version>
|
<dependency.tika.version>2.9.2</dependency.tika.version>
|
||||||
<dependency.truezip.version>7.7.10</dependency.truezip.version>
|
<dependency.truezip.version>7.7.10</dependency.truezip.version>
|
||||||
<dependency.poi.version>5.4.0</dependency.poi.version>
|
<dependency.poi.version>5.4.0</dependency.poi.version>
|
||||||
@@ -116,19 +115,19 @@
|
|||||||
<dependency.jakarta-json-path.version>2.9.0</dependency.jakarta-json-path.version>
|
<dependency.jakarta-json-path.version>2.9.0</dependency.jakarta-json-path.version>
|
||||||
<dependency.json-smart.version>2.5.2</dependency.json-smart.version>
|
<dependency.json-smart.version>2.5.2</dependency.json-smart.version>
|
||||||
<alfresco.googledrive.version>4.1.0</alfresco.googledrive.version>
|
<alfresco.googledrive.version>4.1.0</alfresco.googledrive.version>
|
||||||
<alfresco.aos-module.version>3.3.0-A1</alfresco.aos-module.version>
|
<alfresco.aos-module.version>3.3.0</alfresco.aos-module.version>
|
||||||
<alfresco.api-explorer.version>25.1.0</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share -->
|
<alfresco.api-explorer.version>25.2.0</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share -->
|
||||||
|
|
||||||
<alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version>
|
<alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version>
|
||||||
<license-maven-plugin.version>2.4.0</license-maven-plugin.version>
|
<license-maven-plugin.version>2.4.0</license-maven-plugin.version>
|
||||||
<spotless-plugin.version>2.44.2</spotless-plugin.version>
|
<spotless-plugin.version>2.45.0</spotless-plugin.version>
|
||||||
|
|
||||||
<dependency.postgresql.version>42.7.5</dependency.postgresql.version>
|
<dependency.postgresql.version>42.7.5</dependency.postgresql.version>
|
||||||
<dependency.mysql.version>8.0.30</dependency.mysql.version>
|
<dependency.mysql.version>8.0.30</dependency.mysql.version>
|
||||||
<dependency.mysql-image.version>8</dependency.mysql-image.version>
|
<dependency.mysql-image.version>8</dependency.mysql-image.version>
|
||||||
<dependency.mariadb.version>2.7.4</dependency.mariadb.version>
|
<dependency.mariadb.version>2.7.4</dependency.mariadb.version>
|
||||||
<dependency.tas-utility.version>5.0.2</dependency.tas-utility.version>
|
<dependency.tas-utility.version>5.0.2</dependency.tas-utility.version>
|
||||||
<dependency.rest-assured.version>5.5.0</dependency.rest-assured.version>
|
<dependency.rest-assured.version>5.5.5</dependency.rest-assured.version>
|
||||||
<dependency.tas-email.version>2.0.0</dependency.tas-email.version>
|
<dependency.tas-email.version>2.0.0</dependency.tas-email.version>
|
||||||
<dependency.tas-webdav.version>1.21</dependency.tas-webdav.version>
|
<dependency.tas-webdav.version>1.21</dependency.tas-webdav.version>
|
||||||
<dependency.tas-ftp.version>1.19</dependency.tas-ftp.version>
|
<dependency.tas-ftp.version>1.19</dependency.tas-ftp.version>
|
||||||
@@ -410,12 +409,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-logging</groupId>
|
<groupId>commons-logging</groupId>
|
||||||
<artifactId>commons-logging</artifactId>
|
<artifactId>commons-logging</artifactId>
|
||||||
<version>1.3.3</version>
|
<version>1.3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<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>
|
||||||
@@ -445,8 +444,8 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-fileupload2-jakarta</artifactId>
|
<artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
|
||||||
<version>2.0.0-M1</version>
|
<version>2.0.0-M4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-net</groupId>
|
<groupId>commons-net</groupId>
|
||||||
@@ -709,13 +708,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.networknt</groupId>
|
<groupId>com.networknt</groupId>
|
||||||
<artifactId>json-schema-validator</artifactId>
|
<artifactId>json-schema-validator</artifactId>
|
||||||
<version>1.5.5</version>
|
<version>1.5.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- upgrade dependency from TIKA -->
|
<!-- upgrade dependency from TIKA -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jsoup</groupId>
|
<groupId>org.jsoup</groupId>
|
||||||
<artifactId>jsoup</artifactId>
|
<artifactId>jsoup</artifactId>
|
||||||
<version>1.18.1</version>
|
<version>1.21.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- upgrade dependency from TIKA -->
|
<!-- upgrade dependency from TIKA -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -799,7 +798,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>joda-time</groupId>
|
<groupId>joda-time</groupId>
|
||||||
<artifactId>joda-time</artifactId>
|
<artifactId>joda-time</artifactId>
|
||||||
<version>2.13.1</version>
|
<version>2.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- provided dependencies -->
|
<!-- provided dependencies -->
|
||||||
@@ -829,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>
|
||||||
@@ -956,7 +943,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>org.projectlombok</groupId>
|
||||||
<artifactId>lombok</artifactId>
|
<artifactId>lombok</artifactId>
|
||||||
<version>1.18.36</version>
|
<version>1.18.38</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -1013,7 +1000,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>io.fabric8</groupId>
|
<groupId>io.fabric8</groupId>
|
||||||
<artifactId>docker-maven-plugin</artifactId>
|
<artifactId>docker-maven-plugin</artifactId>
|
||||||
<version>0.45.0</version>
|
<version>0.46.0</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
@@ -1094,7 +1081,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.cargo</groupId>
|
<groupId>org.codehaus.cargo</groupId>
|
||||||
<artifactId>cargo-maven3-plugin</artifactId>
|
<artifactId>cargo-maven3-plugin</artifactId>
|
||||||
<version>1.10.16</version>
|
<version>1.10.20</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.santuario</groupId>
|
<groupId>org.apache.santuario</groupId>
|
||||||
<artifactId>xmlsec</artifactId>
|
<artifactId>xmlsec</artifactId>
|
||||||
<version>4.0.3</version>
|
<version>4.0.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- newer version, see REPO-3133 -->
|
<!-- newer version, see REPO-3133 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -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>
|
||||||
|
@@ -30,7 +30,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import org.apache.commons.fileupload2.core.FileItemInput;
|
import org.apache.commons.fileupload2.core.FileItemInput;
|
||||||
import org.apache.commons.fileupload2.core.FileItemInputIterator;
|
import org.apache.commons.fileupload2.core.FileItemInputIterator;
|
||||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.extensions.webscripts.Status;
|
import org.springframework.extensions.webscripts.Status;
|
||||||
|
@@ -31,7 +31,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import org.apache.commons.fileupload2.core.FileItemInput;
|
import org.apache.commons.fileupload2.core.FileItemInput;
|
||||||
import org.apache.commons.fileupload2.core.FileItemInputIterator;
|
import org.apache.commons.fileupload2.core.FileItemInputIterator;
|
||||||
import org.apache.commons.fileupload2.jakarta.JakartaServletFileUpload;
|
import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.extensions.webscripts.Status;
|
import org.springframework.extensions.webscripts.Status;
|
||||||
|
@@ -2,23 +2,23 @@
|
|||||||
* #%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
|
||||||
* the paid license agreement will prevail. Otherwise, the software is
|
* the paid license agreement will prevail. Otherwise, the software is
|
||||||
* provided under the following open source license terms:
|
* provided under the following open source license terms:
|
||||||
*
|
*
|
||||||
* Alfresco is free software: you can redistribute it and/or modify
|
* 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
|
* 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
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* Alfresco is distributed in the hope that it will be useful,
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU Lesser General Public License for more details.
|
* GNU Lesser General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* #L%
|
* #L%
|
||||||
@@ -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)
|
||||||
{
|
{
|
||||||
T t = convert(nodeRef, includeParam);
|
try
|
||||||
collection.add(t);
|
{
|
||||||
|
T t = convert(nodeRef, includeParam);
|
||||||
|
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,62 +537,66 @@ 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)
|
|
||||||
{
|
|
||||||
// make copy of nodeRefs because it can be unmodifiable list.
|
|
||||||
nodeRefs = new ArrayList<NodeRef>(nodeRefs);
|
|
||||||
|
|
||||||
List<QName> sortPropQNames = new ArrayList<>(sortColCount);
|
if (sortColCount == 0)
|
||||||
for (SortColumn sortCol : sortCols)
|
{
|
||||||
|
return new ArrayList<>(unsortedNodeRefs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// make copy of nodeRefs because it can be unmodifiable list.
|
||||||
|
List<NodeRef> sortedNodeRefs = new ArrayList<>(unsortedNodeRefs);
|
||||||
|
|
||||||
|
List<QName> sortPropQNames = new ArrayList<>(sortColCount);
|
||||||
|
for (SortColumn sortCol : sortCols)
|
||||||
|
{
|
||||||
|
QName sortPropQName = sortParamsToQNames.get(sortCol.column);
|
||||||
|
if (sortPropQName == null)
|
||||||
{
|
{
|
||||||
QName sortPropQName = sortParamsToQNames.get(sortCol.column);
|
throw new InvalidArgumentException("Invalid sort field: " + sortCol.column);
|
||||||
if (sortPropQName == null)
|
}
|
||||||
|
sortPropQNames.add(sortPropQName);
|
||||||
|
}
|
||||||
|
|
||||||
|
final Collator col = AlfrescoCollator.getInstance(I18NUtil.getLocale());
|
||||||
|
Collections.sort(sortedNodeRefs, new Comparator<NodeRef>() {
|
||||||
|
@Override
|
||||||
|
public int compare(NodeRef n1, NodeRef n2)
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
for (int i = 0; i < sortCols.size(); i++)
|
||||||
{
|
{
|
||||||
throw new InvalidArgumentException("Invalid sort field: " + sortCol.column);
|
SortColumn sortCol = sortCols.get(i);
|
||||||
|
QName sortPropQName = sortPropQNames.get(i);
|
||||||
|
|
||||||
|
Serializable p1 = getProperty(n1, sortPropQName);
|
||||||
|
Serializable p2 = getProperty(n2, sortPropQName);
|
||||||
|
|
||||||
|
result = ((p1 instanceof Long) && (p2 instanceof Long)
|
||||||
|
? Long.compare((Long) p1, (Long) p2)
|
||||||
|
: col.compare(p1.toString(), p2.toString()))
|
||||||
|
* (sortCol.asc ? 1 : -1);
|
||||||
|
|
||||||
|
if (result != 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sortPropQNames.add(sortPropQName);
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collator col = AlfrescoCollator.getInstance(I18NUtil.getLocale());
|
private Serializable getProperty(NodeRef nodeRef, QName sortPropQName)
|
||||||
Collections.sort(nodeRefs, new Comparator<NodeRef>() {
|
{
|
||||||
@Override
|
Serializable result = nodeService.getProperty(nodeRef, sortPropQName);
|
||||||
public int compare(NodeRef n1, NodeRef n2)
|
return result == null ? "" : result;
|
||||||
{
|
}
|
||||||
int result = 0;
|
|
||||||
for (int i = 0; i < sortCols.size(); i++)
|
|
||||||
{
|
|
||||||
SortColumn sortCol = sortCols.get(i);
|
|
||||||
QName sortPropQName = sortPropQNames.get(i);
|
|
||||||
|
|
||||||
Serializable p1 = getProperty(n1, sortPropQName);
|
});
|
||||||
Serializable p2 = getProperty(n2, sortPropQName);
|
|
||||||
|
|
||||||
result = ((p1 instanceof Long) && (p2 instanceof Long)
|
return sortedNodeRefs;
|
||||||
? Long.compare((Long) p1, (Long) p2)
|
|
||||||
: col.compare(p1.toString(), p2.toString()))
|
|
||||||
* (sortCol.asc ? 1 : -1);
|
|
||||||
|
|
||||||
if (result != 0)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Serializable getProperty(NodeRef nodeRef, QName sortPropQName)
|
|
||||||
{
|
|
||||||
Serializable result = nodeService.getProperty(nodeRef, sortPropQName);
|
|
||||||
return result == null ? "" : result;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return nodeRefs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// note: see also AbstractNodeRelation
|
// note: see also AbstractNodeRelation
|
||||||
|
@@ -27,7 +27,6 @@ package org.alfresco.rest.framework.resource.parameters;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||||
|
|
||||||
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
||||||
@@ -69,7 +68,7 @@ public interface Parameters
|
|||||||
* @return The Parameter value
|
* @return The Parameter value
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
T getParameter(String parameterName, Class<T> clazz) throws InvalidArgumentException;
|
<T> T getParameter(String parameterName, Class<T> clazz) throws InvalidArgumentException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a representation of the Paging of collections of resources, with skip count and max items. See {@link Paging} Specified by the "skipCount" and "maxItems" request parameters.
|
* Returns a representation of the Paging of collections of resources, with skip count and max items. See {@link Paging} Specified by the "skipCount" and "maxItems" request parameters.
|
||||||
|
@@ -31,7 +31,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.beanutils.ConvertUtils;
|
import org.apache.commons.beanutils.ConvertUtils;
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||||
|
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
@@ -231,7 +230,7 @@ public class Params implements Parameters
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T getParameter(String parameterName, Class<T> clazz) throws InvalidArgumentException
|
public <T> T getParameter(String parameterName, Class<T> clazz) throws InvalidArgumentException
|
||||||
{
|
{
|
||||||
String param = getParameter(parameterName);
|
String param = getParameter(parameterName);
|
||||||
if (param == null)
|
if (param == null)
|
||||||
@@ -239,7 +238,7 @@ public class Params implements Parameters
|
|||||||
Object obj = ConvertUtils.convert(param, clazz);
|
Object obj = ConvertUtils.convert(param, clazz);
|
||||||
if (obj != null && obj.getClass().equals(clazz))
|
if (obj != null && obj.getClass().equals(clazz))
|
||||||
{
|
{
|
||||||
return (T) obj;
|
return clazz.cast(obj);
|
||||||
}
|
}
|
||||||
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_MESSAGE_ID, new Object[]{parameterName});
|
throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_MESSAGE_ID, new Object[]{parameterName});
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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">
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.api.tests;
|
package org.alfresco.rest.api.tests;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.alfresco.repo.web.util.JettyComponent;
|
import org.alfresco.repo.web.util.JettyComponent;
|
||||||
|
|
||||||
public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
||||||
@@ -40,32 +42,53 @@ public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
|||||||
public final static String[] CLASS_LOCATIONS = new String[]{"classpath*:/publicapi/lucene/"};
|
public final static String[] CLASS_LOCATIONS = new String[]{"classpath*:/publicapi/lucene/"};
|
||||||
|
|
||||||
private static EnterprisePublicApiTestFixture instance;
|
private static EnterprisePublicApiTestFixture instance;
|
||||||
|
private String[] customConfigLocations;
|
||||||
|
|
||||||
/* Note: synchronized for multi-threaded test access */
|
/* Note: synchronized for multi-threaded test access */
|
||||||
public synchronized static EnterprisePublicApiTestFixture getInstance(boolean createTestData) throws Exception
|
public synchronized static EnterprisePublicApiTestFixture getInstance(boolean createTestData, String... customConfigLocations)
|
||||||
{
|
{
|
||||||
if (instance == null)
|
if (instance == null)
|
||||||
{
|
{
|
||||||
instance = new EnterprisePublicApiTestFixture();
|
instance = new EnterprisePublicApiTestFixture(customConfigLocations);
|
||||||
instance.setup(createTestData);
|
try
|
||||||
|
{
|
||||||
|
instance.setup(createTestData);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
String errorMessage = "Exception was thrown during setup EnterprisePublicApiTestFixture: " + e.getClass() + " - " + e.getMessage();
|
||||||
|
throw new RuntimeException(errorMessage, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EnterprisePublicApiTestFixture getInstance() throws Exception
|
public static EnterprisePublicApiTestFixture getInstance(String... customConfigLocations)
|
||||||
{
|
{
|
||||||
return getInstance(true);
|
return getInstance(true, customConfigLocations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnterprisePublicApiTestFixture()
|
public static EnterprisePublicApiTestFixture getInstance()
|
||||||
|
{
|
||||||
|
return getInstance(true, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EnterprisePublicApiTestFixture getInstance(boolean createTestData)
|
||||||
|
{
|
||||||
|
return getInstance(createTestData, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private EnterprisePublicApiTestFixture(String... customConfigLocations)
|
||||||
{
|
{
|
||||||
super(CONFIG_LOCATIONS, CLASS_LOCATIONS, PORT, CONTEXT_PATH, PUBLIC_API_SERVLET_NAME, DEFAULT_NUM_MEMBERS_PER_SITE, false);
|
super(CONFIG_LOCATIONS, CLASS_LOCATIONS, PORT, CONTEXT_PATH, PUBLIC_API_SERVLET_NAME, DEFAULT_NUM_MEMBERS_PER_SITE, false);
|
||||||
|
this.customConfigLocations = customConfigLocations;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected JettyComponent makeJettyComponent()
|
protected JettyComponent makeJettyComponent()
|
||||||
{
|
{
|
||||||
JettyComponent jettyComponent = new EnterpriseJettyComponent(getPort(), getContextPath(), getConfigLocations(), getClassLocations());
|
String[] configLocations = mergeLocations(getConfigLocations(), this.customConfigLocations);
|
||||||
|
JettyComponent jettyComponent = new EnterpriseJettyComponent(getPort(), getContextPath(), configLocations, getClassLocations());
|
||||||
return jettyComponent;
|
return jettyComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,4 +97,19 @@ public class EnterprisePublicApiTestFixture extends EnterpriseTestFixture
|
|||||||
{
|
{
|
||||||
return new RepoService(applicationContext);
|
return new RepoService(applicationContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String[] mergeLocations(String[]... locations)
|
||||||
|
{
|
||||||
|
String[] mergedLocations = new String[0];
|
||||||
|
for (String[] location : locations)
|
||||||
|
{
|
||||||
|
if (location == null || location.length == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
mergedLocations = Arrays.copyOf(mergedLocations, mergedLocations.length + location.length);
|
||||||
|
System.arraycopy(location, 0, mergedLocations, mergedLocations.length - location.length, location.length);
|
||||||
|
}
|
||||||
|
return mergedLocations;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -36,15 +36,21 @@ public class EnterpriseTestApi extends AbstractTestApi
|
|||||||
getTestFixture().getRandomNetwork();
|
getTestFixture().getRandomNetwork();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String[] getCustomConfigLocations()
|
||||||
|
{
|
||||||
|
return new String[]{};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TestFixture getTestFixture() throws Exception
|
protected TestFixture getTestFixture() throws Exception
|
||||||
{
|
{
|
||||||
return EnterprisePublicApiTestFixture.getInstance();
|
return EnterprisePublicApiTestFixture.getInstance(getCustomConfigLocations());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TestFixture getTestFixture(boolean createTestData) throws Exception
|
protected TestFixture getTestFixture(boolean createTestData) throws Exception
|
||||||
{
|
{
|
||||||
return EnterprisePublicApiTestFixture.getInstance(createTestData);
|
return EnterprisePublicApiTestFixture.getInstance(createTestData, getCustomConfigLocations());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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()
|
||||||
{
|
{
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
com.epam.reportportal.testng.ReportPortalTestNGListener
|
|
BIN
remote-api/src/test/resources/publicapi/upload/babekyrtso.pdf
Normal file
BIN
remote-api/src/test/resources/publicapi/upload/babekyrtso.pdf
Normal file
Binary file not shown.
@@ -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
|
||||||
***
|
***
|
||||||
|
|
||||||
|
@@ -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
|
||||||
***
|
***
|
||||||
|
|
||||||
|
@@ -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-SNAPSHOT</version>
|
<version>25.3.0.25-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-fileupload2-jakarta</artifactId>
|
<artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-lang3</artifactId>
|
<artifactId>commons-lang3</artifactId>
|
||||||
<version>3.17.0</version>
|
<version>3.18.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-codec</groupId>
|
<groupId>commons-codec</groupId>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-validator</groupId>
|
<groupId>commons-validator</groupId>
|
||||||
<artifactId>commons-validator</artifactId>
|
<artifactId>commons-validator</artifactId>
|
||||||
<version>1.9.0</version>
|
<version>1.10.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.json</groupId>
|
<groupId>org.json</groupId>
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.woodstox</groupId>
|
<groupId>com.fasterxml.woodstox</groupId>
|
||||||
<artifactId>woodstox-core</artifactId>
|
<artifactId>woodstox-core</artifactId>
|
||||||
<version>7.0.0</version>
|
<version>7.1.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -402,7 +402,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mybatis</groupId>
|
<groupId>org.mybatis</groupId>
|
||||||
<artifactId>mybatis-spring</artifactId>
|
<artifactId>mybatis-spring</artifactId>
|
||||||
<version>3.0.4</version>
|
<version>3.0.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Activiti -->
|
<!-- Activiti -->
|
||||||
@@ -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>
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -1130,7 +1130,10 @@ public class Search extends BaseScopableProcessorExtension implements Initializi
|
|||||||
// for example the key could be: {!afts}@{http://www.alfresco.org/model/content/1.0}created:[NOW/DAY-1DAY TO NOW/DAY+1DAY]
|
// for example the key could be: {!afts}@{http://www.alfresco.org/model/content/1.0}created:[NOW/DAY-1DAY TO NOW/DAY+1DAY]
|
||||||
// qName => @{http://www.alfresco.org/model/content/1.0}created
|
// qName => @{http://www.alfresco.org/model/content/1.0}created
|
||||||
// 7 => {!afts}
|
// 7 => {!afts}
|
||||||
key = key.substring(7);
|
if (key.startsWith("{!afts}"))
|
||||||
|
{
|
||||||
|
key = key.substring(7);
|
||||||
|
}
|
||||||
String qName = key.substring(0, key.lastIndexOf(':'));
|
String qName = key.substring(0, key.lastIndexOf(':'));
|
||||||
|
|
||||||
// Retrieve the previous facet queries
|
// Retrieve the previous facet queries
|
||||||
|
@@ -862,9 +862,18 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl implements Extens
|
|||||||
if (aspectDef != null)
|
if (aspectDef != null)
|
||||||
{
|
{
|
||||||
// Remove default properties
|
// Remove default properties
|
||||||
|
Map<QName, Serializable> propsBefore = nodeDAO.getNodeProperties(nodeId);
|
||||||
Map<QName, PropertyDefinition> propertyDefs = aspectDef.getProperties();
|
Map<QName, PropertyDefinition> propertyDefs = aspectDef.getProperties();
|
||||||
Set<QName> propertyToRemoveQNames = propertyDefs.keySet();
|
Set<QName> propertyToRemoveQNames = propertyDefs.keySet();
|
||||||
nodeDAO.removeNodeProperties(nodeId, propertyToRemoveQNames);
|
boolean propertiesRemoved = nodeDAO.removeNodeProperties(nodeId, propertyToRemoveQNames);
|
||||||
|
|
||||||
|
if (propertiesRemoved)
|
||||||
|
{
|
||||||
|
invokeOnUpdateProperties(
|
||||||
|
nodeRef,
|
||||||
|
propsBefore, // before
|
||||||
|
nodeDAO.getNodeProperties(nodeId)); // after
|
||||||
|
}
|
||||||
|
|
||||||
// Remove child associations
|
// Remove child associations
|
||||||
// We have to iterate over the associations and remove all those between the parent and child
|
// We have to iterate over the associations and remove all those between the parent and child
|
||||||
|
@@ -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.
|
||||||
*/
|
*/
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* #%L
|
* #%L
|
||||||
* Alfresco Repository
|
* Alfresco Repository
|
||||||
* %%
|
* %%
|
||||||
* Copyright (C) 2005 - 2021 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
|
||||||
@@ -115,15 +115,15 @@ public class NodePermissionAssessor
|
|||||||
Set<QName> nodeAspects = nodeService.getAspects(node.getNodeRef());
|
Set<QName> nodeAspects = nodeService.getAspects(node.getNodeRef());
|
||||||
|
|
||||||
String userName = null;
|
String userName = null;
|
||||||
if (nodeAspects.contains(ContentModel.ASPECT_AUDITABLE))
|
if (nodeAspects.contains(ContentModel.ASPECT_OWNABLE))
|
||||||
{
|
|
||||||
userName = node.getAuditableProperties().getAuditCreator();
|
|
||||||
}
|
|
||||||
else if (nodeAspects.contains(ContentModel.ASPECT_OWNABLE))
|
|
||||||
{
|
{
|
||||||
Serializable owner = nodeService.getProperty(node.getNodeRef(), ContentModel.PROP_OWNER);
|
Serializable owner = nodeService.getProperty(node.getNodeRef(), ContentModel.PROP_OWNER);
|
||||||
userName = DefaultTypeConverter.INSTANCE.convert(String.class, owner);
|
userName = DefaultTypeConverter.INSTANCE.convert(String.class, owner);
|
||||||
}
|
}
|
||||||
|
else if (nodeAspects.contains(ContentModel.ASPECT_AUDITABLE))
|
||||||
|
{
|
||||||
|
userName = node.getAuditableProperties().getAuditCreator();
|
||||||
|
}
|
||||||
|
|
||||||
return userName;
|
return userName;
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user