Compare commits

..

79 Commits

Author SHA1 Message Date
alfresco-build
731d580f7e [maven-release-plugin][skip ci] prepare release 25.1.0.9 2024-12-05 15:46:49 +00:00
dependabot[bot]
ad4126ffea Bump org.mybatis:mybatis from 3.5.16 to 3.5.17 (#3062)
Bumps [org.mybatis:mybatis](https://github.com/mybatis/mybatis-3) from 3.5.16 to 3.5.17.
- [Release notes](https://github.com/mybatis/mybatis-3/releases)
- [Commits](https://github.com/mybatis/mybatis-3/compare/mybatis-3.5.16...mybatis-3.5.17)

---
updated-dependencies:
- dependency-name: org.mybatis:mybatis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 09:33:04 +01:00
dependabot[bot]
933aced67c Bump dependency.log4j.version from 2.23.1 to 2.24.2 (#3064)
Bumps `dependency.log4j.version` from 2.23.1 to 2.24.2.

Updates `org.apache.logging.log4j:log4j-slf4j2-impl` from 2.23.1 to 2.24.2

Updates `org.apache.logging.log4j:log4j-api` from 2.23.1 to 2.24.2

Updates `org.apache.logging.log4j:log4j-core` from 2.23.1 to 2.24.2

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-slf4j2-impl
  dependency-type: direct:development
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 09:31:49 +01:00
mohit-singh4
de0ba15a91 [Fix/MNT-24209] logging for download restapi (#3065)
* [fix/MNT-24209] Adding loggers in ACS download restApi

* [fix/MNT-24209] Adding loggers in ACS download restApi

* [fix/MNT-24209] Adding loggers in ACS download restApi

* Update ZipDownloadExporter.java

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* Revert "Update ZipDownloadExporter.java"

This reverts commit 2d97b34959.

* resolved Pre commit error

* resolved Pre commit error

* Bump io.swagger:swagger-parser from 1.0.71 to 1.0.72 (#3044)

Bumps [io.swagger:swagger-parser](https://github.com/swagger-api/swagger-parser) from 1.0.71 to 1.0.72.
- [Release notes](https://github.com/swagger-api/swagger-parser/releases)
- [Commits](https://github.com/swagger-api/swagger-parser/compare/v1.0.71...v1.0.72)

---
updated-dependencies:
- dependency-name: io.swagger:swagger-parser
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [maven-release-plugin][skip ci] prepare release 25.1.0.4

* [maven-release-plugin][skip ci] prepare for next development iteration

* Update the SiteMembership Class

* Update the SiteMembership Class

* Update the SiteMembership Class

* Revert "Update the SiteMembership Class"

This reverts commit 15045f9612.

* Update the SiteMembership Class

* Update the SiteMembership Class

* Update the license i SiteMembership

* Revert "Update the license i SiteMembership"

This reverts commit ee8f3bec18.

* Update the license SiteMembership

* Fix Precommit

* Fix Precommit

* Fix Precommit

* Update the SiteMembership

* [maven-release-plugin][skip ci] prepare release 25.1.0.5

* [maven-release-plugin][skip ci] prepare for next development iteration

* Revert "Bump dependency.log4j.version from 2.23.1 to 2.24.2 (#3051)"

This reverts commit 748be1f4a0.

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* resolved Pre commit error

* resolved Pre commit error

* reformatting ZipDownloadExporter file

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

* [fix/MNT-24209-logging-for-download-restapi] Adding loggers in downloads RestAPI

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: mohit-singh4 <mohit.singh@contractors.hyland.com>
Co-authored-by: MohinishSah <88024811+MohinishSah@users.noreply.github.com>
Co-authored-by: Mohinish Sah <Mohinish.Sah@contractors.onbase.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: alfresco-build <8039454+alfresco-build@users.noreply.github.com>
Co-authored-by: varapathijanakiram <172787912+varapathijanakiram@users.noreply.github.com>
Co-authored-by: vjanakiram <varapathi.janakiram@hyland.com>
Co-authored-by: rrajoria <88024787+rrajoria@users.noreply.github.com>
Co-authored-by: Cezary Witkowski <cezary.witkowski@hyland.com>
2024-12-04 14:24:43 +05:30
alfresco-build
00c36251d4 [maven-release-plugin][skip ci] prepare for next development iteration 2024-12-02 15:05:20 +00:00
alfresco-build
ea9ce0c0c2 [maven-release-plugin][skip ci] prepare release 25.1.0.8 2024-12-02 15:05:18 +00:00
Eva Vasques
37231e50a2 MNT-24753 Restore from Archive when we have multiple content stores (#3066)
* Pre-commit changes
* Method requestRestoreContentFromArchive needs to use injected ContentStore
2024-12-02 14:22:51 +00:00
alfresco-build
26d8c7dcbe [maven-release-plugin][skip ci] prepare for next development iteration 2024-12-01 00:09:27 +00:00
alfresco-build
6ea97033d3 [maven-release-plugin][skip ci] prepare release 25.1.0.7 2024-12-01 00:09:23 +00:00
Alfresco CI User
cd0b2ffd24 [force] Force release for 2024-12-01. 2024-12-01 00:05:05 +00:00
alfresco-build
a14cbacb68 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-29 07:34:35 +00:00
alfresco-build
fc0b9863d4 [maven-release-plugin][skip ci] prepare release 25.1.0.6 2024-11-29 07:34:33 +00:00
Cezary Witkowski
29dc42d445 Merge pull request #3063 from Alfresco/revert-3051-dependabot/maven/dependency.log4j.version-2.24.2
Revert "Bump dependency.log4j.version from 2.23.1 to 2.24.2"
2024-11-28 15:26:55 +01:00
Cezary Witkowski
39da968d76 Revert "Bump dependency.log4j.version from 2.23.1 to 2.24.2 (#3051)"
This reverts commit 748be1f4a0.
2024-11-28 14:36:47 +01:00
alfresco-build
6a4fecd46e [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-28 11:36:08 +00:00
alfresco-build
e083d4fcc2 [maven-release-plugin][skip ci] prepare release 25.1.0.5 2024-11-28 11:36:06 +00:00
varapathijanakiram
53e8a06a6e Merge pull request #3058 from Alfresco/fix/MNT-24571-Site-Membership-API
Fix/MNT-24571-Site Membership API
2024-11-28 16:23:20 +05:30
alfresco-build
c80e1fa94b [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-28 09:56:23 +00:00
alfresco-build
675c6f7aa1 [maven-release-plugin][skip ci] prepare release 25.1.0.4 2024-11-28 09:56:21 +00:00
dependabot[bot]
44d67847da Bump io.swagger:swagger-parser from 1.0.71 to 1.0.72 (#3044)
Bumps [io.swagger:swagger-parser](https://github.com/swagger-api/swagger-parser) from 1.0.71 to 1.0.72.
- [Release notes](https://github.com/swagger-api/swagger-parser/releases)
- [Commits](https://github.com/swagger-api/swagger-parser/compare/v1.0.71...v1.0.72)

---
updated-dependencies:
- dependency-name: io.swagger:swagger-parser
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 18:51:51 +01:00
vjanakiram
d405043c5d Update the SiteMembership 2024-11-27 12:38:50 +05:30
rrajoria
da50f6271c Fix Precommit 2024-11-27 11:20:04 +05:30
rrajoria
a5e713c176 Fix Precommit 2024-11-27 11:11:41 +05:30
rrajoria
2dcd2788b2 Fix Precommit 2024-11-27 11:02:51 +05:30
vjanakiram
6b738342c1 Update the license SiteMembership 2024-11-27 10:59:13 +05:30
vjanakiram
ba5f5418ab Revert "Update the license i SiteMembership"
This reverts commit ee8f3bec18.
2024-11-27 10:58:40 +05:30
vjanakiram
ee8f3bec18 Update the license i SiteMembership 2024-11-27 10:47:56 +05:30
vjanakiram
39395af528 Update the SiteMembership Class 2024-11-26 17:49:12 +05:30
vjanakiram
e6f9d88779 Update the SiteMembership Class 2024-11-26 17:27:33 +05:30
vjanakiram
70f70c6ed3 Revert "Update the SiteMembership Class"
This reverts commit 15045f9612.
2024-11-26 17:26:44 +05:30
vjanakiram
15045f9612 Update the SiteMembership Class 2024-11-26 17:25:23 +05:30
dependabot[bot]
c50c7c6a7e Bump org.apache.activemq:activemq-client-jakarta from 5.18.3 to 5.18.6 (#2962) 2024-11-26 11:19:23 +00:00
dependabot[bot]
60199141f5 Bump org.apache.httpcomponents.client5:httpclient5 from 5.2.1 to 5.4.1 (#3015) 2024-11-26 11:19:14 +00:00
vjanakiram
b5e023950d Update the SiteMembership Class 2024-11-26 16:48:11 +05:30
varapathijanakiram
d4591acf2c Update the SiteMembership Class 2024-11-26 16:31:47 +05:30
dependabot[bot]
f34f2849dd Bump org.eclipse.jetty:jetty-server in /remote-api (#2995) 2024-11-26 09:37:26 +00:00
dependabot[bot]
52f2be49f3 Bump com.networknt:json-schema-validator from 1.5.3 to 1.5.4 (#3054) 2024-11-26 09:15:25 +00:00
dependabot[bot]
748be1f4a0 Bump dependency.log4j.version from 2.23.1 to 2.24.2 (#3051) 2024-11-26 09:14:44 +00:00
alfresco-build
52f1af2da6 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-25 10:35:23 +00:00
alfresco-build
626a97ff45 [maven-release-plugin][skip ci] prepare release 25.1.0.3 2024-11-25 10:35:21 +00:00
Damian Ujma
4a91132226 ACS-5371 Exclude xpp3 dependency to avoid conflict in JDK9+ (#3049)
* ACS-5371 Exclude xpp3 dependency

* ACS-5371 Set compiler compliance to 17

* ACS-5371 Update xmlpull version

* ACS-5371 Update xmlpull version

* ACS-5371 Use kxml2

* ACS-5371 Refactor
2024-11-25 09:49:47 +01:00
Piotr Żurek
b6fb8725ce Revert "Bump org.springframework.security:spring-security-bom (#3048)"
This reverts commit aacef0c949.
2024-11-25 09:44:21 +01:00
alfresco-build
5fc0d9edde [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-24 00:10:05 +00:00
alfresco-build
44d394b1a0 [maven-release-plugin][skip ci] prepare release 25.1.0.2 2024-11-24 00:10:03 +00:00
Alfresco CI User
c1d62cca4d [force] Force release for 2024-11-24. 2024-11-24 00:05:36 +00:00
Piotr Żurek
24ae4ce57c Revert "Bump dependency.spring.version from 6.1.14 to 6.2.0 (#3038)"
This reverts commit b8f2ec252d.
2024-11-22 15:07:03 +01:00
dependabot[bot]
b8f2ec252d Bump dependency.spring.version from 6.1.14 to 6.2.0 (#3038)
Bumps `dependency.spring.version` from 6.1.14 to 6.2.0.

Updates `org.springframework:spring-aop` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-beans` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-context` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-context-support` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-core` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-expression` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-jdbc` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-jms` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-test` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-orm` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-tx` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-web` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

Updates `org.springframework:spring-webmvc` from 6.1.14 to 6.2.0
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.2.0)

---
updated-dependencies:
- dependency-name: org.springframework:spring-aop
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-beans
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-context
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-context-support
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-expression
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-jdbc
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-jms
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-test
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-orm
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-tx
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-web
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.springframework:spring-webmvc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 14:22:19 +01:00
dependabot[bot]
ae721c86f6 Bump commons-io:commons-io from 2.17.0 to 2.18.0 (#3046)
Bumps commons-io:commons-io from 2.17.0 to 2.18.0.

---
updated-dependencies:
- dependency-name: commons-io:commons-io
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 14:19:59 +01:00
dependabot[bot]
aacef0c949 Bump org.springframework.security:spring-security-bom (#3048)
Bumps [org.springframework.security:spring-security-bom](https://github.com/spring-projects/spring-security) from 6.3.4 to 6.4.1.
- [Release notes](https://github.com/spring-projects/spring-security/releases)
- [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc)
- [Commits](https://github.com/spring-projects/spring-security/compare/6.3.4...6.4.1)

---
updated-dependencies:
- dependency-name: org.springframework.security:spring-security-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 14:19:15 +01:00
dependabot[bot]
e4edceda75 Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.1 to 3.5.2 (#3019) 2024-11-22 12:41:46 +00:00
dependabot[bot]
09ec6688c6 Bump org.quartz-scheduler:quartz from 2.3.2 to 2.5.0 (#3035) 2024-11-22 12:41:36 +00:00
dependabot[bot]
14025f00de Bump org.projectlombok:lombok from 1.18.34 to 1.18.36 (#3042) 2024-11-22 12:41:16 +00:00
dependabot[bot]
22c5a5e134 Bump dependency.bouncycastle.version from 1.78.1 to 1.79 (#3016) 2024-11-22 12:39:42 +00:00
dependabot[bot]
154cad1ff8 Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 (#3021) 2024-11-22 12:39:40 +00:00
dependabot[bot]
7749b89e2b Bump org.apache.santuario:xmlsec from 4.0.2 to 4.0.3 (#3023) 2024-11-22 12:39:35 +00:00
dependabot[bot]
bbb45e667b Bump org.codehaus.groovy:groovy from 3.0.22 to 3.0.23 (#3030) 2024-11-22 12:39:04 +00:00
dependabot[bot]
a5f01e0d94 Bump Alfresco/alfresco-build-tools from 7.1.0 to 8.2.0 (#3018) 2024-11-22 12:39:02 +00:00
dependabot[bot]
0c6d455ec4 Bump com.networknt:json-schema-validator from 1.5.1 to 1.5.3 (#3017) 2024-11-22 12:38:58 +00:00
dependabot[bot]
5e86f5163e Bump org.apache.xmlbeans:xmlbeans from 5.2.1 to 5.2.2 (#3024) 2024-11-22 12:38:23 +00:00
alfresco-build
4981be1564 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-20 15:49:36 +00:00
alfresco-build
9a30fbb75a [maven-release-plugin][skip ci] prepare release 25.1.0.1 2024-11-20 15:49:34 +00:00
Piotr Żurek
9c86fdb8b5 Trigger CI 2024-11-20 15:42:59 +01:00
Kacper Magdziarz
c52f74832d Updating master branch to 25.1.0 after 23.4.0 ACS release [skip ci] 2024-11-20 13:36:19 +01:00
alfresco-build
70dd7642f4 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-19 09:48:20 +00:00
alfresco-build
0cf3eec834 [maven-release-plugin][skip ci] prepare release 23.4.0.67 2024-11-19 09:48:12 +00:00
MohinishSah
dfd855440d bumped aos version 2024-11-19 14:38:12 +05:30
alfresco-build
88d46884c4 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-17 00:08:12 +00:00
alfresco-build
e6444a1c7a [maven-release-plugin][skip ci] prepare release 23.4.0.66 2024-11-17 00:08:10 +00:00
Alfresco CI User
e215038230 [force] Force release for 2024-11-17. 2024-11-17 00:04:44 +00:00
alfresco-build
a5f8034725 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-15 09:54:37 +00:00
alfresco-build
c7dd659268 [maven-release-plugin][skip ci] prepare release 23.4.0.65 2024-11-15 09:54:35 +00:00
Sara
ffae77169e ACS-8937 Bump IE/SS to 2.0.13 (#3040) 2024-11-15 09:12:11 +00:00
alfresco-build
3bcfaf256e [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-14 18:30:28 +00:00
alfresco-build
0e8d56d7b2 [maven-release-plugin][skip ci] prepare release 23.4.0.64 2024-11-14 18:30:25 +00:00
Piotr Żurek
ef9e8d574f ACS-8935 Use GA dependencies (#3037) 2024-11-14 18:47:51 +01:00
alfresco-build
a17712b501 [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-14 14:03:54 +00:00
alfresco-build
fce6d1d7eb [maven-release-plugin][skip ci] prepare release 23.4.0.63 2024-11-14 14:03:52 +00:00
mohit-singh4
867af27a96 Fix/apps 2894 node size details automation sample test file (#3036)
* Adding the test case for calculating the NodeSize.

* Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationTest] Adding the test case for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

* [fix/APPS-2894_NodeSizeDetails_AutomationSampleTestFile] Updating sample testfile which being used for calculating the NodeSize.

---------

Co-authored-by: kshah <kavit.shah@hyland.com>
Co-authored-by: mohit-singh4 <mohit.singh@contractors.hyland.com>
2024-11-14 18:53:27 +05:30
alfresco-build
3de74456ae [maven-release-plugin][skip ci] prepare for next development iteration 2024-11-13 10:46:53 +00:00
36 changed files with 1189 additions and 1194 deletions

View File

@@ -44,14 +44,14 @@ 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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- id: changed-files - id: changed-files
uses: Alfresco/alfresco-build-tools/.github/actions/github-list-changes@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/github-list-changes@v8.2.0
with: with:
write-list-to-env: true write-list-to-env: true
- uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/pre-commit@v8.2.0
- 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"
@@ -69,12 +69,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/veracode@v8.2.0
continue-on-error: true continue-on-error: true
with: with:
srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }} srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }}
@@ -92,10 +92,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/github-download-file@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/github-download-file@v8.2.0
with: with:
token: ${{ secrets.BOT_GITHUB_TOKEN }} token: ${{ secrets.BOT_GITHUB_TOKEN }}
repository: "Alfresco/veracode-baseline-archive" repository: "Alfresco/veracode-baseline-archive"
@@ -142,9 +142,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- uses: Alfresco/ya-pmd-scan@v4.1.0 - uses: Alfresco/ya-pmd-scan@v4.1.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\""
@@ -175,14 +175,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testModule }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testModule }}
@@ -213,7 +213,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -255,9 +255,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |
@@ -270,7 +270,7 @@ jobs:
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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }}
@@ -301,7 +301,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -334,9 +334,9 @@ jobs:
version: ['10.2.18', '10.4', '10.5'] version: ['10.2.18', '10.4', '10.5']
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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
@@ -345,7 +345,7 @@ jobs:
MARIADB_VERSION: ${{ matrix.version }} MARIADB_VERSION: ${{ matrix.version }}
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.version }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.version }}
@@ -376,7 +376,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -405,9 +405,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run MariaDB 10.6 database" - name: "Run MariaDB 10.6 database"
@@ -416,7 +416,7 @@ jobs:
MARIADB_VERSION: 10.6 MARIADB_VERSION: 10.6
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -447,7 +447,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -476,9 +476,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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"
@@ -487,7 +487,7 @@ jobs:
MYSQL_VERSION: 8 MYSQL_VERSION: 8
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -518,7 +518,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -546,9 +546,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run PostgreSQL 13.12 database" - name: "Run PostgreSQL 13.12 database"
@@ -557,7 +557,7 @@ jobs:
POSTGRES_VERSION: 13.12 POSTGRES_VERSION: 13.12
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -588,7 +588,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -616,9 +616,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run PostgreSQL 14.9 database" - name: "Run PostgreSQL 14.9 database"
@@ -627,7 +627,7 @@ jobs:
POSTGRES_VERSION: 14.9 POSTGRES_VERSION: 14.9
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -658,7 +658,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -686,9 +686,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run PostgreSQL 15.4 database" - name: "Run PostgreSQL 15.4 database"
@@ -697,7 +697,7 @@ jobs:
POSTGRES_VERSION: 15.4 POSTGRES_VERSION: 15.4
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -728,7 +728,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -754,16 +754,16 @@ 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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -794,7 +794,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -854,9 +854,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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,7 +879,7 @@ jobs:
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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }} ${{ matrix.idp }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.testSuite }} ${{ matrix.idp }}
@@ -910,7 +910,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -968,9 +968,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |
@@ -986,7 +986,7 @@ jobs:
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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.test-name }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} - ${{ matrix.test-name }}
@@ -1024,7 +1024,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.tests.outcome }} tests-outcome: ${{ steps.tests.outcome }}
@@ -1050,16 +1050,16 @@ 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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Init" - name: "Init"
run: bash ./scripts/ci/init.sh run: bash ./scripts/ci/init.sh
- name: "Run Postgres 15.4 database" - name: "Run Postgres 15.4 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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -1090,7 +1090,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -1124,9 +1124,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |
@@ -1134,7 +1134,7 @@ jobs:
bash ./scripts/ci/build.sh bash ./scripts/ci/build.sh
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (PostgreSQL) ${{ matrix.test-name }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (PostgreSQL) ${{ matrix.test-name }}
@@ -1170,9 +1170,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |
@@ -1180,7 +1180,7 @@ jobs:
bash ./scripts/ci/build.sh bash ./scripts/ci/build.sh
- name: "Prepare Report Portal" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (MySQL) ${{ matrix.test-name }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} 0${{ matrix.part }} - (MySQL) ${{ matrix.test-name }}
@@ -1212,9 +1212,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |
@@ -1228,7 +1228,7 @@ jobs:
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" - name: "Prepare Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-prepare@v8.2.0
id: rp-prepare id: rp-prepare
with: with:
rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }} rp-launch-prefix: ${{ env.RP_LAUNCH_PREFIX }}
@@ -1260,7 +1260,7 @@ jobs:
continue-on-error: true continue-on-error: true
- name: "Summarize Report Portal" - name: "Summarize Report Portal"
if: github.ref_name == 'master' if: github.ref_name == 'master'
uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v7.1.0 uses: Alfresco/alfresco-build-tools/.github/actions/reportportal-summarize@v8.2.0
id: rp-summarize id: rp-summarize
with: with:
tests-outcome: ${{ steps.run-tests.outcome }} tests-outcome: ${{ steps.run-tests.outcome }}
@@ -1302,9 +1302,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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- name: "Build" - name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }} timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: | run: |

View File

@@ -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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.2.0
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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/free-hosted-runner-disk-space@v8.2.0
- uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v8.2.0
- 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@v7.1.0 - uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.2.0
with: with:
username: ${{ env.GIT_USERNAME }} username: ${{ env.GIT_USERNAME }}
email: ${{ env.GIT_EMAIL }} email: ${{ env.GIT_EMAIL }}

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-automation-community-repo</artifactId> <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<modules> <modules>

View File

@@ -1,3 +1,3 @@
SOLR6_TAG=2.0.13-A2 SOLR6_TAG=2.0.13
POSTGRES_TAG=15.4 POSTGRES_TAG=15.4
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8 ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>

View File

@@ -3,8 +3,8 @@
# #
# Version label # Version label
version.major=23 version.major=25
version.minor=4 version.minor=1
version.revision=0 version.revision=0
version.label= version.label=

View File

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

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>
@@ -118,6 +118,18 @@
<groupId>org.jibx</groupId> <groupId>org.jibx</groupId>
<artifactId>jibx-run</artifactId> <artifactId>jibx-run</artifactId>
<version>1.4.2</version> <version>1.4.2</version>
<exclusions>
<!-- [ACS-5371] Excluded to avoid conflict in JDK9+ as it includes javax.xml-->
<exclusion>
<groupId>xpp3</groupId>
<artifactId>xpp3</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.kxml</groupId>
<artifactId>kxml2</artifactId>
<version>${dependency.kxml2.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<dependencies> <dependencies>

View File

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

View File

@@ -146,6 +146,7 @@ libgif http://giflib.sourceforge.net/
libfreetype http://www.freetype.org/ libfreetype http://www.freetype.org/
PostgreSQL http://www.postgresql.org/ PostgreSQL http://www.postgresql.org/
PostgreSQL JDBC Driver http://www.postgresql.org/ PostgreSQL JDBC Driver http://www.postgresql.org/
kXML 2 http://kxml.sourceforge.net/
=== CDDL 1.0 === === CDDL 1.0 ===

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<modules> <modules>

View File

@@ -1,3 +1,3 @@
SOLR6_TAG=2.0.13-A2 SOLR6_TAG=2.0.13
POSTGRES_TAG=15.4 POSTGRES_TAG=15.4
ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8 ACTIVEMQ_TAG=5.18.3-jre17-rockylinux8

View File

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

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<organization> <organization>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<developers> <developers>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<developers> <developers>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>
@@ -171,7 +171,7 @@
<dependency> <dependency>
<groupId>org.codehaus.groovy</groupId> <groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId> <artifactId>groovy</artifactId>
<version>3.0.22</version> <version>3.0.23</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-json--> <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-json-->

View File

@@ -1,7 +1,11 @@
package org.alfresco.rest.nodes; package org.alfresco.rest.nodes;
import static java.util.Objects.requireNonNull;
import static org.alfresco.utility.report.log.Step.STEP; import static org.alfresco.utility.report.log.Step.STEP;
import java.io.IOException;
import java.io.InputStream;
import java.time.Duration; import java.time.Duration;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.IntStream; import java.util.stream.IntStream;
@@ -17,7 +21,6 @@ import org.testng.annotations.Test;
import org.alfresco.dataprep.CMISUtil.DocumentType; import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest; import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestNodeModel;
import org.alfresco.rest.model.RestSizeDetailsModel; import org.alfresco.rest.model.RestSizeDetailsModel;
import org.alfresco.utility.Utility; import org.alfresco.utility.Utility;
import org.alfresco.utility.model.*; import org.alfresco.utility.model.*;
@@ -30,13 +33,19 @@ public class NodeSizeDetailsTests extends RestTest
private SiteModel siteModel; private SiteModel siteModel;
private FolderModel folder; private FolderModel folder;
private String jobId; private String jobId;
private FileModel sampleFileToCreate;
private long sampleFileSize;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void dataPreparation() public void dataPreparation() throws IOException
{ {
user1 = dataUser.createRandomTestUser("User-1"); user1 = dataUser.createRandomTestUser("User-1");
siteModel = dataSite.usingUser(user1).createPublicRandomSite(); siteModel = dataSite.usingUser(user1).createPublicRandomSite();
folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel()); folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel());
String fileName = "sampleLargeContent.txt";
final byte[] sampleFileContent = getSampleFileContent(fileName);
sampleFileSize = sampleFileContent.length;
sampleFileToCreate = new FileModel(fileName, FileType.TEXT_PLAIN, new String(sampleFileContent));
} }
/** /**
@@ -52,15 +61,10 @@ public class NodeSizeDetailsTests extends RestTest
folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel()); folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel());
STEP("2. Upload a text document to the folder."); STEP("2. Upload a text document to the folder.");
long fileSize; dataContent.usingUser(user1)
.usingSite(siteModel)
restClient.authenticateUser(user1).configureRequestSpec().addMultiPart("filedata", Utility.getResourceTestDataFile("sampleLargeContent.txt")); .usingResource(folder)
RestNodeModel fileNode = restClient.withCoreAPI().usingNode(folder).createNode(); .createContent(sampleFileToCreate);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
fileNode.assertThat().field("id").isNotNull()
.and().field("name").is("sampleLargeContent.txt")
.and().field("content.mimeType").is(FileType.TEXT_PLAIN.mimeType);
fileSize = Utility.getResourceTestDataFile("sampleLargeContent.txt").length();
STEP("3. Wait for 30 seconds so that the content is indexed in Search Service."); STEP("3. Wait for 30 seconds so that the content is indexed in Search Service.");
Utility.waitToLoopTime(30); Utility.waitToLoopTime(30);
@@ -71,10 +75,10 @@ public class NodeSizeDetailsTests extends RestTest
jobId = restSizeDetailsModel.getJobId(); jobId = restSizeDetailsModel.getJobId();
STEP("4. Wait for 10 seconds for the processing to complete."); STEP("4. Wait for 5 seconds for the processing to complete.");
Awaitility Awaitility
.await() .await()
.atMost(Duration.ofSeconds(10)) .atMost(Duration.ofSeconds(5))
.pollInterval(Durations.ONE_SECOND) .pollInterval(Durations.ONE_SECOND)
.ignoreExceptions() .ignoreExceptions()
.untilAsserted(() -> { .untilAsserted(() -> {
@@ -86,9 +90,9 @@ public class NodeSizeDetailsTests extends RestTest
sizeDetailsModel.assertThat() sizeDetailsModel.assertThat()
.field("sizeInBytes") .field("sizeInBytes")
.isNotEmpty(); .isNotEmpty();
Assert.assertEquals(sizeDetailsModel.getSizeInBytes(), fileSize, Assert.assertEquals(sizeDetailsModel.getSizeInBytes(), sampleFileSize,
"Value of sizeInBytes " + sizeDetailsModel.getSizeInBytes() "Value of sizeInBytes " + sizeDetailsModel.getSizeInBytes()
+ " is not equal to " + fileSize); + " is not equal to " + sampleFileSize);
}); });
} }
@@ -120,13 +124,10 @@ public class NodeSizeDetailsTests extends RestTest
folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel()); folder = dataContent.usingUser(user1).usingSite(siteModel).createFolder(FolderModel.getRandomFolderModel());
STEP("2. Upload a text document to the folder."); STEP("2. Upload a text document to the folder.");
dataContent.usingUser(user1)
restClient.authenticateUser(user1).configureRequestSpec().addMultiPart("filedata", Utility.getResourceTestDataFile("sampleLargeContent.txt")); .usingSite(siteModel)
RestNodeModel fileNode = restClient.withCoreAPI().usingNode(folder).createNode(); .usingResource(folder)
restClient.assertStatusCodeIs(HttpStatus.CREATED); .createContent(sampleFileToCreate);
fileNode.assertThat().field("id").isNotNull()
.and().field("name").is("sampleLargeContent.txt")
.and().field("content.mimeType").is(FileType.TEXT_PLAIN.mimeType);
STEP("3. Wait for 30 seconds so that the content is indexed in Search Service."); STEP("3. Wait for 30 seconds so that the content is indexed in Search Service.");
Utility.waitToLoopTime(30); Utility.waitToLoopTime(30);
@@ -170,12 +171,11 @@ public class NodeSizeDetailsTests extends RestTest
STEP("2. Upload a text document to the folder."); STEP("2. Upload a text document to the folder.");
String status = "NOT_INITIATED"; String status = "NOT_INITIATED";
restClient.authenticateUser(user1).configureRequestSpec().addMultiPart("filedata", Utility.getResourceTestDataFile("sampleLargeContent.txt")); FileModel fileModel = dataContent.usingUser(user1)
RestNodeModel fileNode = restClient.withCoreAPI().usingNode(folder).createNode(); .usingSite(siteModel)
restClient.assertStatusCodeIs(HttpStatus.CREATED); .usingResource(folder)
fileNode.assertThat().field("id").isNotNull() .createContent(sampleFileToCreate);
.and().field("name").is("sampleLargeContent.txt") Assert.assertNotNull(fileModel, "fileModel should not be null");
.and().field("content.mimeType").is(FileType.TEXT_PLAIN.mimeType);
STEP("3. Wait for 30 seconds so that the content is indexed in Search Service."); STEP("3. Wait for 30 seconds so that the content is indexed in Search Service.");
Awaitility Awaitility
@@ -189,7 +189,6 @@ public class NodeSizeDetailsTests extends RestTest
.usingNode(folder) .usingNode(folder)
.getSizeDetails(jobId); .getSizeDetails(jobId);
restClient.assertStatusCodeIs(HttpStatus.OK); restClient.assertStatusCodeIs(HttpStatus.OK);
restClient.assertStatusCodeIs(HttpStatus.OK);
sizeDetailsModel.assertThat().field("status").isNotEmpty(); sizeDetailsModel.assertThat().field("status").isNotEmpty();
Assert.assertEquals(sizeDetailsModel.getStatus().toString(), status, "Value of status should be same, actual :" + sizeDetailsModel.getStatus().toString() + " expected: " + status); Assert.assertEquals(sizeDetailsModel.getStatus().toString(), status, "Value of status should be same, actual :" + sizeDetailsModel.getStatus().toString() + " expected: " + status);
}); });
@@ -260,26 +259,11 @@ public class NodeSizeDetailsTests extends RestTest
.createFolder(folderModel); .createFolder(folderModel);
STEP("3. Upload a text document to the childFolders."); STEP("3. Upload a text document to the childFolders.");
restClient.authenticateUser(user1) dataContent.usingUser(user1)
.configureRequestSpec() .usingSite(siteModel)
.addMultiPart("filedata", Utility.getResourceTestDataFile("sampleLargeContent.txt")); .usingResource(childFolder)
fileSize.addAndGet(Utility.getResourceTestDataFile("sampleLargeContent.txt").length()); .createContent(sampleFileToCreate);
RestNodeModel newNode = restClient.authenticateUser(user1) fileSize.addAndGet(sampleFileSize);
.withCoreAPI()
.usingNode(childFolder)
.createNode();
restClient.assertStatusCodeIs(HttpStatus.CREATED);
newNode.assertThat()
.field("id")
.isNotNull()
.and()
.field("name")
.is("sampleLargeContent.txt")
.and()
.field("content.mimeType")
.is(FileType.TEXT_PLAIN.mimeType);
}); });
STEP("4. Wait for 30 seconds so that the content is indexed in Search Service."); STEP("4. Wait for 30 seconds so that the content is indexed in Search Service.");
@@ -341,25 +325,10 @@ public class NodeSizeDetailsTests extends RestTest
.createFolder(folderModel); .createFolder(folderModel);
STEP("3. Upload a text document to the childFolders."); STEP("3. Upload a text document to the childFolders.");
restClient.authenticateUser(user1) dataContent.usingUser(user1)
.configureRequestSpec() .usingSite(siteModel)
.addMultiPart("filedata", Utility.getResourceTestDataFile("sampleLargeContent.txt")); .usingResource(childFolder)
RestNodeModel newNode = restClient.authenticateUser(user1) .createContent(sampleFileToCreate);
.withCoreAPI()
.usingNode(childFolder)
.createNode();
restClient.assertStatusCodeIs(HttpStatus.CREATED);
newNode.assertThat()
.field("id")
.isNotNull()
.and()
.field("name")
.is("sampleLargeContent.txt")
.and()
.field("content.mimeType")
.is(FileType.TEXT_PLAIN.mimeType);
}); });
STEP("4. Wait for 30 seconds so that the content is indexed in Search Service."); STEP("4. Wait for 30 seconds so that the content is indexed in Search Service.");
@@ -393,6 +362,16 @@ public class NodeSizeDetailsTests extends RestTest
}); });
} }
private byte[] getSampleFileContent(String fileName) throws IOException
{
final String fileClasspathLocation = "/shared-resources/testdata/" + fileName;
try (InputStream fileStream = getClass().getResourceAsStream(fileClasspathLocation))
{
requireNonNull(fileStream, "Couldn't locate `" + fileClasspathLocation + "`");
return fileStream.readAllBytes();
}
}
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void cleanup() throws Exception public void cleanup() throws Exception
{ {

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<developers> <developers>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<properties> <properties>

43
pom.xml
View File

@@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Alfresco Community Repo Parent</name> <name>Alfresco Community Repo Parent</name>
@@ -23,8 +23,8 @@
</modules> </modules>
<properties> <properties>
<acs.version.major>23</acs.version.major> <acs.version.major>25</acs.version.major>
<acs.version.minor>4</acs.version.minor> <acs.version.minor>1</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>
@@ -51,8 +51,8 @@
<dependency.alfresco-server-root.version>7.0.1</dependency.alfresco-server-root.version> <dependency.alfresco-server-root.version>7.0.1</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.5-A3</dependency.alfresco-transform-core.version> <dependency.alfresco-transform-core.version>5.1.5</dependency.alfresco-transform-core.version>
<dependency.alfresco-transform-service.version>4.1.5-A3</dependency.alfresco-transform-service.version> <dependency.alfresco-transform-service.version>4.1.5</dependency.alfresco-transform-service.version>
<dependency.alfresco-greenmail.version>7.0</dependency.alfresco-greenmail.version> <dependency.alfresco-greenmail.version>7.0</dependency.alfresco-greenmail.version>
<dependency.acs-event-model.version>0.0.33</dependency.acs-event-model.version> <dependency.acs-event-model.version>0.0.33</dependency.acs-event-model.version>
@@ -64,38 +64,39 @@
<dependency.cxf.version>4.0.5</dependency.cxf.version> <dependency.cxf.version>4.0.5</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>9.4</dependency.webscripts.version> <dependency.webscripts.version>9.4</dependency.webscripts.version>
<dependency.bouncycastle.version>1.78.1</dependency.bouncycastle.version> <dependency.bouncycastle.version>1.79</dependency.bouncycastle.version>
<dependency.mockito-core.version>5.14.1</dependency.mockito-core.version> <dependency.mockito-core.version>5.14.1</dependency.mockito-core.version>
<dependency.assertj.version>3.26.3</dependency.assertj.version> <dependency.assertj.version>3.26.3</dependency.assertj.version>
<dependency.org-json.version>20240303</dependency.org-json.version> <dependency.org-json.version>20240303</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.17.0</dependency.commons-io.version> <dependency.commons-io.version>2.18.0</dependency.commons-io.version>
<dependency.gson.version>2.11.0</dependency.gson.version> <dependency.gson.version>2.11.0</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>
<dependency.httpcomponents-httpclient5.version>5.2.1</dependency.httpcomponents-httpclient5.version> <dependency.httpcomponents-httpclient5.version>5.4.1</dependency.httpcomponents-httpclient5.version>
<dependency.httpcomponents-httpcore5.version>5.3</dependency.httpcomponents-httpcore5.version> <dependency.httpcomponents-httpcore5.version>5.3</dependency.httpcomponents-httpcore5.version>
<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.23.1</dependency.log4j.version> <dependency.log4j.version>2.24.2</dependency.log4j.version>
<dependency.groovy.version>3.0.22</dependency.groovy.version> <dependency.groovy.version>3.0.23</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.3.0</dependency.poi.version> <dependency.poi.version>5.3.0</dependency.poi.version>
<dependency.jboss.logging.version>3.5.0.Final</dependency.jboss.logging.version> <dependency.jboss.logging.version>3.5.0.Final</dependency.jboss.logging.version>
<dependency.camel.version>4.6.0</dependency.camel.version> <!-- when bumping this version, please keep track/sync with included netty.io dependencies --> <dependency.camel.version>4.6.0</dependency.camel.version> <!-- when bumping this version, please keep track/sync with included netty.io dependencies -->
<dependency.netty.version>4.1.113.Final</dependency.netty.version> <!-- must be in sync with camels transitive dependencies, e.g.: netty-common --> <dependency.netty.version>4.1.113.Final</dependency.netty.version> <!-- must be in sync with camels transitive dependencies, e.g.: netty-common -->
<dependency.activemq.version>5.18.3</dependency.activemq.version> <dependency.activemq.version>5.18.6</dependency.activemq.version>
<dependency.apache-compress.version>1.27.1</dependency.apache-compress.version> <dependency.apache-compress.version>1.27.1</dependency.apache-compress.version>
<dependency.awaitility.version>4.2.2</dependency.awaitility.version> <dependency.awaitility.version>4.2.2</dependency.awaitility.version>
<dependency.swagger-ui.version>4.1.3</dependency.swagger-ui.version> <dependency.swagger-ui.version>4.1.3</dependency.swagger-ui.version>
<dependency.swagger-parser.version>1.0.71</dependency.swagger-parser.version> <dependency.swagger-parser.version>1.0.72</dependency.swagger-parser.version>
<dependency.maven-filtering.version>3.1.1</dependency.maven-filtering.version> <dependency.maven-filtering.version>3.1.1</dependency.maven-filtering.version>
<dependency.maven-artifact.version>3.8.6</dependency.maven-artifact.version> <dependency.maven-artifact.version>3.8.6</dependency.maven-artifact.version>
<dependency.jdom2.version>2.0.6.1</dependency.jdom2.version> <dependency.jdom2.version>2.0.6.1</dependency.jdom2.version>
<dependency.pooled-jms.version>3.1.6</dependency.pooled-jms.version> <dependency.pooled-jms.version>3.1.6</dependency.pooled-jms.version>
<dependency.kxml2.version>2.3.0</dependency.kxml2.version>
<dependency.jakarta-ee-jaxb-api.version>4.0.2</dependency.jakarta-ee-jaxb-api.version> <dependency.jakarta-ee-jaxb-api.version>4.0.2</dependency.jakarta-ee-jaxb-api.version>
<dependency.jakarta-ee-jaxb-impl.version>4.0.5</dependency.jakarta-ee-jaxb-impl.version> <dependency.jakarta-ee-jaxb-impl.version>4.0.5</dependency.jakarta-ee-jaxb-impl.version>
@@ -113,8 +114,8 @@
<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.1</dependency.json-smart.version> <dependency.json-smart.version>2.5.1</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.2.0-A2</alfresco.aos-module.version> <alfresco.aos-module.version>3.2.0</alfresco.aos-module.version>
<alfresco.api-explorer.version>23.4.0-A1</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share --> <alfresco.api-explorer.version>23.4.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>
@@ -154,7 +155,7 @@
<connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection> <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
<developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection> <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
<url>https://github.com/Alfresco/alfresco-community-repo</url> <url>https://github.com/Alfresco/alfresco-community-repo</url>
<tag>23.4.0.62</tag> <tag>25.1.0.9</tag>
</scm> </scm>
<distributionManagement> <distributionManagement>
@@ -371,7 +372,7 @@
<dependency> <dependency>
<groupId>org.quartz-scheduler</groupId> <groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId> <artifactId>quartz</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
<!-- exclude c3p0 --> <!-- exclude c3p0 -->
<!-- see https://issues.alfresco.com/jira/browse/REPO-3447 --> <!-- see https://issues.alfresco.com/jira/browse/REPO-3447 -->
<exclusions> <exclusions>
@@ -465,7 +466,7 @@
<dependency> <dependency>
<groupId>org.apache.xmlbeans</groupId> <groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId> <artifactId>xmlbeans</artifactId>
<version>5.2.1</version> <version>5.2.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.json</groupId> <groupId>org.json</groupId>
@@ -703,7 +704,7 @@
<dependency> <dependency>
<groupId>com.networknt</groupId> <groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId> <artifactId>json-schema-validator</artifactId>
<version>1.5.1</version> <version>1.5.4</version>
</dependency> </dependency>
<!-- upgrade dependency from TIKA --> <!-- upgrade dependency from TIKA -->
<dependency> <dependency>
@@ -950,7 +951,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.34</version> <version>1.18.36</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -1015,7 +1016,7 @@
</plugin> </plugin>
<plugin> <plugin>
<artifactId>maven-failsafe-plugin</artifactId> <artifactId>maven-failsafe-plugin</artifactId>
<version>3.5.1</version> <version>3.5.2</version>
</plugin> </plugin>
<plugin> <plugin>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
@@ -1028,7 +1029,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>3.10.1</version> <version>3.11.1</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</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.2</version> <version>4.0.3</version>
</dependency> </dependency>
<!-- newer version, see REPO-3133 --> <!-- newer version, see REPO-3133 -->
<dependency> <dependency>
@@ -119,7 +119,7 @@
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId> <artifactId>jetty-server</artifactId>
<version>11.0.15</version> <version>11.0.24</version>
<scope>test</scope> <scope>test</scope>
<exclusions> <exclusions>
<exclusion> <exclusion>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.4.0.62</version> <version>25.1.0.9</version>
</parent> </parent>
<dependencies> <dependencies>
@@ -397,7 +397,7 @@
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId> <artifactId>mybatis</artifactId>
<version>3.5.16</version> <version>3.5.17</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>org.mybatis</groupId>
@@ -850,12 +850,12 @@
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<complianceLevel>1.8</complianceLevel> <complianceLevel>17</complianceLevel>
<outxml>false</outxml> <outxml>false</outxml>
<verbose>true</verbose> <verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo> <showWeaveInfo>true</showWeaveInfo>
<source>1.8</source> <source>17</source>
<target>1.8</target> <target>17</target>
<additionalCompilerArgs> <additionalCompilerArgs>
<arg>-parameters</arg> <arg>-parameters</arg>
</additionalCompilerArgs> </additionalCompilerArgs>

View File

@@ -1,493 +1,484 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2021 Alfresco Software Limited * Copyright (C) 2005 - 2021 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%
*/ */
package org.alfresco.repo.content; package org.alfresco.repo.content;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import org.alfresco.error.AlfrescoRuntimeException; import org.apache.commons.logging.Log;
import org.alfresco.repo.cache.SimpleCache; import org.apache.commons.logging.LogFactory;
import org.alfresco.service.cmr.repository.ContentIOException;
import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.util.GUID; import org.alfresco.service.cmr.repository.ContentIOException;
import org.alfresco.util.Pair; import org.alfresco.service.cmr.repository.ContentReader;
import org.apache.commons.logging.Log; import org.alfresco.service.cmr.repository.ContentWriter;
import org.apache.commons.logging.LogFactory; import org.alfresco.util.GUID;
import org.alfresco.util.Pair;
/**
* A store providing support for content store implementations that provide /**
* routing of content read and write requests based on context. * A store providing support for content store implementations that provide routing of content read and write requests based on context.
* *
* @see ContentContext * @see ContentContext
* *
* @since 2.1 * @since 2.1
* @author Derek Hulley * @author Derek Hulley
*/ */
public abstract class AbstractRoutingContentStore implements ContentStore public abstract class AbstractRoutingContentStore implements ContentStore
{ {
private static Log logger = LogFactory.getLog(AbstractRoutingContentStore.class); private static Log logger = LogFactory.getLog(AbstractRoutingContentStore.class);
private String instanceKey = GUID.generate(); private String instanceKey = GUID.generate();
private SimpleCache<Pair<String, String>, ContentStore> storesByContentUrl; private SimpleCache<Pair<String, String>, ContentStore> storesByContentUrl;
private ReadLock storesCacheReadLock; private ReadLock storesCacheReadLock;
private WriteLock storesCacheWriteLock; private WriteLock storesCacheWriteLock;
protected AbstractRoutingContentStore() protected AbstractRoutingContentStore()
{ {
ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
storesCacheReadLock = lock.readLock(); storesCacheReadLock = lock.readLock();
storesCacheWriteLock = lock.writeLock(); storesCacheWriteLock = lock.writeLock();
} }
/** /**
* @param storesCache cache of stores used to access URLs * @param storesCache
*/ * cache of stores used to access URLs
public void setStoresCache(SimpleCache<Pair<String, String>, ContentStore> storesCache) */
{ public void setStoresCache(SimpleCache<Pair<String, String>, ContentStore> storesCache)
this.storesByContentUrl = storesCache; {
} this.storesByContentUrl = storesCache;
}
/**
* @return Returns a list of all possible stores available for reading or writing /**
*/ * @return Returns a list of all possible stores available for reading or writing
protected abstract List<ContentStore> getAllStores(); */
protected abstract List<ContentStore> getAllStores();
/**
* Get a content store based on the context provided. The applicability of the /**
* context and even the types of context allowed are up to the implementation, but * Get a content store based on the context provided. The applicability of the context and even the types of context allowed are up to the implementation, but normally there should be a fallback case for when the parameters are not adequate to make a decision.
* normally there should be a fallback case for when the parameters are not adequate *
* to make a decision. * @param ctx
* * the context to use to make the choice
* @param ctx the context to use to make the choice * @return Returns the store most appropriate for the given context and <b>never <tt>null</tt></b>
* @return Returns the store most appropriate for the given context and */
* <b>never <tt>null</tt></b> protected abstract ContentStore selectWriteStore(ContentContext ctx);
*/
protected abstract ContentStore selectWriteStore(ContentContext ctx); /**
* Checks the cache for the store and ensures that the URL is in the store.
/** *
* Checks the cache for the store and ensures that the URL is in the store. * @param contentUrl
* * the content URL to search for
* @param contentUrl the content URL to search for * @return Returns the store matching the content URL
* @return Returns the store matching the content URL */
*/ private ContentStore selectReadStore(String contentUrl)
private ContentStore selectReadStore(String contentUrl) {
{ Pair<String, String> cacheKey = new Pair<String, String>(instanceKey, contentUrl);
Pair<String, String> cacheKey = new Pair<String, String>(instanceKey, contentUrl); storesCacheReadLock.lock();
storesCacheReadLock.lock(); try
try {
{ // Check if the store is in the cache
// Check if the store is in the cache ContentStore store = storesByContentUrl.get(cacheKey);
ContentStore store = storesByContentUrl.get(cacheKey); if (store != null)
if (store != null) {
{ // We found a store that was previously used
// We found a store that was previously used try
try {
{ // It is possible for content to be removed from a store and
// It is possible for content to be removed from a store and // it might have moved into another store.
// it might have moved into another store. if (store.exists(contentUrl))
if (store.exists(contentUrl)) {
{ // We found a store and can use it
// We found a store and can use it return store;
return store; }
} }
} catch (UnsupportedContentUrlException e)
catch (UnsupportedContentUrlException e) {
{ // This is odd. The store that previously supported the content URL
// This is odd. The store that previously supported the content URL // no longer does so. I can't think of a reason why that would be.
// no longer does so. I can't think of a reason why that would be. throw new AlfrescoRuntimeException(
throw new AlfrescoRuntimeException( "Found a content store that previously supported a URL, but no longer does: \n" +
"Found a content store that previously supported a URL, but no longer does: \n" + " Store: " + store + "\n" +
" Store: " + store + "\n" + " Content URL: " + contentUrl);
" Content URL: " + contentUrl); }
} }
} }
} finally
finally {
{ storesCacheReadLock.unlock();
storesCacheReadLock.unlock(); }
} // Get the write lock and double check
// Get the write lock and double check storesCacheWriteLock.lock();
storesCacheWriteLock.lock(); try
try {
{ // Double check
// Double check ContentStore store = storesByContentUrl.get(cacheKey);
ContentStore store = storesByContentUrl.get(cacheKey); if (store != null && store.exists(contentUrl))
if (store != null && store.exists(contentUrl)) {
{ // We found a store and can use it
// We found a store and can use it if (logger.isDebugEnabled())
if (logger.isDebugEnabled()) {
{ logger.debug(
logger.debug( "Found mapped store for content URL: \n" +
"Found mapped store for content URL: \n" + " Content URL: " + contentUrl + "\n" +
" Content URL: " + contentUrl + "\n" + " Store: " + store);
" Store: " + store); }
} return store;
return store; }
} else
else {
{ store = null;
store = null; }
} // It isn't, so search all the stores
// It isn't, so search all the stores List<ContentStore> stores = getAllStores();
List<ContentStore> stores = getAllStores(); // Keep track of the unsupported state of the content URL - it might be a rubbish URL
// Keep track of the unsupported state of the content URL - it might be a rubbish URL boolean contentUrlSupported = false;
boolean contentUrlSupported = false; for (ContentStore storeInList : stores)
for (ContentStore storeInList : stores) {
{ boolean exists = false;
boolean exists = false; try
try {
{ exists = storeInList.exists(contentUrl);
exists = storeInList.exists(contentUrl); // At least the content URL was supported
// At least the content URL was supported contentUrlSupported = true;
contentUrlSupported = true; }
} catch (UnsupportedContentUrlException e)
catch (UnsupportedContentUrlException e) {
{ // The store can't handle the content URL
// The store can't handle the content URL }
} if (!exists)
if (!exists) {
{ // It is not in the store
// It is not in the store continue;
continue; }
} // We found one
// We found one store = storeInList;
store = storeInList; // Put the value in the cache
// Put the value in the cache storesByContentUrl.put(cacheKey, store);
storesByContentUrl.put(cacheKey, store); break;
break; }
} // Check if the content URL was supported
// Check if the content URL was supported if (!contentUrlSupported)
if (!contentUrlSupported) {
{ throw new UnsupportedContentUrlException(this, contentUrl);
throw new UnsupportedContentUrlException(this, contentUrl); }
} // Done
// Done if (logger.isDebugEnabled())
if (logger.isDebugEnabled()) {
{ logger.debug(
logger.debug( "Mapped content URL to store for reading: \n" +
"Mapped content URL to store for reading: \n" + " Content URL: " + contentUrl + "\n" +
" Content URL: " + contentUrl + "\n" + " Store: " + store);
" Store: " + store); }
} return store;
return store; }
} finally
finally {
{ storesCacheWriteLock.unlock();
storesCacheWriteLock.unlock(); }
} }
}
/**
/** * @return Returns <tt>true</tt> if the URL is supported by any of the stores.
* @return Returns <tt>true</tt> if the URL is supported by any of the stores. */
*/ public boolean isContentUrlSupported(String contentUrl)
public boolean isContentUrlSupported(String contentUrl) {
{ List<ContentStore> stores = getAllStores();
List<ContentStore> stores = getAllStores(); boolean supported = false;
boolean supported = false; for (ContentStore store : stores)
for (ContentStore store : stores) {
{ if (store.isContentUrlSupported(contentUrl))
if (store.isContentUrlSupported(contentUrl)) {
{ supported = true;
supported = true; break;
break; }
} }
} // Done
// Done if (logger.isDebugEnabled())
if (logger.isDebugEnabled()) {
{ logger.debug("The url " + (supported ? "is" : "is not") + " supported by at least one store.");
logger.debug("The url " + (supported ? "is" : "is not") + " supported by at least one store."); }
} return supported;
return supported; }
}
/**
/** * @return Returns <tt>true</tt> if write is supported by any of the stores.
* @return Returns <tt>true</tt> if write is supported by any of the stores. */
*/ public boolean isWriteSupported()
public boolean isWriteSupported() {
{ List<ContentStore> stores = getAllStores();
List<ContentStore> stores = getAllStores(); boolean supported = false;
boolean supported = false; for (ContentStore store : stores)
for (ContentStore store : stores) {
{ if (store.isWriteSupported())
if (store.isWriteSupported()) {
{ supported = true;
supported = true; break;
break; }
} }
} // Done
// Done if (logger.isDebugEnabled())
if (logger.isDebugEnabled()) {
{ logger.debug("Writing " + (supported ? "is" : "is not") + " supported by at least one store.");
logger.debug("Writing " + (supported ? "is" : "is not") + " supported by at least one store."); }
} return supported;
return supported; }
}
/**
/** * @return Returns <b>.</b> always
* @return Returns <b>.</b> always */
*/ public String getRootLocation()
public String getRootLocation() {
{ return ".";
return "."; }
}
/**
/** * @return Returns <tt>-1</tt> always
* @return Returns <tt>-1</tt> always */
*/ @Override
@Override public long getSpaceFree()
public long getSpaceFree() {
{ return -1L;
return -1L; }
}
/**
/** * @return Returns <tt>-1</tt> always
* @return Returns <tt>-1</tt> always */
*/ @Override
@Override public long getSpaceTotal()
public long getSpaceTotal() {
{ return -1L;
return -1L; }
}
/**
/** * @see #selectReadStore(String)
* @see #selectReadStore(String) */
*/ public boolean exists(String contentUrl) throws ContentIOException
public boolean exists(String contentUrl) throws ContentIOException {
{ ContentStore store = selectReadStore(contentUrl);
ContentStore store = selectReadStore(contentUrl); return (store != null);
return (store != null); }
}
/**
/** * @return Returns a valid reader from one of the stores otherwise a {@link EmptyContentReader} is returned.
* @return Returns a valid reader from one of the stores otherwise */
* a {@link EmptyContentReader} is returned. public ContentReader getReader(String contentUrl) throws ContentIOException
*/ {
public ContentReader getReader(String contentUrl) throws ContentIOException ContentStore store = selectReadStore(contentUrl);
{ if (store != null)
ContentStore store = selectReadStore(contentUrl); {
if (store != null) if (logger.isDebugEnabled())
{ {
if (logger.isDebugEnabled()) logger.debug("Getting reader from store: \n" +
{ " Content URL: " + contentUrl + "\n" +
logger.debug("Getting reader from store: \n" + " Store: " + store);
" Content URL: " + contentUrl + "\n" + }
" Store: " + store); return store.getReader(contentUrl);
} }
return store.getReader(contentUrl); else
} {
else if (logger.isDebugEnabled())
{ {
if (logger.isDebugEnabled()) logger.debug("Getting empty reader for content URL: " + contentUrl);
{ }
logger.debug("Getting empty reader for content URL: " + contentUrl); return new EmptyContentReader(contentUrl);
} }
return new EmptyContentReader(contentUrl); }
}
} /**
* Selects a store for the given context and caches store that was used.
/** *
* Selects a store for the given context and caches store that was used. * @see #selectWriteStore(ContentContext)
* */
* @see #selectWriteStore(ContentContext) public ContentWriter getWriter(ContentContext context) throws ContentIOException
*/ {
public ContentWriter getWriter(ContentContext context) throws ContentIOException String contentUrl = context.getContentUrl();
{ Pair<String, String> cacheKey = new Pair<String, String>(instanceKey, contentUrl);
String contentUrl = context.getContentUrl(); if (contentUrl != null)
Pair<String, String> cacheKey = new Pair<String, String>(instanceKey, contentUrl); {
if (contentUrl != null) // Check to see if it is in the cache
{ storesCacheReadLock.lock();
// Check to see if it is in the cache try
storesCacheReadLock.lock(); {
try // Check if the store is in the cache
{ ContentStore store = storesByContentUrl.get(cacheKey);
// Check if the store is in the cache if (store != null)
ContentStore store = storesByContentUrl.get(cacheKey); {
if (store != null) throw new ContentExistsException(this, contentUrl);
{ }
throw new ContentExistsException(this, contentUrl); /* We could go further and check each store for the existence of the URL, but that would be overkill. The main problem we need to prevent is the simultaneous access of the same store. The router represents a single store and therefore if the URL is present in any of the stores, it is effectively present in all of them. */
} }
/* finally
* We could go further and check each store for the existence of the URL, {
* but that would be overkill. The main problem we need to prevent is storesCacheReadLock.unlock();
* the simultaneous access of the same store. The router represents }
* a single store and therefore if the URL is present in any of the stores, }
* it is effectively present in all of them. // Select the store for writing
*/ ContentStore store = selectWriteStore(context);
} // Check that we were given a valid store
finally if (store == null)
{ {
storesCacheReadLock.unlock(); throw new NullPointerException(
} "Unable to find a writer. 'selectWriteStore' may not return null: \n" +
} " Router: " + this + "\n" +
// Select the store for writing " Chose: " + store);
ContentStore store = selectWriteStore(context); }
// Check that we were given a valid store else if (!store.isWriteSupported())
if (store == null) {
{ throw new AlfrescoRuntimeException(
throw new NullPointerException( "A write store was chosen that doesn't support writes: \n" +
"Unable to find a writer. 'selectWriteStore' may not return null: \n" + " Router: " + this + "\n" +
" Router: " + this + "\n" + " Chose: " + store);
" Chose: " + store); }
} ContentWriter writer = store.getWriter(context);
else if (!store.isWriteSupported()) String newContentUrl = writer.getContentUrl();
{ Pair<String, String> newCacheKey = new Pair<String, String>(instanceKey, newContentUrl);
throw new AlfrescoRuntimeException( // Cache the store against the URL
"A write store was chosen that doesn't support writes: \n" + storesCacheWriteLock.lock();
" Router: " + this + "\n" + try
" Chose: " + store); {
} storesByContentUrl.put(newCacheKey, store);
ContentWriter writer = store.getWriter(context); }
String newContentUrl = writer.getContentUrl(); finally
Pair<String, String> newCacheKey = new Pair<String, String>(instanceKey, newContentUrl); {
// Cache the store against the URL storesCacheWriteLock.unlock();
storesCacheWriteLock.lock(); }
try // Done
{ if (logger.isDebugEnabled())
storesByContentUrl.put(newCacheKey, store); {
} logger.debug(
finally "Got writer and cache URL from store: \n" +
{ " Context: " + context + "\n" +
storesCacheWriteLock.unlock(); " Writer: " + writer + "\n" +
} " Store: " + store);
// Done }
if (logger.isDebugEnabled()) return writer;
{ }
logger.debug(
"Got writer and cache URL from store: \n" + public ContentWriter getWriter(ContentReader existingContentReader, String newContentUrl) throws ContentIOException
" Context: " + context + "\n" + {
" Writer: " + writer + "\n" + return getWriter(new ContentContext(existingContentReader, newContentUrl));
" Store: " + store); }
}
return writer; /**
} * This operation has to be performed on all the stores in order to maintain the {@link ContentStore#exists(String)} contract.
*/
public ContentWriter getWriter(ContentReader existingContentReader, String newContentUrl) throws ContentIOException public boolean delete(String contentUrl) throws ContentIOException
{ {
return getWriter(new ContentContext(existingContentReader, newContentUrl)); boolean deleted = true;
} List<ContentStore> stores = getAllStores();
for (ContentStore store : stores)
/** {
* This operation has to be performed on all the stores in order to maintain the if (store.isWriteSupported())
* {@link ContentStore#exists(String)} contract. {
*/ deleted &= store.delete(contentUrl);
public boolean delete(String contentUrl) throws ContentIOException }
{ }
boolean deleted = true; // Done
List<ContentStore> stores = getAllStores(); if (logger.isDebugEnabled())
for (ContentStore store : stores) {
{ logger.debug("Deleted content URL from stores: \n" +
if (store.isWriteSupported()) " Stores: " + stores.size() + "\n" +
{ " Deleted: " + deleted);
deleted &= store.delete(contentUrl); }
} return deleted;
} }
// Done
if (logger.isDebugEnabled()) /**
{ * {@inheritDoc}
logger.debug("Deleted content URL from stores: \n" + */
" Stores: " + stores.size() + "\n" + @Override
" Deleted: " + deleted); public Map<String, String> getStorageProperties(String contentUrl)
} {
return deleted; ContentStore contentStore = selectReadStore(contentUrl);
}
if (contentStore == null)
/** {
* {@inheritDoc} logNoContentStore(contentUrl);
*/ return Collections.emptyMap();
@Override }
public Map<String, String> getStorageProperties(String contentUrl) final String message = "Getting storage properties from store: ";
{ logExecution(contentUrl, contentStore, message);
ContentStore contentStore = selectReadStore(contentUrl);
return contentStore.getStorageProperties(contentUrl);
if (contentStore == null) }
{
logNoContentStore(contentUrl); /**
return Collections.emptyMap(); * {@inheritDoc}
} */
final String message = "Getting storage properties from store: "; @Override
logExecution(contentUrl, contentStore, message); public boolean requestSendContentToArchive(String contentUrl, Map<String, Serializable> archiveParams)
{
return contentStore.getStorageProperties(contentUrl); final ContentStore contentStore = selectReadStore(contentUrl);
} if (contentStore == null)
{
/** logNoContentStore(contentUrl);
* {@inheritDoc} return ContentStore.super.requestSendContentToArchive(contentUrl, archiveParams);
*/ }
@Override final String message = "Sending content to archive: ";
public boolean requestSendContentToArchive(String contentUrl, Map<String, Serializable> archiveParams) logExecution(contentUrl, contentStore, message);
{ return contentStore.requestSendContentToArchive(contentUrl, archiveParams);
final ContentStore contentStore = selectReadStore(contentUrl); }
if (contentStore == null)
{ /**
logNoContentStore(contentUrl); * {@inheritDoc}
return ContentStore.super.requestSendContentToArchive(contentUrl, archiveParams); */
} @Override
final String message = "Sending content to archive: "; public boolean requestRestoreContentFromArchive(String contentUrl, Map<String, Serializable> restoreParams)
logExecution(contentUrl, contentStore, message); {
return contentStore.requestSendContentToArchive(contentUrl, archiveParams); final ContentStore contentStore = selectReadStore(contentUrl);
} if (contentStore == null)
{
/** logNoContentStore(contentUrl);
* {@inheritDoc} return ContentStore.super.requestRestoreContentFromArchive(contentUrl, restoreParams);
*/ }
@Override final String message = "Restoring content from archive: ";
public boolean requestRestoreContentFromArchive(String contentUrl, Map<String, Serializable> restoreParams) logExecution(contentUrl, contentStore, message);
{ return contentStore.requestRestoreContentFromArchive(contentUrl, restoreParams);
final ContentStore contentStore = selectReadStore(contentUrl); }
if (contentStore == null)
{ private void logExecution(final String contentUrl, final ContentStore contentStore, final String message)
logNoContentStore(contentUrl); {
return ContentStore.super.requestRestoreContentFromArchive(contentUrl, restoreParams); if (logger.isTraceEnabled())
} {
final String message = "Restoring content from archive: "; logger.trace(message + "\n" +
logExecution(contentUrl, contentStore, message); " Content URL: " + contentUrl + "\n" +
return ContentStore.super.requestRestoreContentFromArchive(contentUrl, restoreParams); " Store: " + contentStore);
} }
}
private void logExecution(final String contentUrl, final ContentStore contentStore, final String message)
{ private void logNoContentStore(String contentUrl)
if (logger.isTraceEnabled()) {
{ if (logger.isTraceEnabled())
logger.trace(message + "\n" + {
" Content URL: " + contentUrl + "\n" + logger.trace("Content Store not found for content URL: " + contentUrl);
" Store: " + contentStore); }
} }
} }
private void logNoContentStore(String contentUrl)
{
if (logger.isTraceEnabled())
{
logger.trace("Content Store not found for content URL: " + contentUrl);
}
}
}

View File

@@ -1,329 +1,344 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2024 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%
*/ */
package org.alfresco.repo.download; package org.alfresco.repo.download;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.file.attribute.FileTime; import java.nio.file.attribute.FileTime;
import java.util.Date; import java.util.Date;
import java.util.Deque; import java.util.Deque;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import org.alfresco.model.ContentModel; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.UnicodeExtraFieldPolicy;
import org.alfresco.service.cmr.coci.CheckOutCheckInService; import org.slf4j.Logger;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.slf4j.LoggerFactory;
import org.alfresco.service.cmr.download.DownloadStatus;
import org.alfresco.service.cmr.download.DownloadStatus.Status; import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.coci.CheckOutCheckInService;
import org.alfresco.service.cmr.view.ExporterContext; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.view.ExporterException; import org.alfresco.service.cmr.download.DownloadStatus;
import org.alfresco.service.namespace.QName; import org.alfresco.service.cmr.download.DownloadStatus.Status;
import org.alfresco.util.Pair; import org.alfresco.service.cmr.repository.ContentData;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.alfresco.service.cmr.repository.NodeService;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.UnicodeExtraFieldPolicy; import org.alfresco.service.cmr.view.ExporterContext;
import org.slf4j.Logger; import org.alfresco.service.cmr.view.ExporterException;
import org.slf4j.LoggerFactory; import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
/** /**
* Handler for exporting node content to a ZIP file * Handler for exporting node content to a ZIP file
* *
* @author Alex Miller * @author Alex Miller
*/ */
public class ZipDownloadExporter extends BaseExporter public class ZipDownloadExporter extends BaseExporter
{ {
private static Logger log = LoggerFactory.getLogger(ZipDownloadExporter.class); private static Logger log = LoggerFactory.getLogger(ZipDownloadExporter.class);
private static final String PATH_SEPARATOR = "/"; private static final String PATH_SEPARATOR = "/";
protected ZipArchiveOutputStream zipStream; protected ZipArchiveOutputStream zipStream;
private NodeRef downloadNodeRef; private NodeRef downloadNodeRef;
private int sequenceNumber = 1; private int sequenceNumber = 1;
private long total; private long total;
private long done; private long done;
private long totalFileCount; private long totalFileCount;
private long filesAddedCount; private long filesAddedCount;
private RetryingTransactionHelper transactionHelper; private RetryingTransactionHelper transactionHelper;
private DownloadStorage downloadStorage; private DownloadStorage downloadStorage;
private DictionaryService dictionaryService; private DictionaryService dictionaryService;
private DownloadStatusUpdateService updateService; private DownloadStatusUpdateService updateService;
private Deque<Pair<String, NodeRef>> path = new LinkedList<Pair<String, NodeRef>>(); private Deque<Pair<String, NodeRef>> path = new LinkedList<Pair<String, NodeRef>>();
private String currentName; private String currentName;
private OutputStream outputStream; private OutputStream outputStream;
private Date zipTimestampCreated; private Date zipTimestampCreated;
private Date zipTimestampModified; private Date zipTimestampModified;
/** /**
* Construct * Construct
* *
* @param zipFile File * @param zipFile
* @param checkOutCheckInService CheckOutCheckInService * File
* @param nodeService NodeService * @param checkOutCheckInService
* @param transactionHelper RetryingTransactionHelper * CheckOutCheckInService
* @param updateService DownloadStatusUpdateService * @param nodeService
* @param downloadStorage DownloadStorage * NodeService
* @param dictionaryService DictionaryService * @param transactionHelper
* @param downloadNodeRef NodeRef * RetryingTransactionHelper
* @param total long * @param updateService
* @param totalFileCount long * DownloadStatusUpdateService
*/ * @param downloadStorage
public ZipDownloadExporter(File zipFile, CheckOutCheckInService checkOutCheckInService, NodeService nodeService, RetryingTransactionHelper transactionHelper, DownloadStatusUpdateService updateService, DownloadStorage downloadStorage, DictionaryService dictionaryService, NodeRef downloadNodeRef, long total, long totalFileCount) * DownloadStorage
{ * @param dictionaryService
super(checkOutCheckInService, nodeService); * DictionaryService
try * @param downloadNodeRef
{ * NodeRef
this.outputStream = new FileOutputStream(zipFile); * @param total
this.updateService = updateService; * long
this.transactionHelper = transactionHelper; * @param totalFileCount
this.downloadStorage = downloadStorage; * long
this.dictionaryService = dictionaryService; */
public ZipDownloadExporter(File zipFile, CheckOutCheckInService checkOutCheckInService, NodeService nodeService,
this.downloadNodeRef = downloadNodeRef; RetryingTransactionHelper transactionHelper, DownloadStatusUpdateService updateService,
this.total = total; DownloadStorage downloadStorage, DictionaryService dictionaryService,
this.totalFileCount = totalFileCount; NodeRef downloadNodeRef, long total, long totalFileCount)
} {
catch (FileNotFoundException e) super(checkOutCheckInService, nodeService);
{ try
throw new ExporterException("Failed to create zip file", e); {
} this.outputStream = new FileOutputStream(zipFile);
} this.updateService = updateService;
this.transactionHelper = transactionHelper;
@Override this.downloadStorage = downloadStorage;
public void start(final ExporterContext context) this.dictionaryService = dictionaryService;
{
zipStream = new ZipArchiveOutputStream(outputStream); this.downloadNodeRef = downloadNodeRef;
// NOTE: This encoding allows us to workaround bug... this.total = total;
// http://bugs.sun.com/bugdatabase/view_bug.do;:WuuT?bug_id=4820807 this.totalFileCount = totalFileCount;
zipStream.setEncoding("UTF-8"); }
zipStream.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS); catch (FileNotFoundException e)
zipStream.setUseLanguageEncodingFlag(true); {
zipStream.setFallbackToUTF8(true); throw new ExporterException("Failed to create zip file", e);
} }
}
@Override
public void startNode(NodeRef nodeRef) @Override
{ public void start(final ExporterContext context)
this.currentName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); {
this.zipTimestampCreated = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATED); zipStream = new ZipArchiveOutputStream(outputStream);
this.zipTimestampModified = (Date)nodeService.getProperty(nodeRef, ContentModel.PROP_MODIFIED); // NOTE: This encoding allows us to workaround bug...
path.push(new Pair<String, NodeRef>(currentName, nodeRef)); // http://bugs.sun.com/bugdatabase/view_bug.do;:WuuT?bug_id=4820807
if (dictionaryService.isSubClass(nodeService.getType(nodeRef), ContentModel.TYPE_FOLDER)) zipStream.setEncoding("UTF-8");
{ zipStream.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);
String path = getPath() + PATH_SEPARATOR; zipStream.setUseLanguageEncodingFlag(true);
ZipArchiveEntry archiveEntry = new ZipArchiveEntry(path); zipStream.setFallbackToUTF8(true);
try }
{
archiveEntry.setTime(zipTimestampCreated.getTime()); @Override
archiveEntry.setCreationTime(FileTime.fromMillis(zipTimestampCreated.getTime())); public void startNode(NodeRef nodeRef)
archiveEntry.setLastModifiedTime(FileTime.fromMillis(zipTimestampModified.getTime())); {
zipStream.putArchiveEntry(archiveEntry); this.currentName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
zipStream.closeArchiveEntry(); this.zipTimestampCreated = (Date) nodeService.getProperty(nodeRef, ContentModel.PROP_CREATED);
} this.zipTimestampModified = (Date) nodeService.getProperty(nodeRef, ContentModel.PROP_MODIFIED);
catch (IOException e) path.push(new Pair<String, NodeRef>(currentName, nodeRef));
{ if (dictionaryService.isSubClass(nodeService.getType(nodeRef), ContentModel.TYPE_FOLDER))
throw new ExporterException("Unexpected IOException adding folder entry", e); {
} String path = getPath() + PATH_SEPARATOR;
} ZipArchiveEntry archiveEntry = new ZipArchiveEntry(path);
} try
{
@Override archiveEntry.setTime(zipTimestampCreated.getTime());
public void contentImpl(NodeRef nodeRef, QName property, InputStream content, ContentData contentData, int index) archiveEntry.setCreationTime(FileTime.fromMillis(zipTimestampCreated.getTime()));
{ archiveEntry.setLastModifiedTime(FileTime.fromMillis(zipTimestampModified.getTime()));
// if the content stream to output is empty, then just return content descriptor as is zipStream.putArchiveEntry(archiveEntry);
if (content == null) zipStream.closeArchiveEntry();
{ }
return; catch (IOException e)
} {
throw new ExporterException("Unexpected IOException adding folder entry", e);
try }
{ }
if (log.isDebugEnabled()) }
{
log.debug("Archiving content for nodeRef: "+nodeRef+" with contentURL: "+contentData.getContentUrl()); @Override
} public void contentImpl(NodeRef nodeRef, QName property, InputStream content, ContentData contentData, int index)
// ALF-2016 {
ZipArchiveEntry zipEntry=new ZipArchiveEntry(getPath()); // if the content stream to output is empty, then just return content descriptor as is
zipEntry.setTime(zipTimestampCreated.getTime()); if (content == null)
zipEntry.setCreationTime(FileTime.fromMillis(zipTimestampCreated.getTime())); {
zipEntry.setLastModifiedTime(FileTime.fromMillis(zipTimestampModified.getTime())); log.info("Archiving content has been removed or modified for the specified NodeReference: " + nodeRef
zipStream.putArchiveEntry(zipEntry); + ", and the size of the content is " + contentData.getSize());
return;
// copy export stream to zip }
copyStream(zipStream, content);
try
zipStream.closeArchiveEntry(); {
filesAddedCount = filesAddedCount + 1; if (log.isDebugEnabled())
} {
catch (IOException e) log.debug("Archiving content for nodeRef: " + nodeRef + " with contentURL: "
{ + contentData.getContentUrl());
throw new ExporterException("Failed to zip export stream", e); }
} // ALF-2016
} ZipArchiveEntry zipEntry = new ZipArchiveEntry(getPath());
zipEntry.setTime(zipTimestampCreated.getTime());
@Override zipEntry.setCreationTime(FileTime.fromMillis(zipTimestampCreated.getTime()));
public void endNode(NodeRef nodeRef) zipEntry.setLastModifiedTime(FileTime.fromMillis(zipTimestampModified.getTime()));
{ zipStream.putArchiveEntry(zipEntry);
path.pop();
} // copy export stream to zip
copyStream(zipStream, content);
@Override
public void end() zipStream.closeArchiveEntry();
{ filesAddedCount = filesAddedCount + 1;
try }
{ catch (IOException e)
zipStream.close(); {
} throw new ExporterException("Failed to zip export stream", e);
catch (IOException error) }
{ }
throw new ExporterException("Unexpected error closing zip stream!", error);
} @Override
} public void endNode(NodeRef nodeRef)
{
private String getPath() path.pop();
{ }
if (path.size() < 1)
{ @Override
throw new IllegalStateException("No elements in path!"); public void end()
} {
try
Iterator<Pair<String, NodeRef>> iter = path.descendingIterator(); {
StringBuilder pathBuilder = new StringBuilder(); zipStream.close();
}
while (iter.hasNext()) catch (IOException error)
{ {
Pair<String, NodeRef> element = iter.next(); throw new ExporterException("Unexpected error closing zip stream!", error);
}
pathBuilder.append(element.getFirst()); }
if (iter.hasNext())
{ private String getPath()
pathBuilder.append(PATH_SEPARATOR); {
} if (path.size() < 1)
} {
throw new IllegalStateException("No elements in path!");
return pathBuilder.toString(); }
}
Iterator<Pair<String, NodeRef>> iter = path.descendingIterator();
/** StringBuilder pathBuilder = new StringBuilder();
* Copy input stream to output stream
* while (iter.hasNext())
* @param output output stream {
* @param in input stream Pair<String, NodeRef> element = iter.next();
* @throws IOException
*/ pathBuilder.append(element.getFirst());
private void copyStream(OutputStream output, InputStream in) if (iter.hasNext())
throws IOException {
{ pathBuilder.append(PATH_SEPARATOR);
byte[] buffer = new byte[2048 * 10]; }
int read = in.read(buffer, 0, 2048 *10); }
int i = 0;
while (read != -1) return pathBuilder.toString();
{ }
output.write(buffer, 0, read);
done = done + read; /**
* Copy input stream to output stream
// ALF-16289 - only update the status every 10MB *
if (i++%500 == 0) * @param output
{ * output stream
updateStatus(); * @param in
checkCancelled(); * input stream
} * @throws IOException
*/
read = in.read(buffer, 0, 2048 *10); private void copyStream(OutputStream output, InputStream in) throws IOException
} {
} byte[] buffer = new byte[2048 * 10];
int read = in.read(buffer, 0, 2048 * 10);
private void checkCancelled() int i = 0;
{ while (read != -1)
boolean downloadCancelled = transactionHelper.doInTransaction(new RetryingTransactionCallback<Boolean>() {
{ output.write(buffer, 0, read);
@Override done = done + read;
public Boolean execute() throws Throwable
{ // ALF-16289 - only update the status every 10MB
return downloadStorage.isCancelled(downloadNodeRef); if (i++ % 500 == 0)
} {
}, true, true); updateStatus();
checkCancelled();
if ( downloadCancelled == true) }
{
log.debug("Download cancelled"); read = in.read(buffer, 0, 2048 * 10);
throw new DownloadCancelledException(); }
} }
}
private void checkCancelled()
private void updateStatus() {
{ boolean downloadCancelled = transactionHelper.doInTransaction(new RetryingTransactionCallback<Boolean>() {
transactionHelper.doInTransaction(new RetryingTransactionCallback<Object>() @Override
{ public Boolean execute() throws Throwable
@Override {
public Object execute() throws Throwable return downloadStorage.isCancelled(downloadNodeRef);
{ }
DownloadStatus status = new DownloadStatus(Status.IN_PROGRESS, done, total, filesAddedCount, totalFileCount); }, true, true);
updateService.update(downloadNodeRef, status, getNextSequenceNumber()); if (downloadCancelled == true)
return null; {
} log.debug("Download cancelled");
}, false, true); throw new DownloadCancelledException();
} }
}
public int getNextSequenceNumber()
{ private void updateStatus()
return sequenceNumber++; {
} transactionHelper.doInTransaction(new RetryingTransactionCallback<Object>() {
@Override
public long getDone() public Object execute() throws Throwable
{ {
return done; DownloadStatus status = new DownloadStatus(Status.IN_PROGRESS, done, total, filesAddedCount, totalFileCount);
}
updateService.update(downloadNodeRef, status, getNextSequenceNumber());
public long getTotal() return null;
{ }
return total; }, false, true);
} }
public long getFilesAdded() public int getNextSequenceNumber()
{ {
return filesAddedCount; return sequenceNumber++;
} }
public long getTotalFiles() public long getDone()
{ {
return totalFileCount; return done;
} }
}
public long getTotal()
{
return total;
}
public long getFilesAdded()
{
return filesAddedCount;
}
public long getTotalFiles()
{
return totalFileCount;
}
}

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2024 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
@@ -25,14 +25,15 @@
*/ */
package org.alfresco.repo.site; package org.alfresco.repo.site;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import org.alfresco.api.AlfrescoPublicApi; import org.alfresco.api.AlfrescoPublicApi;
import org.alfresco.query.CannedQuerySortDetails; import org.alfresco.query.CannedQuerySortDetails;
import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
import java.util.Comparator;
import java.util.List;
/** /**
* Conveys information for a member of a site. * Conveys information for a member of a site.
* *
@@ -52,7 +53,7 @@ public class SiteMembership extends AbstractSiteMembership
public SiteMembership(SiteInfo siteInfo, String id, String firstName, String lastName, public SiteMembership(SiteInfo siteInfo, String id, String firstName, String lastName,
String role) String role)
{ {
super(siteInfo,id, role); super(siteInfo, id, role);
if (firstName == null) if (firstName == null)
{ {
throw new java.lang.IllegalArgumentException( throw new java.lang.IllegalArgumentException(
@@ -76,13 +77,8 @@ public class SiteMembership extends AbstractSiteMembership
throw new java.lang.IllegalArgumentException( throw new java.lang.IllegalArgumentException(
"FirstName required building site membership of " + siteInfo.getShortName()); "FirstName required building site membership of " + siteInfo.getShortName());
} }
if (lastName == null)
{
throw new java.lang.IllegalArgumentException(
"LastName required building site membership of " + siteInfo.getShortName());
}
this.firstName = firstName; this.firstName = firstName;
this.lastName = lastName; this.lastName = Optional.ofNullable(lastName).orElse("");
this.isMemberOfGroup = isMemberOfGroup; this.isMemberOfGroup = isMemberOfGroup;
} }
@@ -164,7 +160,6 @@ public class SiteMembership extends AbstractSiteMembership
", isMemberOfGroup = " + isMemberOfGroup + "]"; ", isMemberOfGroup = " + isMemberOfGroup + "]";
} }
static int compareTo(List<Pair<? extends Object, CannedQuerySortDetails.SortOrder>> sortPairs, SiteMembership o1, SiteMembership o2) static int compareTo(List<Pair<? extends Object, CannedQuerySortDetails.SortOrder>> sortPairs, SiteMembership o1, SiteMembership o2)
{ {
String personId1 = o1.getPersonId(); String personId1 = o1.getPersonId();

View File

@@ -3,7 +3,7 @@
repository.name=Main Repository repository.name=Main Repository
# Schema number # Schema number
version.schema=19300 version.schema=20000
# Directory configuration # Directory configuration

View File

@@ -1,136 +1,137 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2024 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%
*/ */
package org.alfresco.repo.site; package org.alfresco.repo.site;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import java.util.UUID; import java.util.UUID;
import org.alfresco.service.cmr.site.SiteInfo; import org.junit.Before;
import org.alfresco.service.cmr.site.SiteVisibility; import org.junit.Test;
import org.junit.Before;
import org.junit.Test; import org.alfresco.service.cmr.site.SiteInfo;
import org.alfresco.service.cmr.site.SiteVisibility;
/**
* Test Membership constructor logs. Based on REPO-2520 /**
* * Test Membership constructor logs. Based on REPO-2520
* @author Alexandru Epure *
*/ * @author Alexandru Epure
public class SiteMembershipTest */
{ public class SiteMembershipTest
SiteInfo siteInfo; {
SiteMembership siteMember; SiteInfo siteInfo;
String personId = UUID.randomUUID().toString(); SiteMembership siteMember;
String firstName = UUID.randomUUID().toString(); String personId = UUID.randomUUID().toString();
String lastName = UUID.randomUUID().toString(); String firstName = UUID.randomUUID().toString();
String role = "Consumer"; String lastName = UUID.randomUUID().toString();
String role = "Consumer";
String idErrorMessage = "Id required building site membership";
String firstNameErrorMessage = "FirstName required building site membership of "; String idErrorMessage = "Id required building site membership";
String lastNameErrorMessage = "LastName required building site membership of "; String firstNameErrorMessage = "FirstName required building site membership of ";
String roleErrorMessage = "Role required building site membership"; String lastNameErrorMessage = "LastName required building site membership of ";
String roleErrorMessage = "Role required building site membership";
@Before
public void createSite() @Before
{ public void createSite()
String sitePreset = "testSiteMembershipPreset"; {
String shortName = "testSiteMembershipShortName"; var sitePreset = "testSiteMembershipPreset";
String title = "testSiteMembershipTile"; var shortName = "testSiteMembershipShortName";
String description = "testSiteMembershipDescription"; var title = "testSiteMembershipTile";
siteInfo = new SiteInfoImpl(sitePreset, shortName, title, description, var description = "testSiteMembershipDescription";
SiteVisibility.PUBLIC, null); siteInfo = new SiteInfoImpl(sitePreset, shortName, title, description,
} SiteVisibility.PUBLIC, null);
}
@Test
public void testNullpersonInfo() throws Exception @Test
{ public void testNullpersonInfo() throws Exception
try {
{ try
siteMember = new SiteMembership(siteInfo, null, firstName, lastName, role); {
} siteMember = new SiteMembership(siteInfo, null, firstName, lastName, role);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(idErrorMessage, e.getMessage()); {
} assertEquals(idErrorMessage, e.getMessage());
}
try
{ try
siteMember = new SiteMembership(siteInfo, null, role); {
} siteMember = new SiteMembership(siteInfo, null, role);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(idErrorMessage, e.getMessage()); {
} assertEquals(idErrorMessage, e.getMessage());
} }
}
@Test
public void testNullRole() throws Exception @Test
{ public void testNullRole() throws Exception
try {
{ try
siteMember = new SiteMembership(siteInfo, personId, firstName, lastName, null); {
} siteMember = new SiteMembership(siteInfo, personId, firstName, lastName, null);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(roleErrorMessage, e.getMessage()); {
} assertEquals(roleErrorMessage, e.getMessage());
}
try
{ try
siteMember = new SiteMembership(siteInfo, personId, null); {
} siteMember = new SiteMembership(siteInfo, personId, null);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(roleErrorMessage, e.getMessage()); {
} assertEquals(roleErrorMessage, e.getMessage());
} }
}
@Test
public void testNullFirstName() throws Exception @Test
{ public void testNullFirstName() throws Exception
try {
{ try
siteMember = new SiteMembership(siteInfo, personId, null, lastName, role); {
} siteMember = new SiteMembership(siteInfo, personId, null, lastName, role);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(firstNameErrorMessage + siteInfo.getShortName(), e.getMessage()); {
} assertEquals(firstNameErrorMessage + siteInfo.getShortName(), e.getMessage());
} }
}
@Test
public void testNullLastName() throws Exception @Test
{ public void testNullLastName() throws Exception
try {
{ try
siteMember = new SiteMembership(siteInfo, personId, firstName, null, role); {
} siteMember = new SiteMembership(siteInfo, personId, firstName, null, role);
catch (IllegalArgumentException e) }
{ catch (IllegalArgumentException e)
assertEquals(lastNameErrorMessage + siteInfo.getShortName(), e.getMessage()); {
} assertEquals(lastNameErrorMessage + siteInfo.getShortName(), e.getMessage());
} }
} }
}