Compare commits

...

342 Commits

Author SHA1 Message Date
Marcello Teodori
6f0466a909 format java code 2021-10-19 18:17:31 +02:00
Marcello Teodori
fa4613d452 Apply autoformat with google 2021-10-19 18:13:04 +02:00
Tom Page
7242a78705 MNT-21985 Handle case where permissions in Solr and DB are out of sync. (#760)
* MNT-21985 Handle case where permissions in Solr and DB are out of sync.

* MNT-21985 Simplify return logic in error case.
2021-10-19 16:40:50 +01:00
Travis CI User
539a89537b [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-19 12:53:46 +00:00
Travis CI User
608c16d4a4 [maven-release-plugin][skip ci] prepare release 14.14 2021-10-19 12:53:43 +00:00
David Edwards
c00736c639 ACS-2064 DAU: Fix response content type always PDF (#754)
* ACS-2064 ContentStore.java to require mimetype

- Updates the ContentStore interface to also require a mimetype, deprecates old method signatures
- Original interface methods maintained so code should be backwards compatible
- Implementing classes updated to reflect changes
2021-10-19 13:10:17 +01:00
Travis CI User
15cb7ff44e [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-14 14:11:10 +00:00
Travis CI User
4776e37223 [maven-release-plugin][skip ci] prepare release 14.13 2021-10-14 14:11:07 +00:00
Lev Belava
cbd45fcb3e MNT-21706 NodeService setAssociations list of elements is now handled. (#746)
MNT-21706 NodeService setAssociations list of elements is now handled.
2021-10-14 15:27:41 +02:00
Travis CI User
655cadbda0 [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-12 17:01:08 +00:00
Travis CI User
6d7e3bb787 [maven-release-plugin][skip ci] prepare release 14.12 2021-10-12 17:01:05 +00:00
Nithin Nambiar
bb8d10074e ACS-1112 Upgrade the BatchProcessor counting mechanism to work with "long" Java type (#706)
* ACS-1112 update to long data type
2021-10-12 17:04:31 +01:00
alandavis
806880a86b Include the latest MariaDB and MySQL tests in PRs.
[skip ci]
2021-10-11 12:21:42 +01:00
Nithin Nambiar
e68f56270a ACS-849_incorrect_probes added db check (#692)
* ACS-849_incorrect_probes added db check
2021-10-11 12:08:43 +01:00
Travis CI User
8705d97407 [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-08 15:44:38 +00:00
Travis CI User
44e3242132 [maven-release-plugin][skip ci] prepare release 14.11 2021-10-08 15:44:36 +00:00
alandavis
8a3cdd55a7 Revert "Bump mysql-connector-java from 8.0.25 to 8.0.26 (#741)"
As tests on MySQL 5.7.23 failed - not in the PR build

This reverts commit 3b41308ecc.
2021-10-08 15:37:35 +01:00
alandavis
cff2a70b17 Use a common property for json-path as it is used in community and enterprise repo and packaging 2021-10-08 15:24:36 +01:00
dependabot[bot]
3b41308ecc Bump mysql-connector-java from 8.0.25 to 8.0.26 (#741) 2021-10-08 13:40:53 +00:00
dependabot[bot]
8a60e26ff0 Bump lombok from 1.18.20 to 1.18.22 (#742) 2021-10-08 13:38:37 +00:00
Ryan Wilson
accfc4662d Community contribution: fix spelling within permissionDefinition.xml (#469)
There were a number of locations within comments that contained incorrect spelling. [skip ci]
2021-10-08 14:30:43 +01:00
Travis CI User
1e0fcfcc14 [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-08 11:06:13 +00:00
Travis CI User
837a706514 [maven-release-plugin][skip ci] prepare release 14.10 2021-10-08 11:06:10 +00:00
dependabot[bot]
db290c98f2 Bump cmis from 1.30 to 1.31 (#711) 2021-10-08 09:58:24 +00:00
dependabot[bot]
12682ddcff Bump dependency.spring.version from 5.3.9 to 5.3.10 (#715) 2021-10-08 09:39:26 +00:00
dependabot[bot]
0ed2e9b3a7 Bump joda-time from 2.10.10 to 2.10.12 (#716) 2021-10-08 09:37:42 +00:00
dependabot[bot]
3442e91575 Bump maven-war-plugin from 3.2.2 to 3.3.2 (#719) 2021-10-08 09:34:46 +00:00
Travis CI User
59b636e0ba [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-07 18:15:14 +00:00
Travis CI User
0333fe05b5 [maven-release-plugin][skip ci] prepare release 14.9 2021-10-07 18:15:11 +00:00
alandavis
9b592bfc13 Revert "Bump mysql-connector-java from 8.0.25 to 8.0.26 (#609)"
As DbNodeServiceImplTest>BaseNodeServiceTest.testLargeStrings:1061 » AlfrescoRuntime now fails

This reverts commit 386696d58b.
2021-10-07 18:26:05 +01:00
dependabot-preview[bot]
386696d58b Bump mysql-connector-java from 8.0.25 to 8.0.26 (#609)
Bumps [mysql-connector-java](https://github.com/mysql/mysql-connector-j) from 8.0.25 to 8.0.26.
- [Release notes](https://github.com/mysql/mysql-connector-j/releases)
- [Changelog](https://github.com/mysql/mysql-connector-j/blob/release/8.0/CHANGES)
- [Commits](https://github.com/mysql/mysql-connector-j/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Alan Davis <alan.davis@alfresco.com>
2021-10-07 15:23:38 +01:00
dependabot[bot]
1f243d629e Bump xmlsec from 1.5.8 to 2.2.3 (#732) 2021-10-07 14:16:40 +00:00
dependabot[bot]
dee7625998 Bump postgresql from 42.2.20 to 42.2.24 (#734) 2021-10-07 14:15:04 +00:00
dependabot[bot]
1c541281db Bump maven-javadoc-plugin from 3.3.0 to 3.3.1 (#733) 2021-10-07 14:11:08 +00:00
dependabot-preview[bot]
c991290c01 Bump dependency.slf4j.version from 1.7.30 to 1.7.32 (#611) 2021-10-07 14:01:24 +00:00
Travis CI User
9b62808ed7 [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-07 13:00:53 +00:00
Travis CI User
d4e8bba9f5 [maven-release-plugin][skip ci] prepare release 14.8 2021-10-07 13:00:50 +00:00
dependabot[bot]
5ae240c392 Bump docker-java from 3.2.11 to 3.2.12 (#735) 2021-10-07 11:31:07 +00:00
dependabot[bot]
a5b35b7d96 Bump spring-security-core from 5.5.1 to 5.5.2 (#737) 2021-10-07 11:30:32 +00:00
dependabot[bot]
d2544b7a4d Bump docker-maven-plugin from 0.34.1 to 0.37.0 (#724) 2021-10-07 11:14:27 +00:00
dependabot[bot]
b9abc05eda Bump maven-artifact from 3.8.1 to 3.8.3 (#727) 2021-10-07 11:11:15 +00:00
dependabot[bot]
04e3743f01 Bump jsoup from 1.14.2 to 1.14.3 (#730) 2021-10-07 11:08:54 +00:00
Travis CI User
745295c4ba [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-07 10:30:48 +00:00
Travis CI User
c9b08594de [maven-release-plugin][skip ci] prepare release 14.7 2021-10-07 10:30:45 +00:00
dependabot[bot]
1d8044076c Bump dependency.webscripts.version from 8.23 to 8.24 (#710) 2021-10-07 09:10:15 +00:00
dependabot[bot]
377b082ef8 Bump mariadb-java-client from 2.7.2 to 2.7.4 (#709) 2021-10-07 09:07:17 +00:00
dependabot[bot]
ad2525bf17 Bump dependency.cxf.version from 3.4.4 to 3.4.5 (#708) 2021-10-07 09:04:57 +00:00
dependabot[bot]
888b26ef72 Bump groovy from 2.5.9 to 3.0.9 (#713)
Bumps [groovy](https://github.com/apache/groovy) from 2.5.9 to 3.0.9.
- [Release notes](https://github.com/apache/groovy/releases)
- [Commits](https://github.com/apache/groovy/commits)

---
updated-dependencies:
- dependency-name: org.codehaus.groovy:groovy
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-07 09:51:16 +01:00
alandavis
aa4a5a6063 Try to give dependabot access to Nexus 2021-10-05 11:12:24 +01:00
dependabot-preview[bot]
7ea91ea702 Upgrade to GitHub-native Dependabot (#424)
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-10-05 09:31:58 +02:00
Travis CI User
b3e8051f08 [maven-release-plugin][skip ci] prepare for next development iteration 2021-10-01 14:32:21 +00:00
Travis CI User
4ba0d3a899 [maven-release-plugin][skip ci] prepare release 14.6 2021-10-01 14:32:18 +00:00
kcichonczyk
8d78b257aa [PRODSEC-4829] Bumped versions of libraries to prevent security vulnerabilities: (#703)
* 'keycloak' version to 15.0.2
2021-10-01 14:38:58 +02:00
Travis CI User
df67011596 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-29 20:23:22 +00:00
Travis CI User
871bd40d6d [maven-release-plugin][skip ci] prepare release 14.5 2021-09-29 20:23:19 +00:00
montgolfiere
2ef97e0b23 ACS-2067: Fix probes for when DAU enabled (#700) 2021-09-29 19:32:10 +01:00
Vítor Moreira
f1d48f7aab MNT-22428: configurable unsecure jsonp callback CMIS operation (#698) (#704)
* MNT-22428: configurable unsecure jsonp callback CMIS operation

(cherry picked from commit 5807e756bd)
2021-09-29 17:44:06 +01:00
Travis CI User
b5f24f5d58 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-29 12:17:15 +00:00
Travis CI User
14668044f4 [maven-release-plugin][skip ci] prepare release 14.4 2021-09-29 12:17:12 +00:00
evasques
c5281d7f10 MNT-22600 Nodes with security marks appear unfiltered on CMIS DB queries (#702)
* Change isUnfiltered to protected so we can extend it in enterprise
* Added test method to be able to do a cmis query test

Original commit in governance-services: e4e3235328
2021-09-29 12:07:06 +01:00
Travis CI User
00565f3bc9 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-29 10:03:49 +00:00
Travis CI User
f15c4d7a8f [maven-release-plugin][skip ci] prepare release 14.3 2021-09-29 10:03:47 +00:00
Piotr Żurek
85a3c71849 MNT-22611 - Fix bulk import parameters parsing (#699) 2021-09-29 10:50:54 +02:00
Travis CI User
4db8ca16e1 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-29 04:44:40 +00:00
Travis CI User
52e71719d1 [maven-release-plugin][skip ci] prepare release 14.2 2021-09-29 04:44:37 +00:00
alandavis
507161a1d0 Get master ready for 7.2.0 development 2021-09-28 22:56:03 +01:00
Travis CI User
559171a32c [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-27 13:36:15 +00:00
Travis CI User
b9f449df57 [maven-release-plugin][skip ci] prepare release 11.140 2021-09-27 13:36:12 +00:00
Travis CI User
3185ecf6cb [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-24 12:21:31 +00:00
Travis CI User
bd7f2a4250 [maven-release-plugin][skip ci] prepare release 11.139 2021-09-24 12:21:28 +00:00
Vitor Moreira
79efa12b10 Revert "MNT-22428: configurable unsecure jsonp callback CMIS operation (#698)"
This reverts commit 5807e756bd.
2021-09-24 11:25:05 +01:00
Vítor Moreira
5807e756bd MNT-22428: configurable unsecure jsonp callback CMIS operation (#698)
* MNT-22428: configurable unsecure jsonp callback CMIS operation
2021-09-23 15:57:23 +01:00
Travis CI User
6ecb019b84 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-16 12:38:24 +00:00
Travis CI User
c26f933c44 [maven-release-plugin][skip ci] prepare release 11.138 2021-09-16 12:38:20 +00:00
Jamal Kaabi-Mofrad
43e528878e ACS-1989: Fixed PostgreSQL patch. 2021-09-16 12:27:20 +01:00
Suneet Gupta
b120a9658f Revert "Releasing version 11.138"
This reverts commit 923261d9b9.
2021-09-16 16:36:30 +05:30
Suneet Gupta
3875a84f74 Revert "Releasing version 11.138"
This reverts commit 6f8507ebe2.
2021-09-16 16:36:28 +05:30
Suneet Gupta
8dddf293d0 Revert "Releasing version 11.138"
This reverts commit d01e9ffbbc.
2021-09-16 16:36:27 +05:30
Suneet Gupta
d01e9ffbbc Releasing version 11.138 2021-09-16 15:08:32 +05:30
Suneet Gupta
6f8507ebe2 Releasing version 11.138 2021-09-16 12:50:54 +05:30
Suneet Gupta
923261d9b9 Releasing version 11.138 2021-09-16 12:05:32 +05:30
Travis CI User
078e461b71 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-15 14:51:33 +00:00
Travis CI User
ddde92ef21 [maven-release-plugin][skip ci] prepare release 11.137 2021-09-15 14:51:29 +00:00
Miguel Ruiz
189011d528 Bump up api-explorer to 7.1.0.1 (#694) 2021-09-15 13:13:44 +01:00
Travis CI User
af849d2144 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-14 14:27:27 +00:00
Travis CI User
53208f207c [maven-release-plugin][skip ci] prepare release 11.136 2021-09-14 14:27:24 +00:00
alandavis
4cf3f77824 Pick up api-explorer 7.1.0 2021-09-14 14:15:46 +01:00
Travis CI User
9d24e083bb [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-13 07:13:40 +00:00
Travis CI User
6345c0a825 [maven-release-plugin][skip ci] prepare release 11.135 2021-09-13 07:13:37 +00:00
Sara Aspery
cda3d11c7e ACS-1981 fix DAUs status log 2021-09-13 06:51:56 +01:00
Travis CI User
7ad35ac60d [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-10 10:39:58 +00:00
Travis CI User
a164917232 [maven-release-plugin][skip ci] prepare release 11.134 2021-09-10 10:39:55 +00:00
Piotr Żurek
507c6b2ed8 ACS-1970 Switch to the alfresco/alfresco-base-tomcat:9.0.52-java-11-centos-7 base image (#693) 2021-09-10 11:13:53 +02:00
Travis CI User
ab0d65897c [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-07 11:57:08 +00:00
Travis CI User
d92844cebb [maven-release-plugin][skip ci] prepare release 11.133 2021-09-07 11:57:05 +00:00
dependabot-preview[bot]
25986d77d6 Bump commons-io from 2.8.0 to 2.11.0 (#597) 2021-09-07 11:08:17 +00:00
Travis CI User
2b8948b84b [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-02 14:45:02 +00:00
Travis CI User
64bf49cc22 [maven-release-plugin][skip ci] prepare release 11.132 2021-09-02 14:44:59 +00:00
Jamal Kaabi-Mofrad
3ce95c5262 REPO-5664/REPO-5665: System admin webscripts (#690) 2021-09-02 13:59:38 +01:00
Travis CI User
e854a01988 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-02 12:41:48 +00:00
Travis CI User
65ba8b16e0 [maven-release-plugin][skip ci] prepare release 11.131 2021-09-02 12:41:45 +00:00
mikolajbrzezinski
d2bb3a980d Feature/acs 1835 test dau for deleted renditions (#689)
* Deleted Renditions DAU Test Skeleton

* Deleted Renditions DAU Test v1

* Deleted Renditions DAU Test v2

* Deleted Renditions DAU Test v3

* Deleted Renditions DAU Test v3.1

* Comments From Pull Request
2021-09-02 13:50:17 +02:00
Gloria Camino
59b641474f LOC-329 - Fixed, updated UI files in 15 languages as per RM-6941 (#691) 2021-09-02 17:17:01 +05:30
Travis CI User
9ee56762fb [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-02 09:09:36 +00:00
Travis CI User
6cb8e84ee4 [maven-release-plugin][skip ci] prepare release 11.130 2021-09-02 09:09:33 +00:00
alandavis
d540bb319b Pick up latest tas-restapi 1.64 2021-09-02 09:48:07 +01:00
Travis CI User
30a2bff92a [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-01 22:17:42 +00:00
Travis CI User
ac08612183 [maven-release-plugin][skip ci] prepare release 11.129 2021-09-01 22:17:39 +00:00
alandavis
031d1c740c ACS-1924 Pick up api-explorer 7.1.0-A4
Includes changes for other Direct Access URI tickets
2021-09-01 21:58:19 +01:00
Travis CI User
aac73e2064 [maven-release-plugin][skip ci] prepare for next development iteration 2021-09-01 19:00:48 +00:00
Travis CI User
ec72000380 [maven-release-plugin][skip ci] prepare release 11.128 2021-09-01 19:00:45 +00:00
Sara
015e3213af Feature/acs 1924 remove version renditions end point (#688)
* Revert "ACS-1833 - Test requestContentDirectUrl for Versions Renditions REST API endpoint (#675)"

This reverts commit 4aaae012

* ACS-1924 Remove endpoint for version rendition DAUs

* ACS-1924 Correct WebApiParams

To restore the direct access url version renditions code, do not just revert the whole commit. Instead:
* Restore commit 4aaae012 (this is the api test for direct access url version renditions)
* Revert commit 44ecb9d (this is the endpoint for version rendition DAUs)
* Do not revert commit 7157328 (This is a correction the WebApiParams for several direct access url endpoints)
2021-09-01 18:37:35 +01:00
Sara
d97510dfba ACS-1880 handle defaults for missing properties (#687)
* ACS-1880 handle defaults for missing properties

* ACS-1880 handle defaults for missing properties
2021-09-01 14:42:22 +01:00
Travis CI User
df98ad9e92 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-31 14:11:26 +00:00
Travis CI User
19a7239612 [maven-release-plugin][skip ci] prepare release 11.127 2021-08-31 14:11:23 +00:00
mikolajbrzezinski
2af2e7b868 Feature/acs 1834 test dau for deleted nodes (#686)
* Deleted Nodes DAU Test

* Deleted Nodes DAU Test Moved

* DAU Test Modification

* Copyright

* Unused import
2021-08-31 14:07:42 +02:00
Travis CI User
84824edffa [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-27 15:39:29 +00:00
Travis CI User
646419c073 [maven-release-plugin][skip ci] prepare release 11.126 2021-08-27 15:39:27 +00:00
antoniojfelix
ea854b55a4 PRODSEC-5480 - Bump jsoup version from 1.13.1 to 1.14.2 (#684) 2021-08-27 15:48:08 +01:00
Travis CI User
4bfb26a660 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-27 10:31:26 +00:00
Travis CI User
1f608b1eb5 [maven-release-plugin][skip ci] prepare release 11.125 2021-08-27 10:31:23 +00:00
Ayman Harake
8652c9d644 ATS-956: Bump T-core to use 2.5.3 (#683) 2021-08-27 10:43:59 +01:00
Travis CI User
57e8ee2c76 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-26 15:04:19 +00:00
Travis CI User
6cb00d8e3b [maven-release-plugin][skip ci] prepare release 11.124 2021-08-26 15:04:17 +00:00
alandavis
bb58c4a2d9 "ACS-1907 TMDQ against MySql throws SQLException in certain situations (#679)"
This reverts commit 83097d452b.
2021-08-26 14:26:01 +01:00
Travis CI User
1766ce6e31 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-26 12:08:32 +00:00
Travis CI User
0c5498fba0 [maven-release-plugin][skip ci] prepare release 11.123 2021-08-26 12:08:30 +00:00
Sara
48045c8c38 ACS-1788 Implement RestApi endpoint for deleted renditions (#681)
* ACS-1788 deleted renditions

* ACS-1913 Fix endpoint operation labels

* ACS-1788 Updates from review
2021-08-26 12:20:08 +01:00
Travis CI User
89adfacca6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-26 08:45:09 +00:00
Travis CI User
6159bee521 [maven-release-plugin][skip ci] prepare release 11.122 2021-08-26 08:45:06 +00:00
Davide
a8a06f4b1f SEARCH-2833 Add field for association Qname in NodeResource and ChildAssociationResource (#678) 2021-08-26 09:59:06 +02:00
Travis CI User
279ff3a0d8 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-26 06:35:05 +00:00
Travis CI User
b6a50ae6e1 [maven-release-plugin][skip ci] prepare release 11.121 2021-08-26 06:35:01 +00:00
alandavis
83097d452b Revert "ACS-1907 TMDQ against MySql throws SQLException in certain situations (#679)"
Kept the travis changes.

This reverts commit 85fa4b5a93.
2021-08-26 01:18:19 +01:00
Travis CI User
b26d03cc0c [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-25 22:17:37 +00:00
Travis CI User
af24fef02b [maven-release-plugin][skip ci] prepare release 11.120 2021-08-25 22:17:34 +00:00
Stefan Kopf
85fa4b5a93 ACS-1907 TMDQ against MySql throws SQLException in certain situations (#679)
* Added alternative approach for DBQueryEngine to page through the entire query using "LIMIT" requests instead of result set streaming
* Use the alternative approach for MySql
2021-08-25 22:05:33 +01:00
Travis CI User
01b5fb5593 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-25 20:01:30 +00:00
Travis CI User
09f8d7a806 [maven-release-plugin][skip ci] prepare release 11.119 2021-08-25 20:01:27 +00:00
Sara
77691ec5fd ACS-1913 Fix endpoint operation labels (#682)
* ACS-1913 Fix endpoint operation labels

* ACS-1913 Update tests

* ACS-1913 Update tests
2021-08-25 20:14:16 +01:00
Travis CI User
472710ffd4 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-25 17:12:43 +00:00
Travis CI User
16f0714e99 [maven-release-plugin][skip ci] prepare release 11.118 2021-08-25 17:12:41 +00:00
Sara
c7c40b06e1 Feature/acs 1904 fix node ref vs content url (#680)
* ACS-1904 Fix NodeRef vs ContentUrl and remove deprecated methods

* ACS-1904 remove unused imports
2021-08-25 17:22:59 +01:00
alandavis
439a9254a3 Remove double spaces in log messages [skip ci] 2021-08-25 11:46:25 +01:00
Travis CI User
a9f19de31c [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-24 15:11:35 +00:00
Travis CI User
d237e51bb2 [maven-release-plugin][skip ci] prepare release 11.117 2021-08-24 15:11:32 +00:00
Sara Aspery
d7758d5509 update api-explorer version to 7.1.0-A1 in community-repo pom 2021-08-24 15:24:02 +01:00
Sara
f8b40d3cc0 ACS-566 Fix Poms (#677) 2021-08-24 09:13:03 +01:00
Travis CI User
6d48c0979e [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-24 07:14:21 +00:00
Travis CI User
1b7bada294 [maven-release-plugin][skip ci] prepare release 11.116 2021-08-24 07:14:18 +00:00
Rodica Sutu
924f64409e end to end tests for APPS-1004 and APPS-1005 (#674)
* end to end tests for governance service issues APPS-1004 and APPS-1005
2021-08-24 09:25:04 +03:00
Travis CI User
7267ea5846 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-23 11:02:06 +00:00
Travis CI User
c86d82e9cd [maven-release-plugin][skip ci] prepare release 11.115 2021-08-23 11:02:03 +00:00
mikolajbrzezinski
f7e6320a83 Feature/acs 1787 endpoint for deleted nodes (#672)
* Deleted Nodes DAU Skeleton

* Copyright Dates Update

* Spring Wiring and Default Method

* Operation Name Change

* Removal of unnecesary Method Calls and JavaDoc update

* Updates from Review
2021-08-23 12:15:40 +02:00
Travis CI User
cff733bbdf [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-23 09:00:57 +00:00
Travis CI User
57942cd43b [maven-release-plugin][skip ci] prepare release 11.114 2021-08-23 09:00:54 +00:00
Iulian Aftene
4aaae012c5 ACS-1833 - Test requestContentDirectUrl for Versions Renditions REST API endpoint (#675)
-add requestContentDirectUrl test for versions renditions
2021-08-23 11:14:33 +03:00
Travis CI User
1c387add9d [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-22 22:34:52 +00:00
Travis CI User
d3ab782b57 [maven-release-plugin][skip ci] prepare release 11.113 2021-08-22 22:34:50 +00:00
Stefan Kopf
b3d43b0500 ACS-1907: Fix typo in test case 2021-08-22 23:50:36 +02:00
Stefan Kopf
a8e1ce909e ACS-1907: Added test case to reproduce error situation 2021-08-22 23:47:26 +02:00
Travis CI User
76e815f9c5 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-20 16:38:27 +00:00
Travis CI User
5e973504d6 [maven-release-plugin][skip ci] prepare release 11.112 2021-08-20 16:38:25 +00:00
Alan Davis
b84e1f8100 ACS-1778 Common transform routing code for Repo and t-router (#648)
Main change is the removal of code from CombinedConfig into alfresco-transform-model as CombinedTransformConfig.The Code within LocalCombinedConfig has now moved to CombinedConfig as there is only one type of config now.

* Bump alfresco-transform-model from 1.3.1.1 to 1.4.0
* Add logWarn method
2021-08-20 15:49:10 +01:00
Travis CI User
42d1176ccf [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-19 13:32:16 +00:00
Travis CI User
113c27d130 [maven-release-plugin][skip ci] prepare release 11.111 2021-08-19 13:32:13 +00:00
tiagosalvado10
e7cec99d07 [ACS-1893] Bump tas-restapi to 1.63 (#673) 2021-08-19 13:37:23 +01:00
Travis CI User
aa6c347d74 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-19 12:34:39 +00:00
Travis CI User
3f8f05b0d4 [maven-release-plugin][skip ci] prepare release 11.110 2021-08-19 12:34:37 +00:00
Iulian Aftene
2c6a7e3af6 ACS-1831 - Test requestContentDirectUrl for Renditions REST API endpoint (#670)
ACS-1831 - Test requestContentDirectUrl for Renditions REST API endpoint
-add test for RequestContentDirectUrl Renditions
2021-08-19 14:49:15 +03:00
Jamal Kaabi-Mofrad
692ff3ffa8 REPO-5660: Added a patch for the new added ALFRESCO_SYSTEM_ADMINISTRATORS group. (#669) 2021-08-18 16:10:44 +01:00
Stefan Kopf
6b4df496ce Add missing 3rd party license files 2021-08-18 15:27:21 +02:00
Travis CI User
6ce7d45aa2 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-18 11:50:17 +00:00
Travis CI User
d5210ab058 [maven-release-plugin][skip ci] prepare release 11.109 2021-08-18 11:50:14 +00:00
Sara
b7df7a80c1 Feature/acs 1786 impl rest api for version renditions (#663)
* Version corrections

* ACS-1784 Implement Rest API for renditions

* ACS-1786 Impl Rest API for Version Renditions
2021-08-18 12:03:27 +01:00
Sara
b2d3c6e8c6 Feature/acs 1784 impl rest api for renditions (#662)
* Version corrections

* ACS-1784 Implement Rest API for renditions
2021-08-18 12:02:58 +01:00
Travis CI User
e2965a57f5 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-17 16:59:35 +00:00
Travis CI User
f395275129 [maven-release-plugin][skip ci] prepare release 11.108 2021-08-17 16:59:32 +00:00
antoniojfelix
ed3cc88b71 PRODSEC-4331 - Bump spring version from 5.3.3 to 5.3.9 (#666)
* PRODSEC-4331 - Upgrade spring version from 5.3.3 to 5.3.9 -> new methods added to the interface ApplicationEventMulticaster in the 5.3.9 version (removeApplicationListeners and removeApplicationListenerBeans)
2021-08-17 16:51:12 +01:00
Travis CI User
d41f3dcfde [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-17 12:25:46 +00:00
Travis CI User
6bc03c02fb [maven-release-plugin][skip ci] prepare release 11.107 2021-08-17 12:25:43 +00:00
Jamal Kaabi-Mofrad
b68e805a37 REPO-5659: Added ALFRESCO_SYSTEM_ADMINISTRATORS group authority. (#668) 2021-08-17 12:43:33 +01:00
Travis CI User
68f34c284a [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-17 07:19:18 +00:00
Travis CI User
3dcd47fac4 [maven-release-plugin][skip ci] prepare release 11.106 2021-08-17 07:19:15 +00:00
Iulian Aftene
11354630f7 ACS-1832 - Test requestContentDirectUrl for Versions REST API endpoint (#661)
* ACS-1832 - Test requestContentDirectUrl for Versions REST API endpoint
-update test for RequestContentDirectUrl Versions
2021-08-17 09:36:38 +03:00
Travis CI User
6eb7538bde [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-16 13:39:52 +00:00
Travis CI User
2da894d82b [maven-release-plugin][skip ci] prepare release 11.105 2021-08-16 13:39:50 +00:00
Rodica Sutu
b996987426 use base image according to the changes added within PR #619 [skip db] [ags] [skip repo] (#665) 2021-08-16 15:22:20 +03:00
brijmohan1
8b6dfa47b8 Fix/rm 6941 retention action on frozen nodes (#640)
* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 Changes for retention action on frozen nodes [ags]

* RM-6941 added slf4j and junit test [ags]

* RM-6941 added slf4j and junit test [ags]

* RM-6941 added slf4j and junit test [ags]

* RM-6941 added slf4j and junit test [ags]

* RM-6941 added slf4j and test [ags]

* RM-6941 added slf4j and test [ags]

* RM-6941 added slf4j and test [ags]

* RM-6941 added slf4j and test [ags]

* RM-6941 added slf4j and test [ags]

* RM-6941 code change for test case [ags]

* RM-6941 code change for test case [ags]

* RM-6941 code change for test case [ags]

* RM-6941 change lombok dependency scope to compile [ags]

* Revert "RM-6941 change lombok dependency scope to compile [ags]"

This reverts commit 4cee68e8

* RM-6941 change lombok dependency scope to compile [ags]

* RM-6941 revert change lombok dependency scope to compile [ags]

* RM-6941 revert change lombok dependency scope to compile [ags]
2021-08-15 14:30:08 +05:30
Travis CI User
456e442438 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-12 15:40:29 +00:00
Travis CI User
b779613910 [maven-release-plugin][skip ci] prepare release 11.104 2021-08-12 15:40:26 +00:00
tiagosalvado10
3530e3dc3b [PRODSEC-5254] Bump commons-compress to 1.21 (#658) 2021-08-12 14:56:11 +01:00
Travis CI User
c4dcbba707 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-12 06:52:56 +00:00
Travis CI User
5b539b4248 [maven-release-plugin][skip ci] prepare release 11.103 2021-08-12 06:52:54 +00:00
Sara
6f1e35217b Feature/acs 1785 impl rest api for versions (#654)
* ACS-1783 Refactor Rest Api for Nodes

* ACS-1783 Fix config default

* ACS-1783 Updates for review

* ACS-1785 Impl Rest Api for versions

* ACS-1783 Fix missing properties defaults

* ACS-1785 Minor code tidy up

* ACS-1783 Remove properties defaults

* ACS-1783 Omit enabled default

* ACS-1785 Fix public-rest-context
2021-08-12 07:10:59 +01:00
Travis CI User
5d3f3f866e [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-11 20:01:25 +00:00
Travis CI User
ad97dcd6f4 [maven-release-plugin][skip ci] prepare release 11.102 2021-08-11 20:01:22 +00:00
Sara
597056b1c4 ACS-1830 - Test requestContentDirectUrl for Nodes REST API endpoint (#650) (#656)
* ACS-1830 - Test requestContentDirectUrl for Nodes REST API endpoint
-add test for RequestContentDirectUrl
-update the license headers to 2021

Co-authored-by: Iulian Aftene <iulian.aftene@ness.com>
2021-08-11 19:51:11 +01:00
Travis CI User
4be9aad5f6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-11 17:05:29 +00:00
Travis CI User
b066520e0e [maven-release-plugin][skip ci] prepare release 11.101 2021-08-11 17:05:26 +00:00
Sara
dcf564d3ba ACS-1783 restore contexts (#655) 2021-08-11 16:24:21 +01:00
Sara
254d29d45f Feature/acs 1783 impl rest api for nodes (#653)
* ACS-1783 Refactor Rest Api for Nodes

* ACS-1783 Fix config default

* ACS-1783 Updates for review

* ACS-1783 Fix missing properties defaults

* ACS-1783 Remove properties defaults

* ACS-1783 Omit enabled default
2021-08-11 14:49:51 +01:00
Travis CI User
e0751568db [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-11 11:58:51 +00:00
Travis CI User
fa696cfec5 [maven-release-plugin][skip ci] prepare release 11.100 2021-08-11 11:58:48 +00:00
mikolajbrzezinski
49bc40bdea Feature/acs 1789 update discovery api (#652)
* Content Service changes both ACS-1781 and 1782

* Ignore test temporarily

* ACS-1782 fix test

* ACS-1782 Test and service updates

* ACS-1781 Tests for Content Service and Store

* ACS-1782 disable rest api DAU

* Discovery API DAU Unit Tests - Asserts

* Discovery API DAU Unit Tests

* Discovery API DAU Unit Test Class

* Discovery API DAU

* ACS-1789 DiscoveryApi DAU

* Discovery API DAU Unit Tests Renamed Methods

* Integration Test Assert

* Unit Test Imports Removal

* Copyright Dates Updated

* Copyright Dates Updated

Co-authored-by: Sara Aspery <sara.aspery@alfresco.com>
2021-08-11 13:03:35 +02:00
Travis CI User
4f0b16b881 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-09 15:37:26 +00:00
Travis CI User
33155c8d92 [maven-release-plugin][skip ci] prepare release 11.99 2021-08-09 15:37:20 +00:00
Sara
838d758983 Feature/acs 1782 impl request DAU in content service (#645)
* Content Service changes both ACS-1781 and 1782

* Ignore test temporarily

* ACS-1782 fix test

* ACS-1782 Test and service updates

* ACS-1781 Tests for Content Service and Store

* ACS-1782 disable rest api DAU

* ACS-1782 fix mocks in unit test

* ACS-1782 Fix integration test
2021-08-09 15:55:10 +01:00
Travis CI User
eee7e00310 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-06 12:27:23 +00:00
Travis CI User
d726ab8099 [maven-release-plugin][skip ci] prepare release 11.98 2021-08-06 12:27:21 +00:00
CezarLeahu
216f60a0ec ACS-1773 APPS-986 Refactor on TempOutputStream, BufferedRequest, BufferedResponse & RepositoryContainer (#584)
- remove the `TempOutputStream.deleteTempFileOnClose` capability
- separate the `.close()` and the `.destroy()` methods in **TempOutputStream** (only the latter deletes the temp file)
- made `BufferedRequest`&`BufferedResponse` **AutoClosable**; their `.close()` methods always calls `.destroy()` on the underlying _TempOutputStream_ object (thus triggering the removal of their temp files)
- remove the `.destroy()` call from the `BufferedResponse.writeResponse()` method
- use `BufferedRequest`&`BufferedResponse` in try-with-resources blocks (thus calling their `.close()` methods, which calls `.destroy()` on _TempOutputStream_, tiggering the removal of the temp files) - both in **RepositoryContainer** and in **ApiWebScripts**
- replace the `TempOutputStreamFactory` class with a simple `Supplier<TempOutputStream>`
- remove the `TempByteArrayOutputStream` inner class (replaced with `ByteArrayOutputStream`)
- simplified the decision tree in some methods with the help of the IDE
- other small improvements and changes
2021-08-06 14:46:06 +03:00
Travis CI User
8e973c2b60 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-04 20:28:23 +00:00
Travis CI User
d9c0016591 [maven-release-plugin][skip ci] prepare release 11.97 2021-08-04 20:28:20 +00:00
Andrea Ligios
2deb07b97b ACS-1742 - Marked test as NOT_SUPPORTED_ON_SINGLE_PIPELINE (#641) 2021-08-04 16:35:26 +02:00
ramunteanu
3cf1cfd133 feature/APPS-1004 (#624)
* APPS-1004/APPS-1005: Retention steps are not updated when moving from another category with a different retention schedule

* APPS-1004/APPS-1005: [AGS] Retention steps are not updated when moving from another category with a different retention schedule
    - Added test for APPS-1004 and changed fix to solve another isuue
      RM-7106

* APPS-1004/APPS-1005: [AGS] Retention steps are not updated when moving from another category with a different retention schedule
    - Added common method to be used by both categoryType and folderType

* APPS-1004/APPS-1005: [AGS] Retention steps are not updated when moving from another category with a different retention schedule
    - Added change to reinitialize folders recursively, for the case
      where there are multiple subcategories

* APPS-1004/APPS-1005: [AGS] Retention steps are not updated when moving from another category with a different retention schedule
    - Added changes suggested at review
2021-08-03 18:05:15 +03:00
Travis CI User
a1c0344828 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-03 14:10:27 +00:00
Travis CI User
b639c6ba62 [maven-release-plugin][skip ci] prepare release 11.96 2021-08-03 14:10:24 +00:00
Sara
e95100e429 Acs 1865 impl configs for da us (#634)
* ACS-1781 Config set up and validation

* ACS-1781 Unit tests for config validation

* ACS-1865 Code tidy up

* ACS-1865 Updates from PR review

* ACS-1865 Updates from review
2021-08-03 14:16:24 +01:00
Travis CI User
9626f5ace6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-08-02 13:16:57 +00:00
Travis CI User
48af7ebe9e [maven-release-plugin][skip ci] prepare release 11.95 2021-08-02 13:16:51 +00:00
Eliza Stan
f635bd9754 APPS-1068 : [AGS] Publish AGS-specific docker images from acs-packaging (#619) 2021-08-02 15:25:58 +03:00
Shubham Jain
3cac5ebfc5 APPS-1073_Automated Rest API tests for checking Export for Records ha… (#630)
* APPS-1073_Automated Rest API tests for checking Export for Records having size greater than 4MB

* Updated the test files as per Review Comments

* Updated the test files as per Review Comments

Co-authored-by: Shubham Jain <Shubham.Jain@hyland.com>
Co-authored-by: shubhamjain10 <shubham.jain@globallogic.com>
2021-08-02 14:23:30 +05:30
Travis CI User
28eaa8c2f8 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-31 07:59:23 +00:00
Travis CI User
d6e096a06c [maven-release-plugin][skip ci] prepare release 11.94 2021-07-31 07:59:18 +00:00
dependabot-preview[bot]
c71e536245 Bump commons-csv from 1.8 to 1.9.0 (#637) 2021-07-30 23:22:20 +00:00
Travis CI User
9e7c3f3502 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-24 00:02:44 +00:00
Travis CI User
2fcbc29491 [maven-release-plugin][skip ci] prepare release 11.93 2021-07-24 00:02:38 +00:00
dependabot-preview[bot]
9559a15fe9 Bump dependency.webscripts.version from 8.19 to 8.22 (#623) 2021-07-23 23:14:11 +00:00
Ayman Harake
8374215221 ATS-952: bump T-engines to version 2.5.2 (#604) 2021-07-21 12:15:45 +01:00
Travis CI User
964b2bb61c [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-20 13:30:15 +00:00
Travis CI User
84c32c2665 [maven-release-plugin][skip ci] prepare release 11.92 2021-07-20 13:30:05 +00:00
Manpreet Oberoi
6eb18af654 RM-6941 Changes related to retain frozen Records (#590)
* changes related to retain frozen Records

* RM-6941 add Log entries [ags][skip repo]

* RM-6941 Remove final from the variable declaration

Co-authored-by: bdwiwedi <brij.dwiwedi@globallogic.com>
2021-07-20 18:08:25 +05:30
Travis CI User
9cb719e853 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-19 11:50:41 +00:00
Travis CI User
4a6a847504 [maven-release-plugin][skip ci] prepare release 11.91 2021-07-19 11:50:35 +00:00
Abdul Mohammed
456525c1f8 Add friendly name to scheduled jobs that are currently showing class names (#603) 2021-07-19 11:51:14 +01:00
Travis CI User
16e9ebd7d1 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-15 17:52:36 +00:00
Travis CI User
d2671b9c39 [maven-release-plugin][skip ci] prepare release 11.90 2021-07-15 17:52:29 +00:00
Alan Davis
e79f4900c0 PRODENG-67/PRODENG-69 ACS 7.1 Supported Platforms: PostgreSQL 13.3, 12.7, 11.12 / MariaDB 10.6 (#602)
PostgreSQL 13.3 is also now used by default in all non DB test jobs that used 13.1 before.
2021-07-15 17:58:01 +01:00
evasques
ac4a1643e1 PRODSEC-4422 - Scripts not in Data Dictionary can be executed by action (#596)
* Added validation to the ScriptActionExecuter class to enforce the existing constraints on parameter script-ref (Repo has the constraint to only allow scripts in Data Dictionary / Scripts and AGS has the constraint to only allow scripts in Data Dictionary / Records Management / Records Management Scripts") by validating if the given scriptRef is in the allowed valued of the constraint set on that param
* Added a new unit test for AGS to make sure that rmscript action still works as expected when the script is in the correct folder and fails when not
* Added new case in ActionServiceImpl2Test#testExecuteScript to assert that the transaction fails when we execute the action with an invalid script
* Moved test testActionResult from ActionServiceImplTest to class ActionServiceImpl2Test - Before it ran with a script not in Data Dictionary so with the added validation it started to fail. I moved the unit test do avoid duplicating the code to create the script in the correct location.
2021-07-15 17:45:22 +01:00
Travis CI User
af0fd146f2 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-15 14:11:20 +00:00
Travis CI User
fd0931fb1c [maven-release-plugin][skip ci] prepare release 11.89 2021-07-15 14:11:14 +00:00
evasques
e0cbd1fba6 MNT-22481 - Unable to Create Custom Metadata (#598)
* Upgrading org.json:json from version 20090211 to 20201115 introduced the issue as getString method in the newer version does not allow for values other than strings
* Replaced getString for the get method
* Original PR in governance-services: https://github.com/Alfresco/governance-services/pull/1448
2021-07-15 14:13:43 +01:00
Travis CI User
0477533383 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-14 23:13:13 +00:00
Travis CI User
705f7e2488 [maven-release-plugin][skip ci] prepare release 11.88 2021-07-14 23:13:07 +00:00
dependabot-preview[bot]
b2109b1867 Bump docker-java from 3.0.14 to 3.2.11 (#571) 2021-07-14 22:18:35 +00:00
dependabot-preview[bot]
d5a6947918 Bump dependency.tika.version from 1.26 to 1.27 (#582) 2021-07-14 22:18:33 +00:00
dependabot-preview[bot]
ec13994ccf Bump jboss-logging from 3.4.1.Final to 3.4.2.Final (#506) 2021-07-14 22:18:22 +00:00
dependabot-preview[bot]
0b1623ee93 Bump jackson-databind from 2.12.3 to 2.12.4 (#580) 2021-07-14 22:18:10 +00:00
Travis CI User
6dcf78c211 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-14 17:19:53 +00:00
Travis CI User
c4547b3533 [maven-release-plugin][skip ci] prepare release 11.87 2021-07-14 17:19:47 +00:00
Davide
6e99df9d3e SEARCH-2878 Update the supported for SearchService (#587) 2021-07-14 17:42:55 +02:00
Travis CI User
baca7759a6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-10 21:59:39 +00:00
Travis CI User
e109bcdaf6 [maven-release-plugin][skip ci] prepare release 11.86 2021-07-10 21:59:34 +00:00
Alex Mukha
05aee70c30 Revert "Revert "AUTH-532: Upgrade Keycloak client to match IDS-1.5.0""
This reverts commit e7b5d98dba.
2021-07-10 22:06:32 +01:00
Travis CI User
84b59efed8 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-10 16:08:55 +00:00
Travis CI User
8ccce1740f [maven-release-plugin][skip ci] prepare release 11.85 2021-07-10 16:08:49 +00:00
Alex Mukha
e7b5d98dba Revert "AUTH-532: Upgrade Keycloak client to match IDS-1.5.0"
This reverts commit bd713ffbe9.
2021-07-10 15:46:16 +01:00
Travis CI User
8263a9ccd1 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-09 22:10:46 +00:00
Travis CI User
8173d06a76 [maven-release-plugin][skip ci] prepare release 11.84 2021-07-09 22:10:40 +00:00
Davide
754eadc05a SEARCH-2878 Update the supported for SearchService to 2.0.2-RC2 (#588) 2021-07-09 22:06:32 +01:00
Travis CI User
8c5a56de14 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-09 16:37:03 +00:00
Travis CI User
b1a027a776 [maven-release-plugin][skip ci] prepare release 11.83 2021-07-09 16:36:57 +00:00
Jamal Kaabi-Mofrad
bd713ffbe9 AUTH-532: Upgrade Keycloak client to match IDS-1.5.0 2021-07-09 16:43:59 +01:00
Travis CI User
6141fe2a03 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-09 11:56:20 +00:00
Travis CI User
e99c928408 [maven-release-plugin][skip ci] prepare release 11.82 2021-07-09 11:56:15 +00:00
CezarLeahu
536f066cdf Use LF for Dockerfile(s) and .sh scripts (.gitattributes) [skip ci] (#576) 2021-07-06 14:18:25 +03:00
Travis CI User
8c1c2c60b9 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-02 13:54:06 +00:00
Travis CI User
38a4736650 [maven-release-plugin][skip ci] prepare release 11.81 2021-07-02 13:53:59 +00:00
Gloria Camino
8e6f5c1823 LOC-308 Updated UI files in 15 languages inc AGS amps (#574)
Updated Community repo files
2021-07-02 09:56:54 +01:00
Travis CI User
4345cae382 [maven-release-plugin][skip ci] prepare for next development iteration 2021-07-01 12:04:01 +00:00
Travis CI User
ae3443b070 [maven-release-plugin][skip ci] prepare release 11.80 2021-07-01 12:03:55 +00:00
David Edwards
38d66b69bb ACS-1734 Remove libreofficeToPdf + Update libreofficeToPdfBoxViaPdf (#573) 2021-07-01 11:40:42 +01:00
Travis CI User
5e37184ec3 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-30 14:22:35 +00:00
Travis CI User
dbf1084602 [maven-release-plugin][skip ci] prepare release 11.79 2021-06-30 14:22:29 +00:00
David Edwards
0d09a048da ACS-1734 Remove broken transformerFailover from libreofficeToPdf (#572) 2021-06-30 14:31:09 +01:00
Travis CI User
f9b1f015b7 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-29 16:43:44 +00:00
Travis CI User
6248b5fde1 [maven-release-plugin][skip ci] prepare release 11.78 2021-06-29 16:43:36 +00:00
ramunteanu
d842399190 APPS-986: [AGS] Export of records with size> 4 MB fails (#511)
- Changed deleteTempFileOnClose to false as the temp file deletion is handled in BufferedResponse#writeResponse
2021-06-29 18:52:20 +03:00
Travis CI User
f647ca2f22 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-28 17:49:01 +00:00
Travis CI User
2e429014bf [maven-release-plugin][skip ci] prepare release 11.77 2021-06-28 17:48:54 +00:00
Alan Davis
acb155739a Bump camel-amqp 3.7.1 to 3.7.4 and netty 4.1.58.Final to 4.1.60.Final #567 2021-06-28 17:58:51 +01:00
Travis CI User
58017396c3 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-28 12:14:55 +00:00
Travis CI User
50cb115b32 [maven-release-plugin][skip ci] prepare release 11.76 2021-06-28 12:14:50 +00:00
Giovanni Fertuso
200be29303 [ACS-1715] Deprecate reset-password APIs (#558) 2021-06-28 12:24:54 +01:00
Travis CI User
ed46a4a8cf [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-28 09:09:12 +00:00
Travis CI User
dfc2abc675 [maven-release-plugin][skip ci] prepare release 11.75 2021-06-28 09:09:06 +00:00
Alex Mukha
b7f747ff1d SEARCH-2876 Update Solr 2.0.2-RC1 2021-06-28 09:17:37 +01:00
Alex Mukha
1ff271db82 SEARCH-2876 Update Solr 2.0.2-RC1 (#563) 2021-06-26 01:39:35 +01:00
Travis CI User
77d914434c [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-26 00:13:52 +00:00
Travis CI User
69f25f30f6 [maven-release-plugin][skip ci] prepare release 11.74 2021-06-26 00:13:46 +00:00
dependabot-preview[bot]
693aead772 Bump aspectjrt from 1.9.6 to 1.9.7 (#562) 2021-06-25 23:25:23 +00:00
Travis CI User
6eeffb39b6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-25 20:28:33 +00:00
Travis CI User
644ca46e98 [maven-release-plugin][skip ci] prepare release 11.73 2021-06-25 20:28:28 +00:00
alandavis
0445ba9c93 MNT-21902 minor fixes to logic added in REPO-5549 2021-06-25 18:36:57 +01:00
Travis CI User
c84a1231a3 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-24 00:06:35 +00:00
Travis CI User
9e019c2511 [maven-release-plugin][skip ci] prepare release 11.72 2021-06-24 00:06:29 +00:00
dependabot-preview[bot]
647726a90b Bump restapi from 1.60 to 1.61 (#557) 2021-06-23 23:16:07 +00:00
Travis CI User
262c1a9386 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-23 15:18:20 +00:00
Travis CI User
3909d48558 [maven-release-plugin][skip ci] prepare release 11.71 2021-06-23 15:18:14 +00:00
tiagosalvado10
a8959b98c1 [MNT-21611] Removed HTML transformation pipelines (with LibreOffice). Added new HTML pipelines via TEXT (#391) 2021-06-23 15:29:26 +01:00
Travis CI User
86b068b0ea [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-22 11:10:01 +00:00
Travis CI User
dbd0b1ce29 [maven-release-plugin][skip ci] prepare release 11.70 2021-06-22 11:09:56 +00:00
Gloria Camino
c97c001b82 LOC-312 FIXED - Updated UI in 16 languages including the AGS amps files in 5 new languages. Also a fix to l10n.properties to exclude the dictionary-model.properties from localisation. (#551)
Updated UI files in 15 languages
2021-06-22 11:23:34 +01:00
Travis CI User
f0ed195668 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-22 00:19:34 +00:00
Travis CI User
bb3d488e40 [maven-release-plugin][skip ci] prepare release 11.69 2021-06-22 00:19:29 +00:00
dependabot-preview[bot]
5638f092fa Bump mockito-core from 3.11.0 to 3.11.2 (#550) 2021-06-21 23:29:42 +00:00
dependabot-preview[bot]
b9197e9d6d Bump spring-security-core from 5.5.0 to 5.5.1 (#549) 2021-06-21 23:21:25 +00:00
Travis CI User
a10c29125c [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-21 18:11:01 +00:00
Travis CI User
30b14a1848 [maven-release-plugin][skip ci] prepare release 11.68 2021-06-21 18:10:55 +00:00
evasques
6e1d25a8f0 MNT-21837 - License expires 23h earlier - correction (#544)
* period.getMillis() (joda lib) returns an int instead of a long, so on larger periods (like 30days) we get an error that the value cannot fit in an int
* Changed the validation to only calculate the remaining milliseconds in the edge case of the remaining days being zero (as both 23h before and 23h after correspond to 0 remaining days)
* Added a unit test that validates the usage 60 days up from the licence expiring to validate the problem stops occurring
Added a unit test that validates the usage 30 days after the licence expiring to cover all use cases
2021-06-21 15:17:39 +01:00
Travis CI User
f703626a69 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-19 00:10:02 +00:00
Travis CI User
189b6dc7a6 [maven-release-plugin][skip ci] prepare release 11.67 2021-06-19 00:09:56 +00:00
dependabot-preview[bot]
0430d281ff Bump restapi from 1.58 to 1.60 (#546) 2021-06-18 23:22:49 +00:00
Travis CI User
b39086a6bd [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-18 09:15:32 +00:00
Travis CI User
5d441cd526 [maven-release-plugin][skip ci] prepare release 11.66 2021-06-18 09:15:26 +00:00
evasques
630cd99067 MNT-21837 License expires 23h earlier (#541)
* MNT-21837 - License expires 23h earlier
* Original problem is that the remaining time to license expires is calculated in days (long, not double) and anything less then 24h computes to 0 days. The validation for license being valid is that the remaining days is more than zero.
* Added method calculateMs in DateUtil class to return the interval in ms considering 2 given dates and respective timezones
* Changed the validation to use the remaining milliseconds value instead of remaining days
* Added unit test where license expires 6 hours from now - repo is not supposed to enter read-only mode
* Added unit test where license expired 1 minute ago - repo is supposed to enter read-only mode

* Removed unused import
2021-06-18 09:28:03 +01:00
Travis CI User
401437fec6 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-17 18:37:27 +00:00
Travis CI User
eb1350f0d9 [maven-release-plugin][skip ci] prepare release 11.65 2021-06-17 18:37:22 +00:00
alandavis
bd860bd145 Use alfresco/alfresco-base-tomcat:9.0.45-java-11-centos-8 2021-06-17 17:50:09 +01:00
Travis CI User
111e41418c [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-17 16:19:59 +00:00
Travis CI User
caf83dd13b [maven-release-plugin][skip ci] prepare release 11.64 2021-06-17 16:19:54 +00:00
Alan Davis
88b4ce155c MNT-22388 [Security] multiple pdfbox vulnerabilities (Repo) (#539)
* Remove pdfbox jars as they should no longer be needed.
* Reintroduce tests that use Tika to 'guess' mimetypes as it was the tika parse that was pulling in the pdfbox libraries.

Classes that use Tika:
* HTMLRenderingEngine - removed as it is no longer used
* RemoteConnectorResponseImpl - called tika utility toByteArray so not using pdfbox
* TikaCharsetFinder - called to identify the charset not mimetype so not using pdfbox
* MimetypeMap - main use of Tika. Used to detect mimetypes. Might have been using pdfbox.
2021-06-17 16:08:21 +01:00
Travis CI User
89f82cc991 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-17 08:47:37 +00:00
Travis CI User
545ebc9d3f [maven-release-plugin][skip ci] prepare release 11.63 2021-06-17 08:47:31 +00:00
Alexandru-Eusebiu Epure
d18c737b5d ATS-936 : bump T-engines to version 2.5.0 (#535) 2021-06-17 09:34:27 +03:00
Travis CI User
4c0a069e8d [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-16 15:25:21 +00:00
Travis CI User
162bb7e251 [maven-release-plugin][skip ci] prepare release 11.62 2021-06-16 15:25:16 +00:00
evasques
d7ec130756 MNT-20500 - Admin console breaks with serialised objects (#536)
* In node browser:
** Added macro convertToJSON to recursively parse hashes and enumerables
** Added attempt/recover in macros to handle errors and not break the page
** Changed the output of serialized objects to JSON format
* In both admin console and node browser:
** Adjusted consistency of the ouput when an error occurs
** Validate the depth of each hash. When we find a hash with over 1000 elements, we throw an error instead of displaying the object. Used the stop tag to effectively force an abort of the template processing preventing performance or security issues regarding very large objects.
2021-06-16 15:41:34 +01:00
Travis CI User
2fbfa123e5 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-16 11:14:53 +00:00
Travis CI User
21438e247e [maven-release-plugin][skip ci] prepare release 11.61 2021-06-16 11:14:47 +00:00
Tom Page
0404395c27 RM-7171 Remove reference to http://swagger.io/v2/schema.json to avoid downloading schema. (#534)
This prevents the unit tests from failing when the webpage is unavailable. It has the side
effect of not picking up any updates to the schema.
2021-06-16 11:31:05 +01:00
alandavis
2a268c5b7e Revert "Bump maven-war-plugin from 3.2.2 to 3.3.1 (#481)"
This reverts commit f6423903d7.

This was causing the tomcat dev environment to fail to start with a
ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
2021-06-15 15:48:57 +01:00
Travis CI User
65249bd53a [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-15 13:06:39 +00:00
Travis CI User
ac0641defa [maven-release-plugin][skip ci] prepare release 11.60 2021-06-15 13:06:32 +00:00
Alexandru-Eusebiu Epure
804c70d7f2 RM-7169 : Disposition Lifecycle job runs in a infinite loop (#528)
batchSize will default to 500 if the given value is smaller than 1
   added unit test.
2021-06-12 11:17:53 +03:00
Travis CI User
9aee1567b4 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-11 16:06:09 +00:00
Travis CI User
e4771e9523 [maven-release-plugin][skip ci] prepare release 11.59 2021-06-11 16:06:03 +00:00
Angel Borroy
f1a5425f62 SEARCH-2909 Return Http Status Code 501 (Not Implemented) in REST API… (#519)
* SEARCH-2909 Return Http Status Code 501 (Not Implemented) in REST API for invocations to Search Services that are not supported.

* SEARCH-2909 Refactor exception mapping to simplify QueryParserException.

* SEARCH-2909 Add unit tests for postQuery.

This includes a test for the status code replacement with unsupported operations.

* SEARCH-2909 Add new unit test file to test suite.

Also add copyright header to test class.

Co-authored-by: Tom Page <thomas.page@alfresco.com>
2021-06-11 16:03:55 +01:00
Travis CI User
29d5093c93 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-11 10:24:08 +00:00
Travis CI User
dc67a004cc [maven-release-plugin][skip ci] prepare release 11.58 2021-06-11 10:24:02 +00:00
dependabot-preview[bot]
474702a026 Bump mockito-core from 3.9.0 to 3.11.0 (#516) 2021-06-10 22:17:00 +00:00
Travis CI User
b2022f0e20 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-10 19:52:51 +00:00
6958 changed files with 1000874 additions and 947661 deletions

3
.gitattributes vendored Normal file
View File

@@ -0,0 +1,3 @@
# Shell scripts require LF
*.sh text eol=lf
Dockerfile text eol=lf

181
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,181 @@
version: 2
registries:
maven-repository-artifacts-alfresco-com-nexus-content-groups-int:
type: maven-repository
url: https://artifacts.alfresco.com/nexus/content/groups/internal
username: ${{secrets.NEXUS_USERNAME}}
password: ${{secrets.NEXUS_PASSWORD}}
updates:
- package-ecosystem: maven
directory: "/"
schedule:
interval: daily
time: "22:00"
timezone: Africa/Abidjan
open-pull-requests-limit: 99
ignore:
- dependency-name: com.google.code.gson:gson
versions:
- "> 2.8.6"
- dependency-name: io.fabric8:fabric8-maven-plugin
versions:
- "> 4.4.0"
- dependency-name: javax.servlet:javax.servlet-api
versions:
- "> 3.0.1"
- dependency-name: org.acegisecurity:acegi-security
versions:
- "> 0.8.2_patched"
- dependency-name: org.activiti:activiti-engine
versions:
- "> 5.23.0"
- dependency-name: org.activiti:activiti-engine
versions:
- ">= 7.1.a, < 7.2"
- dependency-name: org.activiti:activiti-spring
versions:
- "> 5.23.0"
- dependency-name: org.activiti:activiti-spring
versions:
- ">= 7.1.a, < 7.2"
- dependency-name: org.apache.camel:camel-activemq
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-amqp
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-direct
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-directvm
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-jackson
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-mock
versions:
- "> 3.7.1"
- dependency-name: org.apache.camel:camel-spring
versions:
- "> 3.7.1"
- dependency-name: org.apache.chemistry.opencmis:chemistry-opencmis-client-impl
versions:
- "> 1.0.0"
- dependency-name: org.apache.chemistry.opencmis:chemistry-opencmis-commons-impl
versions:
- "> 1.0.0"
- dependency-name: org.apache.chemistry.opencmis:chemistry-opencmis-server-bindings
versions:
- "> 1.0.0"
- dependency-name: org.apache.chemistry.opencmis:chemistry-opencmis-test-tck
versions:
- "> 1.0.0"
- dependency-name: org.freemarker:freemarker
versions:
- "> 2.3.20-alfresco-patched-20200421"
- dependency-name: org.keycloak:keycloak-adapter-core
versions:
- "> 12.0.2"
- dependency-name: org.keycloak:keycloak-adapter-spi
versions:
- "> 12.0.2"
- dependency-name: org.keycloak:keycloak-authz-client
versions:
- "> 12.0.2"
- dependency-name: org.keycloak:keycloak-common
versions:
- "> 12.0.2"
- dependency-name: org.keycloak:keycloak-core
versions:
- "> 12.0.2"
- dependency-name: org.keycloak:keycloak-servlet-adapter-spi
versions:
- "> 12.0.2"
- dependency-name: org.eclipse.jetty:jetty-server
versions:
- 9.4.38.v20210224
- dependency-name: org.alfresco.tas:cmis
versions:
- "1.28"
- dependency-name: org.springframework:spring-webmvc
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-web
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-tx
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-orm
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-test
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-jms
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-jdbc
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-expression
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-core
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-context-support
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-context
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-beans
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.springframework:spring-aop
versions:
- 5.3.4
- 5.3.5
- dependency-name: org.alfresco.tas:restapi
versions:
- "1.55"
- dependency-name: org.eclipse.jetty:jetty-security
versions:
- 11.0.1
- dependency-name: org.alfresco.aos-module:alfresco-vti-bin
versions:
- 1.4.0-M1
- dependency-name: org.alfresco.aos-module:alfresco-aos-module-distributionzip
versions:
- 1.4.0-M1
- dependency-name: org.alfresco.aos-module:alfresco-aos-module
versions:
- 1.4.0-M1
- dependency-name: org.alfresco.surf:spring-webscripts-api
versions:
- "8.16"
- dependency-name: org.alfresco.surf:spring-webscripts:tests
versions:
- "8.16"
- dependency-name: org.alfresco.surf:spring-webscripts
versions:
- "8.16"
- dependency-name: org.alfresco.surf:spring-surf-core-configservice
versions:
- "8.16"
registries:
- maven-repository-artifacts-alfresco-com-nexus-content-groups-int

6
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,6 @@
repos:
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: v2.1.0
hooks:
- id: pretty-format-java
args: [--autofix, --google-java-formatter-version=1.11.0, --aosp]

View File

@@ -1,4 +1,7 @@
---
import:
- source: Alfresco/alfresco-build-tools:.travis.pre-commit.yml@v1.1.5
dist: focal
language: java
jdk: openjdk11
@@ -53,38 +56,38 @@ jobs:
- name: "Repository - AppContext01TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - AppContext02TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - AppContext03TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - AppContext04TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - AppContext05TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- mkdir -p "${HOME}/tmp"
- cp repository/src/test/resources/realms/alfresco-realm.json "${HOME}/tmp"
@@ -95,31 +98,31 @@ jobs:
- name: "Repository - AppContext06TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext06TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - AppContextExtraTestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - MiscContextTestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl repository -Dtest=MiscContextTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - SearchTestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=SearchTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco -Dindex.subsystem.name=solr6
@@ -144,6 +147,14 @@ jobs:
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver
- name: "Repository - MariaDB 10.6 tests"
# We run tests on the latest version of MariaDB on pull requests plus the normal master and release branches - ignored on feature branches
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/
before_script:
- docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.6 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver
- name: "Repository - MySQL 5.7.23 tests"
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
before_script:
@@ -152,7 +163,8 @@ jobs:
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - MySQL 8 tests"
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
# We run tests on the latest version of MySQL on pull requests plus the normal master and release branches - ignored on feature branches
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/
before_script:
- docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:8 --transaction-isolation='READ-COMMITTED'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
@@ -172,6 +184,13 @@ jobs:
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 11.12 tests"
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.12 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 12.4 tests"
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
before_script:
@@ -179,14 +198,29 @@ jobs:
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 12.7 tests"
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.7 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 13.1 tests"
# We only run DB tests on the latest version of PostgreSQL on feature branches
if: commit_message !~ /\[skip db\]/
if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 13.3 tests"
# We only run DB tests on the latest version of PostgreSQL on feature branches
if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - Messaging tests"
if: commit_message !~ /\[skip repo\]/
before_script:
@@ -196,38 +230,38 @@ jobs:
- name: "Remote-api - AppContext01TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Remote-api - AppContext02TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Remote-api - AppContext03TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Remote-api - AppContext04TestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Remote-api - AppContextExtraTestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
@@ -298,7 +332,7 @@ jobs:
- name: "Share Services - ShareServicesTestSuite"
if: commit_message !~ /\[skip repo\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300'
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
script: travis_wait 20 mvn -B test -pl :alfresco-share-services -Dtest=ShareServicesTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "AGS Unit & Integration Tests 01 (PostgreSQL)"

View File

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

View File

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

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-automation-community-repo</artifactId>
<version>11.57</version>
<version>14.15-SNAPSHOT</version>
</parent>
@@ -40,7 +40,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.26</version>
<version>1.7.32</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -82,7 +82,7 @@
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.0.14</version>
<version>3.2.12</version>
</dependency>
</dependencies>
</project>

View File

@@ -26,12 +26,12 @@
*/
package org.alfresco.rest.core;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import lombok.Getter;
/**
* Extends {@link RestProperties} to be able to change/add properties
*
@@ -43,20 +43,19 @@ import lombok.Getter;
@PropertySource(value = {"classpath:default.properties", "classpath:config.properties"})
@PropertySource(value = "classpath:module.properties", ignoreResourceNotFound = true)
@PropertySource(value = "classpath:local.properties", ignoreResourceNotFound = true)
public class RMRestProperties extends RestProperties
{
@Value ("${alfresco.scheme}")
public class RMRestProperties extends RestProperties {
@Value("${alfresco.scheme}")
private String scheme;
@Value ("${alfresco.server}")
@Value("${alfresco.server}")
private String server;
@Value ("${alfresco.port}")
@Value("${alfresco.port}")
private String port;
@Value ("${rest.rmPath}")
@Value("${rest.rmPath}")
private String restRmPath;
@Value ("${docker.host}")
@Value("${docker.host}")
private String dockerHost;
}

View File

@@ -28,6 +28,8 @@ package org.alfresco.rest.core;
import io.restassured.builder.RequestSpecBuilder;
import lombok.Getter;
import org.alfresco.rest.exception.EmptyJsonResponseException;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestHtmlResponse;
@@ -43,8 +45,6 @@ import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import lombok.Getter;
/**
* Extends {@link RestWrapper} in order to call GS APIs with our own properties
*
@@ -53,118 +53,105 @@ import lombok.Getter;
*/
@Service
@Scope(value = "prototype")
public class RMRestWrapper
{
public class RMRestWrapper {
/** The class that wraps the ReST APIs from core. */
@Autowired
private RestWrapper restWrapper;
@Autowired private RestWrapper restWrapper;
@Autowired
@Getter
private RMRestProperties rmRestProperties;
@Autowired @Getter private RMRestProperties rmRestProperties;
public GSCoreAPI withGSCoreAPI()
{
public GSCoreAPI withGSCoreAPI() {
return new GSCoreAPI(this, getRmRestProperties());
}
/** Get the core class that wraps the ReST APIs. */
public RestWrapper getRestWrapper()
{
public RestWrapper getRestWrapper() {
return restWrapper;
}
/** Authenticate specific user to Alfresco REST API */
public void authenticateUser(UserModel userModel)
{
public void authenticateUser(UserModel userModel) {
restWrapper.authenticateUser(userModel);
}
/** Get the last error thrown (if any). */
public RestErrorModel assertLastError()
{
public RestErrorModel assertLastError() {
return restWrapper.assertLastError();
}
/** Process responses for a collection of models as {@link RestSiteModelsCollection}. */
public <T> T processModels(Class<T> classz, RestRequest simpleRequest)
{
public <T> T processModels(Class<T> classz, RestRequest simpleRequest) {
return restWrapper.processModels(classz, simpleRequest);
}
/** Process responses for a single model as {@link RestSiteModel}. */
public <T> T processModel(Class<T> classz, RestRequest restRequest)
{
public <T> T processModel(Class<T> classz, RestRequest restRequest) {
return restWrapper.processModel(classz, restRequest);
}
/** Process a response that has no body - basically will need only the status code from it. */
public void processEmptyModel(RestRequest simpleRequest)
{
public void processEmptyModel(RestRequest simpleRequest) {
restWrapper.processEmptyModel(simpleRequest);
}
/** Get the most recently returned status object. */
public StatusModel getLastStatus()
{
public StatusModel getLastStatus() {
return restWrapper.getLastStatus();
}
/** Get the most recently returned status code. */
public String getStatusCode()
{
public String getStatusCode() {
return restWrapper.getStatusCode();
}
/** Set the status code. This should only be needed when calling APIs without using the TAS framework. */
public void setStatusCode(String statusCode)
{
/**
* Set the status code. This should only be needed when calling APIs without using the TAS
* framework.
*/
public void setStatusCode(String statusCode) {
restWrapper.setStatusCode(statusCode);
}
/** Assert that a specific status code is returned. */
public void assertStatusCodeIs(HttpStatus statusCode)
{
public void assertStatusCodeIs(HttpStatus statusCode) {
restWrapper.assertStatusCodeIs(statusCode);
}
/** @return A parameters string that you could pass on the request ?param=value */
public String getParameters()
{
public String getParameters() {
return restWrapper.getParameters();
}
/** Create a {@link UserModel} for a new test user. */
public UserModel getTestUser()
{
public UserModel getTestUser() {
return restWrapper.getTestUser();
}
/** Get the Alfresco Core API. */
public RestCoreAPI withCoreAPI()
{
public RestCoreAPI withCoreAPI() {
return restWrapper.withCoreAPI();
}
/** Get the Alfresco Search API. */
public SearchAPI withSearchAPI()
{
public SearchAPI withSearchAPI() {
return restWrapper.withSearchAPI();
}
/**
* You can handle the request sent to server by calling this method.
* If for example you want to sent multipart form data you can use: <pre>
* You can handle the request sent to server by calling this method. If for example you want to
* sent multipart form data you can use:
*
* <pre>
* restClient.configureRequestSpec()
* .addMultiPart("filedata", Utility.getResourceTestDataFile("restapi-resource"))
* .addFormParam("renditions", "doclib")
* .addFormParam("autoRename", true);
*
* restClient.withCoreAPI().usingNode(ContentModel.my()).createNode();
* </pre> This will create the node using the multipart data defined.
* </pre>
*
* This will create the node using the multipart data defined.
*/
public RequestSpecBuilder configureRequestSpec()
{
public RequestSpecBuilder configureRequestSpec() {
return restWrapper.configureRequestSpec();
}
@@ -173,8 +160,7 @@ public class RMRestWrapper
*
* @throws EmptyJsonResponseException If there is no response from the server.
*/
public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest)
{
public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) {
return restWrapper.processHtmlResponse(simpleRequest);
}
}

View File

@@ -28,10 +28,9 @@ package org.alfresco.rest.core;
import static lombok.AccessLevel.PROTECTED;
import javax.annotation.Resource;
import lombok.Getter;
import lombok.Setter;
import org.alfresco.rest.requests.Node;
import org.alfresco.rest.requests.coreAPI.RestCoreAPI;
import org.alfresco.rest.requests.search.SearchAPI;
@@ -55,6 +54,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* REST API Factory which provides access to the APIs
*
@@ -63,10 +64,9 @@ import org.springframework.stereotype.Service;
*/
@Service
@Scope(value = "prototype")
public class RestAPIFactory
{
public class RestAPIFactory {
@Autowired
@Getter (value = PROTECTED)
@Getter(value = PROTECTED)
private DataUserAIS dataUser;
@Resource(name = "RMRestWrapper")
@@ -74,173 +74,138 @@ public class RestAPIFactory
@Setter
private RMRestWrapper rmRestWrapper;
private GSCoreAPI getGSCoreAPI(UserModel userModel)
{
getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
private GSCoreAPI getGSCoreAPI(UserModel userModel) {
getRmRestWrapper()
.authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
return getRmRestWrapper().withGSCoreAPI();
}
private RestCoreAPI getCoreAPI(UserModel userModel)
{
getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
private RestCoreAPI getCoreAPI(UserModel userModel) {
getRmRestWrapper()
.authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
return getRmRestWrapper().withCoreAPI();
}
public SearchAPI getSearchAPI(UserModel userModel)
{
getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
public SearchAPI getSearchAPI(UserModel userModel) {
getRmRestWrapper()
.authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser());
return getRmRestWrapper().withSearchAPI();
}
/**
* When no user is given the default is set to admin
*/
public SearchAPI getSearchAPI()
{
/** When no user is given the default is set to admin */
public SearchAPI getSearchAPI() {
return getSearchAPI(null);
}
public Node getNodeAPI(RepoTestModel model) throws RuntimeException
{
try
{
public Node getNodeAPI(RepoTestModel model) throws RuntimeException {
try {
return getCoreAPI(null).usingNode(model);
}
catch (Exception e)
{
} catch (Exception e) {
throw new RuntimeException("Failed to load nodeAPI.", e);
}
}
public Node getNodeAPI(UserModel userModel, RepoTestModel model) throws RuntimeException
{
try
{
public Node getNodeAPI(UserModel userModel, RepoTestModel model) throws RuntimeException {
try {
return getCoreAPI(userModel).usingNode(model);
}
catch (Exception e)
{
} catch (Exception e) {
throw new RuntimeException("Failed to load nodeAPI.", e);
}
}
public RMSiteAPI getRMSiteAPI()
{
public RMSiteAPI getRMSiteAPI() {
return getGSCoreAPI(null).usingRMSite();
}
public RMSiteAPI getRMSiteAPI(UserModel userModel)
{
public RMSiteAPI getRMSiteAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingRMSite();
}
public FilePlanAPI getFilePlansAPI()
{
public FilePlanAPI getFilePlansAPI() {
return getGSCoreAPI(null).usingFilePlans();
}
public FilePlanAPI getFilePlansAPI(UserModel userModel)
{
public FilePlanAPI getFilePlansAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingFilePlans();
}
public RecordCategoryAPI getRecordCategoryAPI()
{
public RecordCategoryAPI getRecordCategoryAPI() {
return getGSCoreAPI(null).usingRecordCategory();
}
public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel)
{
public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingRecordCategory();
}
public RecordFolderAPI getRecordFolderAPI()
{
public RecordFolderAPI getRecordFolderAPI() {
return getGSCoreAPI(null).usingRecordFolder();
}
public RecordFolderAPI getRecordFolderAPI(UserModel userModel)
{
public RecordFolderAPI getRecordFolderAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingRecordFolder();
}
public RecordsAPI getRecordsAPI()
{
public RecordsAPI getRecordsAPI() {
return getGSCoreAPI(null).usingRecords();
}
public RecordsAPI getRecordsAPI(UserModel userModel)
{
public RecordsAPI getRecordsAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingRecords();
}
public FilesAPI getFilesAPI()
{
public FilesAPI getFilesAPI() {
return getGSCoreAPI(null).usingFiles();
}
public FilesAPI getFilesAPI(UserModel userModel)
{
public FilesAPI getFilesAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingFiles();
}
public TransferContainerAPI getTransferContainerAPI()
{
public TransferContainerAPI getTransferContainerAPI() {
return getGSCoreAPI(null).usingTransferContainer();
}
public TransferContainerAPI getTransferContainerAPI(UserModel userModel)
{
public TransferContainerAPI getTransferContainerAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingTransferContainer();
}
public TransferAPI getTransferAPI()
{
public TransferAPI getTransferAPI() {
return getGSCoreAPI(null).usingTransfer();
}
public TransferAPI getTransferAPI(UserModel userModel)
{
public TransferAPI getTransferAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingTransfer();
}
public RMUserAPI getRMUserAPI()
{
public RMUserAPI getRMUserAPI() {
return getGSCoreAPI(null).usingRMUser();
}
public RMUserAPI getRMUserAPI(UserModel userModel)
{
public RMUserAPI getRMUserAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingRMUser();
}
public UnfiledContainerAPI getUnfiledContainersAPI()
{
public UnfiledContainerAPI getUnfiledContainersAPI() {
return getGSCoreAPI(null).usingUnfiledContainers();
}
public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel)
{
public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingUnfiledContainers();
}
public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI()
{
public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI() {
return getGSCoreAPI(null).usingUnfiledRecordFolder();
}
public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI(UserModel userModel)
{
public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingUnfiledRecordFolder();
}
public ActionsExecutionAPI getActionsAPI(UserModel userModel)
{
public ActionsExecutionAPI getActionsAPI(UserModel userModel) {
return getGSCoreAPI(userModel).usingActionsExecutionsAPI();
}
public ActionsExecutionAPI getActionsAPI()
{
public ActionsExecutionAPI getActionsAPI() {
return getGSCoreAPI(null).usingActionsExecutionsAPI();
}
}

View File

@@ -26,32 +26,25 @@
*/
package org.alfresco.rest.core.search;
import java.util.List;
import org.alfresco.rest.search.Pagination;
import org.alfresco.rest.search.RestRequestQueryModel;
import org.alfresco.rest.search.SearchRequest;
/**
* Builder class for creating a search api request
*/
public class SearchRequestBuilder extends SearchRequest
{
/**
* Constructor for Search API Request
*/
public SearchRequestBuilder()
{
import java.util.List;
/** Builder class for creating a search api request */
public class SearchRequestBuilder extends SearchRequest {
/** Constructor for Search API Request */
public SearchRequestBuilder() {
new SearchRequest();
}
/**
* Set the sql statement for the SearchRequest
*
* @param query sql statement
* @return search request
* @return search request
*/
public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query)
{
public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query) {
super.setQuery(query);
return this;
}
@@ -62,17 +55,13 @@ public class SearchRequestBuilder extends SearchRequest
* @param paging pagination requested
* @return search request
*/
public SearchRequestBuilder setPagingBuilder(Pagination paging)
{
public SearchRequestBuilder setPagingBuilder(Pagination paging) {
super.setPaging(paging);
return this;
}
/**
* Set the pagination properties
*/
public Pagination setPagination(Integer maxItems, Integer skipCount)
{
/** Set the pagination properties */
public Pagination setPagination(Integer maxItems, Integer skipCount) {
Pagination pagination = new Pagination();
pagination.setMaxItems(maxItems);
pagination.setSkipCount(skipCount);
@@ -85,10 +74,8 @@ public class SearchRequestBuilder extends SearchRequest
* @param fields requested fields
* @return search request
*/
public SearchRequestBuilder setFieldsBuilder(List<String> fields)
{
public SearchRequestBuilder setFieldsBuilder(List<String> fields) {
super.setFields(fields);
return this;
}
}

View File

@@ -26,13 +26,6 @@
*/
package org.alfresco.rest.core.v0;
import javax.json.Json;
import javax.json.JsonReader;
import java.io.IOException;
import java.io.InputStream;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
@@ -42,25 +35,33 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import javax.json.Json;
import javax.json.JsonReader;
/**
* Helper methods for use with REST APIs.
*
* @author Tom Page
* @since 2.6
*/
public class APIUtils
{
public class APIUtils {
/** Logger for this class. */
private static final Logger LOGGER = LoggerFactory.getLogger(APIUtils.class);
/** The ISO instant formatter that formats or parses an instant in UTC, such as '2011-12-03T10:15:305Z'
* similar with {@link DateTimeFormatter#ISO_INSTANT}, but with only 3 nanoseconds*/
/**
* The ISO instant formatter that formats or parses an instant in UTC, such as
* '2011-12-03T10:15:305Z' similar with {@link DateTimeFormatter#ISO_INSTANT}, but with only 3
* nanoseconds
*/
public static final DateTimeFormatter ISO_INSTANT_FORMATTER =
new DateTimeFormatterBuilder().appendInstant(3).toFormatter();
/** Private constructor for helper class. */
private APIUtils()
{
}
private APIUtils() {}
/**
* Extract the body of a HTTP response as a JSON object.
@@ -68,15 +69,11 @@ public class APIUtils
* @param httpResponse The HTTP response.
* @return A JSON representation of the object.
*/
public static JSONObject convertHTTPResponseToJSON(HttpResponse httpResponse)
{
public static JSONObject convertHTTPResponseToJSON(HttpResponse httpResponse) {
String source = null;
try
{
try {
source = IOUtils.toString(httpResponse.getEntity().getContent(), "UTF-8");
}
catch (IOException e)
{
} catch (IOException e) {
throw new IllegalArgumentException("Could not extract JSON from HTTP response.", e);
}
LOGGER.info("Response body:\n{}", source);
@@ -89,30 +86,21 @@ public class APIUtils
* @param httpResponse http response
* @return error message from the http response
*/
public static String extractErrorMessageFromHttpResponse(HttpResponse httpResponse)
{
public static String extractErrorMessageFromHttpResponse(HttpResponse httpResponse) {
final HttpEntity entity = httpResponse.getEntity();
JsonReader reader = null;
try
{
try {
final InputStream responseStream = entity.getContent();
reader = Json.createReader(responseStream);
return reader.readObject().getString("message");
}
catch (JSONException error)
{
} catch (JSONException error) {
LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, error);
}
catch (ParseException | IOException error)
{
} catch (ParseException | IOException error) {
LOGGER.error("Parsing message body failed.", error);
}
finally
{
if (reader != null)
{
} finally {
if (reader != null) {
reader.close();
}
}

View File

@@ -29,16 +29,6 @@ package org.alfresco.rest.core.v0;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
import org.alfresco.dataprep.ContentService;
@@ -64,33 +54,42 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* The base API class containing common methods for making v0 API requests
*
* @author Kristijan Conkas
* @since 2.5
*/
public abstract class BaseAPI
{
public abstract class BaseAPI {
// logger
protected static final Logger LOGGER = LoggerFactory.getLogger(BaseAPI.class);
/** exception key in JSON response body */
private static final String EXCEPTION_KEY = "exception";
private static final String MESSAGE_KEY = "message";
public static final String NODE_PREFIX = "workspace/SpacesStore/";
protected static final String UPDATE_METADATA_API = "{0}node/{1}/formprocessor";
protected static final String ACTIONS_API = "{0}actionQueue";
protected static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue";
public static final String RM_SITE_ID = "rm";
protected static final String SHARE_ACTION_API = "{0}internal/shared/share/workspace/SpacesStore/{1}";
protected static final String SHARE_ACTION_API =
"{0}internal/shared/share/workspace/SpacesStore/{1}";
private static final String SLINGSHOT_PREFIX = "alfresco/s/slingshot/";
@Autowired
private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
@Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
@Autowired
protected ContentService contentService;
@Autowired protected ContentService contentService;
public static final String NODE_REF_WORKSPACE_SPACES_STORE = "workspace://SpacesStore/";
private static final String FILE_PLAN_PATH = "/Sites/rm/documentLibrary";
@@ -102,20 +101,15 @@ public abstract class BaseAPI
* @return list of specified property values in result
* @throws RuntimeException for malformed response
*/
protected List<String> getPropertyValues(JSONObject result, String propertyName)
{
protected List<String> getPropertyValues(JSONObject result, String propertyName) {
ArrayList<String> results = new ArrayList<>();
try
{
try {
JSONArray items = result.getJSONArray("items");
for (int i = 0; i < items.length(); i++)
{
for (int i = 0; i < items.length(); i++) {
results.add(items.getJSONObject(i).getString(propertyName));
}
}
catch (JSONException error)
{
} catch (JSONException error) {
throw new RuntimeException("Unable to parse result", error);
}
@@ -124,62 +118,55 @@ public abstract class BaseAPI
/**
* Helper method to extract the property value for the given nodeRef and property name
*
*
* @param result
* @param nodeRef
* @param propertyName
* @return
*/
protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName)
{
protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName) {
String propertyValue = "";
try
{
try {
JSONArray items = result.getJSONArray("items");
for (int i = 0; i < items.length(); i++)
{
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.getJSONObject(i);
if(nodeRef.equals(item.getString("nodeRef")))
{
if (nodeRef.equals(item.getString("nodeRef"))) {
propertyValue = item.getJSONObject("properties").getString(propertyName);
}
}
}
catch (JSONException error)
{
} catch (JSONException error) {
throw new RuntimeException("Unable to parse result", error);
}
return propertyValue;
}
/**
* Helper method to extract property values from request result and put them in map as a list that corresponds to a unique property value.
* Helper method to extract property values from request result and put them in map as a list
* that corresponds to a unique property value.
*
* @param requestResult the request response
* @return a map containing information about multiple properties values that correspond to a unique one
* @return a map containing information about multiple properties values that correspond to a
* unique one
* @throws RuntimeException for malformed response
*/
protected Map<String, List<String>> getPropertyValuesByUniquePropertyValue(JSONObject requestResult, String uniqueProperty, List<String> otherProperties)
{
protected Map<String, List<String>> getPropertyValuesByUniquePropertyValue(
JSONObject requestResult, String uniqueProperty, List<String> otherProperties) {
Map<String, List<String>> valuesByUniqueProperty = new HashMap<>();
try
{
try {
JSONArray items = requestResult.getJSONArray("items");
for (int i = 0; i < items.length(); i++)
{
for (int i = 0; i < items.length(); i++) {
List<String> otherPropertiesValues = new ArrayList<>();
for (int j = 0; j < otherProperties.size(); j++)
{
otherPropertiesValues.add(items.getJSONObject(i).get(otherProperties.get(j)).toString());
for (int j = 0; j < otherProperties.size(); j++) {
otherPropertiesValues.add(
items.getJSONObject(i).get(otherProperties.get(j)).toString());
}
valuesByUniqueProperty.put(items.getJSONObject(i).getString(uniqueProperty), otherPropertiesValues);
valuesByUniqueProperty.put(
items.getJSONObject(i).getString(uniqueProperty), otherPropertiesValues);
}
}
catch (JSONException error)
{
} catch (JSONException error) {
throw new RuntimeException("Unable to parse result", error);
}
@@ -191,13 +178,12 @@ public abstract class BaseAPI
*
* @param username the username
* @param password the password
* @param path the path to the container eg. in case of a category it would be the category name,
* in case of a folder it would be /categoryName/folderName
* when trying to get File Plan, the path would be ""
* @param path the path to the container eg. in case of a category it would be the category
* name, in case of a folder it would be /categoryName/folderName when trying to get File
* Plan, the path would be ""
* @return the container nodeRef
*/
public String getItemNodeRef(String username, String password, String path)
{
public String getItemNodeRef(String username, String password, String path) {
return contentService.getNodeRefByPath(username, password, FILE_PLAN_PATH + path);
}
@@ -206,17 +192,14 @@ public abstract class BaseAPI
*
* @param username the user's username
* @param password its password
* @param path the object path
* @param path the object path
* @return the object in case it exists, null if its does not exist
*/
protected CmisObject getObjectByPath(String username, String password, String path)
{
protected CmisObject getObjectByPath(String username, String password, String path) {
CmisObject object;
try
{
try {
object = contentService.getCMISSession(username, password).getObjectByPath(path);
} catch (CmisObjectNotFoundException notFoundError)
{
} catch (CmisObjectNotFoundException notFoundError) {
return null;
}
return object;
@@ -230,23 +213,19 @@ public abstract class BaseAPI
* @param parameters if the request has parameters
* @return result object (see API reference for more details), null for any errors
*/
protected JSONObject facetedRequest(String username, String password, List<NameValuePair> parameters, String requestURI)
{
protected JSONObject facetedRequest(
String username, String password, List<NameValuePair> parameters, String requestURI) {
String requestURL;
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
if (parameters == null || parameters.isEmpty())
{
requestURL = MessageFormat.format(
requestURI,
client.getAlfrescoUrl());
}
else
{
requestURL = MessageFormat.format(
requestURI,
client.getAlfrescoUrl(),
URLEncodedUtils.format(parameters, "UTF-8"));
if (parameters == null || parameters.isEmpty()) {
requestURL = MessageFormat.format(requestURI, client.getAlfrescoUrl());
} else {
requestURL =
MessageFormat.format(
requestURI,
client.getAlfrescoUrl(),
URLEncodedUtils.format(parameters, "UTF-8"));
}
LOGGER.info("On GET {}, received following response: ", requestURL);
client.close();
@@ -255,89 +234,77 @@ public abstract class BaseAPI
/**
* Helper method for GET requests
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected JSONObject doGetRequest(String adminUser,
String adminPassword,
String urlTemplate,
String ... urlTemplateParams)
{
protected JSONObject doGetRequest(
String adminUser,
String adminPassword,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String requestUrl = MessageFormat.format(
urlTemplate,
client.getApiUrl(),
urlTemplateParams);
String requestUrl =
MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams);
client.close();
try
{
try {
return doRequest(HttpGet.class, requestUrl, adminUser, adminPassword, null);
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doGetRequest failed", error);
}
}
/**
* Helper method for Delete requests
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected JSONObject doDeleteRequest(String adminUser,
String adminPassword,
String urlTemplate,
String ... urlTemplateParams)
{
protected JSONObject doDeleteRequest(
String adminUser,
String adminPassword,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String requestUrl = MessageFormat.format(
urlTemplate,
client.getApiUrl(),
urlTemplateParams);
String requestUrl =
MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams);
client.close();
try
{
try {
return doRequest(HttpDelete.class, requestUrl, adminUser, adminPassword, null);
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doDeleteRequest failed", error);
}
}
/**
* Helper method for PUT requests
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param requestParams zero or more endpoint specific request parameters
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected JSONObject doPutRequest(String adminUser,
String adminPassword,
JSONObject requestParams,
String urlTemplate,
String ... urlTemplateParams)
{
protected JSONObject doPutRequest(
String adminUser,
String adminPassword,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String requestUrl = MessageFormat.format(
urlTemplate,
client.getApiUrl(),
urlTemplateParams);
String requestUrl =
MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams);
client.close();
try
{
try {
return doRequest(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams);
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doPutRequest failed", error);
}
}
@@ -352,15 +319,22 @@ public abstract class BaseAPI
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected HttpResponse doPutJsonRequest(String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams)
{
protected HttpResponse doPutJsonRequest(
String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
return doPutJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getApiUrl(), requestParams, urlTemplate, urlTemplateParams);
return doPutJsonRequest(
adminUser,
adminPassword,
expectedStatusCode,
client.getApiUrl(),
requestParams,
urlTemplate,
urlTemplateParams);
}
/**
@@ -375,23 +349,25 @@ public abstract class BaseAPI
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
* @throws AssertionError if the returned status code is not as expected.
*/
private HttpResponse doPutJsonRequest(String adminUser,
String adminPassword,
int expectedStatusCode,
String urlStart,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams)
{
private HttpResponse doPutJsonRequest(
String adminUser,
String adminPassword,
int expectedStatusCode,
String urlStart,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
String requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams);
try
{
HttpResponse httpResponse = doRequestJson(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams);
assertEquals("PUT request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode());
try {
HttpResponse httpResponse =
doRequestJson(
HttpPut.class, requestUrl, adminUser, adminPassword, requestParams);
assertEquals(
"PUT request to " + requestUrl + " was not successful.",
expectedStatusCode,
httpResponse.getStatusLine().getStatusCode());
return httpResponse;
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doPutRequest failed", error);
}
}
@@ -404,10 +380,9 @@ public abstract class BaseAPI
* @param urlTemplateParams Any parameters that need to be filled into the URL template.
* @return The resultant URL.
*/
private String formatRequestUrl(String urlStart, String urlTemplate, String[] urlTemplateParams)
{
if (urlTemplateParams.length == 1)
{
private String formatRequestUrl(
String urlStart, String urlTemplate, String[] urlTemplateParams) {
if (urlTemplateParams.length == 1) {
// The format method needs some help to know not to use the whole array object.
return MessageFormat.format(urlTemplate, urlStart, urlTemplateParams[0]);
}
@@ -416,31 +391,27 @@ public abstract class BaseAPI
/**
* Helper method for POST requests
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param requestParams zero or more endpoint specific request parameters
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected JSONObject doPostRequest(String adminUser,
String adminPassword,
JSONObject requestParams,
String urlTemplate,
String ... urlTemplateParams)
{
protected JSONObject doPostRequest(
String adminUser,
String adminPassword,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String requestUrl = MessageFormat.format(
urlTemplate,
client.getApiUrl(),
urlTemplateParams);
String requestUrl =
MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams);
client.close();
try
{
try {
return doRequest(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams);
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doPostRequest failed", error);
}
}
@@ -455,15 +426,22 @@ public abstract class BaseAPI
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected HttpResponse doPostJsonRequest(String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams)
{
protected HttpResponse doPostJsonRequest(
String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
return doPostJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getApiUrl(), requestParams, urlTemplate, urlTemplateParams);
return doPostJsonRequest(
adminUser,
adminPassword,
expectedStatusCode,
client.getApiUrl(),
requestParams,
urlTemplate,
urlTemplateParams);
}
/**
@@ -476,15 +454,22 @@ public abstract class BaseAPI
* @param urlTemplate request URL template
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
*/
protected HttpResponse doSlingshotPostJsonRequest(String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams)
{
protected HttpResponse doSlingshotPostJsonRequest(
String adminUser,
String adminPassword,
int expectedStatusCode,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
return doPostJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getAlfrescoUrl() + SLINGSHOT_PREFIX, requestParams, urlTemplate, urlTemplateParams);
return doPostJsonRequest(
adminUser,
adminPassword,
expectedStatusCode,
client.getAlfrescoUrl() + SLINGSHOT_PREFIX,
requestParams,
urlTemplate,
urlTemplateParams);
}
/**
@@ -499,30 +484,33 @@ public abstract class BaseAPI
* @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i>
* @throws AssertionError if the returned status code is not as expected.
*/
private HttpResponse doPostJsonRequest(String adminUser,
String adminPassword,
int expectedStatusCode,
String urlStart,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams)
{
private HttpResponse doPostJsonRequest(
String adminUser,
String adminPassword,
int expectedStatusCode,
String urlStart,
JSONObject requestParams,
String urlTemplate,
String... urlTemplateParams) {
String requestUrl;
requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams);
try
{
HttpResponse httpResponse = doRequestJson(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams);
assertEquals("POST request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode());
try {
HttpResponse httpResponse =
doRequestJson(
HttpPost.class, requestUrl, adminUser, adminPassword, requestParams);
assertEquals(
"POST request to " + requestUrl + " was not successful.",
expectedStatusCode,
httpResponse.getStatusLine().getStatusCode());
return httpResponse;
}
catch (InstantiationException | IllegalAccessException error)
{
} catch (InstantiationException | IllegalAccessException error) {
throw new IllegalArgumentException("doPostRequest failed", error);
}
}
/**
* Helper method for handling generic HTTP requests
*
* @param requestType request type (a subclass of {@link HttpRequestBase})
* @param requestUrl URL the request is to be sent to
* @param adminUser user with administrative privileges
@@ -533,88 +521,76 @@ public abstract class BaseAPI
* @throws InstantiationException for invalid <i>requestType</i>
*/
private <T extends HttpRequestBase> JSONObject doRequest(
Class<T> requestType,
String requestUrl,
String adminUser,
String adminPassword,
JSONObject requestParams) throws InstantiationException, IllegalAccessException
{
Class<T> requestType,
String requestUrl,
String adminUser,
String adminPassword,
JSONObject requestParams)
throws InstantiationException, IllegalAccessException {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
T request = requestType.newInstance();
JSONObject responseBody = null;
JSONObject returnValues = null;
try
{
try {
request.setURI(new URI(requestUrl));
if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase)
{
((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString()));
if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) {
((HttpEntityEnclosingRequestBase) request)
.setEntity(new StringEntity(requestParams.toString()));
}
LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl);
LOGGER.info("Request body: {}", requestParams);
HttpResponse response = client.execute(adminUser, adminPassword, request);
LOGGER.info("Response: {}", response.getStatusLine());
try
{
try {
responseBody = new JSONObject(EntityUtils.toString(response.getEntity()));
}
catch (JSONException error)
{
LOGGER.error("Converting message body to JSON failed. Body: {}", responseBody, error);
}
catch (ParseException | IOException error)
{
} catch (JSONException error) {
LOGGER.error(
"Converting message body to JSON failed. Body: {}", responseBody, error);
} catch (ParseException | IOException error) {
LOGGER.error("Parsing message body failed.", error);
}
switch (response.getStatusLine().getStatusCode())
{
switch (response.getStatusLine().getStatusCode()) {
case HttpStatus.SC_OK:
case HttpStatus.SC_CREATED:
// request successful
if (responseBody != null)
{
if (responseBody != null) {
returnValues = responseBody;
}
break;
case HttpStatus.SC_INTERNAL_SERVER_ERROR:
if (responseBody != null && responseBody.has(EXCEPTION_KEY))
{
LOGGER.error("Request failed with error message: {}", responseBody.getString(MESSAGE_KEY));
if (responseBody != null && responseBody.has(EXCEPTION_KEY)) {
LOGGER.error(
"Request failed with error message: {}",
responseBody.getString(MESSAGE_KEY));
returnValues = responseBody;
}
break;
case HttpStatus.SC_BAD_REQUEST:
case HttpStatus.SC_UNPROCESSABLE_ENTITY:
if (responseBody != null && responseBody.has(EXCEPTION_KEY))
{
if (responseBody != null && responseBody.has(EXCEPTION_KEY)) {
LOGGER.error("Request failed: {}", responseBody.getString(EXCEPTION_KEY));
returnValues = responseBody;
}
break;
default:
LOGGER.error("Request returned unexpected HTTP status {}", response.getStatusLine().getStatusCode());
LOGGER.error(
"Request returned unexpected HTTP status {}",
response.getStatusLine().getStatusCode());
break;
}
}
catch (JSONException error)
{
} catch (JSONException error) {
LOGGER.error("Unable to extract response parameter", error);
}
catch (UnsupportedEncodingException | URISyntaxException error1)
{
} catch (UnsupportedEncodingException | URISyntaxException error1) {
LOGGER.error("Unable to construct request", error1);
}
finally
{
if (request != null)
{
} finally {
if (request != null) {
request.releaseConnection();
}
client.close();
@@ -628,19 +604,18 @@ public abstract class BaseAPI
String requestUrl,
String adminUser,
String adminPassword,
JSONObject requestParams) throws InstantiationException, IllegalAccessException
{
JSONObject requestParams)
throws InstantiationException, IllegalAccessException {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
T request = requestType.newInstance();
try
{
try {
request.setURI(new URI(requestUrl));
request.setHeader("Content-Type", "application/json");
if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase)
{
((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString()));
if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) {
((HttpEntityEnclosingRequestBase) request)
.setEntity(new StringEntity(requestParams.toString()));
}
LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl);
@@ -648,15 +623,10 @@ public abstract class BaseAPI
HttpResponse httpResponse = client.execute(adminUser, adminPassword, request);
LOGGER.info("Response: {}", httpResponse.getStatusLine());
return httpResponse;
}
catch (UnsupportedEncodingException | URISyntaxException error1)
{
} catch (UnsupportedEncodingException | URISyntaxException error1) {
LOGGER.error("Unable to construct request", error1);
}
finally
{
if (request != null)
{
} finally {
if (request != null) {
request.releaseConnection();
}
client.close();
@@ -665,12 +635,8 @@ public abstract class BaseAPI
return null;
}
/**
* Used to set RM items properties
* including records, categories and folders
*/
public enum RMProperty
{
/** Used to set RM items properties including records, categories and folders */
public enum RMProperty {
NAME,
TITLE,
CONTENT,
@@ -687,8 +653,7 @@ public abstract class BaseAPI
PUBLICATION_DATE
}
public enum RETENTION_SCHEDULE
{
public enum RETENTION_SCHEDULE {
NAME,
DESCRIPTION,
RETENTION_AUTHORITY,
@@ -702,11 +667,8 @@ public abstract class BaseAPI
COMBINE_DISPOSITION_STEP_CONDITIONS
}
/**
* Used to execute rm actions on a node
*/
public enum RM_ACTIONS
{
/** Used to execute rm actions on a node */
public enum RM_ACTIONS {
EDIT_DISPOSITION_DATE("editDispositionActionAsOfDate"),
END_RETENTION("retain"),
CUT_OFF("cutoff"),
@@ -717,19 +679,16 @@ public abstract class BaseAPI
DESTROY("destroy");
String action;
private RM_ACTIONS(String action)
{
private RM_ACTIONS(String action) {
this.action = action;
}
public String getAction()
{
public String getAction() {
return action;
}
}
public enum PermissionType
{
public enum PermissionType {
SET_READ,
REMOVE_READ,
SET_READ_AND_FILE,
@@ -740,14 +699,13 @@ public abstract class BaseAPI
* Util to return the property value from a map
*
* @param properties the map containing properties
* @param property to get value for
* @param property to get value for
* @return the property value
*/
public <K extends Enum<?>> String getPropertyValue(Map<K, String> properties, Enum<?> property)
{
public <K extends Enum<?>> String getPropertyValue(
Map<K, String> properties, Enum<?> property) {
String value = properties.get(property);
if (value == null)
{
if (value == null) {
return "";
}
return value;
@@ -756,18 +714,22 @@ public abstract class BaseAPI
/**
* Retrieves the property value and decides if that gets to be added to the request
*
* @param requestParams the request parameters
* @param requestParams the request parameters
* @param propertyRequestValue the property name in the request, eg. "prop_cm_name"
* @param itemProperties map of item's properties values
* @param property the property in the property map to check value for
* @return the json object used in request with the property with its value added if that is not null or empty
* @param itemProperties map of item's properties values
* @param property the property in the property map to check value for
* @return the json object used in request with the property with its value added if that is not
* null or empty
*/
protected <K extends Enum<?>> JSONObject addPropertyToRequest(JSONObject requestParams, String propertyRequestValue, Map<K, String> itemProperties, Enum<?> property) throws JSONException
{
protected <K extends Enum<?>> JSONObject addPropertyToRequest(
JSONObject requestParams,
String propertyRequestValue,
Map<K, String> itemProperties,
Enum<?> property)
throws JSONException {
String propertyValue = getPropertyValue(itemProperties, property);
if (!propertyValue.equals(""))
{
if (!propertyValue.equals("")) {
requestParams.put(propertyRequestValue, propertyValue);
}
return requestParams;
@@ -778,16 +740,14 @@ public abstract class BaseAPI
*
* @param username the username with whom the delete is performed
* @param password the user's password
* @param itemPath the path to the item eg. in case of a category it would be the "/" + category name,
* in case of a folder or subCategory it would be /categoryName/folderName or /categoryName/subCategoryName/
* in case of a record /categoryName/folderName/recordName
* @param itemPath the path to the item eg. in case of a category it would be the "/" + category
* name, in case of a folder or subCategory it would be /categoryName/folderName or
* /categoryName/subCategoryName/ in case of a record /categoryName/folderName/recordName
* @throws AssertionError if the delete was not successful.
*/
protected void deleteItem(String username, String password, String itemPath)
{
protected void deleteItem(String username, String password, String itemPath) {
CmisObject container = getObjectByPath(username, password, FILE_PLAN_PATH + itemPath);
if (container != null)
{
if (container != null) {
container.delete();
}
assertNull("Could not delete " + itemPath, getObjectByPath(username, password, itemPath));
@@ -798,8 +758,7 @@ public abstract class BaseAPI
*
* @return node ref spaces store
*/
public static String getNodeRefSpacesStore()
{
public static String getNodeRefSpacesStore() {
return NODE_REF_WORKSPACE_SPACES_STORE;
}
@@ -808,8 +767,7 @@ public abstract class BaseAPI
*
* @return the File Plan path
*/
public static String getFilePlanPath()
{
public static String getFilePlanPath() {
return FILE_PLAN_PATH;
}
}

View File

@@ -26,8 +26,7 @@
*/
package org.alfresco.rest.core.v0;
public enum RMEvents
{
public enum RMEvents {
ABOLISHED("abolished"),
ALL_ALLOWANCES_GRANTED_ARE_TERMINATED("all_allowances_granted_are_terminated"),
CASE_CLOSED("case_closed"),
@@ -37,13 +36,11 @@ public enum RMEvents
STUDY_COMPLETE("study_complete");
private String eventName;
RMEvents(String eventName)
{
RMEvents(String eventName) {
this.eventName = eventName;
}
public String getEventName()
{
public String getEventName() {
return eventName;
}
}

View File

@@ -26,8 +26,6 @@
*/
package org.alfresco.rest.rm.community.model.audit;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -35,8 +33,11 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for audit entry
*
@@ -47,43 +48,40 @@ import org.alfresco.utility.model.TestModel;
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class AuditEntry extends TestModel
{
@JsonProperty (required = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class AuditEntry extends TestModel {
@JsonProperty(required = true)
private String nodeName;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<Object> changedValues;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String identifier;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String path;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeRef;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String fullName;
@JsonProperty
private String createPerson;
@JsonProperty private String createPerson;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String userName;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String userRole;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String event;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String timestamp;
}

View File

@@ -29,12 +29,10 @@ package org.alfresco.rest.rm.community.model.audit;
/**
* Enumerates the list of events audited
*
* @author Rodica Sutu
* @author Rodica Sutu
* @since 2.7
*
*/
public enum AuditEvents
{
public enum AuditEvents {
CREATE_PERSON("Create Person", "Create User"),
DELETE_PERSON("Delete Person", "Delete User"),
CREATE_USER_GROUP("Create User Group", "Create User Group"),
@@ -54,8 +52,7 @@ public enum AuditEvents
/** display name for the event audited */
public final String eventDisplayName;
AuditEvents(String event, String displayName)
{
AuditEvents(String event, String displayName) {
this.event = event;
this.eventDisplayName = displayName;
}

View File

@@ -26,8 +26,6 @@
*/
package org.alfresco.rest.rm.community.model.common;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -35,6 +33,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* POJO for id/name pair
*
@@ -45,17 +45,16 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class IdNamePair
{
@JsonProperty (required = true)
public class IdNamePair {
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
}

View File

@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.alfresco.utility.model.TestModel;
/**
@@ -42,10 +43,7 @@ import org.alfresco.utility.model.TestModel;
@Builder
@Data
@EqualsAndHashCode(callSuper = true)
//@NoArgsConstructor
//@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class Owner extends TestModel
{
}
// @NoArgsConstructor
// @AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Owner extends TestModel {}

View File

@@ -26,18 +26,18 @@
*/
package org.alfresco.rest.rm.community.model.common;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for path parameter
*
@@ -49,14 +49,13 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class Path extends TestModel
{
@JsonProperty (required = true)
public class Path extends TestModel {
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private Boolean isComplete;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<IdNamePair> elements;
}

View File

@@ -43,11 +43,10 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReviewPeriod
{
@JsonProperty (required = true)
public class ReviewPeriod {
@JsonProperty(required = true)
private String periodType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String expression;
}

View File

@@ -32,22 +32,16 @@ package org.alfresco.rest.rm.community.model.custom;
* @author Rodica Sutu
* @since 2.6
*/
public enum CustomDefinitions
{
public enum CustomDefinitions {
ATTACHMENT("Attachment"),
MESSAGE("Message"),
NEXT_VERSION("Next Version"),
RENDITION("Rendition");
/**
* The name of custom reference.
*/
/** The name of custom reference. */
private String definition;
/**
* Private constructor.
*/
CustomDefinitions(String definition)
{
/** Private constructor. */
CustomDefinitions(String definition) {
this.definition = definition;
}
@@ -56,8 +50,7 @@ public enum CustomDefinitions
*
* @return The value of custom reference.
*/
public String getDefinition()
{
public String getDefinition() {
return definition;
}
}

View File

@@ -26,20 +26,20 @@
*/
package org.alfresco.rest.rm.community.model.fileplan;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for file plan
*
@@ -52,48 +52,45 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class FilePlan extends TestModel
{
public class FilePlan extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private FilePlanProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
}

View File

@@ -35,14 +35,14 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
* POJO for file plan properties
*
@@ -54,29 +54,28 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class FilePlanProperties extends TestModel
{
public class FilePlanProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_COMPONENT_ID)
@JsonProperty(required = true, value = PROPERTIES_COMPONENT_ID)
private String componentd;
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
/************************/
/** Optional parameters */
/************************/
@JsonProperty (PROPERTIES_COUNT)
@JsonProperty(PROPERTIES_COUNT)
private Integer count;
@JsonProperty (PROPERTIES_TITLE)
@JsonProperty(PROPERTIES_TITLE)
private String title;
@JsonProperty (PROPERTIES_DESCRIPTION)
@JsonProperty(PROPERTIES_DESCRIPTION)
private String description;
}

View File

@@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.fileplancomponents;
* @author Tuna Aksoy
* @since 2.6
*/
public class FilePlanComponentAlias
{
public class FilePlanComponentAlias {
public static final String FILE_PLAN_ALIAS = "-filePlan-";
public static final String TRANSFERS_ALIAS = "-transfers-";
public static final String UNFILED_RECORDS_CONTAINER_ALIAS = "-unfiled-";

View File

@@ -32,20 +32,17 @@ package org.alfresco.rest.rm.community.model.fileplancomponents;
* @author Kristijan Conkas
* @since 2.6
*/
public class FilePlanComponentAspects
{
public class FilePlanComponentAspects {
/** Private constructor to prevent instantiation. */
private FilePlanComponentAspects()
{
}
private FilePlanComponentAspects() {}
// aspect present on completed records
public static final String ASPECTS_COMPLETED_RECORD = "rma:declaredRecord";
// aspect present on record folders/categories with vital records
public static final String ASPECTS_VITAL_RECORD_DEFINITION= "rma:vitalRecordDefinition";
// aspect present on record folders/categories with vital records
public static final String ASPECTS_VITAL_RECORD_DEFINITION = "rma:vitalRecordDefinition";
// aspect present on vital records
// aspect present on vital records
public static final String ASPECTS_VITAL_RECORD = "rma:vitalRecord";
// Frozen aspect

View File

@@ -32,61 +32,79 @@ package org.alfresco.rest.rm.community.model.fileplancomponents;
* @author Tuna Aksoy
* @since 2.6
*/
public class FilePlanComponentFields
{
public class FilePlanComponentFields {
/** Common properties for file plans, record categories, record folders and records */
public static final String PROPERTIES_ROOT_NODE_REF = "rma:rootNodeRef";
public static final String PROPERTIES_IDENTIFIER = "rma:identifier";
/** Common properties for record categories, record folders and records */
// Non-electronic record properties
public static final String PROPERTIES_TITLE = "cm:title";
public static final String PROPERTIES_DESCRIPTION = "cm:description";
/** Common properties for record categories and record folders **/
/** Common properties for record categories and record folders * */
public static final String PROPERTIES_VITAL_RECORD_INDICATOR = "rma:vitalRecordIndicator";
public static final String PROPERTIES_REVIEW_PERIOD = "rma:reviewPeriod";
public static final String PROPERTIES_OWNER = "cm:owner";
public static final String PROPERTIES_AUTHOR="cm:author";
public static final String PROPERTIES_AUTHOR = "cm:author";
/** Common properties for record folders and records */
public static final String PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE = "rma:recordSearchHasDispositionSchedule";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION = "rma:recordSearchDispositionPeriodExpression";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY = "rma:recordSearchDispositionAuthority";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF = "rma:recordSearchDispositionActionAsOf";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD = "rma:recordSearchDispositionPeriod";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME = "rma:recordSearchDispositionActionName";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE = "rma:recordSearchDispositionEventsEligible";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS = "rma:recordSearchDispositionInstructions";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS = "rma:recordSearchDispositionEvents";
public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_BY = "rma:declassificationReviewCompletedBy";
public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_AT = "rma:declassificationReviewCompletedAt";
public static final String PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE =
"rma:recordSearchHasDispositionSchedule";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION =
"rma:recordSearchDispositionPeriodExpression";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY =
"rma:recordSearchDispositionAuthority";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF =
"rma:recordSearchDispositionActionAsOf";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD =
"rma:recordSearchDispositionPeriod";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME =
"rma:recordSearchDispositionActionName";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE =
"rma:recordSearchDispositionEventsEligible";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS =
"rma:recordSearchDispositionInstructions";
public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS =
"rma:recordSearchDispositionEvents";
public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_BY =
"rma:declassificationReviewCompletedBy";
public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_AT =
"rma:declassificationReviewCompletedAt";
/** File plan properties */
public static final String PROPERTIES_COMPONENT_ID = "st:componentId";
public static final String PROPERTIES_COUNT = "rma:count";
/** Record category properties */
// All fields are shared with record folders
/** Record folder properties */
public static final String PROPERTIES_IS_CLOSED = "rma:isClosed"; // not to be confused with IS_CLOSED!
public static final String PROPERTIES_IS_CLOSED =
"rma:isClosed"; // not to be confused with IS_CLOSED!
public static final String PROPERTIES_HELD_CHILDREN_COUNT = "rma:heldChildrenCount";
public static final String PROPERTIES_LOCATION = "rma:location";
public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD = "rma:recordSearchVitalRecordReviewPeriod";
public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION = "rma:recordSearchVitalRecordReviewPeriodExpression";
public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD =
"rma:recordSearchVitalRecordReviewPeriod";
public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION =
"rma:recordSearchVitalRecordReviewPeriodExpression";
/**
* Record properties
*/
/** Record properties */
public static final String PROPERTIES_CLASSIFICATION = "sc:classification";
public static final String PROPERTIES_DATE_FILED = "rma:dateFiled";
public static final String PROPERTIES_ORIGINAL_NAME = "rma:origionalName";
public static final String PROPERTIES_REVIEW_AS_OF = "rma:reviewAsOf";
/** Electronic record properties */
public static final String PROPERTIES_VERSION_TYPE = "cm:versionType";
public static final String PROPERTIES_VERSION_LABEL = "cm:versionLabel";
public static final String PROPERTIES_VERSIONED_NODEREF = "rmv:versionedNodeRef";
public static final String PROPERTIES_RMV_VERSIONED = "rmv:versionLabel";
@@ -105,12 +123,16 @@ public class FilePlanComponentFields
public static final String PROPERTIES_SOFTWARE = "exif:software";
public static final String PROPERTIES_X_RESOLUTION = "exif:xResolution";
public static final String PROPERTIES_Y_RESOLUTION = "exif:yResolution";
public static final String PROPERTIES_RECORD_ORIGINATING_LOCATION = "rma:recordOriginatingLocation";
public static final String PROPERTIES_RECORD_ORIGINATING_USER_ID = "rma:recordOriginatingUserId";
public static final String PROPERTIES_RECORD_ORIGINATING_CREATION_DATE = "rma:recordOriginatingCreationDate";
public static final String PROPERTIES_RECORD_ORIGINATING_LOCATION =
"rma:recordOriginatingLocation";
public static final String PROPERTIES_RECORD_ORIGINATING_USER_ID =
"rma:recordOriginatingUserId";
public static final String PROPERTIES_RECORD_ORIGINATING_CREATION_DATE =
"rma:recordOriginatingCreationDate";
/** Non-electronic record properties */
public static final String PROPERTIES_SHELF = "rma:shelf";
public static final String PROPERTIES_STORAGE_LOCATION = "rma:storageLocation";
public static final String PROPERTIES_FILE = "rma:file";
public static final String PROPERTIES_BOX = "rma:box";
@@ -119,15 +141,18 @@ public class FilePlanComponentFields
/** Transfer properties */
public static final String PROPERTIES_PDF_INDICATOR = "rma:transferPDFIndicator";
public static final String PROPERTIES_TRANSFER_LOCATION = "rma:transferLocation";
public static final String PROPERTIES_ACCESSION_INDICATOR = "rma:transferAccessionIndicator";
/** Parameters */
public static final String RELATIVE_PATH = "relativePath";
public static final String INCLUDE = "include";
/** Include options */
public static final String ALLOWABLE_OPERATIONS = "allowableOperations";
public static final String IS_CLOSED = "isClosed";
public static final String IS_COMPLETED = "isCompleted";
public static final String CONTENT = "content";

View File

@@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.fileplancomponents;
* @author Tuna Aksoy
* @since 2.6
*/
public class FilePlanComponentType
{
public class FilePlanComponentType {
public static final String FILE_PLAN_TYPE = "rma:filePlan";
public static final String RECORD_CATEGORY_TYPE = "rma:recordCategory";
public static final String RECORD_FOLDER_TYPE = "rma:recordFolder";

View File

@@ -33,6 +33,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
@@ -45,12 +46,11 @@ import org.alfresco.utility.model.TestModel;
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class HoldEntry extends TestModel
{
@JsonProperty (required = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class HoldEntry extends TestModel {
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeRef;
}

View File

@@ -26,10 +26,14 @@
*/
package org.alfresco.rest.rm.community.model.record;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
import org.alfresco.rest.model.RestByUserModel;
@@ -37,11 +41,7 @@ import org.alfresco.rest.model.RestNodeModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* POJO for record
@@ -54,76 +54,66 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class Record extends TestModel implements IRestModel<RestNodeModel>
{
public final static String CONTENT_NODE_TYPE = "cm:content";
public class Record extends TestModel implements IRestModel<RestNodeModel> {
public static final String CONTENT_NODE_TYPE = "cm:content";
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private RecordContent content;
@JsonProperty private RecordContent content;
@JsonProperty
private Boolean isCompleted;
@JsonProperty private Boolean isCompleted;
@JsonProperty
private RecordProperties properties;
@JsonProperty private RecordProperties properties;
@JsonProperty
private List<String> aspectNames;
@JsonProperty private List<String> aspectNames;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
@Override
public ModelAssertion<RestNodeModel> assertThat()
{
public ModelAssertion<RestNodeModel> assertThat() {
return new ModelAssertion<>(this);
}
@Override
public ModelAssertion<RestNodeModel> and()
{
public ModelAssertion<RestNodeModel> and() {
return assertThat();
}
@JsonProperty (value = "entry")
@JsonProperty(value = "entry")
RestNodeModel model;
@Override
public RestNodeModel onModel()
{
public RestNodeModel onModel() {
return model;
}
}

View File

@@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.record;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
* POJO for File records
*
@@ -47,8 +47,6 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordBodyFile extends TestModel
{
@JsonProperty
private String targetParentId;
public class RecordBodyFile extends TestModel {
@JsonProperty private String targetParentId;
}

View File

@@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.record;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
* POJO for record content field
*
@@ -48,17 +48,16 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordContent extends TestModel
{
@JsonProperty (required = true)
public class RecordContent extends TestModel {
@JsonProperty(required = true)
private String mimeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String mimeTypeName;
@JsonProperty (required = true)
@JsonProperty(required = true)
private Integer sizeInBytes;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String encoding;
}

View File

@@ -55,6 +55,7 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD;
@@ -63,7 +64,6 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RESOLUTION_UNIT;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_REVIEW_AS_OF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RMV_VERSIONED;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
@@ -79,9 +79,6 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_X_RESOLUTION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_RESOLUTION;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -90,9 +87,13 @@ import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.utility.model.TestModel;
import java.util.Date;
import java.util.List;
/**
* POJO for record properties
*
@@ -105,162 +106,164 @@ import org.alfresco.utility.model.TestModel;
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class RecordProperties extends TestModel
{
public class RecordProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (required = true, value = PROPERTIES_DATE_FILED)
@JsonProperty(required = true, value = PROPERTIES_DATE_FILED)
private String dateField;
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
@JsonProperty(required = true, value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
private Boolean recordSearchHasDispositionSchedule;
@JsonProperty (required = true, value = PROPERTIES_ORIGINAL_NAME)
@JsonProperty(required = true, value = PROPERTIES_ORIGINAL_NAME)
private String originalName;
@JsonProperty (PROPERTIES_CLASSIFICATION)
@JsonProperty(PROPERTIES_CLASSIFICATION)
private List<String> classification;
/*********************************/
/** Electronic record parameters */
/*********************************/
@JsonProperty (PROPERTIES_VERSION_TYPE)
@JsonProperty(PROPERTIES_VERSION_TYPE)
private String versionType;
@JsonProperty (PROPERTIES_VERSION_LABEL)
@JsonProperty(PROPERTIES_VERSION_LABEL)
private String versionLabel;
@JsonProperty(PROPERTIES_VERSIONED_NODEREF)
private String versionedNodeRef;
@JsonProperty (PROPERTIES_RMV_VERSIONED)
@JsonProperty(PROPERTIES_RMV_VERSIONED)
private String recordVersionLabel;
@JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL)
@JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL)
private String dateTimeOriginal;
@JsonProperty (PROPERTIES_EXPOSURE_TIME)
@JsonProperty(PROPERTIES_EXPOSURE_TIME)
private Double exposureTime;
@JsonProperty (PROPERTIES_FLASH)
@JsonProperty(PROPERTIES_FLASH)
private Boolean flash;
@JsonProperty (PROPERTIES_F_NUMBER)
@JsonProperty(PROPERTIES_F_NUMBER)
private Double fNumber;
@JsonProperty (PROPERTIES_FOCAL_LENGTH)
@JsonProperty(PROPERTIES_FOCAL_LENGTH)
private Double focalLength;
@JsonProperty (PROPERTIES_ISO_SPEED_RATINGS)
@JsonProperty(PROPERTIES_ISO_SPEED_RATINGS)
private Integer isoSpeedRatings;
@JsonProperty (PROPERTIES_MANUFACTURER)
@JsonProperty(PROPERTIES_MANUFACTURER)
private String manufacturer;
@JsonProperty (PROPERTIES_MODEL)
@JsonProperty(PROPERTIES_MODEL)
private String model;
@JsonProperty (PROPERTIES_ORIENTATION)
@JsonProperty(PROPERTIES_ORIENTATION)
private Integer orientation;
@JsonProperty (PROPERTIES_PIXEL_X_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_X_DIMENSION)
private Integer pixelXDimension;
@JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION)
private Integer pixelYDimension;
@JsonProperty (PROPERTIES_RESOLUTION_UNIT)
@JsonProperty(PROPERTIES_RESOLUTION_UNIT)
private String resolutionUnit;
@JsonProperty (PROPERTIES_SOFTWARE)
@JsonProperty(PROPERTIES_SOFTWARE)
private String software;
@JsonProperty (PROPERTIES_X_RESOLUTION)
@JsonProperty(PROPERTIES_X_RESOLUTION)
private Double xResolution;
@JsonProperty (PROPERTIES_Y_RESOLUTION)
@JsonProperty(PROPERTIES_Y_RESOLUTION)
private Double yResolution;
@JsonProperty (PROPERTIES_RECORD_ORIGINATING_LOCATION)
@JsonProperty(PROPERTIES_RECORD_ORIGINATING_LOCATION)
private String originatingLocation;
@JsonProperty (PROPERTIES_RECORD_ORIGINATING_USER_ID)
@JsonProperty(PROPERTIES_RECORD_ORIGINATING_USER_ID)
private String originatingUserId;
@JsonProperty (PROPERTIES_RECORD_ORIGINATING_CREATION_DATE)
@JsonProperty(PROPERTIES_RECORD_ORIGINATING_CREATION_DATE)
private String originatingCreationDate;
/*************************************/
/** Non-electronic record parameters */
/*************************************/
@JsonProperty (PROPERTIES_TITLE)
@JsonProperty(PROPERTIES_TITLE)
private String title;
@JsonProperty (PROPERTIES_SHELF)
@JsonProperty(PROPERTIES_SHELF)
private String shelf;
@JsonProperty (PROPERTIES_STORAGE_LOCATION)
@JsonProperty(PROPERTIES_STORAGE_LOCATION)
private String storageLocation;
@JsonProperty (PROPERTIES_FILE)
@JsonProperty(PROPERTIES_FILE)
private String file;
@JsonProperty (PROPERTIES_BOX)
@JsonProperty(PROPERTIES_BOX)
private String box;
@JsonProperty (PROPERTIES_DESCRIPTION)
@JsonProperty(PROPERTIES_DESCRIPTION)
private String description;
@JsonProperty (PROPERTIES_NUMBER_OF_COPIES)
@JsonProperty(PROPERTIES_NUMBER_OF_COPIES)
private Integer numberOfCopies;
@JsonProperty (PROPERTIES_PHYSICAL_SIZE)
@JsonProperty(PROPERTIES_PHYSICAL_SIZE)
private Integer physicalSize;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
@JsonProperty(PROPERTIES_AUTHOR)
private String author;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION)
private String recordSearchDispositionPeriodExpression;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
private String recordSearchDispositionAuthority;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF)
private Date recordSearchDispositionActionAsOf;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD)
private String recordSearchDispositionPeriod;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME)
private String recordSearchDispositionActionName;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE)
private Boolean recordSearchDispositionEventsEligible;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS)
private List<String> recordSearchDispositionEvents;
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
private String recordSearchDispositionInstructions;
@JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD)
@JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD)
private String recordSearchVitalRecordReviewPeriod;
@JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION)
@JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION)
private String recordSearchVitalRecordReviewPeriodExpression;
@JsonProperty(PROPERTIES_REVIEW_AS_OF)
private Date reviewAsOf;
@JsonProperty (PROPERTIES_STORE)
@JsonProperty(PROPERTIES_STORE)
private String store;
@JsonProperty(PROPERTIES_WORM_UNLOCK_DATE)

View File

@@ -26,20 +26,20 @@
*/
package org.alfresco.rest.rm.community.model.recordcategory;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record category
*
@@ -51,53 +51,49 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordCategory extends TestModel
{
public class RecordCategory extends TestModel {
public static final String DEFAULT_FILE_PLAN_ALIAS = "-filePlan-";
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RecordCategoryProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private Boolean hasRetentionSchedule;
@JsonProperty private Boolean hasRetentionSchedule;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
}

View File

@@ -26,20 +26,20 @@
*/
package org.alfresco.rest.rm.community.model.recordcategory;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record category child
*
@@ -51,64 +51,54 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordCategoryChild extends TestModel
{
public class RecordCategoryChild extends TestModel {
public static final String RECORD_FOLDER_NODE_TYPE = "rma:recordFolder";
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private Boolean isRecordCategory;
@JsonProperty private Boolean isRecordCategory;
@JsonProperty
private Boolean isRecordFolder;
@JsonProperty private Boolean isRecordFolder;
@JsonProperty
private RecordCategoryChildProperties properties;
@JsonProperty private RecordCategoryChildProperties properties;
@JsonProperty
private List<String> aspectNames;
@JsonProperty private List<String> aspectNames;
@JsonProperty
private Boolean hasRetentionSchedule;
@JsonProperty private Boolean hasRetentionSchedule;
@JsonProperty
private Boolean isClosed;
@JsonProperty private Boolean isClosed;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
@JsonProperty
private String relativePath;
@JsonProperty private String relativePath;
}

View File

@@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels;
* @author Tuna Aksoy
* @since 2.6
*/
public class RecordCategoryChildCollection extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection>
{
}
public class RecordCategoryChildCollection
extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection> {}

View File

@@ -28,11 +28,11 @@ package org.alfresco.rest.rm.community.model.recordcategory;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.RestModels;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.alfresco.rest.core.RestModels;
/**
* POJO for record category child entry
*
@@ -41,8 +41,6 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RecordCategoryChildEntry extends RestModels<RecordCategory, RecordCategoryChildEntry>
{
@JsonProperty
private RecordCategoryChild entry;
public class RecordCategoryChildEntry extends RestModels<RecordCategory, RecordCategoryChildEntry> {
@JsonProperty private RecordCategoryChild entry;
}

View File

@@ -32,36 +32,37 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IS_CLOSED;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_LOCATION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_REVIEW_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import java.util.Date;
import java.util.List;
/**
* POJO for record category child properties
*
@@ -73,70 +74,68 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordCategoryChildProperties extends TestModel
{
public class RecordCategoryChildProperties extends TestModel {
/**************************************************************************/
/** Mandatory parameters - Shared by record categories and record folders */
/**************************************************************************/
@JsonProperty (required = true, value = PROPERTIES_TITLE)
@JsonProperty(required = true, value = PROPERTIES_TITLE)
private String title;
@JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR)
@JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR)
private Boolean vitalRecordIndicator;
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD)
@JsonSerialize (using = ReviewPeriodSerializer.class)
@JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD)
@JsonSerialize(using = ReviewPeriodSerializer.class)
private ReviewPeriod reviewPeriod;
@JsonProperty (required = true, value = PROPERTIES_DESCRIPTION)
@JsonProperty(required = true, value = PROPERTIES_DESCRIPTION)
private String description;
/*********************************************************/
/** Optional parameters - Applies only to record folders */
/*********************************************************/
@JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT)
@JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT)
private Integer heldChildrenCount;
@JsonProperty (PROPERTIES_LOCATION)
@JsonProperty(PROPERTIES_LOCATION)
private String location;
@JsonProperty (PROPERTIES_IS_CLOSED)
@JsonProperty(PROPERTIES_IS_CLOSED)
private Boolean isClosed;
@JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
@JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
private Boolean recordSearchHasDispositionSchedule;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION)
private String recordSearchDispositionPeriodExpression;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
private String recordSearchDispositionAuthority;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF)
private Date recordSearchDispositionActionAsOf;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD)
private String recordSearchDispositionPeriod;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME)
private String recordSearchDispositionActionName;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE)
private Boolean recordSearchDispositionEventsEligible;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
private String recordSearchDispositionInstructions;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS)
private Boolean recordSearchDispositionEvents;
@JsonProperty (PROPERTIES_OWNER)
private Owner owner;
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS)
private List<String> recordSearchDispositionEvents;
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
}

View File

@@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels;
* @author Tuna Aksoy
* @since 2.6
*/
public class RecordCategoryCollection extends RestModels<RecordCategoryEntry, RecordCategoryCollection>
{
}
public class RecordCategoryCollection
extends RestModels<RecordCategoryEntry, RecordCategoryCollection> {}

View File

@@ -28,12 +28,12 @@ package org.alfresco.rest.rm.community.model.recordcategory;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.fileplan.FilePlan;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.fileplan.FilePlan;
/**
* POJO for file plan entry
*
@@ -43,8 +43,6 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class RecordCategoryEntry extends RestModels<FilePlan, RecordCategoryEntry>
{
@JsonProperty
private RecordCategory entry;
public class RecordCategoryEntry extends RestModels<FilePlan, RecordCategoryEntry> {
@JsonProperty private RecordCategory entry;
}

View File

@@ -35,24 +35,23 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record category properties
*
@@ -64,37 +63,36 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class RecordCategoryProperties extends TestModel
{
@JsonIgnoreProperties(ignoreUnknown = true)
public class RecordCategoryProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD)
@JsonSerialize (using = ReviewPeriodSerializer.class)
@JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD)
@JsonSerialize(using = ReviewPeriodSerializer.class)
private ReviewPeriod reviewPeriod;
@JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR)
@JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR)
private Boolean vitalRecordIndicator;
/************************/
/** Optional parameters */
/************************/
@JsonProperty (PROPERTIES_TITLE)
@JsonProperty(PROPERTIES_TITLE)
private String title;
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (PROPERTIES_DESCRIPTION)
@JsonProperty(PROPERTIES_DESCRIPTION)
private String description;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
@JsonProperty (PROPERTIES_CLASSIFICATION)
@JsonProperty(PROPERTIES_CLASSIFICATION)
private List<String> classification;
}

View File

@@ -26,11 +26,8 @@
*/
package org.alfresco.rest.rm.community.model.recordcategory;
/**
* The property of the dispositioned item that is used to calculate the "as of" period.
*/
public enum RetentionPeriodProperty
{
/** The property of the dispositioned item that is used to calculate the "as of" period. */
public enum RetentionPeriodProperty {
/** Item created date. */
CREATED_DATE("cm:created"),
/** Record filed date. */
@@ -40,13 +37,11 @@ public enum RetentionPeriodProperty
String periodProperty;
RetentionPeriodProperty(String periodProperty)
{
RetentionPeriodProperty(String periodProperty) {
this.periodProperty = periodProperty;
}
public String getPeriodProperty()
{
public String getPeriodProperty() {
return periodProperty;
}
}

View File

@@ -26,20 +26,20 @@
*/
package org.alfresco.rest.rm.community.model.recordfolder;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record folder
*
@@ -51,50 +51,46 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordFolder extends TestModel
{
public class RecordFolder extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RecordFolderProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private Boolean isClosed;
@JsonProperty private Boolean isClosed;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
}

View File

@@ -35,7 +35,4 @@ import org.alfresco.rest.core.RestModels;
* @author Tuna Aksoy
* @since 2.6
*/
public class RecordFolderCollection extends RestModels<RecordFolderEntry, RecordFolderCollection>
{
}
public class RecordFolderCollection extends RestModels<RecordFolderEntry, RecordFolderCollection> {}

View File

@@ -28,15 +28,15 @@ package org.alfresco.rest.rm.community.model.recordfolder;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.record.Record;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.record.Record;
/**
* POJO for record folder entry
*
@@ -48,8 +48,6 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RecordFolderEntry extends RestModels<RecordFolder, RecordFolderEntry>
{
@JsonProperty
private Record entry;
public class RecordFolderEntry extends RestModels<RecordFolder, RecordFolderEntry> {
@JsonProperty private Record entry;
}

View File

@@ -33,10 +33,8 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IS_CLOSED;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_LOCATION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields
.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields
.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION;
@@ -45,23 +43,23 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record folder properties
*
@@ -73,62 +71,60 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class RecordFolderProperties extends TestModel
{
@JsonIgnoreProperties(ignoreUnknown = true)
public class RecordFolderProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IS_CLOSED)
@JsonProperty(required = true, value = PROPERTIES_IS_CLOSED)
private Boolean isClosed;
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_HELD_CHILDREN_COUNT)
@JsonProperty(required = true, value = PROPERTIES_HELD_CHILDREN_COUNT)
private Integer heldChildrenCount;
/************************/
/** Optional parameters */
/************************/
@JsonProperty (PROPERTIES_TITLE)
@JsonProperty(PROPERTIES_TITLE)
private String title;
@JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR)
@JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR)
private Boolean vitalRecordIndicator;
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (PROPERTIES_LOCATION)
@JsonProperty(PROPERTIES_LOCATION)
private String location;
@JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
@JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
private Boolean recordSearchHasDispositionSchedule;
@JsonProperty (PROPERTIES_REVIEW_PERIOD)
@JsonSerialize (using = ReviewPeriodSerializer.class)
@JsonProperty(PROPERTIES_REVIEW_PERIOD)
@JsonSerialize(using = ReviewPeriodSerializer.class)
private ReviewPeriod reviewPeriod;
@JsonProperty (PROPERTIES_CLASSIFICATION)
@JsonProperty(PROPERTIES_CLASSIFICATION)
private List<String> classification;
@JsonProperty (PROPERTIES_DESCRIPTION)
@JsonProperty(PROPERTIES_DESCRIPTION)
private String description;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
@JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD)
@JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD)
private String recordSearchVitalRecordReviewPeriod;
@JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION)
@JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION)
private String recordSearchVitalRecordReviewPeriodExpression;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY)
private String recordSearchDispositionAuthority;
@JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
@JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS)
private String recordSearchDispositionInstructions;
}

View File

@@ -26,11 +26,8 @@
*/
package org.alfresco.rest.rm.community.model.rules;
/**
* Action values.
*/
public enum ActionsOnRule
{
/** Action values. */
public enum ActionsOnRule {
COMPLETE_RECORD("declareRecord"),
REOPEN_RECORD("undeclareRecord"),
OPEN_RECORD_FOLDER("openRecordFolder"),
@@ -54,13 +51,11 @@ public enum ActionsOnRule
private String actionValue;
ActionsOnRule(String value)
{
ActionsOnRule(String value) {
this.actionValue = value;
}
public String getActionValue()
{
public String getActionValue() {
return actionValue;
}
}

View File

@@ -26,23 +26,18 @@
*/
package org.alfresco.rest.rm.community.model.rules;
/**
* enum used to find the when condition names options by their value
*/
public enum ConditionsOnRule
{
/** enum used to find the when condition names options by their value */
public enum ConditionsOnRule {
UPDATE("update"),
ADDED("inbound"),
REMOVED("outbound");
private String whenConditionValue;
ConditionsOnRule(String value)
{
this.whenConditionValue = value;
ConditionsOnRule(String value) {
this.whenConditionValue = value;
}
public String getWhenConditionValue()
{
return whenConditionValue;
public String getWhenConditionValue() {
return whenConditionValue;
}
}

View File

@@ -28,11 +28,8 @@ package org.alfresco.rest.rm.community.model.rules;
import java.util.List;
/**
* A class describing the rule
*/
public class RuleDefinition
{
/** A class describing the rule */
public class RuleDefinition {
private String id = "";
private String title;
private String description = "";
@@ -52,152 +49,124 @@ public class RuleDefinition
*
* @return the object
*/
public static RuleDefinition createNewRule()
{
public static RuleDefinition createNewRule() {
return new RuleDefinition();
}
public String getId()
{
public String getId() {
return id;
}
public RuleDefinition id(String id)
{
public RuleDefinition id(String id) {
this.id = id;
return this;
}
public String getTitle()
{
public String getTitle() {
return title;
}
public RuleDefinition title(String title)
{
public RuleDefinition title(String title) {
this.title = title;
return this;
}
public String getDescription()
{
public String getDescription() {
return description;
}
public RuleDefinition description(String description)
{
public RuleDefinition description(String description) {
this.description = description;
return this;
}
public boolean isDisabled()
{
public boolean isDisabled() {
return disabled;
}
public RuleDefinition disabled(boolean disabled)
{
public RuleDefinition disabled(boolean disabled) {
this.disabled = disabled;
return this;
}
public boolean isApplyToChildren()
{
public boolean isApplyToChildren() {
return applyToChildren;
}
public RuleDefinition applyToChildren(boolean applyToChildren)
{
public RuleDefinition applyToChildren(boolean applyToChildren) {
this.applyToChildren = applyToChildren;
return this;
}
public boolean getRunInBackground()
{
public boolean getRunInBackground() {
return runInBackground;
}
public RuleDefinition runInBackground(boolean runInBackground)
{
public RuleDefinition runInBackground(boolean runInBackground) {
this.runInBackground = runInBackground;
return this;
}
public String getRuleType()
{
public String getRuleType() {
return ruleType;
}
public RuleDefinition ruleType(String ruleType)
{
public RuleDefinition ruleType(String ruleType) {
this.ruleType = ruleType;
return this;
}
public String getPath()
{
public String getPath() {
return path;
}
public RuleDefinition path(String path)
{
public RuleDefinition path(String path) {
this.path = path;
return this;
}
public Boolean getCreateRecordPath()
{
public Boolean getCreateRecordPath() {
return createRecordPath;
}
public RuleDefinition createRecordPath(boolean createRecordPath)
{
public RuleDefinition createRecordPath(boolean createRecordPath) {
this.createRecordPath = createRecordPath;
return this;
}
public String getContentTitle()
{
public String getContentTitle() {
return contentTitle;
}
public RuleDefinition contentTitle(String contentTitle)
{
public RuleDefinition contentTitle(String contentTitle) {
this.contentTitle = contentTitle;
return this;
}
public String getContentDescription()
{
public String getContentDescription() {
return contentDescription;
}
public RuleDefinition contentDescription(String contentDescription)
{
public RuleDefinition contentDescription(String contentDescription) {
this.contentDescription = contentDescription;
return this;
}
public String getRejectReason()
{
public String getRejectReason() {
return rejectReason;
}
public RuleDefinition rejectReason(String rejectReason)
{
public RuleDefinition rejectReason(String rejectReason) {
this.rejectReason = rejectReason;
return this;
}
public List<String> getActions()
{
public List<String> getActions() {
return actions;
}
public RuleDefinition actions(List<String> actions)
{
public RuleDefinition actions(List<String> actions) {
this.actions = actions;
return this;
}
}

View File

@@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.site;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestSiteModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestSiteModel;
/**
* POJO for RM Site component
*
@@ -46,15 +46,13 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class RMSite extends RestSiteModel
{
@JsonProperty (required = true)
public class RMSite extends RestSiteModel {
@JsonProperty(required = true)
private RMSiteCompliance compliance;
/** Private constructor allowing Lombok to include superclass fields in the builder. */
@Builder
private RMSite(String title, String description, RMSiteCompliance compliance)
{
private RMSite(String title, String description, RMSiteCompliance compliance) {
this.setTitle(title);
this.setDescription(description);
this.compliance = compliance;

View File

@@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.site;
* @author Tuna Aksoy
* @since 2.6
*/
public enum RMSiteCompliance
{
public enum RMSiteCompliance {
STANDARD,
DOD5015
}

View File

@@ -27,26 +27,20 @@
package org.alfresco.rest.rm.community.model.site;
/**
*RM Site properties from the RM Model Schema
*"entry": {
* "id": "string",
* "guid": "string",
* "title": "string",
* "description": "string",
* "visibility": "{@link org.springframework.social.alfresco.api.entities.Site.Visibility}",
* "compliance": "{@link RMSiteCompliance}",
* "role": "{@link org.alfresco.utility.constants.UserRole}"
*}
* RM Site properties from the RM Model Schema "entry": { "id": "string", "guid": "string", "title":
* "string", "description": "string", "visibility": "{@link
* org.springframework.social.alfresco.api.entities.Site.Visibility}", "compliance": "{@link
* RMSiteCompliance}", "role": "{@link org.alfresco.utility.constants.UserRole}" }
*
* @author Tuna Aksoy
* @author Rodica Sutu
* @since 2.6
*/
public class RMSiteFields
{
public class RMSiteFields {
public static final String ID = "id";
public static final String COMPLIANCE = "compliance";
public static final String TITLE = "title";
public static final String DESCRIPTION = "description";
public static final String VISIBILITY ="visibility";
public static final String VISIBILITY = "visibility";
public static final String ROLE = "role";
}

View File

@@ -27,19 +27,19 @@
package org.alfresco.rest.rm.community.model.transfer;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for Transfer
*
@@ -51,38 +51,36 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class Transfer extends TestModel
{
public class Transfer extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private TransferProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
}

View File

@@ -27,20 +27,20 @@
package org.alfresco.rest.rm.community.model.transfer;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for transfer child
*
@@ -52,59 +52,50 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferChild extends TestModel
{
public class TransferChild extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private TransferChildProperties properties;
@JsonProperty private TransferChildProperties properties;
@JsonProperty
private Boolean isRecord;
@JsonProperty private Boolean isRecord;
@JsonProperty
private Boolean isRecordFolder;
@JsonProperty private Boolean isRecordFolder;
@JsonProperty
private List<String> aspectNames;
@JsonProperty private List<String> aspectNames;
@JsonProperty
private Boolean isCompleted;
@JsonProperty private Boolean isCompleted;
@JsonProperty
private Boolean isClosed;
@JsonProperty private Boolean isClosed;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
}

View File

@@ -31,10 +31,9 @@ import org.alfresco.rest.core.RestModels;
/**
* Handle collection of {@link TransferChildEntry}
*
* @author Silviu Dinuta
* @since 2.6
*/
public class TransferChildCollection extends RestModels<TransferChildEntry, TransferChildCollection>
{
}
public class TransferChildCollection
extends RestModels<TransferChildEntry, TransferChildCollection> {}

View File

@@ -27,8 +27,6 @@
package org.alfresco.rest.rm.community.model.transfer;
import org.alfresco.rest.core.RestModels;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -37,6 +35,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.core.RestModels;
/**
* POJO for transfer child entry
*
@@ -48,8 +48,6 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry>
{
@JsonProperty
private TransferChild entry;
public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry> {
@JsonProperty private TransferChild entry;
}

View File

@@ -64,11 +64,6 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_X_RESOLUTION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_RESOLUTION;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -78,6 +73,11 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer;
import org.alfresco.utility.model.TestModel;
/**
* POJO for transfer child properties
*
@@ -89,131 +89,129 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferChildProperties extends TestModel
{
public class TransferChildProperties extends TestModel {
/**************************************************************************/
/** Mandatory parameters - Shared by record folders and records*/
/** Mandatory parameters - Shared by record folders and records */
/**************************************************************************/
@JsonProperty (PROPERTIES_TITLE)
@JsonProperty(PROPERTIES_TITLE)
private String title;
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (PROPERTIES_DESCRIPTION)
@JsonProperty(PROPERTIES_DESCRIPTION)
private String description;
/*********************************************************/
/** Optional parameters - Applies only to record folders */
/*********************************************************/
@JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR)
@JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR)
private Boolean vitalRecordIndicator;
@JsonProperty (PROPERTIES_REVIEW_PERIOD)
@JsonSerialize (using = ReviewPeriodSerializer.class)
@JsonProperty(PROPERTIES_REVIEW_PERIOD)
@JsonSerialize(using = ReviewPeriodSerializer.class)
private ReviewPeriod reviewPeriod;
@JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT)
@JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT)
private Integer heldChildrenCount;
@JsonProperty (PROPERTIES_LOCATION)
@JsonProperty(PROPERTIES_LOCATION)
private String location;
@JsonProperty (PROPERTIES_IS_CLOSED)
@JsonProperty(PROPERTIES_IS_CLOSED)
private Boolean isClosed;
/*********************************************************/
/** Optional parameters - Applies only to records */
/*********************************************************/
@JsonProperty (PROPERTIES_DATE_FILED)
@JsonProperty(PROPERTIES_DATE_FILED)
private String dateField;
@JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
@JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
private Boolean recordSearchHasDispositionSchedule;
@JsonProperty (PROPERTIES_ORIGINAL_NAME)
@JsonProperty(PROPERTIES_ORIGINAL_NAME)
private String originalName;
/*********************************/
/** Electronic record parameters */
/*********************************/
@JsonProperty (PROPERTIES_VERSION_TYPE)
@JsonProperty(PROPERTIES_VERSION_TYPE)
private String versionType;
@JsonProperty (PROPERTIES_VERSION_LABEL)
@JsonProperty(PROPERTIES_VERSION_LABEL)
private String versionLabel;
@JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL)
@JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL)
private String dateTimeOriginal;
@JsonProperty (PROPERTIES_EXPOSURE_TIME)
@JsonProperty(PROPERTIES_EXPOSURE_TIME)
private Double exposureTime;
@JsonProperty (PROPERTIES_FLASH)
@JsonProperty(PROPERTIES_FLASH)
private Boolean flash;
@JsonProperty (PROPERTIES_F_NUMBER)
@JsonProperty(PROPERTIES_F_NUMBER)
private Double fNumber;
@JsonProperty (PROPERTIES_FOCAL_LENGTH)
@JsonProperty(PROPERTIES_FOCAL_LENGTH)
private Double focalLength;
@JsonProperty (PROPERTIES_ISO_SPEED_RATINGS)
@JsonProperty(PROPERTIES_ISO_SPEED_RATINGS)
private Integer isoSpeedRatings;
@JsonProperty (PROPERTIES_MANUFACTURER)
@JsonProperty(PROPERTIES_MANUFACTURER)
private String manufacturer;
@JsonProperty (PROPERTIES_MODEL)
@JsonProperty(PROPERTIES_MODEL)
private String model;
@JsonProperty (PROPERTIES_ORIENTATION)
@JsonProperty(PROPERTIES_ORIENTATION)
private Integer orientation;
@JsonProperty (PROPERTIES_PIXEL_X_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_X_DIMENSION)
private Integer pixelXDimension;
@JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION)
private Integer pixelYDimension;
@JsonProperty (PROPERTIES_RESOLUTION_UNIT)
@JsonProperty(PROPERTIES_RESOLUTION_UNIT)
private String resolutionUnit;
@JsonProperty (PROPERTIES_SOFTWARE)
@JsonProperty(PROPERTIES_SOFTWARE)
private String software;
@JsonProperty (PROPERTIES_X_RESOLUTION)
@JsonProperty(PROPERTIES_X_RESOLUTION)
private Double xResolution;
@JsonProperty (PROPERTIES_Y_RESOLUTION)
@JsonProperty(PROPERTIES_Y_RESOLUTION)
private Double yResolution;
/*************************************/
/** Non-electronic record parameters */
/*************************************/
@JsonProperty (PROPERTIES_SHELF)
@JsonProperty(PROPERTIES_SHELF)
private String shelf;
@JsonProperty (PROPERTIES_STORAGE_LOCATION)
@JsonProperty(PROPERTIES_STORAGE_LOCATION)
private String storageLocation;
@JsonProperty (PROPERTIES_FILE)
@JsonProperty(PROPERTIES_FILE)
private String file;
@JsonProperty (PROPERTIES_BOX)
@JsonProperty(PROPERTIES_BOX)
private String box;
@JsonProperty (PROPERTIES_NUMBER_OF_COPIES)
@JsonProperty(PROPERTIES_NUMBER_OF_COPIES)
private Integer numberOfCopies;
@JsonProperty (PROPERTIES_PHYSICAL_SIZE)
@JsonProperty(PROPERTIES_PHYSICAL_SIZE)
private Integer physicalSize;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
}

View File

@@ -31,10 +31,8 @@ import org.alfresco.rest.core.RestModels;
/**
* Handle collection of {@link TransferEntry}
*
* @author Silviu Dinuta
* @since 2.6
*/
public class TransferCollection extends RestModels<TransferEntry, TransferCollection>
{
}
public class TransferCollection extends RestModels<TransferEntry, TransferCollection> {}

View File

@@ -27,9 +27,6 @@
package org.alfresco.rest.rm.community.model.transfer;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -38,6 +35,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.core.RestModels;
import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer;
/**
* POJO for transfer entry
*
@@ -49,8 +49,6 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferEntry extends RestModels<TransferContainer, TransferEntry>
{
@JsonProperty
private Transfer entry;
public class TransferEntry extends RestModels<TransferContainer, TransferEntry> {
@JsonProperty private Transfer entry;
}

View File

@@ -27,15 +27,12 @@
package org.alfresco.rest.rm.community.model.transfer;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ACCESSION_INDICATOR;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IDENTIFIER;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_PDF_INDICATOR;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TRANSFER_LOCATION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ACCESSION_INDICATOR;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -45,6 +42,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.utility.model.TestModel;
/**
* POJO for Transfer properties
*
@@ -56,29 +56,28 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferProperties extends TestModel
{
public class TransferProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
/************************/
/** Optional parameters */
/************************/
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
@JsonProperty (PROPERTIES_PDF_INDICATOR)
@JsonProperty(PROPERTIES_PDF_INDICATOR)
private Boolean pdfIndicator;
@JsonProperty (PROPERTIES_TRANSFER_LOCATION)
@JsonProperty(PROPERTIES_TRANSFER_LOCATION)
private String transferLocation;
@JsonProperty (PROPERTIES_ACCESSION_INDICATOR)
@JsonProperty(PROPERTIES_ACCESSION_INDICATOR)
private Boolean accessionIndicator;
}

View File

@@ -27,19 +27,19 @@
package org.alfresco.rest.rm.community.model.transfercontainer;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for Transfer Container
*
@@ -51,44 +51,42 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferContainer extends TestModel
{
public class TransferContainer extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private TransferContainerProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
}

View File

@@ -31,8 +31,6 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IDENTIFIER;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -41,6 +39,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
* POJO for Transfer Container properties
*
@@ -52,21 +52,19 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferContainerProperties extends TestModel
{
public class TransferContainerProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
/************************/
/** Optional parameters */
/************************/
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (PROPERTIES_COUNT)
@JsonProperty(PROPERTIES_COUNT)
private Integer count;
}

View File

@@ -26,12 +26,6 @@
*/
package org.alfresco.rest.rm.community.model.unfiledcontainer;
import java.util.List;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -40,6 +34,12 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for unfiled container
*
@@ -51,47 +51,44 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class UnfiledContainer extends TestModel
{
public class UnfiledContainer extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
@JsonProperty (required = true)
@JsonProperty(required = true)
private List<String> aspectNames;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private UnfiledContainerProperties properties;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
}

View File

@@ -26,13 +26,6 @@
*/
package org.alfresco.rest.rm.community.model.unfiledcontainer;
import java.util.List;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.rest.rm.community.model.record.RecordContent;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -42,6 +35,13 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.rest.rm.community.model.record.RecordContent;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for record category child
*
@@ -53,66 +53,57 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class UnfiledContainerChild extends TestModel
{
@JsonIgnoreProperties(ignoreUnknown = true)
public class UnfiledContainerChild extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private Boolean isUnfiledRecordFolder;
@JsonProperty (required = true)
@JsonProperty(required = true)
private Boolean isRecord;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private UnfiledContainerChildProperties properties;
@JsonProperty private UnfiledContainerChildProperties properties;
@JsonProperty
private List<String> aspectNames;
@JsonProperty private List<String> aspectNames;
@JsonProperty
private Boolean isClosed;
@JsonProperty private Boolean isClosed;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
@JsonProperty
private String relativePath;
@JsonProperty private String relativePath;
@JsonProperty
private RecordContent content;
@JsonProperty private RecordContent content;
@JsonProperty
private Boolean isCompleted;
@JsonProperty private Boolean isCompleted;
}

View File

@@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels;
* @author Tuna Aksoy
* @since 2.6
*/
public class UnfiledContainerChildCollection extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection>
{
}
public class UnfiledContainerChildCollection
extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection> {}

View File

@@ -28,11 +28,11 @@ package org.alfresco.rest.rm.community.model.unfiledcontainer;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.RestModels;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.alfresco.rest.core.RestModels;
/**
* POJO for record category child entry
*
@@ -41,8 +41,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UnfiledContainerChildEntry extends RestModels<UnfiledContainer, UnfiledContainerChildEntry>
{
@JsonProperty
private UnfiledContainerChild entry;
public class UnfiledContainerChildEntry
extends RestModels<UnfiledContainer, UnfiledContainerChildEntry> {
@JsonProperty private UnfiledContainerChild entry;
}

View File

@@ -62,15 +62,15 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.rm.community.model.common.Owner;
import org.alfresco.utility.model.TestModel;
/**
* POJO for record category child properties
*
@@ -83,112 +83,111 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class UnfiledContainerChildProperties extends TestModel
{
@JsonIgnoreProperties(ignoreUnknown = true)
public class UnfiledContainerChildProperties extends TestModel {
/**************************************************************************/
/** Mandatory parameters - Shared by unfiled record folder and records */
/**************************************************************************/
@JsonProperty (required = true, value = PROPERTIES_TITLE)
@JsonProperty(required = true, value = PROPERTIES_TITLE)
private String title;
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_DESCRIPTION)
@JsonProperty(required = true, value = PROPERTIES_DESCRIPTION)
private String description;
@JsonProperty (value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
@JsonProperty(value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE)
private Boolean recordSearchHasDispositionSchedule;
/*********************************/
/** Electronic record parameters */
/*********************************/
@JsonProperty (PROPERTIES_VERSION_TYPE)
@JsonProperty(PROPERTIES_VERSION_TYPE)
private String versionType;
@JsonProperty (PROPERTIES_VERSION_LABEL)
@JsonProperty(PROPERTIES_VERSION_LABEL)
private String versionLabel;
@JsonProperty(PROPERTIES_VERSIONED_NODEREF)
private String versionedNodeRef;
@JsonProperty (PROPERTIES_RMV_VERSIONED)
@JsonProperty(PROPERTIES_RMV_VERSIONED)
private String recordVersionLabel;
@JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL)
@JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL)
private String dateTimeOriginal;
@JsonProperty (PROPERTIES_EXPOSURE_TIME)
@JsonProperty(PROPERTIES_EXPOSURE_TIME)
private Double exposureTime;
@JsonProperty (PROPERTIES_FLASH)
@JsonProperty(PROPERTIES_FLASH)
private Boolean flash;
@JsonProperty (PROPERTIES_F_NUMBER)
@JsonProperty(PROPERTIES_F_NUMBER)
private Double fNumber;
@JsonProperty (PROPERTIES_FOCAL_LENGTH)
@JsonProperty(PROPERTIES_FOCAL_LENGTH)
private Double focalLength;
@JsonProperty (PROPERTIES_ISO_SPEED_RATINGS)
@JsonProperty(PROPERTIES_ISO_SPEED_RATINGS)
private Integer isoSpeedRatings;
@JsonProperty (PROPERTIES_MANUFACTURER)
@JsonProperty(PROPERTIES_MANUFACTURER)
private String manufacturer;
@JsonProperty (PROPERTIES_MODEL)
@JsonProperty(PROPERTIES_MODEL)
private String model;
@JsonProperty (PROPERTIES_ORIENTATION)
@JsonProperty(PROPERTIES_ORIENTATION)
private Integer orientation;
@JsonProperty (PROPERTIES_PIXEL_X_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_X_DIMENSION)
private Integer pixelXDimension;
@JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION)
@JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION)
private Integer pixelYDimension;
@JsonProperty (PROPERTIES_RESOLUTION_UNIT)
@JsonProperty(PROPERTIES_RESOLUTION_UNIT)
private String resolutionUnit;
@JsonProperty (PROPERTIES_SOFTWARE)
@JsonProperty(PROPERTIES_SOFTWARE)
private String software;
@JsonProperty (PROPERTIES_X_RESOLUTION)
@JsonProperty(PROPERTIES_X_RESOLUTION)
private Double xResolution;
@JsonProperty (PROPERTIES_Y_RESOLUTION)
@JsonProperty(PROPERTIES_Y_RESOLUTION)
private Double yResolution;
@JsonProperty (PROPERTIES_ORIGINAL_NAME)
@JsonProperty(PROPERTIES_ORIGINAL_NAME)
private String originalName;
/*************************************/
/** Non-electronic record parameters */
/*************************************/
@JsonProperty (PROPERTIES_SHELF)
@JsonProperty(PROPERTIES_SHELF)
private String shelf;
@JsonProperty (PROPERTIES_STORAGE_LOCATION)
@JsonProperty(PROPERTIES_STORAGE_LOCATION)
private String storageLocation;
@JsonProperty (PROPERTIES_FILE)
@JsonProperty(PROPERTIES_FILE)
private String file;
@JsonProperty (PROPERTIES_BOX)
@JsonProperty(PROPERTIES_BOX)
private String box;
@JsonProperty (PROPERTIES_NUMBER_OF_COPIES)
@JsonProperty(PROPERTIES_NUMBER_OF_COPIES)
private Integer numberOfCopies;
@JsonProperty (PROPERTIES_PHYSICAL_SIZE)
@JsonProperty(PROPERTIES_PHYSICAL_SIZE)
private Integer physicalSize;
@JsonProperty (PROPERTIES_OWNER)
@JsonProperty(PROPERTIES_OWNER)
private Owner owner;
}

View File

@@ -32,14 +32,14 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.utility.model.TestModel;
/**
* POJO for file plan properties
*
@@ -51,15 +51,14 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties (ignoreUnknown = true)
public class UnfiledContainerProperties extends TestModel
{
@JsonIgnoreProperties(ignoreUnknown = true)
public class UnfiledContainerProperties extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
}

View File

@@ -26,13 +26,6 @@
*/
package org.alfresco.rest.rm.community.model.unfiledcontainer;
import java.util.List;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.rest.rm.community.model.record.RecordContent;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@@ -41,6 +34,13 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.rest.rm.community.model.record.RecordContent;
import org.alfresco.utility.model.TestModel;
import java.util.List;
/**
* POJO for unfiled container
*
@@ -52,62 +52,52 @@ import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class UnfiledRecordFolder extends TestModel
{
public class UnfiledRecordFolder extends TestModel {
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty (required = true)
@JsonProperty(required = true)
private String createdAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel createdByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String modifiedAt;
@JsonProperty (required = true)
@JsonProperty(required = true)
private RestByUserModel modifiedByUser;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String name;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String id;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String nodeType;
@JsonProperty (required = true)
@JsonProperty(required = true)
private String parentId;
/************************/
/** Optional parameters */
/************************/
@JsonProperty
private UnfiledContainerChildProperties properties;
@JsonProperty private UnfiledContainerChildProperties properties;
@JsonProperty
private List<String> aspectNames;
@JsonProperty private List<String> aspectNames;
@JsonProperty
private Boolean hasRetentionSchedule;
@JsonProperty private Boolean hasRetentionSchedule;
@JsonProperty
private Boolean isClosed;
@JsonProperty private Boolean isClosed;
@JsonProperty
private List<String> allowableOperations;
@JsonProperty private List<String> allowableOperations;
@JsonProperty
private Path path;
@JsonProperty private Path path;
@JsonProperty
private String relativePath;
@JsonProperty private String relativePath;
@JsonProperty
private RecordContent content;
@JsonProperty private RecordContent content;
@JsonProperty
private Boolean isCompleted;
@JsonProperty private Boolean isCompleted;
}

View File

@@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.user;
* @author Rodica Sutu
* @since 2.7
*/
public class UserCapabilities
{
public class UserCapabilities {
/** The id of the view records capability. */
public static final String VIEW_RECORDS_CAP = "ViewRecords";

View File

@@ -28,20 +28,18 @@ package org.alfresco.rest.rm.community.model.user;
/**
* Constants for RM user capabilities
*
*
* @author Kristijan Conkas
* @since 2.6
*/
public enum UserPermissions
{
public enum UserPermissions {
PERMISSION_FILING("Filing"),
PERMISSION_READ_RECORDS("ReadRecords"),
PERMISSION_FILE_RECORDS("FileRecords");
public final String permissionId;
UserPermissions(String permissionId)
{
UserPermissions(String permissionId) {
this.permissionId = permissionId;
}
}

View File

@@ -33,8 +33,7 @@ package org.alfresco.rest.rm.community.model.user;
* @author Kristijan Conkas
* @since 2.6
*/
public enum UserRoles
{
public enum UserRoles {
IN_PLACE_WRITERS("ExtendedWriters", "In-Place Writers"),
ROLE_RM_ADMIN("Administrator", "Records Management Administrator"),
ROLE_RM_MANAGER("RecordsManager", "Records Management Manager"),
@@ -45,11 +44,8 @@ public enum UserRoles
public final String roleId;
public final String displayName;
UserRoles(String roleId, String displayName)
{
UserRoles(String roleId, String displayName) {
this.roleId = roleId;
this.displayName = displayName;
}
}

View File

@@ -29,29 +29,25 @@ package org.alfresco.rest.rm.community.requests;
import static lombok.AccessLevel.PRIVATE;
import static lombok.AccessLevel.PROTECTED;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.requests.ModelRequest;
import lombok.Getter;
import lombok.Setter;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.requests.ModelRequest;
/**
* Extends {@link ModelRequest} to set {@link RMRestWrapper}
*
* @author Tuna Aksoy
* @since 2.6
*/
public abstract class RMModelRequest<Request> extends ModelRequest<Request>
{
@Getter (value = PROTECTED)
@Setter (value = PRIVATE)
public abstract class RMModelRequest<Request> extends ModelRequest<Request> {
@Getter(value = PROTECTED)
@Setter(value = PRIVATE)
private RMRestWrapper rmRestWrapper;
/**
* @param rmRestWrapper
*/
public RMModelRequest(RMRestWrapper rmRestWrapper)
{
/** @param rmRestWrapper */
public RMModelRequest(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper.getRestWrapper());
setRmRestWrapper(rmRestWrapper);
}

View File

@@ -33,8 +33,8 @@ import io.restassured.RestAssured;
import org.alfresco.rest.core.RMRestProperties;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.rm.community.requests.gscore.api.ActionsExecutionAPI;
import org.alfresco.rest.rm.community.requests.RMModelRequest;
import org.alfresco.rest.rm.community.requests.gscore.api.ActionsExecutionAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.FilePlanAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.FilesAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.RMSiteAPI;
@@ -48,24 +48,22 @@ import org.alfresco.rest.rm.community.requests.gscore.api.UnfiledContainerAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.UnfiledRecordFolderAPI;
/**
* Defines the entire GS Core API
* {@link http://host:port/gs-api-explorer} select "GS Core API"
* Defines the entire GS Core API {@link http://host:port/gs-api-explorer} select "GS Core API"
*
* @author Tuna Aksoy
* @since 2.6
*/
public class GSCoreAPI extends RMModelRequest
{
public class GSCoreAPI extends RMModelRequest {
/**
* Constructor
*
* @param rmRestWrapper RM REST Wrapper
* @param rmRestProperties RM REST Properties
*/
public GSCoreAPI(RMRestWrapper rmRestWrapper, RMRestProperties rmRestProperties)
{
public GSCoreAPI(RMRestWrapper rmRestWrapper, RMRestProperties rmRestProperties) {
super(rmRestWrapper);
RestAssured.baseURI = format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer());
RestAssured.baseURI =
format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer());
RestAssured.port = parseInt(rmRestProperties.getPort());
RestAssured.basePath = rmRestProperties.getRestRmPath();
restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath);
@@ -76,9 +74,8 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link RMSiteAPI}
*/
public RMSiteAPI usingRMSite()
{
return new RMSiteAPI(getRmRestWrapper());
public RMSiteAPI usingRMSite() {
return new RMSiteAPI(getRmRestWrapper());
}
/**
@@ -86,8 +83,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link FilePlanAPI}
*/
public FilePlanAPI usingFilePlans()
{
public FilePlanAPI usingFilePlans() {
return new FilePlanAPI(getRmRestWrapper());
}
@@ -96,8 +92,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link RecordCategoryAPI}
*/
public RecordCategoryAPI usingRecordCategory()
{
public RecordCategoryAPI usingRecordCategory() {
return new RecordCategoryAPI(getRmRestWrapper());
}
@@ -106,8 +101,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link RecordFolderAPI}
*/
public RecordFolderAPI usingRecordFolder()
{
public RecordFolderAPI usingRecordFolder() {
return new RecordFolderAPI(getRmRestWrapper());
}
@@ -116,8 +110,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link RecordsAPI}
*/
public RecordsAPI usingRecords()
{
public RecordsAPI usingRecords() {
return new RecordsAPI(getRmRestWrapper());
}
@@ -126,8 +119,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link FilesAPI}
*/
public FilesAPI usingFiles()
{
public FilesAPI usingFiles() {
return new FilesAPI(getRmRestWrapper());
}
@@ -136,8 +128,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link TransferContainerAPI}
*/
public TransferContainerAPI usingTransferContainer()
{
public TransferContainerAPI usingTransferContainer() {
return new TransferContainerAPI(getRmRestWrapper());
}
@@ -146,8 +137,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link TransferAPI}
*/
public TransferAPI usingTransfer()
{
public TransferAPI usingTransfer() {
return new TransferAPI(getRmRestWrapper());
}
@@ -156,8 +146,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link UnfiledContainerAPI}
*/
public UnfiledContainerAPI usingUnfiledContainers()
{
public UnfiledContainerAPI usingUnfiledContainers() {
return new UnfiledContainerAPI(getRmRestWrapper());
}
@@ -166,8 +155,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link UnfiledRecordFolderAPI}
*/
public UnfiledRecordFolderAPI usingUnfiledRecordFolder()
{
public UnfiledRecordFolderAPI usingUnfiledRecordFolder() {
return new UnfiledRecordFolderAPI(getRmRestWrapper());
}
@@ -176,8 +164,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link RMUserAPI}
*/
public RMUserAPI usingRMUser()
{
public RMUserAPI usingRMUser() {
return new RMUserAPI(getRmRestWrapper());
}
@@ -186,8 +173,7 @@ public class GSCoreAPI extends RMModelRequest
*
* @return {@link ActionsExecutionAPI}
*/
public ActionsExecutionAPI usingActionsExecutionsAPI()
{
public ActionsExecutionAPI usingActionsExecutionsAPI() {
return new ActionsExecutionAPI(getRmRestWrapper());
}
}

View File

@@ -29,6 +29,7 @@ package org.alfresco.rest.rm.community.requests.gscore.api;
import com.google.common.collect.ImmutableMap;
import lombok.SneakyThrows;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.rm.community.model.rules.ActionsOnRule;
import org.alfresco.rest.rm.community.requests.RMModelRequest;
@@ -41,28 +42,28 @@ import org.json.JSONObject;
* @author Claudia Agache
* @since 3.1
*/
public class ActionsExecutionAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public ActionsExecutionAPI(RMRestWrapper rmRestWrapper)
{
public class ActionsExecutionAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public ActionsExecutionAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* Declares and files a document as record to a record folder using v1 actions api
*
* @param targetNode the node on which the action is executed
* @param targetNode the node on which the action is executed
* @param destinationPath the path to the record folder
* @throws Exception
*/
public JSONObject declareAndFile(RepoTestModel targetNode, String destinationPath) throws Exception
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode,
ImmutableMap.of("path", destinationPath));
public JSONObject declareAndFile(RepoTestModel targetNode, String destinationPath)
throws Exception {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(
ActionsOnRule.DECLARE_AS_RECORD.getActionValue(),
targetNode,
ImmutableMap.of("path", destinationPath));
}
/**
@@ -71,25 +72,29 @@ public class ActionsExecutionAPI extends RMModelRequest
* @param targetNode the node on which the action is executed
* @throws Exception
*/
public JSONObject declareAsRecord(RepoTestModel targetNode) throws Exception
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode);
public JSONObject declareAsRecord(RepoTestModel targetNode) throws Exception {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode);
}
/**
* Declares and file a document version as record to a record folder using v1 actions api
*
* @param targetNode the node on which the action is executed
* @param targetNode the node on which the action is executed
* @param destinationPath the path to the record folder
* @throws Exception
*/
public JSONObject declareAndFileVersionAsRecord(RepoTestModel targetNode, String destinationPath) throws Exception
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode,
ImmutableMap.of("path", destinationPath));
public JSONObject declareAndFileVersionAsRecord(
RepoTestModel targetNode, String destinationPath) throws Exception {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(
ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(),
targetNode,
ImmutableMap.of("path", destinationPath));
}
/**
@@ -98,10 +103,12 @@ public class ActionsExecutionAPI extends RMModelRequest
* @param targetNode the node on which the action is executed
* @throws Exception
*/
public JSONObject declareVersionAsRecord(RepoTestModel targetNode) throws Exception
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode);
public JSONObject declareVersionAsRecord(RepoTestModel targetNode) throws Exception {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(
ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode);
}
/**
@@ -111,24 +118,28 @@ public class ActionsExecutionAPI extends RMModelRequest
* @throws Exception
*/
@SneakyThrows
public JSONObject addWORMLock(RepoTestModel targetNode)
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode);
public JSONObject addWORMLock(RepoTestModel targetNode) {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode);
}
/**
* WORM lock a node for a period of days
*
* @param targetNode the node on which the action is executed
* @param targetNode the node on which the action is executed
* @param retentionPeriod the retention period in days for the WORM lock
* @throws Exception
*/
@SneakyThrows
public JSONObject addWORMLock(RepoTestModel targetNode, int retentionPeriod)
{
return getRmRestWrapper().withCoreAPI().usingActions()
.executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode,
ImmutableMap.of("retentionPeriod", String.valueOf(retentionPeriod)));
public JSONObject addWORMLock(RepoTestModel targetNode, int retentionPeriod) {
return getRmRestWrapper()
.withCoreAPI()
.usingActions()
.executeAction(
ActionsOnRule.WORM_LOCK.getActionValue(),
targetNode,
ImmutableMap.of("retentionPeriod", String.valueOf(retentionPeriod)));
}
}

View File

@@ -49,23 +49,18 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Tuna Aksoy
* @since 2.6
*/
public class FilePlanAPI extends RMModelRequest
{
public class FilePlanAPI extends RMModelRequest {
/**
* Constructor.
*
* @param rmRestWrapper RM REST Wrapper
*/
public FilePlanAPI(RMRestWrapper rmRestWrapper)
{
public FilePlanAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* see {@link #getFilePlan(String, String)}
*/
public FilePlan getFilePlan(String filePlanId)
{
/** see {@link #getFilePlan(String, String)} */
public FilePlan getFilePlan(String filePlanId) {
mandatoryString("filePlanId", filePlanId);
return getFilePlan(filePlanId, EMPTY);
@@ -78,30 +73,28 @@ public class FilePlanAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link FilePlan} for the given {@code filePlanId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code filePlanId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code filePlanId}</li>
* <li>{@code filePlanId} does not exist</li>
* </ul>
* <ul>
* <li>{@code filePlanId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code filePlanId}
* <li>{@code filePlanId} does not exist
* </ul>
*/
public FilePlan getFilePlan(String filePlanId, String parameters)
{
public FilePlan getFilePlan(String filePlanId, String parameters) {
mandatoryString("filePlanId", filePlanId);
return getRmRestWrapper().processModel(FilePlan.class, simpleRequest(
GET,
"/file-plans/{filePlanId}?{parameters}",
filePlanId,
parameters
));
return getRmRestWrapper()
.processModel(
FilePlan.class,
simpleRequest(
GET,
"/file-plans/{filePlanId}?{parameters}",
filePlanId,
parameters));
}
/**
* see {@link #getRootRecordCategories(String, String)}
*/
public RecordCategoryCollection getRootRecordCategories(String filePlanId)
{
/** see {@link #getRootRecordCategories(String, String)} */
public RecordCategoryCollection getRootRecordCategories(String filePlanId) {
mandatoryString("filePlanId", filePlanId);
return getRootRecordCategories(filePlanId, EMPTY);
@@ -114,29 +107,28 @@ public class FilePlanAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link RecordCategoryCollection} for the given {@code filePlanId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code filePlanId}</li>
* <li>{@code filePlanId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code filePlanId}
* <li>{@code filePlanId} does not exist
* </ul>
*/
public RecordCategoryCollection getRootRecordCategories(String filePlanId, String parameters)
{
public RecordCategoryCollection getRootRecordCategories(String filePlanId, String parameters) {
mandatoryString("filePlanId", filePlanId);
return getRmRestWrapper().processModels(RecordCategoryCollection.class, simpleRequest(
GET,
"file-plans/{filePlanId}/categories?{parameters}",
filePlanId,
parameters
));
return getRmRestWrapper()
.processModels(
RecordCategoryCollection.class,
simpleRequest(
GET,
"file-plans/{filePlanId}/categories?{parameters}",
filePlanId,
parameters));
}
/**
* see {@link #createRootRecordCategory(RecordCategory, String, String)}
*/
public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId)
{
/** see {@link #createRootRecordCategory(RecordCategory, String, String)} */
public RecordCategory createRootRecordCategory(
RecordCategory recordCategoryModel, String filePlanId) {
mandatoryObject("recordCategoryModel", recordCategoryModel);
mandatoryString("filePlanId", filePlanId);
@@ -151,34 +143,35 @@ public class FilePlanAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The created {@link RecordCategory}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code filePlanId} is not a valid format or {@code filePlanId} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to add children to {@code filePlanId}</li>
* <li>{@code filePlanIds} does not exist</li>
* <li>new name clashes with an existing node in the current parent container</li>
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
* <ul>
* <li>{@code filePlanId} is not a valid format or {@code filePlanId} is invalid
* <li>authentication fails
* <li>current user does not have permission to add children to {@code filePlanId}
* <li>{@code filePlanIds} does not exist
* <li>new name clashes with an existing node in the current parent container
* <li>model integrity exception, including node name with invalid characters
* </ul>
*/
public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId, String parameters)
{
public RecordCategory createRootRecordCategory(
RecordCategory recordCategoryModel, String filePlanId, String parameters) {
mandatoryObject("recordCategoryModel", recordCategoryModel);
mandatoryString("filePlanId", filePlanId);
return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody(
POST,
toJson(recordCategoryModel),
"file-plans/{filePlanId}/categories?{parameters}",
filePlanId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordCategory.class,
requestWithBody(
POST,
toJson(recordCategoryModel),
"file-plans/{filePlanId}/categories?{parameters}",
filePlanId,
parameters));
}
/**
* see {@link #updateFilePlan(FilePlan, String, String)
*/
public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId)
{
public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId) {
mandatoryObject("filePlanModel", filePlanModel);
mandatoryString("filePlanId", filePlanId);
@@ -188,29 +181,31 @@ public class FilePlanAPI extends RMModelRequest
/**
* Updates a file plan.
*
* @param filePlanModel The file plan model which holds the information
* @param filePlanId The identifier of the file plan
* @param parameters The URL parameters to add
* @param filePlanModel The file plan model which holds the information
* @param filePlanId The identifier of the file plan
* @param parameters The URL parameters to add
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code filePlanId} is not a valid format or {@code filePlanModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code filePlanId}</li>
* <li>{@code filePlanId} does not exist</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code filePlanId} is not a valid format or {@code
* filePlanModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code filePlanId}
* <li>{@code filePlanId} does not exist
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId, String parameters)
{
public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId, String parameters) {
mandatoryObject("filePlanModel", filePlanModel);
mandatoryString("filePlanId", filePlanId);
return getRmRestWrapper().processModel(FilePlan.class, requestWithBody(
PUT,
toJson(filePlanModel),
"file-plans/{filePlanId}?{parameters}",
filePlanId,
parameters));
return getRmRestWrapper()
.processModel(
FilePlan.class,
requestWithBody(
PUT,
toJson(filePlanModel),
"file-plans/{filePlanId}?{parameters}",
filePlanId,
parameters));
}
}

View File

@@ -40,15 +40,11 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Kristijan Conkas
* @since 2.6
*/
public class FilesAPI extends RMModelRequest<FilesAPI>
{
public class FilesAPI extends RMModelRequest<FilesAPI> {
public static final String PARENT_ID_PARAM = "parentId";
/**
* @param rmRestWrapper RM REST Wrapper
*/
public FilesAPI(RMRestWrapper rmRestWrapper)
{
/** @param rmRestWrapper RM REST Wrapper */
public FilesAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
@@ -59,16 +55,16 @@ public class FilesAPI extends RMModelRequest<FilesAPI>
* @return The {@link Record} for created record
* @throws RuntimeException for malformed JSON responses
*/
public Record declareAsRecord(String fileId)
{
public Record declareAsRecord(String fileId) {
mandatoryString("fileId", fileId);
return getRmRestWrapper().processModel(Record.class, simpleRequest(
POST,
"/files/{fileId}/declare?{parameters}",
fileId,
getRmRestWrapper().getParameters()
));
return getRmRestWrapper()
.processModel(
Record.class,
simpleRequest(
POST,
"/files/{fileId}/declare?{parameters}",
fileId,
getRmRestWrapper().getParameters()));
}
}

View File

@@ -46,15 +46,13 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Tuna Aksoy
* @since 2.6
*/
public class RMSiteAPI extends RMModelRequest
{
public class RMSiteAPI extends RMModelRequest {
/**
* Constructor
*
* @param rmRestWrapper RM REST Wrapper
*/
public RMSiteAPI(RMRestWrapper rmRestWrapper)
{
public RMSiteAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
@@ -63,19 +61,16 @@ public class RMSiteAPI extends RMModelRequest
*
* @return The {@link RMSite} for the given file plan component id
* @throws RuntimeException for the following cases:
* <ul>
* <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM site</li>
* <li>Api Response code 401 If authentication failed</li>
* <li>Api Response code 409 If RM Site does not exist</li>
* <li>Api Response code default Unexpected error</li>
* </ul>
* <ul>
* <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM
* site
* <li>Api Response code 401 If authentication failed
* <li>Api Response code 409 If RM Site does not exist
* <li>Api Response code default Unexpected error
* </ul>
*/
public RMSite getSite()
{
return getRmRestWrapper().processModel(RMSite.class, simpleRequest(
GET,
"gs-sites/rm"
));
public RMSite getSite() {
return getRmRestWrapper().processModel(RMSite.class, simpleRequest(GET, "gs-sites/rm"));
}
/**
@@ -84,41 +79,37 @@ public class RMSiteAPI extends RMModelRequest
* @param rmSiteModel The properties of the rm site to be created
* @return The {@link RMSite} with the given properties
* @throws RuntimeException for the following cases:
* <ul>
* <li>Api Response code 400 Invalid parameter: title, or description exceed the maximum length; or siteBodyCreate invalid</li>
* <li>Api Response code 401 If authentication failed</
* <li>Api Response code 409 RM Site already exists</li>
* <li>Api Response code default Unexpected error</li>
* </ul>
* <ul>
* <li>Api Response code 400 Invalid parameter: title, or description exceed the maximum
* length; or siteBodyCreate invalid
* <li>Api Response code 401 If authentication failed</
* <li>Api Response code 409 RM Site already exists
* <li>Api Response code default Unexpected error
* </ul>
*/
public RMSite createRMSite(RMSite rmSiteModel)
{
public RMSite createRMSite(RMSite rmSiteModel) {
mandatoryObject("rmSiteModel", rmSiteModel);
return getRmRestWrapper().processModel(RMSite.class, requestWithBody(
POST,
toJson(rmSiteModel),
"gs-sites"
));
return getRmRestWrapper()
.processModel(RMSite.class, requestWithBody(POST, toJson(rmSiteModel), "gs-sites"));
}
/**
* Delete RM site
*
* @throws RuntimeException for the following cases:
* <ul>
* <li>Api Response code 400 Invalid parameter: DELETE request is supported only for the RM site</li>
* <li>Api Response code 401 If authentication failed</
* <li>Api Response code 403 Current user does not have permission to delete the site that is visible to them.</li>
* <li>Api Response code 404 RM site does not exist</li>
* <li>Api Response code default Unexpected error</li>
* </ul>
* <ul>
* <li>Api Response code 400 Invalid parameter: DELETE request is supported only for the
* RM site
* <li>Api Response code 401 If authentication failed</
* <li>Api Response code 403 Current user does not have permission to delete the site that
* is visible to them.
* <li>Api Response code 404 RM site does not exist
* <li>Api Response code default Unexpected error
* </ul>
*/
public void deleteRMSite()
{
getRmRestWrapper().processEmptyModel(simpleRequest(
DELETE,
"gs-sites/rm"
));
public void deleteRMSite() {
getRmRestWrapper().processEmptyModel(simpleRequest(DELETE, "gs-sites/rm"));
}
/**
@@ -127,23 +118,20 @@ public class RMSiteAPI extends RMModelRequest
* @param rmSiteModel The properties to be updated
* @return The updated {@link RMSite}
* @throws RuntimeException for the following cases:
* <ul>
* <li>Api Response code 400 the update request is invalid {@code rmSiteModel} is invalid</li>
* <li>Api Response code 401 If authentication fails</li>
* <li>Api Response code 403 does not have permission to update {@code RMSite}</li>
* <li>Api Response code 404 {@code RMSiteModel} does not exist</li>
* <li>Api Response code default Unexpected error,model integrity exception</li>
* </ul>
* <ul>
* <li>Api Response code 400 the update request is invalid {@code rmSiteModel} is invalid
* <li>Api Response code 401 If authentication fails
* <li>Api Response code 403 does not have permission to update {@code RMSite}
* <li>Api Response code 404 {@code RMSiteModel} does not exist
* <li>Api Response code default Unexpected error,model integrity exception
* </ul>
*/
public RMSite updateRMSite(RMSite rmSiteModel)
{
public RMSite updateRMSite(RMSite rmSiteModel) {
mandatoryObject("rmSiteProperties", rmSiteModel);
return getRmRestWrapper().processModel(RMSite.class, requestWithBody(
PUT,
toJson(rmSiteModel),
"gs-sites/rm"
));
return getRmRestWrapper()
.processModel(
RMSite.class, requestWithBody(PUT, toJson(rmSiteModel), "gs-sites/rm"));
}
/**
@@ -151,15 +139,15 @@ public class RMSiteAPI extends RMModelRequest
*
* @return <code>true</code> if the RM site exists, <code>false</code> otherwise
* @throws RuntimeException for the following cases:
* <ul>
* <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM site</li>
* <li>Api Response code 401 If authentication failed</li>
* <li>Api Response code 409 If RM Site does not exist</li>
* <li>Api Response code default Unexpected error</li>
* </ul>
* <ul>
* <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM
* site
* <li>Api Response code 401 If authentication failed
* <li>Api Response code 409 If RM Site does not exist
* <li>Api Response code default Unexpected error
* </ul>
*/
public boolean existsRMSite()
{
public boolean existsRMSite() {
getSite();
return getRmRestWrapper().getStatusCode().equals(String.valueOf(OK.value()));
}

View File

@@ -26,6 +26,9 @@
*/
package org.alfresco.rest.rm.community.requests.gscore.api;
import static io.restassured.RestAssured.basic;
import static io.restassured.RestAssured.given;
import static org.jglue.fluentjson.JsonBuilderFactory.buildObject;
import static org.springframework.http.HttpStatus.OK;
@@ -35,8 +38,6 @@ import io.restassured.builder.RequestSpecBuilder;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import static io.restassured.RestAssured.basic;
import static io.restassured.RestAssured.given;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
@@ -54,24 +55,21 @@ import org.alfresco.utility.model.UserModel;
* @since 2.6
*/
// FIXME: As of December 2016 there is no v1-style API for managing RM users and users'
// roles/permissions. Until such APIs have become available, methods in this class are just proxies to
// roles/permissions. Until such APIs have become available, methods in this class are just proxies
// to
// "old-style" API calls.
public class RMUserAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public RMUserAPI(RMRestWrapper rmRestWrapper)
{
public class RMUserAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public RMUserAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* Helper method to obtain {@link AlfrescoHttpClient}
*
* @return Initialized {@link AlfrescoHttpClient} instance
*/
private AlfrescoHttpClient getAlfrescoHttpClient()
{
private AlfrescoHttpClient getAlfrescoHttpClient() {
RMRestProperties properties = getRmRestWrapper().getRmRestProperties();
AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory();
@@ -89,117 +87,120 @@ public class RMUserAPI extends RMModelRequest
* @param userRole User's RM role, one of {@link UserRoles} roles
* @throws RuntimeException for failed requests
*/
public void assignRoleToUser(String userName, String userRole)
{
public void assignRoleToUser(String userName, String userRole) {
UserModel adminUser = getRmRestWrapper().getTestUser();
// get an "old-style" REST API client
AlfrescoHttpClient client = getAlfrescoHttpClient();
// override v1 baseURI and basePath
RequestSpecification spec = new RequestSpecBuilder()
.setBaseUri(client.getApiUrl())
.setBasePath("/")
.build();
RequestSpecification spec =
new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build();
Response response = given()
.spec(spec)
.log().all()
.pathParam("role", userRole)
.pathParam("authority", userName)
.param("alf_ticket", client.getAlfTicket(adminUser.getUsername(),
adminUser.getPassword()))
.when()
.post("/rm/roles/{role}/authorities/{authority}")
.prettyPeek()
.andReturn();
Response response =
given().spec(spec)
.log()
.all()
.pathParam("role", userRole)
.pathParam("authority", userName)
.param(
"alf_ticket",
client.getAlfTicket(
adminUser.getUsername(), adminUser.getPassword()))
.when()
.post("/rm/roles/{role}/authorities/{authority}")
.prettyPeek()
.andReturn();
getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
}
/**
* Helper method to add permission on a component to user
* @param filePlanComponentId The id of the file plan component on which permission should be given
*
* @param filePlanComponentId The id of the file plan component on which permission should be
* given
* @param user {@link UserModel} for a user to be granted permission
* @param permission {@link UserPermissions} to be granted
*/
public void addUserPermission(String filePlanComponentId, UserModel user, UserPermissions permission)
{
public void addUserPermission(
String filePlanComponentId, UserModel user, UserPermissions permission) {
UserModel adminUser = getRmRestWrapper().getTestUser();
// get an "old-style" REST API client
AlfrescoHttpClient client = getAlfrescoHttpClient();
JsonObject bodyJson = buildObject()
.addArray("permissions")
.addObject()
.add("authority", user.getUsername())
.add("role", permission.permissionId)
.end()
.getJson();
JsonObject bodyJson =
buildObject()
.addArray("permissions")
.addObject()
.add("authority", user.getUsername())
.add("role", permission.permissionId)
.end()
.getJson();
// override v1 baseURI and basePath
RequestSpecification spec = new RequestSpecBuilder()
.setBaseUri(client.getApiUrl())
.setBasePath("/")
.build();
RequestSpecification spec =
new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build();
// execute an "old-style" API call
Response response = given()
.spec(spec)
.auth().basic(adminUser.getUsername(), adminUser.getPassword())
.contentType(ContentType.JSON)
.body(bodyJson.toString())
.pathParam("nodeId", filePlanComponentId)
.log().all()
.when()
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
.prettyPeek()
.andReturn();
Response response =
given().spec(spec)
.auth()
.basic(adminUser.getUsername(), adminUser.getPassword())
.contentType(ContentType.JSON)
.body(bodyJson.toString())
.pathParam("nodeId", filePlanComponentId)
.log()
.all()
.when()
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
.prettyPeek()
.andReturn();
getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
}
/**
* Helper method to set permission inheritance on a file plan component
*
* @param filePlanComponentId The id of the file plan component on which inherited permission should be set
* @param isInherited true if the permission is inherited
* false if the permission inheritance is disabled
* @param filePlanComponentId The id of the file plan component on which inherited permission
* should be set
* @param isInherited true if the permission is inherited false if the permission inheritance is
* disabled
*/
public void setUserPermissionInheritance(String filePlanComponentId, Boolean isInherited)
{
public void setUserPermissionInheritance(String filePlanComponentId, Boolean isInherited) {
final UserModel adminUser = getRmRestWrapper().getTestUser();
// get an "old-style" REST API client
final AlfrescoHttpClient client = getAlfrescoHttpClient();
final JsonObject bodyJson = buildObject()
.addArray("permissions")
.end()
.add("isInherited", isInherited)
.getJson();
final JsonObject bodyJson =
buildObject()
.addArray("permissions")
.end()
.add("isInherited", isInherited)
.getJson();
// override v1 baseURI and basePath
RequestSpecification spec = new RequestSpecBuilder()
.setBaseUri(client.getApiUrl())
.setBasePath("/")
.build();
RequestSpecification spec =
new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build();
// execute an "old-style" API call
final Response response = given()
.spec(spec)
.auth().basic(adminUser.getUsername(), adminUser.getPassword())
.contentType(ContentType.JSON)
.body(bodyJson.toString())
.pathParam("nodeId", filePlanComponentId)
.log().all()
.when()
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
.prettyPeek()
.andReturn();
final Response response =
given().spec(spec)
.auth()
.basic(adminUser.getUsername(), adminUser.getPassword())
.contentType(ContentType.JSON)
.body(bodyJson.toString())
.pathParam("nodeId", filePlanComponentId)
.log()
.all()
.when()
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
.prettyPeek()
.andReturn();
getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
}
/**
* Creates a user with the given name using the old APIs
*
@@ -208,35 +209,31 @@ public class RMUserAPI extends RMModelRequest
* @param userEmail The user's e-mail address
* @return <code>true</code> if the user was created successfully, <code>false</code> otherwise.
*/
public boolean createUser(String userName, String userPassword, String userEmail)
{
public boolean createUser(String userName, String userPassword, String userEmail) {
UserModel adminUser = getRmRestWrapper().getTestUser();
final AlfrescoHttpClient client = getAlfrescoHttpClient();
JsonObject body = buildObject()
.add("userName", userName)
.add("firstName", userName)
.add("lastName", userName)
.add("password", userPassword)
.add("email", userEmail)
.getJson();
JsonObject body =
buildObject()
.add("userName", userName)
.add("firstName", userName)
.add("lastName", userName)
.add("password", userPassword)
.add("email", userEmail)
.getJson();
final RequestSpecification spec = new RequestSpecBuilder()
.setBaseUri(client.getApiUrl())
.setBasePath("/")
.setAuth(basic(adminUser.getUsername(), adminUser.getPassword()))
.setContentType(ContentType.JSON)
.setBody(body.toString())
.build();
final RequestSpecification spec =
new RequestSpecBuilder()
.setBaseUri(client.getApiUrl())
.setBasePath("/")
.setAuth(basic(adminUser.getUsername(), adminUser.getPassword()))
.setContentType(ContentType.JSON)
.setBody(body.toString())
.build();
// create POST request to "people" endpoint
Response response = given()
.spec(spec)
.log().all()
.when()
.post("people")
.prettyPeek()
.andReturn();
Response response =
given().spec(spec).log().all().when().post("people").prettyPeek().andReturn();
return (response.getStatusCode() == OK.value());
}

View File

@@ -49,15 +49,13 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Tuna Aksoy
* @since 2.6
*/
public class RecordCategoryAPI extends RMModelRequest
{
public class RecordCategoryAPI extends RMModelRequest {
/**
* Constructor.
*
* @param rmRestWrapper RM REST Wrapper
*/
public RecordCategoryAPI(RMRestWrapper rmRestWrapper)
{
public RecordCategoryAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
@@ -66,30 +64,25 @@ public class RecordCategoryAPI extends RMModelRequest
*
* @param recordCategoryId The identifier of a record category
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordCategoryId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to delete {@code recordCategoryId}</li>
* <li>{@code recordCategoryId} does not exist</li>
* <li>{@code recordCategoryId} is locked and cannot be deleted</li>
* </ul>
* <ul>
* <li>{@code recordCategoryId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to delete {@code recordCategoryId}
* <li>{@code recordCategoryId} does not exist
* <li>{@code recordCategoryId} is locked and cannot be deleted
* </ul>
*/
public void deleteRecordCategory(String recordCategoryId)
{
public void deleteRecordCategory(String recordCategoryId) {
mandatoryString("recordCategoryId", recordCategoryId);
getRmRestWrapper().processEmptyModel(simpleRequest(
DELETE,
"record-categories/{recordCategoryId}",
recordCategoryId
));
getRmRestWrapper()
.processEmptyModel(
simpleRequest(
DELETE, "record-categories/{recordCategoryId}", recordCategoryId));
}
/**
* see {@link #getRecordCategory(String, String)}
*/
public RecordCategory getRecordCategory(String recordCategoryId)
{
/** see {@link #getRecordCategory(String, String)} */
public RecordCategory getRecordCategory(String recordCategoryId) {
mandatoryString("recordCategoryId", recordCategoryId);
return getRecordCategory(recordCategoryId, EMPTY);
@@ -102,30 +95,31 @@ public class RecordCategoryAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link RecordCategory} for the given {@code recordCategoryId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordCategoryId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code recordCategoryId}</li>
* <li>{@code recordCategoryId} does not exist</li>
* </ul>
* <ul>
* <li>{@code recordCategoryId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code recordCategoryId}
* <li>{@code recordCategoryId} does not exist
* </ul>
*/
public RecordCategory getRecordCategory(String recordCategoryId, String parameters)
{
public RecordCategory getRecordCategory(String recordCategoryId, String parameters) {
mandatoryString("recordCategoryId", recordCategoryId);
return getRmRestWrapper().processModel(RecordCategory.class, simpleRequest(
GET,
"record-categories/{recordCategoryId}?{parameters}",
recordCategoryId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordCategory.class,
simpleRequest(
GET,
"record-categories/{recordCategoryId}?{parameters}",
recordCategoryId,
parameters));
}
/**
* see {@link #updateRecordCategory(RecordCategory, String, String)
*/
public RecordCategory updateRecordCategory(RecordCategory recordCategoryModel, String recordCategoryId)
{
public RecordCategory updateRecordCategory(
RecordCategory recordCategoryModel, String recordCategoryId) {
mandatoryObject("recordCategoryModel", recordCategoryModel);
mandatoryString("recordCategoryId", recordCategoryId);
@@ -140,34 +134,35 @@ public class RecordCategoryAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @param returns The updated {@link RecordCategory}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code recordCategoryId} is not a valid format or {@code recordCategoryModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code recordCategoryId}</li>
* <li>{@code recordCategoryId} does not exist</li>
* <li>the updated name clashes with an existing record category in the current parent category</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code recordCategoryId} is not a valid format or
* {@code recordCategoryModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code recordCategoryId}
* <li>{@code recordCategoryId} does not exist
* <li>the updated name clashes with an existing record category in the current parent
* category
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public RecordCategory updateRecordCategory(RecordCategory recordCategoryModel, String recordCategoryId, String parameters)
{
public RecordCategory updateRecordCategory(
RecordCategory recordCategoryModel, String recordCategoryId, String parameters) {
mandatoryObject("recordCategoryModel", recordCategoryModel);
mandatoryString("recordCategoryId", recordCategoryId);
return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody(
PUT,
toJson(recordCategoryModel),
"record-categories/{recordCategoryId}?{parameters}",
recordCategoryId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordCategory.class,
requestWithBody(
PUT,
toJson(recordCategoryModel),
"record-categories/{recordCategoryId}?{parameters}",
recordCategoryId,
parameters));
}
/**
* see {@link #getRecordCategoryChildren(String, String)}
*/
public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId)
{
/** see {@link #getRecordCategoryChildren(String, String)} */
public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId) {
mandatoryString("recordCategoryId", recordCategoryId);
return getRecordCategoryChildren(recordCategoryId, EMPTY);
@@ -180,29 +175,29 @@ public class RecordCategoryAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link RecordCategoryChildCollection} for the given {@code recordCategoryId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code recordCategoryId}</li>
* <li>{@code recordCategoryId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code recordCategoryId}
* <li>{@code recordCategoryId} does not exist
* </ul>
*/
public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId, String parameters)
{
public RecordCategoryChildCollection getRecordCategoryChildren(
String recordCategoryId, String parameters) {
mandatoryString("recordCategoryId", recordCategoryId);
return getRmRestWrapper().processModels(RecordCategoryChildCollection.class, simpleRequest(
GET,
"record-categories/{recordCategoryId}/children?{parameters}",
recordCategoryId,
parameters
));
return getRmRestWrapper()
.processModels(
RecordCategoryChildCollection.class,
simpleRequest(
GET,
"record-categories/{recordCategoryId}/children?{parameters}",
recordCategoryId,
parameters));
}
/**
* see {@link #createRecordCategoryChild(RecordCategoryChild, String, String)}
*/
public RecordCategoryChild createRecordCategoryChild(RecordCategoryChild recordCategoryChildModel, String recordCategoryId)
{
/** see {@link #createRecordCategoryChild(RecordCategoryChild, String, String)} */
public RecordCategoryChild createRecordCategoryChild(
RecordCategoryChild recordCategoryChildModel, String recordCategoryId) {
mandatoryObject("recordCategoryChildModel", recordCategoryChildModel);
mandatoryString("recordCategoryId", recordCategoryId);
@@ -217,26 +212,31 @@ public class RecordCategoryAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The created {@link RecordCategoryChild}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordCategoryId} is not a valid format or {@code recordCategoryChildModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to add children to {@code recordCategoryId}</li>
* <li>{@code recordCategoryId} does not exist</li>
* <li>new name clashes with an existing node in the current parent container</li>
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
* <ul>
* <li>{@code recordCategoryId} is not a valid format or {@code recordCategoryChildModel}
* is invalid
* <li>authentication fails
* <li>current user does not have permission to add children to {@code recordCategoryId}
* <li>{@code recordCategoryId} does not exist
* <li>new name clashes with an existing node in the current parent container
* <li>model integrity exception, including node name with invalid characters
* </ul>
*/
public RecordCategoryChild createRecordCategoryChild(RecordCategoryChild recordCategoryChildModel, String recordCategoryId, String parameters)
{
public RecordCategoryChild createRecordCategoryChild(
RecordCategoryChild recordCategoryChildModel,
String recordCategoryId,
String parameters) {
mandatoryObject("filePlanComponentProperties", recordCategoryChildModel);
mandatoryString("recordCategoryId", recordCategoryId);
return getRmRestWrapper().processModel(RecordCategoryChild.class, requestWithBody(
POST,
toJson(recordCategoryChildModel),
"record-categories/{recordCategoryId}/children?{parameters}",
recordCategoryId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordCategoryChild.class,
requestWithBody(
POST,
toJson(recordCategoryChildModel),
"record-categories/{recordCategoryId}/children?{parameters}",
recordCategoryId,
parameters));
}
}

View File

@@ -39,12 +39,9 @@ import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpMethod.PUT;
import static org.testng.Assert.fail;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.http.ContentType;
@@ -55,21 +52,23 @@ import org.alfresco.rest.rm.community.model.recordfolder.RecordFolderCollection;
import org.alfresco.rest.rm.community.requests.RMModelRequest;
import org.alfresco.rest.rm.community.util.FilePlanComponentMixIn;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
/**
* Record folder REST API Wrapper
*
* @author Tuna Aksoy
* @since 2.6
*/
public class RecordFolderAPI extends RMModelRequest
{
public class RecordFolderAPI extends RMModelRequest {
/**
* Constructor.
*
* @param rmRestWrapper RM REST Wrapper
*/
public RecordFolderAPI(RMRestWrapper rmRestWrapper)
{
public RecordFolderAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
@@ -78,30 +77,24 @@ public class RecordFolderAPI extends RMModelRequest
*
* @param recordFolderId The identifier of a record folder
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordFolderId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to delete {@code recordFolderId}</li>
* <li>{@code recordFolderId} does not exist</li>
* <li>{@code recordFolderId} is locked and cannot be deleted</li>
* </ul>
* <ul>
* <li>{@code recordFolderId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to delete {@code recordFolderId}
* <li>{@code recordFolderId} does not exist
* <li>{@code recordFolderId} is locked and cannot be deleted
* </ul>
*/
public void deleteRecordFolder(String recordFolderId)
{
public void deleteRecordFolder(String recordFolderId) {
mandatoryString("recordFolderId", recordFolderId);
getRmRestWrapper().processEmptyModel(simpleRequest(
DELETE,
"record-folders/{recordFolderId}",
recordFolderId
));
getRmRestWrapper()
.processEmptyModel(
simpleRequest(DELETE, "record-folders/{recordFolderId}", recordFolderId));
}
/**
* see {@link #getRecordFolder(String, String)}
*/
public RecordFolder getRecordFolder(String recordFolderId)
{
/** see {@link #getRecordFolder(String, String)} */
public RecordFolder getRecordFolder(String recordFolderId) {
mandatoryString("recordFolderId", recordFolderId);
return getRecordFolder(recordFolderId, EMPTY);
@@ -114,30 +107,30 @@ public class RecordFolderAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link RecordFolder} for the given {@code recordFolderId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordFolderId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code recordFolderId}</li>
* <li>{@code recordFolderId} does not exist</li>
* </ul>
* <ul>
* <li>{@code recordFolderId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code recordFolderId}
* <li>{@code recordFolderId} does not exist
* </ul>
*/
public RecordFolder getRecordFolder(String recordFolderId, String parameters)
{
public RecordFolder getRecordFolder(String recordFolderId, String parameters) {
mandatoryString("recordFolderId", recordFolderId);
return getRmRestWrapper().processModel(RecordFolder.class, simpleRequest(
GET,
"record-folders/{recordFolderId}?{parameters}",
recordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordFolder.class,
simpleRequest(
GET,
"record-folders/{recordFolderId}?{parameters}",
recordFolderId,
parameters));
}
/**
* see {@link #updateRecordFolder(RecordFolder, String, String)
*/
public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId)
{
public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId) {
mandatoryObject("recordFolderModel", recordFolderModel);
mandatoryString("recordFolderId", recordFolderId);
@@ -152,34 +145,35 @@ public class RecordFolderAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @param returns The updated {@link RecordFolder}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code recordFolderId} is not a valid format or {@code recordFolderModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code recordFolderId}</li>
* <li>{@code recordFolderId} does not exist</li>
* <li>the updated name clashes with an existing record folder in the current parent category</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code recordFolderId} is not a valid format or
* {@code recordFolderModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code recordFolderId}
* <li>{@code recordFolderId} does not exist
* <li>the updated name clashes with an existing record folder in the current parent
* category
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId, String parameters)
{
public RecordFolder updateRecordFolder(
RecordFolder recordFolderModel, String recordFolderId, String parameters) {
mandatoryObject("recordFolderModel", recordFolderModel);
mandatoryString("recordFolderId", recordFolderId);
return getRmRestWrapper().processModel(RecordFolder.class, requestWithBody(
PUT,
toJson(recordFolderModel),
"record-folders/{recordFolderId}?{parameters}",
recordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
RecordFolder.class,
requestWithBody(
PUT,
toJson(recordFolderModel),
"record-folders/{recordFolderId}?{parameters}",
recordFolderId,
parameters));
}
/**
* see {@link #getRecordFolderChildren(String, String)}
*/
public RecordFolderCollection getRecordFolderChildren(String recordFolderId)
{
/** see {@link #getRecordFolderChildren(String, String)} */
public RecordFolderCollection getRecordFolderChildren(String recordFolderId) {
mandatoryString("recordFolderId", recordFolderId);
return getRecordFolderChildren(recordFolderId, EMPTY);
@@ -192,29 +186,28 @@ public class RecordFolderAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link RecordFolderCollection} for the given {@code recordFolderId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code recordFolderId}</li>
* <li>{@code recordFolderId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code recordFolderId}
* <li>{@code recordFolderId} does not exist
* </ul>
*/
public RecordFolderCollection getRecordFolderChildren(String recordFolderId, String parameters)
{
public RecordFolderCollection getRecordFolderChildren(
String recordFolderId, String parameters) {
mandatoryString("recordFolderId", recordFolderId);
return getRmRestWrapper().processModels(RecordFolderCollection.class, simpleRequest(
GET,
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters
));
return getRmRestWrapper()
.processModels(
RecordFolderCollection.class,
simpleRequest(
GET,
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters));
}
/**
* see {@link #createRecord(Record, String, String)}
*/
public Record createRecord(Record recordModel, String recordFolderId)
{
/** see {@link #createRecord(Record, String, String)} */
public Record createRecord(Record recordModel, String recordFolderId) {
mandatoryObject("recordModel", recordModel);
mandatoryString("recordFolderId", recordFolderId);
@@ -225,19 +218,19 @@ public class RecordFolderAPI extends RMModelRequest
* Create a record from file resource
*
* @param recordModel {@link Record} for electronic record to be created
* @param recordContent {@link File} pointing to the content of the electronic record to be created
* @param recordContent {@link File} pointing to the content of the electronic record to be
* created
* @param recordFolderId The identifier of a record folder
* @return newly created {@link Record}
* @throws RuntimeException for invalid recordModel JSON strings
*/
public Record createRecord(Record recordModel, String recordFolderId, File recordContent) throws RuntimeException
{
public Record createRecord(Record recordModel, String recordFolderId, File recordContent)
throws RuntimeException {
mandatoryString("recordFolderId", recordFolderId);
mandatoryObject("recordContent", recordContent);
mandatoryObject("recordModel", recordModel);
if (!recordModel.getNodeType().equals(CONTENT_TYPE))
{
if (!recordModel.getNodeType().equals(CONTENT_TYPE)) {
fail("Only electronic records are supported");
}
@@ -247,18 +240,20 @@ public class RecordFolderAPI extends RMModelRequest
*/
RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec();
JsonNode root;
try
{
root = new ObjectMapper().readTree(toJson(recordModel, Record.class, FilePlanComponentMixIn.class));
}
catch (IOException e)
{
try {
root =
new ObjectMapper()
.readTree(
toJson(
recordModel,
Record.class,
FilePlanComponentMixIn.class));
} catch (IOException e) {
throw new RuntimeException("Failed to convert model to JSON.", e);
}
// add request fields
Iterator<String> fieldNames = root.fieldNames();
while (fieldNames.hasNext())
{
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
}
@@ -284,17 +279,18 @@ public class RecordFolderAPI extends RMModelRequest
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
*/
public Record createRecord(Record recordModel, String recordFolderId, String parameters)
{
public Record createRecord(Record recordModel, String recordFolderId, String parameters) {
mandatoryObject("recordModel", recordModel);
mandatoryString("recordFolderId", recordFolderId);
return getRmRestWrapper().processModel(Record.class, requestWithBody(
POST,
toJson(recordModel),
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
Record.class,
requestWithBody(
POST,
toJson(recordModel),
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters));
}
}

View File

@@ -37,27 +37,22 @@ import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpMethod.PUT;
import io.restassured.response.ResponseBody;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.rm.community.model.record.Record;
import org.alfresco.rest.rm.community.model.record.RecordBodyFile;
import org.alfresco.rest.rm.community.requests.RMModelRequest;
import io.restassured.response.ResponseBody;
/**
* Records REST API Wrapper
*
* @author Rodica Sutu
* @since 2.6
*/
public class RecordsAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public RecordsAPI(RMRestWrapper rmRestWrapper)
{
public class RecordsAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public RecordsAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
@@ -67,42 +62,40 @@ public class RecordsAPI extends RMModelRequest
* @param recordId The id of the electronic record
* @return {@link ResponseBody} representing content for the given record id
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordId} has no content</li>
* <li> {@code recordId} is not a valid format, or is not a record</li>
* <li>authentication fails</li>
* <li>{@code recordId} does not exist</li>
* </ul>
* <ul>
* <li>{@code recordId} has no content
* <li>{@code recordId} is not a valid format, or is not a record
* <li>authentication fails
* <li>{@code recordId} does not exist
* </ul>
*/
public ResponseBody<?> getRecordContent(String recordId)
{
public ResponseBody<?> getRecordContent(String recordId) {
mandatoryString("recordId", recordId);
return getRmRestWrapper()
.processHtmlResponse(simpleRequest(GET,"records/{recordId}/content", recordId))
.getBody();
.processHtmlResponse(simpleRequest(GET, "records/{recordId}/content", recordId))
.getBody();
}
/**
* File the record recordId into file plan structure based on the location sent via the request body
* File the record recordId into file plan structure based on the location sent via the request
* body
*
* @param recordBodyFile The properties where to file the record
* @param recordId The id of the record to file
* @param recordId The id of the record to file
* @return The {@link Record} with the given properties
* @throws RuntimeException for the following cases:
* <ul>
* <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is not a record</li>
* <li>authentication fails</li>
* <li>current user does not have permission to file to {@code fileplanComponentId}</li>
* <li>{@code recordId} does not exist</li>
* <li>targetParentId from recordBodyFile does not exist</li>
* <li>model integrity exception: the action breaks system's integrity restrictions</li>
* </ul>
*
* <ul>
* <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is
* not a record
* <li>authentication fails
* <li>current user does not have permission to file to {@code fileplanComponentId}
* <li>{@code recordId} does not exist
* <li>targetParentId from recordBodyFile does not exist
* <li>model integrity exception: the action breaks system's integrity restrictions
* </ul>
*/
public Record fileRecord(RecordBodyFile recordBodyFile, String recordId)
{
public Record fileRecord(RecordBodyFile recordBodyFile, String recordId) {
mandatoryObject("recordBodyFile", recordBodyFile);
mandatoryString("recordId", recordId);
@@ -110,41 +103,42 @@ public class RecordsAPI extends RMModelRequest
}
/**
* File the record recordId into file plan structure based on the location sent via the request body
* File the record recordId into file plan structure based on the location sent via the request
* body
*
* @param recordBodyFile The properties where to file the record
* @param recordId The id of the record to file
* @param recordId The id of the record to file
* @return The {@link Record} with the given properties
* @throws RuntimeException for the following cases:
* <ul>
* <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is not a record</li>
* <li>authentication fails</li>
* <li>current user does not have permission to file to {@code fileplanComponentId}</li>
* <li>{@code recordId} does not exist</li>
* <li>targetParentId from recordBodyFile does not exist</li>
* <li>model integrity exception: the action breaks system's integrity restrictions</li>
* </ul>
*
* <ul>
* <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is
* not a record
* <li>authentication fails
* <li>current user does not have permission to file to {@code fileplanComponentId}
* <li>{@code recordId} does not exist
* <li>targetParentId from recordBodyFile does not exist
* <li>model integrity exception: the action breaks system's integrity restrictions
* </ul>
*/
public Record fileRecord(RecordBodyFile recordBodyFile, String recordId, String parameters)
{
public Record fileRecord(RecordBodyFile recordBodyFile, String recordId, String parameters) {
mandatoryObject("requestBodyFile", recordBodyFile);
mandatoryString("recordId", recordId);
return getRmRestWrapper().processModel(Record.class, requestWithBody(
POST,
toJson(recordBodyFile),
"/records/{recordId}/file?{parameters}",
recordId,
parameters
));
return getRmRestWrapper()
.processModel(
Record.class,
requestWithBody(
POST,
toJson(recordBodyFile),
"/records/{recordId}/file?{parameters}",
recordId,
parameters));
}
/**
* see {@link #completeRecord(String, String)
*/
public Record completeRecord(String recordId)
{
public Record completeRecord(String recordId) {
mandatoryString("recordId", recordId);
return completeRecord(recordId, EMPTY);
@@ -156,55 +150,48 @@ public class RecordsAPI extends RMModelRequest
* @param recordId The id of the record to complete
* @return The completed {@link Record} with the given properties
* @throws RuntimeException for the following cases:
* <ul>
* <li>Invalid parameter: {@code recordId} is not a record</li>
* <li>authentication fails</li>
* <li>current user does not have permission to complete {@code recordId}</li>
* <li>{@code recordId} does not exist or is frozen</li>
* <li>model integrity exception: the record is already completed</li>
* <li>model integrity exception: the record has missing meta-data</li>
* </ul>
* <ul>
* <li>Invalid parameter: {@code recordId} is not a record
* <li>authentication fails
* <li>current user does not have permission to complete {@code recordId}
* <li>{@code recordId} does not exist or is frozen
* <li>model integrity exception: the record is already completed
* <li>model integrity exception: the record has missing meta-data
* </ul>
*/
public Record completeRecord(String recordId, String parameters)
{
public Record completeRecord(String recordId, String parameters) {
mandatoryString("recordId", recordId);
return getRmRestWrapper().processModel(Record.class, simpleRequest(
POST,
"/records/{recordId}/complete?{parameters}",
recordId,
parameters
));
return getRmRestWrapper()
.processModel(
Record.class,
simpleRequest(
POST,
"/records/{recordId}/complete?{parameters}",
recordId,
parameters));
}
/**
* Deletes a record.
*
* @param recordId The identifier of a record
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to delete {@code recordId}</li>
* <li>{@code recordId} does not exist</li>
* <li>{@code recordId} is locked and cannot be deleted</li>
* </ul>
* <ul>
* <li>{@code recordId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to delete {@code recordId}
* <li>{@code recordId} does not exist
* <li>{@code recordId} is locked and cannot be deleted
* </ul>
*/
public void deleteRecord(String recordId)
{
public void deleteRecord(String recordId) {
mandatoryString("recordId", recordId);
getRmRestWrapper().processEmptyModel(simpleRequest(
DELETE,
"records/{recordId}",
recordId
));
getRmRestWrapper().processEmptyModel(simpleRequest(DELETE, "records/{recordId}", recordId));
}
/**
* see {@link #getRecord(String, String)}
*/
public Record getRecord(String recordId)
{
/** see {@link #getRecord(String, String)} */
public Record getRecord(String recordId) {
mandatoryString("recordId", recordId);
return getRecord(recordId, EMPTY);
@@ -217,30 +204,27 @@ public class RecordsAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link Record} for the given {@code recordId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code recordId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code recordId}</li>
* <li>{@code recordId} does not exist</li>
* </ul>
* <ul>
* <li>{@code recordId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code recordId}
* <li>{@code recordId} does not exist
* </ul>
*/
public Record getRecord(String recordId, String parameters)
{
public Record getRecord(String recordId, String parameters) {
mandatoryString("recordId", recordId);
return getRmRestWrapper().processModel(Record.class, simpleRequest(
GET,
"records/{recordId}?{parameters}",
recordId,
parameters
));
return getRmRestWrapper()
.processModel(
Record.class,
simpleRequest(
GET, "records/{recordId}?{parameters}", recordId, parameters));
}
/**
* see {@link #updateRecord(Record, String, String)
*/
public Record updateRecord(Record recordModel, String recordId)
{
public Record updateRecord(Record recordModel, String recordId) {
mandatoryObject("recordModel", recordModel);
mandatoryString("recordId", recordId);
@@ -255,26 +239,28 @@ public class RecordsAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The updated {@link Record}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code recordId} is not a valid format or {@code recordModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code recordId}</li>
* <li>{@code recordId} does not exist</li>
* <li>the updated name clashes with an existing record in the current parent folder</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code recordId} is not a valid format or {@code
* recordModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code recordId}
* <li>{@code recordId} does not exist
* <li>the updated name clashes with an existing record in the current parent folder
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public Record updateRecord(Record recordModel, String recordId, String parameters)
{
public Record updateRecord(Record recordModel, String recordId, String parameters) {
mandatoryObject("recordModel", recordModel);
mandatoryString("recordId", recordId);
return getRmRestWrapper().processModel(Record.class, requestWithBody(
PUT,
toJson(recordModel),
"records/{recordId}?{parameters}",
recordId,
parameters
));
return getRmRestWrapper()
.processModel(
Record.class,
requestWithBody(
PUT,
toJson(recordModel),
"records/{recordId}?{parameters}",
recordId,
parameters));
}
}

View File

@@ -43,21 +43,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Silviu Dinuta
* @since 2.6
*/
public class TransferAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public TransferAPI(RMRestWrapper rmRestWrapper)
{
public class TransferAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public TransferAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* see {@link #getTransfer(String, String)}
*/
public Transfer getTransfer(String transferId)
{
/** see {@link #getTransfer(String, String)} */
public Transfer getTransfer(String transferId) {
mandatoryString("transferId", transferId);
return getTransfer(transferId, EMPTY);
@@ -70,29 +63,27 @@ public class TransferAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link Transfer} for the given {@code transferId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code transferId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code transferId}</li>
* <li>{@code transferId} does not exist</li>
* </ul>
* <ul>
* <li>{@code transferId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code transferId}
* <li>{@code transferId} does not exist
* </ul>
*/
public Transfer getTransfer(String transferId, String parameters)
{
public Transfer getTransfer(String transferId, String parameters) {
mandatoryString("transferId", transferId);
return getRmRestWrapper().processModel(Transfer.class, simpleRequest(
GET,
"/transfers/{transferId}?{parameters}",
transferId,
parameters
));
return getRmRestWrapper()
.processModel(
Transfer.class,
simpleRequest(
GET,
"/transfers/{transferId}?{parameters}",
transferId,
parameters));
}
/**
* see {@link #getTransfersChildren(String, String)}
*/
public TransferChildCollection getTransfersChildren(String transferId)
{
/** see {@link #getTransfersChildren(String, String)} */
public TransferChildCollection getTransfersChildren(String transferId) {
mandatoryString("transferId", transferId);
return getTransfersChildren(transferId, EMPTY);
@@ -105,21 +96,22 @@ public class TransferAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link TransferChildCollection} for the given {@code transferId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code transferId}</li>
* <li>{@code filePlanId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code transferId}
* <li>{@code filePlanId} does not exist
* </ul>
*/
public TransferChildCollection getTransfersChildren(String transferId, String parameters)
{
public TransferChildCollection getTransfersChildren(String transferId, String parameters) {
mandatoryString("transferId", transferId);
return getRmRestWrapper().processModels(TransferChildCollection.class, simpleRequest(
GET,
"transfers/{filePlanId}/children?{parameters}",
transferId,
parameters
));
return getRmRestWrapper()
.processModels(
TransferChildCollection.class,
simpleRequest(
GET,
"transfers/{filePlanId}/children?{parameters}",
transferId,
parameters));
}
}

View File

@@ -47,21 +47,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest;
* @author Silviu Dinuta
* @since 2.6
*/
public class TransferContainerAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public TransferContainerAPI(RMRestWrapper rmRestWrapper)
{
public class TransferContainerAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public TransferContainerAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* see {@link #getTransferContainer(String, String)}
*/
public TransferContainer getTransferContainer(String transferContainerId)
{
/** see {@link #getTransferContainer(String, String)} */
public TransferContainer getTransferContainer(String transferContainerId) {
mandatoryString("transferContainerId", transferContainerId);
return getTransferContainer(transferContainerId, EMPTY);
@@ -74,30 +67,31 @@ public class TransferContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link TransferContainer} for the given {@code transferContainerId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code transferContainerId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code transferContainerId}</li>
* <li>{@code transferContainerId} does not exist</li>
* </ul>
* <ul>
* <li>{@code transferContainerId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code transferContainerId}
* <li>{@code transferContainerId} does not exist
* </ul>
*/
public TransferContainer getTransferContainer(String transferContainerId, String parameters)
{
public TransferContainer getTransferContainer(String transferContainerId, String parameters) {
mandatoryString("transferContainerId", transferContainerId);
return getRmRestWrapper().processModel(TransferContainer.class, simpleRequest(
GET,
"/transfer-containers/{transferContainerId}?{parameters}",
transferContainerId,
parameters
));
return getRmRestWrapper()
.processModel(
TransferContainer.class,
simpleRequest(
GET,
"/transfer-containers/{transferContainerId}?{parameters}",
transferContainerId,
parameters));
}
/**
* see {@link #updateTransferContainer(TransferContainer, String, String)
*/
public TransferContainer updateTransferContainer(TransferContainer transferContainerModel, String transferContainerId)
{
public TransferContainer updateTransferContainer(
TransferContainer transferContainerModel, String transferContainerId) {
mandatoryObject("transferContainerModel", transferContainerModel);
mandatoryString("transferContainerId", transferContainerId);
@@ -112,34 +106,38 @@ public class TransferContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @param returns The updated {@link TransferContainer}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code transferContainerId} is not a valid format or {@code transferContainerModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code transferContainerId}</li>
* <li>{@code transferContainerId} does not exist</li>
* <li>the updated name clashes with an existing transfer container in the current file plan</li>
* <li>model integrity exception, including transfer container name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code transferContainerId} is not a valid format
* or {@code transferContainerModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code transferContainerId}
* <li>{@code transferContainerId} does not exist
* <li>the updated name clashes with an existing transfer container in the current file
* plan
* <li>model integrity exception, including transfer container name with invalid
* characters
* </ul>
*/
public TransferContainer updateTransferContainer(TransferContainer transferContainerModel, String transferContainerId, String parameters)
{
public TransferContainer updateTransferContainer(
TransferContainer transferContainerModel,
String transferContainerId,
String parameters) {
mandatoryObject("transferContainerModel", transferContainerModel);
mandatoryString("transferContainerId", transferContainerId);
return getRmRestWrapper().processModel(TransferContainer.class, requestWithBody(
PUT,
toJson(transferContainerModel),
"transfer-containers/{transferContainerId}?{parameters}",
transferContainerId,
parameters
));
return getRmRestWrapper()
.processModel(
TransferContainer.class,
requestWithBody(
PUT,
toJson(transferContainerModel),
"transfer-containers/{transferContainerId}?{parameters}",
transferContainerId,
parameters));
}
/**
* see {@link #getTransfers(String, String)}
*/
public TransferCollection getTransfers(String transferContainerId)
{
/** see {@link #getTransfers(String, String)} */
public TransferCollection getTransfers(String transferContainerId) {
mandatoryString("transferContainerId", transferContainerId);
return getTransfers(transferContainerId, EMPTY);
@@ -152,21 +150,22 @@ public class TransferContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link TransferCollection} for the given {@code transferContainerId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code transferContainerId}</li>
* <li>{@code filePlanId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code transferContainerId}
* <li>{@code filePlanId} does not exist
* </ul>
*/
public TransferCollection getTransfers(String transferContainerId, String parameters)
{
public TransferCollection getTransfers(String transferContainerId, String parameters) {
mandatoryString("transferContainerId", transferContainerId);
return getRmRestWrapper().processModels(TransferCollection.class, simpleRequest(
GET,
"transfer-containers/{filePlanId}/transfers?{parameters}",
transferContainerId,
parameters
));
return getRmRestWrapper()
.processModels(
TransferCollection.class,
simpleRequest(
GET,
"transfer-containers/{filePlanId}/transfers?{parameters}",
transferContainerId,
parameters));
}
}

View File

@@ -38,10 +38,6 @@ import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpMethod.PUT;
import static org.testng.Assert.fail;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -55,6 +51,10 @@ import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChi
import org.alfresco.rest.rm.community.requests.RMModelRequest;
import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
/**
* Unfiled Container REST API Wrapper
*
@@ -62,21 +62,14 @@ import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin;
* @author Ana Bozianu
* @since 2.6
*/
public class UnfiledContainerAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public UnfiledContainerAPI(RMRestWrapper rmRestWrapper)
{
public class UnfiledContainerAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public UnfiledContainerAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* see {@link #getUnfiledContainer(String, String)}
*/
public UnfiledContainer getUnfiledContainer(String unfiledContainerId)
{
/** see {@link #getUnfiledContainer(String, String)} */
public UnfiledContainer getUnfiledContainer(String unfiledContainerId) {
mandatoryString("unfiledContainerId", unfiledContainerId);
return getUnfiledContainer(unfiledContainerId, EMPTY);
@@ -89,30 +82,28 @@ public class UnfiledContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link UnfiledContainer} for the given {@code unfiledContainerId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code unfiledContainerId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code unfiledContainerId}</li>
* <li>{@code unfiledContainerId} does not exist</li>
* </ul>
* <ul>
* <li>{@code unfiledContainerId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code unfiledContainerId}
* <li>{@code unfiledContainerId} does not exist
* </ul>
*/
public UnfiledContainer getUnfiledContainer(String unfiledContainerId, String parameters)
{
public UnfiledContainer getUnfiledContainer(String unfiledContainerId, String parameters) {
mandatoryString("unfiledContainerId", unfiledContainerId);
return getRmRestWrapper().processModel(UnfiledContainer.class, simpleRequest(
GET,
"unfiled-containers/{unfiledContainerId}?{parameters}",
unfiledContainerId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledContainer.class,
simpleRequest(
GET,
"unfiled-containers/{unfiledContainerId}?{parameters}",
unfiledContainerId,
parameters));
}
/**
* see {@link #getUnfiledContainerChildren(String)} (String, String)}
*/
public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId)
{
/** see {@link #getUnfiledContainerChildren(String)} (String, String)} */
public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId) {
mandatoryString("unfiledContainerId", unfiledContainerId);
return getUnfiledContainerChildren(unfiledContainerId, EMPTY);
@@ -125,29 +116,29 @@ public class UnfiledContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link UnfiledContainerChildCollection} for the given {@code unfiledContainerId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code unfiledContainerId}</li>
* <li>{@code unfiledContainerId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code unfiledContainerId}
* <li>{@code unfiledContainerId} does not exist
* </ul>
*/
public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId, String parameters)
{
public UnfiledContainerChildCollection getUnfiledContainerChildren(
String unfiledContainerId, String parameters) {
mandatoryString("unfiledContainerId", unfiledContainerId);
return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest(
GET,
"unfiled-containers/{unfiledContainerId}/children?{parameters}",
unfiledContainerId,
parameters
));
return getRmRestWrapper()
.processModels(
UnfiledContainerChildCollection.class,
simpleRequest(
GET,
"unfiled-containers/{unfiledContainerId}/children?{parameters}",
unfiledContainerId,
parameters));
}
/**
* see {@link #createUnfiledContainerChild(UnfiledContainerChild, String, String)}
*/
public UnfiledContainerChild createUnfiledContainerChild(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId)
{
/** see {@link #createUnfiledContainerChild(UnfiledContainerChild, String, String)} */
public UnfiledContainerChild createUnfiledContainerChild(
UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId) {
mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel);
mandatoryString("unfiledContainerId", unfiledContainerId);
@@ -157,51 +148,60 @@ public class UnfiledContainerAPI extends RMModelRequest
/**
* Creates an unfiled container child. Can be a record or an unfiled record folder.
*
* @param unfiledContainerChildModel The unfiled container child model which holds the information
* @param unfiledContainerChildModel The unfiled container child model which holds the
* information
* @param unfiledContainerId The identifier of an unfiled container
* @param parameters The URL parameters to add
* @return The created {@link UnfiledContainerChild}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code unfiledContainerId} is not a valid format or {@code unfiledContainerChildModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to add children to {@code unfiledContainerId}</li>
* <li>{@code unfiledContainerId} does not exist</li>
* <li>new name clashes with an existing node in the current parent container</li>
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
* <ul>
* <li>{@code unfiledContainerId} is not a valid format or {@code
* unfiledContainerChildModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to add children to {@code unfiledContainerId}
* <li>{@code unfiledContainerId} does not exist
* <li>new name clashes with an existing node in the current parent container
* <li>model integrity exception, including node name with invalid characters
* </ul>
*/
public UnfiledContainerChild createUnfiledContainerChild(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId, String parameters)
{
public UnfiledContainerChild createUnfiledContainerChild(
UnfiledContainerChild unfiledContainerChildModel,
String unfiledContainerId,
String parameters) {
mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel);
mandatoryString("unfiledContainerId", unfiledContainerId);
return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody(
POST,
toJson(unfiledContainerChildModel),
"unfiled-containers/{unfiledContainerId}/children?{parameters}",
unfiledContainerId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledContainerChild.class,
requestWithBody(
POST,
toJson(unfiledContainerChildModel),
"unfiled-containers/{unfiledContainerId}/children?{parameters}",
unfiledContainerId,
parameters));
}
/**
* Create a record from file resource
*
* @param unfiledContainerChildModel {@link UnfiledContainerChild} for electronic record to be created
* @param unfiledContainerChildContent {@link File} pointing to the content of the electronic record to be created
* @param unfiledContainerChildModel {@link UnfiledContainerChild} for electronic record to be
* created
* @param unfiledContainerChildContent {@link File} pointing to the content of the electronic
* record to be created
* @param unfiledContainerId The identifier of a unfiled container
* @return newly created {@link UnfiledContainerChild}
* @throws RuntimeException for invalid recordModel JSON strings
*/
public UnfiledContainerChild uploadRecord(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId, File unfiledContainerChildContent)
{
public UnfiledContainerChild uploadRecord(
UnfiledContainerChild unfiledContainerChildModel,
String unfiledContainerId,
File unfiledContainerChildContent) {
mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel);
mandatoryObject("unfiledContainerChildContent", unfiledContainerChildContent);
mandatoryString("unfiledContainerId", unfiledContainerId);
if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE))
{
if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE)) {
fail("Only electronic records are supported");
}
@@ -211,18 +211,20 @@ public class UnfiledContainerAPI extends RMModelRequest
*/
RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec();
JsonNode root;
try
{
root = new ObjectMapper().readTree(toJson(unfiledContainerChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class));
}
catch (IOException e)
{
try {
root =
new ObjectMapper()
.readTree(
toJson(
unfiledContainerChildModel,
UnfiledContainerChild.class,
UnfiledContainerChildMixin.class));
} catch (IOException e) {
throw new RuntimeException("Failed to convert model to JSON.", e);
}
// add request fields
Iterator<String> fieldNames = root.fieldNames();
while (fieldNames.hasNext())
{
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
}
@@ -235,8 +237,8 @@ public class UnfiledContainerAPI extends RMModelRequest
/**
* see {@link #updateUnfiledContainer(UnfiledContainer, String, String)
*/
public UnfiledContainer updateUnfiledContainer(UnfiledContainer unfiledContainerModel, String unfiledContainerId)
{
public UnfiledContainer updateUnfiledContainer(
UnfiledContainer unfiledContainerModel, String unfiledContainerId) {
mandatoryObject("unfiledContainerModel", unfiledContainerModel);
mandatoryString("unfiledContainerId", unfiledContainerId);
@@ -251,27 +253,30 @@ public class UnfiledContainerAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @param returns The updated {@link UnfiledContainer}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code unfiledContainerId} is not a valid format or {@code unfiledContainerModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code unfiledContainerId}</li>
* <li>{@code unfiledContainerId} does not exist</li>
* <li>the updated name clashes with an existing root category of special container in the current fileplan</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code unfiledContainerId} is not a valid format
* or {@code unfiledContainerModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code unfiledContainerId}
* <li>{@code unfiledContainerId} does not exist
* <li>the updated name clashes with an existing root category of special container in the
* current fileplan
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public UnfiledContainer updateUnfiledContainer(UnfiledContainer unfiledContainerModel, String unfiledContainerId, String parameters)
{
public UnfiledContainer updateUnfiledContainer(
UnfiledContainer unfiledContainerModel, String unfiledContainerId, String parameters) {
mandatoryObject("unfiledContainerModel", unfiledContainerModel);
mandatoryString("unfiledContainerId", unfiledContainerId);
return getRmRestWrapper().processModel(UnfiledContainer.class, requestWithBody(
PUT,
toJson(unfiledContainerModel),
"unfiled-containers/{unfiledContainerId}?{parameters}",
unfiledContainerId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledContainer.class,
requestWithBody(
PUT,
toJson(unfiledContainerModel),
"unfiled-containers/{unfiledContainerId}?{parameters}",
unfiledContainerId,
parameters));
}
}

View File

@@ -39,12 +39,9 @@ import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.HttpMethod.PUT;
import static org.testng.Assert.fail;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.http.ContentType;
@@ -55,27 +52,24 @@ import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledRecordFolder
import org.alfresco.rest.rm.community.requests.RMModelRequest;
import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
/**
* Unfiled Record Folders REST API Wrapper
*
* @author Ramona Popa
* @since 2.6
*/
public class UnfiledRecordFolderAPI extends RMModelRequest
{
/**
* @param rmRestWrapper RM REST Wrapper
*/
public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper)
{
public class UnfiledRecordFolderAPI extends RMModelRequest {
/** @param rmRestWrapper RM REST Wrapper */
public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper) {
super(rmRestWrapper);
}
/**
* see {@link #getUnfiledRecordFolder(String, String)}
*/
public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId)
{
/** see {@link #getUnfiledRecordFolder(String, String)} */
public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId) {
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getUnfiledRecordFolder(unfiledRecordFolderId, EMPTY);
@@ -88,30 +82,30 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @return The {@link UnfiledRecordFolder} for the given {@code unfiledRecordFolderId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code unfiledRecordFolderId}</li>
* <li>{@code unfiledRecordFolderId} does not exist</li>
* </ul>
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to read {@code unfiledRecordFolderId}
* <li>{@code unfiledRecordFolderId} does not exist
* </ul>
*/
public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId, String parameters)
{
public UnfiledRecordFolder getUnfiledRecordFolder(
String unfiledRecordFolderId, String parameters) {
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getRmRestWrapper().processModel(UnfiledRecordFolder.class, simpleRequest(
GET,
"unfiled-record-folders/{unfiledRecordFolderId}?{parameters}",
unfiledRecordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledRecordFolder.class,
simpleRequest(
GET,
"unfiled-record-folders/{unfiledRecordFolderId}?{parameters}",
unfiledRecordFolderId,
parameters));
}
/**
* see {@link #getUnfiledRecordFolderChildren(String, String)}
*/
public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId)
{
/** see {@link #getUnfiledRecordFolderChildren(String, String)} */
public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(
String unfiledRecordFolderId) {
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getUnfiledRecordFolderChildren(unfiledRecordFolderId, EMPTY);
@@ -122,85 +116,97 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
*
* @param unfiledRecordFolderId The identifier of an unfiled records folder
* @param parameters The URL parameters to add
* @return The {@link UnfiledRecordFolderChildCollection} for the given {@code unfiledRecordFolderId}
* @return The {@link UnfiledRecordFolderChildCollection} for the given {@code
* unfiledRecordFolderId}
* @throws RuntimeException for the following cases:
* <ul>
* <li>authentication fails</li>
* <li>current user does not have permission to read {@code unfiledRecordFolderId}</li>
* <li>{@code unfiledRecordFolderId} does not exist</li>
*</ul>
* <ul>
* <li>authentication fails
* <li>current user does not have permission to read {@code unfiledRecordFolderId}
* <li>{@code unfiledRecordFolderId} does not exist
* </ul>
*/
public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId, String parameters)
{
public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(
String unfiledRecordFolderId, String parameters) {
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest(
GET,
"unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}",
unfiledRecordFolderId,
parameters
));
return getRmRestWrapper()
.processModels(
UnfiledContainerChildCollection.class,
simpleRequest(
GET,
"unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}",
unfiledRecordFolderId,
parameters));
}
/**
* see {@link #createUnfiledRecordFolderChild(UnfiledContainerChild, String, String)}
*/
public UnfiledContainerChild createUnfiledRecordFolderChild(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId)
{
/** see {@link #createUnfiledRecordFolderChild(UnfiledContainerChild, String, String)} */
public UnfiledContainerChild createUnfiledRecordFolderChild(
UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId) {
mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel);
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId, EMPTY);
return createUnfiledRecordFolderChild(
unfiledRecordFolderChildModel, unfiledRecordFolderId, EMPTY);
}
/**
* Creates an unfiled record folder child. Can be a record or an unfiled record folder.
*
* @param unfiledRecordFolderChildModel The unfiled folder child model which holds the information
* @param unfiledRecordFolderChildModel The unfiled folder child model which holds the
* information
* @param unfiledRecordFolderId The identifier of an unfiled folder
* @param parameters The URL parameters to add
* @return The created {@link UnfiledRecordFolderChild}
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format or {@code unfiledRecordFolderChildModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to add children to {@code unfiledRecordFolderId}</li>
* <li>{@code unfiledRecordFolderId} does not exist</li>
* <li>new name clashes with an existing node in the current parent container</li>
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format or {@code
* unfiledRecordFolderChildModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to add children to {@code
* unfiledRecordFolderId}
* <li>{@code unfiledRecordFolderId} does not exist
* <li>new name clashes with an existing node in the current parent container
* <li>model integrity exception, including node name with invalid characters
* </ul>
*/
public UnfiledContainerChild createUnfiledRecordFolderChild(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId, String parameters)
{
public UnfiledContainerChild createUnfiledRecordFolderChild(
UnfiledContainerChild unfiledRecordFolderChildModel,
String unfiledRecordFolderId,
String parameters) {
mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel);
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody(
POST,
toJson(unfiledRecordFolderChildModel),
"unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}",
unfiledRecordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledContainerChild.class,
requestWithBody(
POST,
toJson(unfiledRecordFolderChildModel),
"unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}",
unfiledRecordFolderId,
parameters));
}
/**
* Create a record from file resource
*
* @param unfiledRecordFolderChildModel {@link UnfiledContainerChild} for electronic record to be created
* @param unfiledRecordFolderChildContent {@link File} pointing to the content of the electronic record to be created
* @param unfiledRecordFolderChildModel {@link UnfiledContainerChild} for electronic record to
* be created
* @param unfiledRecordFolderChildContent {@link File} pointing to the content of the electronic
* record to be created
* @param unfiledRecordFolderId The identifier of a unfiled record folder
* @return newly created {@link UnfiledContainerChild}
* @throws RuntimeException for invalid recordModel JSON strings
*/
public UnfiledContainerChild uploadRecord(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId, File unfiledRecordFolderChildContent)
{
public UnfiledContainerChild uploadRecord(
UnfiledContainerChild unfiledRecordFolderChildModel,
String unfiledRecordFolderId,
File unfiledRecordFolderChildContent) {
mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel);
mandatoryObject("unfiledRecordFolderChildContent", unfiledRecordFolderChildContent);
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE))
{
if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE)) {
fail("Only electronic records are supported");
}
@@ -210,22 +216,25 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
*/
RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec();
JsonNode root;
try
{
root = new ObjectMapper().readTree(toJson(unfiledRecordFolderChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class));
}
catch (IOException e)
{
try {
root =
new ObjectMapper()
.readTree(
toJson(
unfiledRecordFolderChildModel,
UnfiledContainerChild.class,
UnfiledContainerChildMixin.class));
} catch (IOException e) {
throw new RuntimeException("Failed to convert model to JSON.", e);
}
// add request fields
Iterator<String> fieldNames = root.fieldNames();
while (fieldNames.hasNext())
{
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
}
builder.addMultiPart("filedata", unfiledRecordFolderChildContent, ContentType.BINARY.name());
builder.addMultiPart(
"filedata", unfiledRecordFolderChildContent, ContentType.BINARY.name());
// create node with given content
return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId);
@@ -234,8 +243,8 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
/**
* see {@link #updateUnfiledRecordFolder(UnfiledRecordFolder, String, String)
*/
public UnfiledRecordFolder updateUnfiledRecordFolder(UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId)
{
public UnfiledRecordFolder updateUnfiledRecordFolder(
UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId) {
mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel);
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
@@ -250,27 +259,33 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
* @param parameters The URL parameters to add
* @param returns The updated {@link UnfiledRecordFolder}
* @throws RuntimeException for the following cases:
* <ul>
* <li>the update request is invalid or {@code unfiledRecordFolderId} is not a valid format or {@code unfiledRecordFolderModel} is invalid</li>
* <li>authentication fails</li>
* <li>current user does not have permission to update {@code unfiledRecordFolderId}</li>
* <li>{@code unfiledRecordFolderId} does not exist</li>
* <li>the updated name clashes with an existing root category of special container in the current fileplan</li>
* <li>model integrity exception, including file name with invalid characters</li>
* </ul>
* <ul>
* <li>the update request is invalid or {@code unfiledRecordFolderId} is not a valid
* format or {@code unfiledRecordFolderModel} is invalid
* <li>authentication fails
* <li>current user does not have permission to update {@code unfiledRecordFolderId}
* <li>{@code unfiledRecordFolderId} does not exist
* <li>the updated name clashes with an existing root category of special container in the
* current fileplan
* <li>model integrity exception, including file name with invalid characters
* </ul>
*/
public UnfiledRecordFolder updateUnfiledRecordFolder(UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId, String parameters)
{
public UnfiledRecordFolder updateUnfiledRecordFolder(
UnfiledRecordFolder unfiledRecordFolderModel,
String unfiledRecordFolderId,
String parameters) {
mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel);
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
return getRmRestWrapper().processModel(UnfiledRecordFolder.class, requestWithBody(
PUT,
toJson(unfiledRecordFolderModel),
"unfiled-record-folders/{unfiledRecordFolderId}?{parameters}",
unfiledRecordFolderId,
parameters
));
return getRmRestWrapper()
.processModel(
UnfiledRecordFolder.class,
requestWithBody(
PUT,
toJson(unfiledRecordFolderModel),
"unfiled-record-folders/{unfiledRecordFolderId}?{parameters}",
unfiledRecordFolderId,
parameters));
}
/**
@@ -278,23 +293,22 @@ public class UnfiledRecordFolderAPI extends RMModelRequest
*
* @param unfiledRecordFolderId The identifier of a unfiled record folder
* @throws RuntimeException for the following cases:
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format</li>
* <li>authentication fails</li>
* <li>current user does not have permission to delete {@code unfiledRecordFolderId}</li>
* <li>{@code unfiledRecordFolderId} does not exist</li>
* <li>{@code unfiledRecordFolderId} is locked and cannot be deleted</li>
* </ul>
* <ul>
* <li>{@code unfiledRecordFolderId} is not a valid format
* <li>authentication fails
* <li>current user does not have permission to delete {@code unfiledRecordFolderId}
* <li>{@code unfiledRecordFolderId} does not exist
* <li>{@code unfiledRecordFolderId} is locked and cannot be deleted
* </ul>
*/
public void deleteUnfiledRecordFolder(String unfiledRecordFolderId)
{
public void deleteUnfiledRecordFolder(String unfiledRecordFolderId) {
mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId);
getRmRestWrapper().processEmptyModel(simpleRequest(
DELETE,
"unfiled-record-folders/{recordFolderId}",
unfiledRecordFolderId
));
getRmRestWrapper()
.processEmptyModel(
simpleRequest(
DELETE,
"unfiled-record-folders/{recordFolderId}",
unfiledRecordFolderId));
}
}

View File

@@ -35,24 +35,20 @@ import java.util.UUID;
* @author Tom Page
* @since 2.6
*/
public class CommonTestUtils
{
/**
* The default pattern used for the user full name when users are created with tas utility
*/
public class CommonTestUtils {
/** The default pattern used for the user full name when users are created with tas utility */
public static final String USER_FULLNAME_PATTERN = "FN-%1$s LN-%1$s";
/** Private constructor to prevent instantiation. */
private CommonTestUtils()
{
}
private CommonTestUtils() {}
/**
* Generate a prefix to namespace the objects in a test class. Note that four random hex digits should be good enough to avoid
* collisions when running locally and should also be short enough to maintain readability.
* Generate a prefix to namespace the objects in a test class. Note that four random hex digits
* should be good enough to avoid collisions when running locally and should also be short
* enough to maintain readability.
*/
public static String generateTestPrefix(Class<?> clazz)
{
return clazz.getSimpleName().substring(0, 7) + UUID.randomUUID().toString().substring(0, 4).toUpperCase();
public static String generateTestPrefix(Class<?> clazz) {
return clazz.getSimpleName().substring(0, 7)
+ UUID.randomUUID().toString().substring(0, 4).toUpperCase();
}
}

View File

@@ -29,11 +29,6 @@ package org.alfresco.rest.rm.community.util;
import static org.testng.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.model.Container;
@@ -44,6 +39,7 @@ import com.github.dockerjava.netty.NettyDockerCmdExecFactory;
import lombok.Getter;
import lombok.Setter;
import org.alfresco.utility.Utility;
import org.apache.commons.lang.SystemUtils;
import org.slf4j.Logger;
@@ -52,6 +48,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Helper class for interaction with docker containers
*
@@ -59,30 +60,23 @@ import org.springframework.stereotype.Service;
* @since 3.1
*/
@Service
public class DockerHelper
{
public class DockerHelper {
private static final Logger LOGGER = LoggerFactory.getLogger(DockerHelper.class);
private static final String REPO_IMAGE_NAME = "repository";
@Getter
@Setter
private DockerClient dockerClient;
@Getter @Setter private DockerClient dockerClient;
@Autowired
public DockerHelper(@Value ("${docker.host}") String dockerHost)
{
if (SystemUtils.IS_OS_WINDOWS)
{
this.dockerClient = DockerClientBuilder
.getInstance(dockerHost)
.withDockerCmdExecFactory(new NettyDockerCmdExecFactory())
.build();
}
else
{
this.dockerClient = DockerClientBuilder
.getInstance()
.withDockerCmdExecFactory(new NettyDockerCmdExecFactory())
.build();
public DockerHelper(@Value("${docker.host}") String dockerHost) {
if (SystemUtils.IS_OS_WINDOWS) {
this.dockerClient =
DockerClientBuilder.getInstance(dockerHost)
.withDockerCmdExecFactory(new NettyDockerCmdExecFactory())
.build();
} else {
this.dockerClient =
DockerClientBuilder.getInstance()
.withDockerCmdExecFactory(new NettyDockerCmdExecFactory())
.build();
}
}
@@ -93,30 +87,30 @@ public class DockerHelper
* @param timeStamp - get the logs since a specific timestamp
* @return list of strings, where every string is log line
*/
private List<String> getDockerLogs(String containerId, int timeStamp)
{
private List<String> getDockerLogs(String containerId, int timeStamp) {
final List<String> logs = new ArrayList<>();
final LogContainerCmd logContainerCmd = getDockerClient().logContainerCmd(containerId);
logContainerCmd.withStdOut(true)
.withStdErr(true)
.withSince(timeStamp) // UNIX timestamp to filter logs. Output log-entries since that timestamp.
.withTimestamps(true); //print timestamps for every log line
logContainerCmd
.withStdOut(true)
.withStdErr(true)
.withSince(
timeStamp) // UNIX timestamp to filter logs. Output log-entries since that
// timestamp.
.withTimestamps(true); // print timestamps for every log line
try
{
logContainerCmd.exec(new LogContainerResultCallback()
{
@Override
public void onNext(Frame item)
{
logs.add(item.toString());
}
}).awaitCompletion();
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt(); // set interrupt flag
try {
logContainerCmd
.exec(
new LogContainerResultCallback() {
@Override
public void onNext(Frame item) {
logs.add(item.toString());
}
})
.awaitCompletion();
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // set interrupt flag
LOGGER.error("Failed to retrieve logs of container " + containerId, e);
}
@@ -128,19 +122,18 @@ public class DockerHelper
*
* @return list of strings, where every string is log line
*/
public List<String> getAlfrescoLogs()
{
public List<String> getAlfrescoLogs() {
final List<Container> alfrescoContainers = findContainersByImageName(REPO_IMAGE_NAME);
if (alfrescoContainers.isEmpty())
{
if (alfrescoContainers.isEmpty()) {
return Collections.emptyList();
}
else
{
} else {
List<String> alfrescoLogs = new ArrayList<>();
// get the logs since current time - 10 seconds
final int timeStamp = (int) (System.currentTimeMillis() / 1000) - 10;
alfrescoContainers.forEach(alfrescoContainer -> alfrescoLogs.addAll(getDockerLogs(alfrescoContainer.getId(), timeStamp)));
alfrescoContainers.forEach(
alfrescoContainer ->
alfrescoLogs.addAll(
getDockerLogs(alfrescoContainer.getId(), timeStamp)));
return alfrescoLogs;
}
}
@@ -151,14 +144,17 @@ public class DockerHelper
* @param expectedException the expected exception to be thrown
* @throws Exception
*/
public void checkExceptionIsInAlfrescoLogs(String expectedException) throws Exception
{
//Retry the operation because sometimes it takes few seconds to throw the exception
Utility.sleep(6000, 30000, () ->
{
List<String> alfrescoLogs = getAlfrescoLogs();
assertTrue(alfrescoLogs.stream().anyMatch(logLine -> logLine.contains(expectedException)));
});
public void checkExceptionIsInAlfrescoLogs(String expectedException) throws Exception {
// Retry the operation because sometimes it takes few seconds to throw the exception
Utility.sleep(
6000,
30000,
() -> {
List<String> alfrescoLogs = getAlfrescoLogs();
assertTrue(
alfrescoLogs.stream()
.anyMatch(logLine -> logLine.contains(expectedException)));
});
}
/**
@@ -167,12 +163,12 @@ public class DockerHelper
* @param imageName - the name of the image used by container
* @return the containers
*/
private List<Container> findContainersByImageName(String imageName)
{
final List<Container> containers = getDockerClient().listContainersCmd().withShowAll(true).exec();
private List<Container> findContainersByImageName(String imageName) {
final List<Container> containers =
getDockerClient().listContainersCmd().withShowAll(true).exec();
return containers.stream()
.filter(container -> container.getImage().contains(imageName))
.collect(Collectors.toList());
.filter(container -> container.getImage().contains(imageName))
.collect(Collectors.toList());
}
}

View File

@@ -31,18 +31,16 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped;
import org.alfresco.rest.rm.community.model.record.RecordProperties;
/**
* Mix class for Record POJO class
* Mix-in annotations are: a way to associate annotations with classes
* without modifying (target) classes themselves.
* Mix class for Record POJO class Mix-in annotations are: a way to associate annotations with
* classes without modifying (target) classes themselves.
*
* @author Rodica Sutu
* @since 2.6
*/
public abstract class FilePlanComponentMixIn
{
public abstract class FilePlanComponentMixIn {
/**
* Annotation used to indicate that a property should be serialized "unwrapped"
* Its properties are instead included as properties of its containing Object
* Annotation used to indicate that a property should be serialized "unwrapped" Its properties
* are instead included as properties of its containing Object
*/
@JsonUnwrapped
abstract RecordProperties getProperties();

View File

@@ -34,10 +34,8 @@ import static org.apache.commons.lang3.StringUtils.isBlank;
* @author Tuna Aksoy
* @since 2.6
*/
public class ParameterCheck
{
private ParameterCheck()
{
public class ParameterCheck {
private ParameterCheck() {
// Intentionally blank
}
@@ -48,11 +46,10 @@ public class ParameterCheck
* @param paramValue The value of the parameter to check
* @throws IllegalArgumentException Throws an exception if the given value is blank
*/
public static void mandatoryString(final String paramName, final String paramValue) throws IllegalArgumentException
{
if (isBlank(paramValue))
{
throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter.");
public static void mandatoryString(final String paramName, final String paramValue)
throws IllegalArgumentException {
if (isBlank(paramValue)) {
throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter.");
}
}
@@ -63,11 +60,10 @@ public class ParameterCheck
* @param object The value of the parameter to check
* @throws IllegalArgumentException Throws an exception if the given value is null
*/
public static void mandatoryObject(final String paramName, final Object object) throws IllegalArgumentException
{
if (object == null)
{
throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter.");
public static void mandatoryObject(final String paramName, final Object object)
throws IllegalArgumentException {
if (object == null) {
throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter.");
}
}
}

View File

@@ -28,9 +28,6 @@ package org.alfresco.rest.rm.community.util;
import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryObject;
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -41,28 +38,24 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.List;
/**
* Utility class for creating the json object
*
* @author Rodica Sutu
* @since 2.6
*/
public class PojoUtility
{
/**
* Logger for the class.
*/
public class PojoUtility {
/** Logger for the class. */
private static final Logger LOGGER = LoggerFactory.getLogger(PojoUtility.class);
/** Private constructor to prevent instantiation. */
private PojoUtility()
{}
private PojoUtility() {}
/**
* see {@link #toJson(Object, Class, Class)}
*/
public static String toJson(Object model)
{
/** see {@link #toJson(Object, Class, Class)} */
public static String toJson(Object model) {
mandatoryObject("model", model);
return toJson(model, null, null);
@@ -73,59 +66,53 @@ public class PojoUtility
*
* @param model The java object model to convert
* @param target Class (or interface) whose annotations to effectively override
* @param mixinSource Class (or interface) whose annotations are to be "added" to target's annotations, overriding as necessary
* @param mixinSource Class (or interface) whose annotations are to be "added" to target's
* annotations, overriding as necessary
* @return The converted java object as JSON string
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the POJO class model
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the
* POJO class model
*/
public static String toJson(Object model, Class<?> target, Class<?> mixinSource)
{
public static String toJson(Object model, Class<?> target, Class<?> mixinSource) {
mandatoryObject("model", model);
ObjectMapper mapper = new ObjectMapper();
if (target != null && mixinSource != null)
{
//inject the "mix-in" annotations from FilePlanComponentMix to
if (target != null && mixinSource != null) {
// inject the "mix-in" annotations from FilePlanComponentMix to
// FilePlanComponent POJO class when converting to json
mapper.addMixIn(target, mixinSource);
}
//include only non null values
// include only non null values
mapper.setSerializationInclusion(Include.NON_NULL);
//return the json object
try
{
// return the json object
try {
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model);
}
catch (JsonProcessingException error)
{
} catch (JsonProcessingException error) {
return error.toString();
}
}
/**
* Converting json to java object
* Converting json to java object
*
* @param json The json object to convert
* @param classz Class for the java object
* @param json The json object to convert
* @param classz Class for the java object
* @return The converted java object
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the POJO class model
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the
* POJO class model
*/
public static <T> T jsonToObject(JSONObject json, Class<T> classz)
{
public static <T> T jsonToObject(JSONObject json, Class<T> classz) {
mandatoryObject("model", classz);
mandatoryObject("jsonObject", json);
ObjectMapper mapper = new ObjectMapper();
T obj = null;
try
{
try {
obj = mapper.readValue(json.toString(), classz);
}
catch (IOException e)
{
} catch (IOException e) {
LOGGER.error("Unable to convert the json into a java object.", e);
}
@@ -135,32 +122,28 @@ public class PojoUtility
/**
* Converting json array into a list of java objects
*
* @param json The json array to convert
* @param classz Class for the java object
* @param json The json array to convert
* @param classz Class for the java object
* @return The list of converted java objects
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the POJO class model
* @throws JsonProcessingException Throws exceptions if the given object doesn't match to the
* POJO class model
*/
public static <T> List<T> jsonToObject(JSONArray json, Class<T> classz)
{
public static <T> List<T> jsonToObject(JSONArray json, Class<T> classz) {
mandatoryObject("model", classz);
mandatoryObject("jsonObject", json);
ObjectMapper mapper = new ObjectMapper();
CollectionType collectionType = mapper.getTypeFactory().constructCollectionType(List.class, classz);
CollectionType collectionType =
mapper.getTypeFactory().constructCollectionType(List.class, classz);
List<T> asList = null;
try
{
try {
asList = mapper.readValue(json.toString(), collectionType);
}
catch (IOException e)
{
} catch (IOException e) {
LOGGER.error("Unable to convert the json array into a java collection.", e);
}
return asList;
}
}

View File

@@ -26,8 +26,6 @@
*/
package org.alfresco.rest.rm.community.util;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
@@ -35,25 +33,32 @@ import com.fasterxml.jackson.databind.SerializerProvider;
import org.alfresco.rest.rm.community.model.common.ReviewPeriod;
import java.io.IOException;
/**
* Utility class for serializing @{FilePlanComponentReviewPeriod}
*
* @author Rodica Sutu
* @since 2.6
*/
public class ReviewPeriodSerializer extends JsonSerializer<ReviewPeriod>
{
public class ReviewPeriodSerializer extends JsonSerializer<ReviewPeriod> {
/**
* @param value The Review Period value that is being serialized.
* @param gen Jackson utility is responsible for writing JSON
* @param serializers Provider for getting access to other serializers and configurations registered with the ObjectMapper.
* @param serializers Provider for getting access to other serializers and configurations
* registered with the ObjectMapper.
* @throws IOException
* @throws JsonProcessingException
*/
@Override
public void serialize(ReviewPeriod value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException
{
//create the custom string value for the Review Period type
gen.writeString(new StringBuilder().append(value.getPeriodType()).append("|").append(value.getExpression()).toString());
public void serialize(ReviewPeriod value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
// create the custom string value for the Review Period type
gen.writeString(
new StringBuilder()
.append(value.getPeriodType())
.append("|")
.append(value.getExpression())
.toString());
}
}

View File

@@ -31,18 +31,16 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped;
import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildProperties;
/**
* Mix class for Record POJO class
* Mix-in annotations are: a way to associate annotations with classes
* without modifying (target) classes themselves.
* Mix class for Record POJO class Mix-in annotations are: a way to associate annotations with
* classes without modifying (target) classes themselves.
*
* @author Tuna Aksoy
* @since 2.6
*/
public abstract class UnfiledContainerChildMixin
{
public abstract class UnfiledContainerChildMixin {
/**
* Annotation used to indicate that a property should be serialized "unwrapped"
* Its properties are instead included as properties of its containing Object
* Annotation used to indicate that a property should be serialized "unwrapped" Its properties
* are instead included as properties of its containing Object
*/
@JsonUnwrapped
abstract UnfiledContainerChildProperties getProperties();

View File

@@ -26,9 +26,6 @@
*/
package org.alfresco.rest.v0;
import java.text.MessageFormat;
import java.util.List;
import org.alfresco.rest.core.v0.BaseAPI;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
@@ -37,6 +34,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.text.MessageFormat;
import java.util.List;
/**
* The v0 REST API for copy-to (which supports multi-item copy).
*
@@ -44,8 +44,7 @@ import org.springframework.stereotype.Component;
* @since 2.6
*/
@Component
public class CopyToAPI extends BaseAPI
{
public class CopyToAPI extends BaseAPI {
/** Logger for the class. */
private static final Logger LOGGER = LoggerFactory.getLogger(CopyToAPI.class);
/** The URI for the copy-to API. */
@@ -57,14 +56,14 @@ public class CopyToAPI extends BaseAPI
* @param user The username of the user to use.
* @param password The password of the user.
* @param targetContainerPath The destination to copy the nodes to. This should be in the format
* "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}",
* "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}".
* "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}",
* "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}".
* @param nodeRefs The list of nodes to copy.
* @return The HTTP Response.
* @throws AssertionError If the API call didn't return a 200 response.
*/
public HttpResponse copyTo(String user, String password, String targetContainerPath, List<String> nodeRefs)
{
public HttpResponse copyTo(
String user, String password, String targetContainerPath, List<String> nodeRefs) {
return copyTo(user, password, 200, targetContainerPath, nodeRefs);
}
@@ -75,18 +74,26 @@ public class CopyToAPI extends BaseAPI
* @param password The password of the user.
* @param expectedStatusCode The expected return status code.
* @param targetContainerPath The destination to copy the nodes to. This should be in the format
* "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}",
* "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}".
* "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}",
* "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}".
* @param nodeRefs The list of nodes to copy.
* @return The HTTP Response.
* @throws AssertionError If the API didn't return the expected status code.
*/
public HttpResponse copyTo(String user, String password, int expectedStatusCode, String targetContainerPath, List<String> nodeRefs)
{
public HttpResponse copyTo(
String user,
String password,
int expectedStatusCode,
String targetContainerPath,
List<String> nodeRefs) {
JSONObject requestParams = new JSONObject();
requestParams.put("nodeRefs", new JSONArray(nodeRefs));
return doSlingshotPostJsonRequest(user, password, expectedStatusCode, requestParams,
MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath));
return doSlingshotPostJsonRequest(
user,
password,
expectedStatusCode,
requestParams,
MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath));
}
}

View File

@@ -28,8 +28,6 @@ package org.alfresco.rest.v0;
import static org.testng.AssertJUnit.assertTrue;
import java.text.MessageFormat;
import org.alfresco.rest.core.v0.BaseAPI;
import org.alfresco.rest.rm.community.model.custom.CustomDefinitions;
import org.json.JSONArray;
@@ -39,73 +37,67 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.text.MessageFormat;
/**
* Methods to make API requests using v0 API on Records Management Custom Model Reference Definitions
* Methods to make API requests using v0 API on Records Management Custom Model Reference
* Definitions
*
* @author Rodica Sutu
* @since 2.6
*/
@Component
public class CustomDefinitionsAPI extends BaseAPI
{
/**
* custom references endpoint
*/
private static final String CUSTOM_REFERENCE_API_ENDPOINT = "{0}rma/admin/customreferencedefinitions";
public class CustomDefinitionsAPI extends BaseAPI {
/** custom references endpoint */
private static final String CUSTOM_REFERENCE_API_ENDPOINT =
"{0}rma/admin/customreferencedefinitions";
/**
* create reference endpoint
*/
/** create reference endpoint */
private static final String CREATE_RELATIONSHIP_API_ENDPOINT = "{0}node/{1}/customreferences";
/**
* logger
*/
/** logger */
private static final Logger LOGGER = LoggerFactory.getLogger(CustomDefinitionsAPI.class);
/**
* Helper method to get the reference id for a custom reference
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param customDefinition custom reference definition name
* @return <code>reference id</code> if the customDefinition is found
* <code> null </code> otherwise
*
* @return <code>reference id</code> if the customDefinition is found <code> null </code>
* otherwise
*/
public String getCustomReferenceId(String adminUser, String adminPassword, String customDefinition)
{
public String getCustomReferenceId(
String adminUser, String adminPassword, String customDefinition) {
JSONObject getResponse = doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT);
if (getResponse != null)
{
try
{
JSONArray customDefinitions = getResponse.getJSONObject("data").getJSONArray("customReferences");
for (int i = 0; i < customDefinitions.length(); i++)
{
JSONObject getResponse =
doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT);
if (getResponse != null) {
try {
JSONArray customDefinitions =
getResponse.getJSONObject("data").getJSONArray("customReferences");
for (int i = 0; i < customDefinitions.length(); i++) {
JSONObject item = customDefinitions.getJSONObject(i);
boolean hasSource = customDefinition.equalsIgnoreCase(
item.has("source") ? item.getString("source") : null
);
boolean hasSource =
customDefinition.equalsIgnoreCase(
item.has("source") ? item.getString("source") : null);
boolean hasTarget = customDefinition.equalsIgnoreCase(
item.has("target") ? item.getString("target") : null
);
boolean hasTarget =
customDefinition.equalsIgnoreCase(
item.has("target") ? item.getString("target") : null);
boolean hasLabel = customDefinition.equalsIgnoreCase(
item.has("label") ? item.getString("label") : null
);
if ( hasSource || hasTarget || hasLabel)
{
boolean hasLabel =
customDefinition.equalsIgnoreCase(
item.has("label") ? item.getString("label") : null);
if (hasSource || hasTarget || hasLabel) {
return item.getString("refId");
}
}
}
catch (JSONException error)
{
LOGGER.error("Unable to get the refId for the custom reference definition {}", customDefinition);
} catch (JSONException error) {
LOGGER.error(
"Unable to get the refId for the custom reference definition {}",
customDefinition);
}
}
return null;
@@ -114,11 +106,11 @@ public class CustomDefinitionsAPI extends BaseAPI
/**
* Helper method to add custom reference instance to the specified record node
*
* @param adminUser user with administrative privileges
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param recordNodeIdFrom node ref to set a custom reference
* @param recordNodeIdTo node ref of the to record
* @param relationshipType relation type to be created
* @param recordNodeIdTo node ref of the to record
* @param relationshipType relation type to be created
* @throws AssertionError if the creation fails.
*/
public void createRelationship(
@@ -126,19 +118,32 @@ public class CustomDefinitionsAPI extends BaseAPI
String adminPassword,
String recordNodeIdFrom,
String recordNodeIdTo,
CustomDefinitions relationshipType)
{
//create the request body
CustomDefinitions relationshipType) {
// create the request body
JSONObject requestParams = new JSONObject();
requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo);
requestParams.put("refId", getCustomReferenceId(adminUser, adminPassword, relationshipType
.getDefinition()));
//send the API request to create the relationship
JSONObject setRelationshipStatus = doPostRequest(adminUser, adminPassword, requestParams,
MessageFormat.format(CREATE_RELATIONSHIP_API_ENDPOINT, "{0}", NODE_PREFIX + recordNodeIdFrom));
//check the response
boolean success = (setRelationshipStatus != null) && setRelationshipStatus.getBoolean("success");
assertTrue("Creating relationship from " + recordNodeIdFrom + " to " + recordNodeIdTo + " failed.", success);
requestParams.put(
"refId",
getCustomReferenceId(adminUser, adminPassword, relationshipType.getDefinition()));
// send the API request to create the relationship
JSONObject setRelationshipStatus =
doPostRequest(
adminUser,
adminPassword,
requestParams,
MessageFormat.format(
CREATE_RELATIONSHIP_API_ENDPOINT,
"{0}",
NODE_PREFIX + recordNodeIdFrom));
// check the response
boolean success =
(setRelationshipStatus != null) && setRelationshipStatus.getBoolean("success");
assertTrue(
"Creating relationship from "
+ recordNodeIdFrom
+ " to "
+ recordNodeIdTo
+ " failed.",
success);
}
}

View File

@@ -0,0 +1,106 @@
/*
* #%L
* Alfresco Records Management Module
* %%
* Copyright (C) 2005 - 2021 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* -
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
* -
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* -
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
* -
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
package org.alfresco.rest.v0;
import org.alfresco.rest.core.v0.BaseAPI;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Methods to make API requests using v0 API for Exporting Items
*
* @author Shubham Jain
* @since 7.1.0
*/
@Component
public class ExportAPI extends BaseAPI {
/** The URI to export an item */
private static final String EXPORT_API = "{0}rma/admin/export";
/**
* Export a single Record/Record Folder/Record Category using V0 Export API
*
* @param user User performing the export
* @param password User's Password
* @param expectedStatusCode Expected Response Code
* @param nodeID ID of the Node(Record/RecordFolder) to be exported
* @return HTTP Response
*/
public HttpResponse exportRMNode(
String user, String password, int expectedStatusCode, String nodeID) {
return export(
user,
password,
expectedStatusCode,
Collections.singletonList(getNodeRefSpacesStore() + nodeID));
}
/**
* Export a list of nodes using V0 Export API
*
* @param user User performing the export
* @param password User's Password
* @param expectedStatusCode Expected Response Code
* @param nodeIDList List of the nodes to be exported
* @return HTTP Response
*/
public HttpResponse exportRMNodes(
String user, String password, int expectedStatusCode, List<String> nodeIDList) {
List<String> nodeRefs =
nodeIDList.stream()
.map(nodeID -> getNodeRefSpacesStore() + nodeID)
.collect(Collectors.toList());
return export(user, password, expectedStatusCode, nodeRefs);
}
/**
* Export API function to perform Export Operation on items with given noderefs using V0 Export
* Rest API
*
* @param user User performing the export
* @param password User's Password
* @param expectedStatusCode Expected Response Code
* @param nodeRefs list of the noderefs for the items to be exported
* @return Rest API Post Request
*/
public HttpResponse export(
String user, String password, int expectedStatusCode, List<String> nodeRefs) {
final JSONObject requestParams = new JSONObject();
requestParams.put("nodeRefs", new JSONArray(nodeRefs));
return doPostJsonRequest(user, password, expectedStatusCode, requestParams, EXPORT_API);
}
}

View File

@@ -29,11 +29,6 @@ package org.alfresco.rest.v0;
import static org.alfresco.rest.core.v0.APIUtils.convertHTTPResponseToJSON;
import static org.apache.http.HttpStatus.SC_OK;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.alfresco.rest.core.v0.APIUtils;
import org.alfresco.rest.core.v0.BaseAPI;
import org.alfresco.rest.rm.community.model.hold.HoldEntry;
@@ -46,6 +41,11 @@ import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Methods to make API requests using v0 API for generalized holds
*
@@ -53,53 +53,51 @@ import org.springframework.stereotype.Component;
* @since 3.2
*/
@Component
public class HoldsAPI extends BaseAPI
{
public class HoldsAPI extends BaseAPI {
public static final String HOLDS_CONTAINER = "Holds";
/**
* The URI to create a hold
*/
/** The URI to create a hold */
private static final String CREATE_HOLDS_API = "{0}type/rma:hold/formprocessor";
/**
* The URI to add items to hold or to remove items from hold
*/
/** The URI to add items to hold or to remove items from hold */
private static final String RM_HOLDS_API = "{0}rma/holds";
/**
* The URI to get holds.
*/
/** The URI to get holds. */
private static final String GET_RM_HOLDS = RM_HOLDS_API + "?{1}";
/**
* Util method to create a hold
*
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name
* @param reason hold reason
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name
* @param reason hold reason
* @param description hold description
* @return The HTTP response.
*/
public HttpResponse createHold(String user, String password, String holdName, String reason, String description)
{
public HttpResponse createHold(
String user, String password, String holdName, String reason, String description) {
return createHold(user, password, holdName, reason, description, SC_OK);
}
/**
* Util method to create a hold
*
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name
* @param reason hold reason
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name
* @param reason hold reason
* @param description hold description
* @param expectedStatusCode The expected return status code.
* @return The HTTP response or throws AssertionError if the returned status code is not as expected.
* @return The HTTP response or throws AssertionError if the returned status code is not as
* expected.
*/
public HttpResponse createHold(String user, String password, String holdName, String reason, String description,
int expectedStatusCode)
{
public HttpResponse createHold(
String user,
String password,
String holdName,
String reason,
String description,
int expectedStatusCode) {
// retrieve the Holds container nodeRef
final String parentNodeRef = getItemNodeRef(user, password, "/" + HOLDS_CONTAINER);
@@ -109,35 +107,31 @@ public class HoldsAPI extends BaseAPI
requestParams.put("prop_cm_description", description);
requestParams.put("prop_rma_holdReason", reason);
return doPostJsonRequest(user, password, expectedStatusCode, requestParams, CREATE_HOLDS_API);
return doPostJsonRequest(
user, password, expectedStatusCode, requestParams, CREATE_HOLDS_API);
}
/**
* Create a hold and get the node ref of the hold from the response body
*
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name to be created
* @param reason reason of the hold to be created
* @param user the user creating the hold
* @param password the user's password
* @param holdName the hold name to be created
* @param reason reason of the hold to be created
* @param description hold description
* @return node ref of the hold created
*/
public String createHoldAndGetNodeRef(String user, String password,
String holdName, String reason, String description)
{
public String createHoldAndGetNodeRef(
String user, String password, String holdName, String reason, String description) {
final HttpResponse httpResponse = createHold(user, password, holdName, reason, description);
try
{
return convertHTTPResponseToJSON(httpResponse).getString("persistedObject")
.replace(NODE_REF_WORKSPACE_SPACES_STORE, "");
}
catch(JSONException error)
{
try {
return convertHTTPResponseToJSON(httpResponse)
.getString("persistedObject")
.replace(NODE_REF_WORKSPACE_SPACES_STORE, "");
} catch (JSONException error) {
LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, error);
}
catch(ParseException error)
{
} catch (ParseException error) {
LOGGER.error("Parsing message body failed.", error);
}
@@ -151,8 +145,7 @@ public class HoldsAPI extends BaseAPI
* @param holdNodeRef the hold node ref
* @return The HTTP Response or throws AssertionError if the request is not successful.
*/
public HttpResponse deleteHold(UserModel user, String holdNodeRef)
{
public HttpResponse deleteHold(UserModel user, String holdNodeRef) {
return deleteHold(user.getUsername(), user.getPassword(), holdNodeRef, SC_OK);
}
@@ -162,15 +155,17 @@ public class HoldsAPI extends BaseAPI
* @param username user's username
* @param password its password
* @param holdNodeRef the hold node ref
* @return The HTTP Response or throws AssertionError if the returned status code is not as expected.
* @return The HTTP Response or throws AssertionError if the returned status code is not as
* expected.
*/
public HttpResponse deleteHold(String username, String password, String holdNodeRef, int expectedStatusCode)
{
public HttpResponse deleteHold(
String username, String password, String holdNodeRef, int expectedStatusCode) {
JSONObject requestParams = new JSONObject();
requestParams.put("name", "deleteHold");
requestParams.put("nodeRef", getNodeRefSpacesStore() + holdNodeRef);
return doPostJsonRequest(username, password, expectedStatusCode, requestParams, RM_ACTIONS_API);
return doPostJsonRequest(
username, password, expectedStatusCode, requestParams, RM_ACTIONS_API);
}
/**
@@ -181,84 +176,106 @@ public class HoldsAPI extends BaseAPI
* @param holdName the hold name
* @throws AssertionError if the deletion was unsuccessful.
*/
public void deleteHold( String username, String password, String holdName)
{
public void deleteHold(String username, String password, String holdName) {
deleteItem(username, password, String.format("/%s/%s", HOLDS_CONTAINER, holdName));
}
/**
* Adds item(content/record/record folder) to the hold
*
* @param user the user who adds the item to the hold
* @param password the user's password
* @param user the user who adds the item to the hold
* @param password the user's password
* @param itemNodeRef the nodeRef of the item to be added to hold
* @param holdName the hold name
* @param holdName the hold name
* @return The HTTP response
*/
public HttpResponse addItemToHold(String user, String password, String itemNodeRef, String holdName)
{
return addItemsToHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName));
public HttpResponse addItemToHold(
String user, String password, String itemNodeRef, String holdName) {
return addItemsToHolds(
user,
password,
Collections.singletonList(itemNodeRef),
Collections.singletonList(holdName));
}
/**
* Adds a list of items (content/record/record folder) to a list of holds
*
* @param user the user who adds the items to the holds
* @param password the user's password
* @param user the user who adds the items to the holds
* @param password the user's password
* @param itemNodeRefs the list of items nodeRefs to be added to holds
* @param holdNames the list of holds
* @param holdNames the list of holds
* @return The HTTP response
*/
public HttpResponse addItemsToHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames)
{
final List<String> holdNodeRefs = holdNames.stream()
.map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold)))
.collect(Collectors.toList());
public HttpResponse addItemsToHolds(
String user, String password, List<String> itemNodeRefs, List<String> holdNames) {
final List<String> holdNodeRefs =
holdNames.stream()
.map(
hold ->
getItemNodeRef(
user,
password,
String.format("/%s/%s", HOLDS_CONTAINER, hold)))
.collect(Collectors.toList());
return addItemsToHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs);
}
/**
* Adds a list of items (content/record/record folder) to a list of holds
*
* @param user the user who adds the items to the holds
* @param password the user's password
* @param user the user who adds the items to the holds
* @param password the user's password
* @param itemNodeRefs the list of items nodeRefs to be added to holds
* @param holdNodeRefs the list of holds
* @return The HTTP response
*/
public HttpResponse addItemsToHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs,
List<String> holdNodeRefs)
{
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs);
public HttpResponse addItemsToHolds(
String user,
String password,
int expectedStatus,
List<String> itemNodeRefs,
List<String> holdNodeRefs) {
final JSONObject requestParams =
addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs);
return doPostJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
}
/**
* Util method to add item(content/record/record folder) to the hold and get the error message
*
* @param user the user who adds the item to the hold
* @param password the user's password
* @param user the user who adds the item to the hold
* @param password the user's password
* @param itemNodeRef the nodeRef of the item to be added to hold
* @param holdNodeRef the hold node ref
* @return The error message
*/
public String addToHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
holdNodeRef)
{
final HttpResponse httpResponse = addItemsToHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef),
Collections.singletonList(holdNodeRef));
public String addToHoldAndGetMessage(
String user,
String password,
int expectedStatus,
String itemNodeRef,
String holdNodeRef) {
final HttpResponse httpResponse =
addItemsToHolds(
user,
password,
expectedStatus,
Collections.singletonList(itemNodeRef),
Collections.singletonList(holdNodeRef));
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
}
/**
* Util method to create the request body used when adding items to holds or when removing items from holds
* Util method to create the request body used when adding items to holds or when removing items
* from holds
*
* @param items list of items node refs to be added to holds
* @param items list of items node refs to be added to holds
* @param holdNodeRefs list of hold node refs for add/remove items
* @return JSONObject fo
*/
private JSONObject addOrRemoveToFromHoldJsonObject(List<String> items, List<String> holdNodeRefs)
{
private JSONObject addOrRemoveToFromHoldJsonObject(
List<String> items, List<String> holdNodeRefs) {
final JSONArray nodeRefs = new JSONArray();
items.forEach(itemNodeRef -> nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef));
final JSONArray holds = new JSONArray();
@@ -272,88 +289,119 @@ public class HoldsAPI extends BaseAPI
/**
* Remove item(content/record/record folder) from hold
*
* @param user the user who removes the item from the hold
* @param password the user's password
* @param user the user who removes the item from the hold
* @param password the user's password
* @param itemNodeRef the nodeRef of the item to be removed from hold
* @param holdName the hold name
* @param holdName the hold name
* @return The HTTP response
*/
public HttpResponse removeItemFromHold(String user, String password, String itemNodeRef, String holdName)
{
return removeItemsFromHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName));
public HttpResponse removeItemFromHold(
String user, String password, String itemNodeRef, String holdName) {
return removeItemsFromHolds(
user,
password,
Collections.singletonList(itemNodeRef),
Collections.singletonList(holdName));
}
/**
* Remove a list of items (content/record/record folder) from a list of holds
*
* @param user the user who removes the item from the hold
* @param password the user's password
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
* @param holdNames the list of hold names
* @param user the user who removes the item from the hold
* @param password the user's password
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
* @param holdNames the list of hold names
* @return The HTTP response
*/
public HttpResponse removeItemsFromHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames)
{
final List<String> holdNodeRefs = holdNames.stream()
.map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold)))
.collect(Collectors.toList());
public HttpResponse removeItemsFromHolds(
String user, String password, List<String> itemNodeRefs, List<String> holdNames) {
final List<String> holdNodeRefs =
holdNames.stream()
.map(
hold ->
getItemNodeRef(
user,
password,
String.format("/%s/%s", HOLDS_CONTAINER, hold)))
.collect(Collectors.toList());
return removeItemsFromHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs);
}
/**
* Remove a list of items (content/record/record folder) from a list of holds
*
* @param user the user who removes the item from the hold
* @param password the user's password
* @param user the user who removes the item from the hold
* @param password the user's password
* @param expectedStatus https status code expected
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
* @param holdNodeRefs the list of hold node refs
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
* @param holdNodeRefs the list of hold node refs
* @return The HTTP response
*/
public HttpResponse removeItemsFromHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs,
List<String> holdNodeRefs)
{
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs);
public HttpResponse removeItemsFromHolds(
String user,
String password,
int expectedStatus,
List<String> itemNodeRefs,
List<String> holdNodeRefs) {
final JSONObject requestParams =
addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs);
return doPutJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
}
/**
* Util method to remove item(content/record/record folder) from hold and get the error message
*
* @param user the user who removes the item from hold
* @param password the user's password
* @param user the user who removes the item from hold
* @param password the user's password
* @param itemNodeRef the nodeRef of the item to be removed from hold
* @param holdNodeRef the hold node ref
* @return The error message
*/
public String removeFromHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
holdNodeRef)
{
final HttpResponse httpResponse = removeItemsFromHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef),
Collections.singletonList(holdNodeRef));
public String removeFromHoldAndGetMessage(
String user,
String password,
int expectedStatus,
String itemNodeRef,
String holdNodeRef) {
final HttpResponse httpResponse =
removeItemsFromHolds(
user,
password,
expectedStatus,
Collections.singletonList(itemNodeRef),
Collections.singletonList(holdNodeRef));
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
}
/**
* Get the list of the available holds which have the item node reference if includedInHold parameter is true,
* otherwise a list of hold node references will be retrieved which do not include the given node reference.
* Get the list of the available holds which have the item node reference if includedInHold
* parameter is true, otherwise a list of hold node references will be retrieved which do not
* include the given node reference.
*
* @param user The username of the user to use.
* @param user The username of the user to use.
* @param password The password of the user.
* @param itemNodeRef The item node reference
* @param includedInHold True to retrieve the holds which have the item node reference
* @param fileOnly True if only files should be return
* @return return a list of hold entries
*/
public List<HoldEntry> getHolds(String user, String password, final String itemNodeRef,
final Boolean includedInHold, final Boolean fileOnly)
{
final String parameters = (itemNodeRef != null ? "itemNodeRef=" + NODE_REF_WORKSPACE_SPACES_STORE + itemNodeRef : "")
+ (includedInHold != null ? "&includedInHold=" + includedInHold : "")
+ (fileOnly != null ? "&fileOnly=" + fileOnly : "");
public List<HoldEntry> getHolds(
String user,
String password,
final String itemNodeRef,
final Boolean includedInHold,
final Boolean fileOnly) {
final String parameters =
(itemNodeRef != null
? "itemNodeRef=" + NODE_REF_WORKSPACE_SPACES_STORE + itemNodeRef
: "")
+ (includedInHold != null ? "&includedInHold=" + includedInHold : "")
+ (fileOnly != null ? "&fileOnly=" + fileOnly : "");
final JSONArray holdEntries = doGetRequest(user, password,
MessageFormat.format(GET_RM_HOLDS, "{0}", parameters)).getJSONObject("data").getJSONArray("holds");
final JSONArray holdEntries =
doGetRequest(user, password, MessageFormat.format(GET_RM_HOLDS, "{0}", parameters))
.getJSONObject("data")
.getJSONArray("holds");
return PojoUtility.jsonToObject(holdEntries, HoldEntry.class);
}

View File

@@ -25,7 +25,6 @@
* #L%
*/
package org.alfresco.rest.v0;
import java.text.MessageFormat;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
@@ -36,39 +35,38 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.MessageFormat;
/**
* The v0 REST API for nodes
*
*
* @author jcule
* @since 2.7EA1
*/
@Component
public class NodeAPI extends BaseAPI
{
public class NodeAPI extends BaseAPI {
/** Logger for the class. */
private static final Logger LOGGER = LoggerFactory.getLogger(NodeAPI.class);
/** The URI for the get node API. */
private static final String GET_NODE_API = "{0}alfresco/s/slingshot/doclib2/node/{1}";
@Autowired
private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
@Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
/**
* Get the node metadata using the using the node data webscript: Document List v2 Component
*
* Get the node metadata using the using the node data webscript: Document List v2 Component
*
* @param username
* @param password
* @param nodeId
* @return
*/
public JSONObject getNode(String username, String password, String nodeId)
{
public JSONObject getNode(String username, String password, String nodeId) {
String requestURL;
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
requestURL = MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId);
requestURL =
MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId);
client.close();
return doGetRequest(username, password, requestURL);
}
}

View File

@@ -27,9 +27,6 @@
package org.alfresco.rest.v0;
import java.io.IOException;
import java.text.MessageFormat;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
import org.alfresco.rest.core.v0.BaseAPI;
@@ -44,21 +41,20 @@ import org.json.simple.JSONValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.MessageFormat;
/**
* The v0 API to get the node properties
*
* @since AGS 3.4
*/
@Component
public class NodePropertiesAPI extends BaseAPI
{
/**
* The URI for the get node API.
*/
public class NodePropertiesAPI extends BaseAPI {
/** The URI for the get node API. */
private static final String GET_NODE_API = "{0}alfresco/s/slingshot/node/{1}";
@Autowired
private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
@Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
/**
* Get the node properties
@@ -66,26 +62,24 @@ public class NodePropertiesAPI extends BaseAPI
* @param username
* @param password
* @param nodeId
* @return JSONArray object
* @return JSONArray object
*/
protected JSONArray getNodeProperties(String username, String password, String nodeId)
{
protected JSONArray getNodeProperties(String username, String password, String nodeId) {
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String requestURL = MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId);
String requestURL =
MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId);
// doRequest from BaseAPI cannot be used as parsing the response body to org.json.JSONObject is throwing an
// doRequest from BaseAPI cannot be used as parsing the response body to
// org.json.JSONObject is throwing an
// JSONException
// construct a get request
HttpGet get = new HttpGet(requestURL);
HttpResponse response = client.execute(username, password, get);
HttpEntity entity = response.getEntity();
String responseString;
try
{
try {
responseString = EntityUtils.toString(entity, "UTF-8");
}
catch (IOException e)
{
} catch (IOException e) {
throw new IllegalArgumentException("Failed to read the response", e);
}
client.close();
@@ -101,11 +95,9 @@ public class NodePropertiesAPI extends BaseAPI
* @param nodeId
* @return Return the content url string
*/
public String getContentUrl(UserModel userModel, String nodeId)
{
public String getContentUrl(UserModel userModel, String nodeId) {
String contentProperty = getContentProperty(userModel, nodeId);
if (contentProperty != null)
{
if (contentProperty != null) {
// get the first element before the first |
// e.g. "contentUrl=s3://-system-/fc077fe8-1742-4c45-a153-8309c857996b
// .bin|mimetype=text/plain|size=19|encoding=ISO-8859-2|locale=en_US_|id=508"
@@ -122,16 +114,14 @@ public class NodePropertiesAPI extends BaseAPI
* @param nodeId
* @return Return the content property string
*/
public String getContentProperty(UserModel userModel, String nodeId)
{
JSONArray properties = getNodeProperties(userModel.getUsername(), userModel.getPassword(), nodeId);
public String getContentProperty(UserModel userModel, String nodeId) {
JSONArray properties =
getNodeProperties(userModel.getUsername(), userModel.getPassword(), nodeId);
for (int i = 0; i < properties.size(); i++)
{
for (int i = 0; i < properties.size(); i++) {
JSONObject object = (JSONObject) properties.get(i);
JSONArray valuesArray = (JSONArray) object.get("values");
if (valuesArray.toString().contains("contentUrl"))
{
if (valuesArray.toString().contains("contentUrl")) {
return ((JSONObject) valuesArray.get(0)).get("value").toString();
}
}

View File

@@ -28,11 +28,6 @@ package org.alfresco.rest.v0;
import static org.testng.Assert.assertTrue;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.List;
import org.alfresco.rest.core.v0.BaseAPI;
import org.alfresco.rest.rm.community.model.audit.AuditEntry;
import org.alfresco.rest.rm.community.util.PojoUtility;
@@ -42,6 +37,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.List;
/**
* The v0 REST API for rm audit logs
*
@@ -49,37 +49,42 @@ import org.springframework.stereotype.Component;
* @since 2.7
*/
@Component
public class RMAuditAPI extends BaseAPI
{
public class RMAuditAPI extends BaseAPI {
/** Logger for the class. */
private static final Logger LOGGER = LoggerFactory.getLogger(RMAuditAPI.class);
/** The URI for the audit API. */
private static final String RM_AUDIT_API = "{0}rma/admin/rmauditlog";
private static final String RM_AUDIT_LOG_API = RM_AUDIT_API + "?{1}";
/**
* Returns a list of rm audit entries .
*
* @param user The username of the user to use.
* @param user The username of the user to use.
* @param password The password of the user.
* @param size Maximum number of log entries to return
* @param event The name of audit event to be retrieved
* @param size Maximum number of log entries to return
* @param event The name of audit event to be retrieved
* @return return Only return log entries matching this event
*/
public List<AuditEntry> getRMAuditLog(String user, String password, final int size, final String event)
{
public List<AuditEntry> getRMAuditLog(
String user, String password, final int size, final String event) {
String parameters = null;
try
{
parameters = "size=" + size + (event != null ? "&event=" + URLEncoder.encode(event, "UTF-8"):"");
}
catch (UnsupportedEncodingException e)
{
try {
parameters =
"size="
+ size
+ (event != null ? "&event=" + URLEncoder.encode(event, "UTF-8") : "");
} catch (UnsupportedEncodingException e) {
LOGGER.error("Unable to encode the event name {}", e.getMessage());
}
JSONArray auditEntries = doGetRequest(user, password,
MessageFormat.format(RM_AUDIT_LOG_API,"{0}", parameters)).getJSONObject("data").getJSONArray("entries");
JSONArray auditEntries =
doGetRequest(
user,
password,
MessageFormat.format(RM_AUDIT_LOG_API, "{0}", parameters))
.getJSONObject("data")
.getJSONArray("entries");
return PojoUtility.jsonToObject(auditEntries, AuditEntry.class);
}
@@ -91,14 +96,12 @@ public class RMAuditAPI extends BaseAPI
* @param password The password of the user.
* @throws AssertionError If the API call didn't clear the audit log.
*/
public void clearAuditLog(String username, String password)
{
public void clearAuditLog(String username, String password) {
JSONObject deleteStatus = doDeleteRequest(username, password, RM_AUDIT_API);
assertTrue(deleteStatus != null
//audit clear and login events are returned
&& getRMAuditLog(username, password, 100, null).size() == 2);
assertTrue(
deleteStatus != null
// audit clear and login events are returned
&& getRMAuditLog(username, password, 100, null).size() == 2);
}
}

View File

@@ -34,14 +34,6 @@ import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
import java.io.IOException;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
import org.alfresco.dataprep.UserService;
@@ -64,47 +56,54 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
/**
* Methods to make API requests using v0 API on RM items (move, update and other actions) including adding users to RM roles
* Methods to make API requests using v0 API on RM items (move, update and other actions) including
* adding users to RM roles
*
* @author Oana Nechiforescu
* @since 2.5
*/
@Component
public class RMRolesAndActionsAPI extends BaseAPI
{
public class RMRolesAndActionsAPI extends BaseAPI {
/** The URI to view the configured roles and capabilities. */
private static final String RM_ROLES = "{0}rma/admin/rmroles";
/** The URI for REST requests about a particular configured role. */
private static final String RM_ROLES_ROLE = RM_ROLES + "/{1}";
private static final String RM_ROLES_AUTHORITIES = "{0}rm/roles/{1}/authorities/{2}?alf_ticket={3}";
private static final String RM_ROLES_AUTHORITIES =
"{0}rm/roles/{1}/authorities/{2}?alf_ticket={3}";
// logger
private static final Logger LOGGER = LoggerFactory.getLogger(RMRolesAndActionsAPI.class);
private static final String MOVE_ACTIONS_API = "action/rm-move-to/site/rm/documentLibrary/{0}";
/** http client factory */
@Autowired
private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
@Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
/** user service */
@Autowired
private UserService userService;
@Autowired private UserService userService;
@Autowired
private DataUserAIS dataUser;
@Autowired private DataUserAIS dataUser;
/**
* Get all the configured RM roles.
*
* @param adminUser The RM admin user.
* @param adminPassword The password of the user.
* @return The RM roles in the system (Note that this will be the internal names, not the display labels).
* @return The RM roles in the system (Note that this will be the internal names, not the
* display labels).
*/
public Set<String> getConfiguredRoles(String adminUser, String adminPassword)
{
public Set<String> getConfiguredRoles(String adminUser, String adminPassword) {
// Using "is=true" includes the in-place readers and writers.
final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject(
"data");
final JSONObject jsonObject =
doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject("data");
return jsonObject.toMap().keySet();
}
@@ -116,24 +115,25 @@ public class RMRolesAndActionsAPI extends BaseAPI
* @param role The role to get capabilities for.
* @return The set of system names for the capabilities.
*/
public Set<String> getCapabilitiesForRole(String adminUser, String adminPassword, String role)
{
final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject(
"data");
assertTrue("Could not find role '" + role + "' in " + jsonObject.keySet(), jsonObject.has(role));
public Set<String> getCapabilitiesForRole(String adminUser, String adminPassword, String role) {
final JSONObject jsonObject =
doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject("data");
assertTrue(
"Could not find role '" + role + "' in " + jsonObject.keySet(),
jsonObject.has(role));
return jsonObject.getJSONObject(role).getJSONObject("capabilities").keySet();
}
/**
* Creates the body for PUT/POST Roles API requests
*
* @param roleName the role name
* @param roleName the role name
* @param roleDisplayLabel a human-readable label for the role
* @param capabilities a list of capabilities for the role
* @param capabilities a list of capabilities for the role
* @return
*/
private JSONObject roleRequestBody(String roleName, String roleDisplayLabel, Set<String> capabilities)
{
private JSONObject roleRequestBody(
String roleName, String roleDisplayLabel, Set<String> capabilities) {
final JSONObject requestBody = new JSONObject();
requestBody.put("name", roleName);
requestBody.put("displayLabel", roleDisplayLabel);
@@ -152,9 +152,17 @@ public class RMRolesAndActionsAPI extends BaseAPI
* @param roleDisplayLabel A human-readable label for the role.
* @param capabilities A list of capabilities for the role.
*/
public void createRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities)
{
doPostJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities),
public void createRole(
String adminUser,
String adminPassword,
String roleName,
String roleDisplayLabel,
Set<String> capabilities) {
doPostJsonRequest(
adminUser,
adminPassword,
HttpStatus.SC_OK,
roleRequestBody(roleName, roleDisplayLabel, capabilities),
RM_ROLES);
}
@@ -167,10 +175,19 @@ public class RMRolesAndActionsAPI extends BaseAPI
* @param roleDisplayLabel A human-readable label for the role.
* @param capabilities A list of capabilities for the role.
*/
public void updateRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities)
{
doPutJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities),
RM_ROLES_ROLE, roleName);
public void updateRole(
String adminUser,
String adminPassword,
String roleName,
String roleDisplayLabel,
Set<String> capabilities) {
doPutJsonRequest(
adminUser,
adminPassword,
HttpStatus.SC_OK,
roleRequestBody(roleName, roleDisplayLabel, capabilities),
RM_ROLES_ROLE,
roleName);
}
/**
@@ -180,27 +197,19 @@ public class RMRolesAndActionsAPI extends BaseAPI
* @param adminPassword The password for the admin user.
* @param roleName The name of the role to be deleted.
*/
public void deleteRole(String adminUser, String adminPassword, String roleName)
{
doDeleteRequest(adminUser, adminPassword, MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName));
assertFalse("Failed to delete role " + roleName + " with " + adminUser,
public void deleteRole(String adminUser, String adminPassword, String roleName) {
doDeleteRequest(
adminUser, adminPassword, MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName));
assertFalse(
"Failed to delete role " + roleName + " with " + adminUser,
getConfiguredRoles(adminUser, adminPassword).contains(roleName));
}
/**
* create user and assign to records management role
*/
/** create user and assign to records management role */
public void createUserAndAssignToRole(
String adminUser,
String adminPassword,
String userName,
String password,
String role)
{
if (!userService.userExists(adminUser, adminPassword, userName))
{
String adminUser, String adminPassword, String userName, String password, String role) {
if (!userService.userExists(adminUser, adminPassword, userName)) {
dataUser.createUser(userName, password);
}
assignRoleToUser(adminUser, adminPassword, userName, role);
}
@@ -210,54 +219,55 @@ public class RMRolesAndActionsAPI extends BaseAPI
*
* @throws AssertionError if the assignation is unsuccessful.
*/
public void assignRoleToUser(String adminUser, String adminPassword, String userName, String role)
{
public void assignRoleToUser(
String adminUser, String adminPassword, String userName, String role) {
final AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
final String reqURL = MessageFormat.format(
RM_ROLES_AUTHORITIES,
client.getApiUrl(),
role,
userName,
client.getAlfTicket(adminUser, adminPassword));
final String reqURL =
MessageFormat.format(
RM_ROLES_AUTHORITIES,
client.getApiUrl(),
role,
userName,
client.getAlfTicket(adminUser, adminPassword));
HttpPost request = null;
HttpResponse response;
try
{
try {
request = new HttpPost(reqURL);
response = client.execute(adminUser, adminPassword, request);
}
finally
{
if (request != null)
{
} finally {
if (request != null) {
request.releaseConnection();
}
client.close();
}
assertEquals("Assigning role " + role + " to user " + userName + " failed.", SC_OK,
response.getStatusLine().getStatusCode());
assertEquals(
"Assigning role " + role + " to user " + userName + " failed.",
SC_OK,
response.getStatusLine().getStatusCode());
}
/**
* Move action
*
* @param user the user to move the contentPath
* @param password the user's password
* @param contentPath path to the content to be moved
* @param user the user to move the contentPath
* @param password the user's password
* @param contentPath path to the content to be moved
* @param destinationPath destination path
* @throws AssertionError if the move was unsuccessful.
*/
public void moveTo(String user, String password, String contentPath, String destinationPath)
{
String contentNodeRef = getNodeRefSpacesStore() + getItemNodeRef(user, password, contentPath);
public void moveTo(String user, String password, String contentPath, String destinationPath) {
String contentNodeRef =
getNodeRefSpacesStore() + getItemNodeRef(user, password, contentPath);
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
String url = MessageFormat.format(client.getAlfrescoUrl() + "alfresco/s/slingshot/doclib/" + MOVE_ACTIONS_API, destinationPath);
String url =
MessageFormat.format(
client.getAlfrescoUrl() + "alfresco/s/slingshot/doclib/" + MOVE_ACTIONS_API,
destinationPath);
HttpPost request = new HttpPost(url);
boolean success = false;
try
{
try {
JSONObject body = new JSONObject();
body.put("nodeRefs", new JSONArray(Arrays.asList(contentNodeRef)));
StringEntity se = new StringEntity(body.toString(), AlfrescoHttpClient.UTF_8_ENCODING);
@@ -265,8 +275,7 @@ public class RMRolesAndActionsAPI extends BaseAPI
request.setEntity(se);
HttpResponse response = client.execute(user, password, request);
switch (response.getStatusLine().getStatusCode())
{
switch (response.getStatusLine().getStatusCode()) {
case HttpStatus.SC_OK:
JSONObject json = new JSONObject(EntityUtils.toString(response.getEntity()));
success = (Boolean) json.get("overallSuccess");
@@ -278,15 +287,10 @@ public class RMRolesAndActionsAPI extends BaseAPI
LOGGER.error("Unable to move: " + response.toString());
break;
}
}
catch (JSONException | IOException e)
{
} catch (JSONException | IOException e) {
LOGGER.error(e.toString());
}
finally
{
if (request != null)
{
} finally {
if (request != null) {
request.releaseConnection();
}
client.close();
@@ -298,20 +302,17 @@ public class RMRolesAndActionsAPI extends BaseAPI
/**
* Move action
*
* @param user the user to move the contentPath
* @param password the user's password
* @param contentPath path to the content to be moved
* @param user the user to move the contentPath
* @param password the user's password
* @param contentPath path to the content to be moved
* @param destinationPath destination path
* @throws AssertionError if the move was unexpectedly successful.
*/
public void moveToAndExpectFailure(String user, String password, String contentPath, String destinationPath)
{
try
{
public void moveToAndExpectFailure(
String user, String password, String contentPath, String destinationPath) {
try {
moveTo(user, password, contentPath, destinationPath);
}
catch(AssertionError e)
{
} catch (AssertionError e) {
// We are expecting the move to fail.
return;
}
@@ -321,62 +322,68 @@ public class RMRolesAndActionsAPI extends BaseAPI
/**
* Perform an action on the given content
*
* @param user the user executing the action
* @param password the user's password
* @param user the user executing the action
* @param password the user's password
* @param contentName the content name
* @return The HTTP response.
*/
public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action)
{
public HttpResponse executeAction(
String user, String password, String contentName, RM_ACTIONS action) {
return executeAction(user, password, contentName, action, null, SC_OK);
}
/**
* Perform an action on the given content
*
* @param user the user executing the action
* @param password the user's password
* @param user the user executing the action
* @param password the user's password
* @param contentName the content name
* @return The HTTP response.
*/
public HttpResponse executeActionAndExpectResponseCode(String user, String password, String contentName, RM_ACTIONS action,
int status)
{
public HttpResponse executeActionAndExpectResponseCode(
String user, String password, String contentName, RM_ACTIONS action, int status) {
return executeAction(user, password, contentName, action, null, status);
}
/**
* Perform an action on the given content
*
* @param user the user executing the action
* @param password the user's password
* @param user the user executing the action
* @param password the user's password
* @param contentName the content name
* @return The HTTP response.
*/
public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action,
ZonedDateTime date)
{
public HttpResponse executeAction(
String user,
String password,
String contentName,
RM_ACTIONS action,
ZonedDateTime date) {
return executeAction(user, password, contentName, action, date, SC_OK);
}
/**
* Creates the body for Actions API requests
*
* @param user the user executing the action
* @param password the user's password
* @param contentName the content on which the action is executed
* @param action the action executed
* @param user the user executing the action
* @param password the user's password
* @param contentName the content on which the action is executed
* @param action the action executed
* @param actionsParams the request parameters
* @return the JSONObject created
*/
private JSONObject actionsRequestBody(String user, String password, String contentName, RM_ACTIONS action,
JSONObject actionsParams)
{
final String recNodeRef = getNodeRefSpacesStore() + contentService.getNodeRef(user, password, RM_SITE_ID, contentName);
private JSONObject actionsRequestBody(
String user,
String password,
String contentName,
RM_ACTIONS action,
JSONObject actionsParams) {
final String recNodeRef =
getNodeRefSpacesStore()
+ contentService.getNodeRef(user, password, RM_SITE_ID, contentName);
final JSONObject requestParams = new JSONObject();
requestParams.put("name", action.getAction());
requestParams.put("nodeRef", recNodeRef);
if (actionsParams != null)
{
if (actionsParams != null) {
requestParams.put("params", actionsParams);
}
return requestParams;
@@ -385,102 +392,143 @@ public class RMRolesAndActionsAPI extends BaseAPI
/**
* Perform an action on the record folder
*
* @param user the user executing the action
* @param password the user's password
* @param user the user executing the action
* @param password the user's password
* @param contentName the content name
* @param date the date to be updated
* @param date the date to be updated
* @return The HTTP response.
*/
public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action,
ZonedDateTime date, int status)
{
public HttpResponse executeAction(
String user,
String password,
String contentName,
RM_ACTIONS action,
ZonedDateTime date,
int status) {
final JSONObject actionParams = new JSONObject();
if (date != null)
{
actionParams.put("asOfDate", new JSONObject().put("iso8601", ISO_INSTANT_FORMATTER.format(date)));
if (date != null) {
actionParams.put(
"asOfDate",
new JSONObject().put("iso8601", ISO_INSTANT_FORMATTER.format(date)));
}
final JSONObject requestParams = actionsRequestBody(user, password, contentName, action, actionParams);
final JSONObject requestParams =
actionsRequestBody(user, password, contentName, action, actionParams);
return doPostJsonRequest(user, password, status, requestParams, RM_ACTIONS_API);
}
/**
* Complete an event on the record/record folder
*
* @param user the user executing the action
* @param password the user's password
* @param nodeName the node name
* @param event the event to be completed
* @param date the date to be updated
* @param user the user executing the action
* @param password the user's password
* @param nodeName the node name
* @param event the event to be completed
* @param date the date to be updated
* @return The HTTP response.
*/
public HttpResponse completeEvent(String user, String password, String nodeName, RMEvents event, Instant date)
{
public HttpResponse completeEvent(
String user, String password, String nodeName, RMEvents event, Instant date) {
date = (date != null) ? date : Instant.now();
final JSONObject actionParams = new JSONObject().put("eventName", event.getEventName())
.put("eventCompletedBy", user)
.put("eventCompletedAt", new JSONObject()
.put("iso8601", ISO_INSTANT_FORMATTER.format(date))
);
final JSONObject requestParams = actionsRequestBody(user, password, nodeName, RM_ACTIONS.COMPLETE_EVENT,
actionParams);
final JSONObject actionParams =
new JSONObject()
.put("eventName", event.getEventName())
.put("eventCompletedBy", user)
.put(
"eventCompletedAt",
new JSONObject()
.put("iso8601", ISO_INSTANT_FORMATTER.format(date)));
final JSONObject requestParams =
actionsRequestBody(
user, password, nodeName, RM_ACTIONS.COMPLETE_EVENT, actionParams);
return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API);
}
/**
* Undo an event on the record/record folder
*
* @param user the user executing the action
* @param password the user's password
* @param user the user executing the action
* @param password the user's password
* @param contentName the content name
* @param event the event to be undone
* @param event the event to be undone
* @return The HTTP response.
*/
public HttpResponse undoEvent(String user, String password, String contentName, RMEvents event)
{
final JSONObject requestParams = actionsRequestBody(user, password, contentName, RM_ACTIONS.UNDO_EVENT,
new JSONObject().put("eventName", event.getEventName()));
public HttpResponse undoEvent(
String user, String password, String contentName, RMEvents event) {
final JSONObject requestParams =
actionsRequestBody(
user,
password,
contentName,
RM_ACTIONS.UNDO_EVENT,
new JSONObject().put("eventName", event.getEventName()));
return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API);
}
/**
* Deletes every item in the given container
*
* @param username the user's username
* @param password its password
* @param siteId the site id in which the container is located
* @param username the user's username
* @param password its password
* @param siteId the site id in which the container is located
* @param containerName the container to look for items into
* @throws AssertionError if not all items could be deleted.
*/
public void deleteAllItemsInContainer(String username, String password, String siteId, String containerName)
{
for (CmisObject item : contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren())
{
public void deleteAllItemsInContainer(
String username, String password, String siteId, String containerName) {
for (CmisObject item :
contentService
.getFolderObject(
contentService.getCMISSession(username, password),
siteId,
containerName)
.getChildren()) {
item.delete();
}
assertFalse("Not all items were deleted from " + containerName,
contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren().getHasMoreItems());
assertFalse(
"Not all items were deleted from " + containerName,
contentService
.getFolderObject(
contentService.getCMISSession(username, password),
siteId,
containerName)
.getChildren()
.getHasMoreItems());
}
/**
* Updates metadata, can be used on records, folders and categories
*
* @param username the user updating the item
* @param password the user's password
* @param username the user updating the item
* @param password the user's password
* @param itemNodeRef the item noderef
* @return The HTTP response.
*/
public HttpResponse updateMetadata(String username, String password, String itemNodeRef, Map<RMProperty, String> properties)
{
public HttpResponse updateMetadata(
String username,
String password,
String itemNodeRef,
Map<RMProperty, String> properties) {
JSONObject requestParams = new JSONObject();
addPropertyToRequest(requestParams, "prop_cm_name", properties, RMProperty.NAME);
addPropertyToRequest(requestParams, "prop_cm_title", properties, RMProperty.TITLE);
addPropertyToRequest(requestParams, "prop_cm_description", properties, RMProperty.DESCRIPTION);
addPropertyToRequest(
requestParams, "prop_cm_description", properties, RMProperty.DESCRIPTION);
addPropertyToRequest(requestParams, "prop_cm_author", properties, RMProperty.AUTHOR);
addPropertyToRequest(requestParams, "prop_dod_originator", properties, RMProperty.ORIGINATOR);
addPropertyToRequest(requestParams, "prop_dod_originatingOrganization", properties, RMProperty
.ORIGINATING_ORGANIZATION);
addPropertyToRequest(requestParams, "prop_dod_publicationDate", properties, RMProperty.PUBLICATION_DATE);
addPropertyToRequest(
requestParams, "prop_dod_originator", properties, RMProperty.ORIGINATOR);
addPropertyToRequest(
requestParams,
"prop_dod_originatingOrganization",
properties,
RMProperty.ORIGINATING_ORGANIZATION);
addPropertyToRequest(
requestParams, "prop_dod_publicationDate", properties, RMProperty.PUBLICATION_DATE);
return doPostJsonRequest(username, password, SC_OK, requestParams, MessageFormat.format(UPDATE_METADATA_API, "{0}", itemNodeRef));
return doPostJsonRequest(
username,
password,
SC_OK,
requestParams,
MessageFormat.format(UPDATE_METADATA_API, "{0}", itemNodeRef));
}
}

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