mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			64 Commits
		
	
	
		
			14.2
			...
			autoformat
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 6f0466a909 | ||
|  | fa4613d452 | ||
|  | 7242a78705 | ||
|  | 539a89537b | ||
|  | 608c16d4a4 | ||
|  | c00736c639 | ||
|  | 15cb7ff44e | ||
|  | 4776e37223 | ||
|  | cbd45fcb3e | ||
|  | 655cadbda0 | ||
|  | 6d7e3bb787 | ||
|  | bb8d10074e | ||
|  | 806880a86b | ||
|  | e68f56270a | ||
|  | 8705d97407 | ||
|  | 44e3242132 | ||
|  | 8a3cdd55a7 | ||
|  | cff2a70b17 | ||
|  | 3b41308ecc | ||
|  | 8a60e26ff0 | ||
|  | accfc4662d | ||
|  | 1e0fcfcc14 | ||
|  | 837a706514 | ||
|  | db290c98f2 | ||
|  | 12682ddcff | ||
|  | 0ed2e9b3a7 | ||
|  | 3442e91575 | ||
|  | 59b636e0ba | ||
|  | 0333fe05b5 | ||
|  | 9b592bfc13 | ||
|  | 386696d58b | ||
|  | 1f243d629e | ||
|  | dee7625998 | ||
|  | 1c541281db | ||
|  | c991290c01 | ||
|  | 9b62808ed7 | ||
|  | d4e8bba9f5 | ||
|  | 5ae240c392 | ||
|  | a5b35b7d96 | ||
|  | d2544b7a4d | ||
|  | b9abc05eda | ||
|  | 04e3743f01 | ||
|  | 745295c4ba | ||
|  | c9b08594de | ||
|  | 1d8044076c | ||
|  | 377b082ef8 | ||
|  | ad2525bf17 | ||
|  | 888b26ef72 | ||
|  | aa4a5a6063 | ||
|  | 7ea91ea702 | ||
|  | b3e8051f08 | ||
|  | 4ba0d3a899 | ||
|  | 8d78b257aa | ||
|  | df67011596 | ||
|  | 871bd40d6d | ||
|  | 2ef97e0b23 | ||
|  | f1d48f7aab | ||
|  | b5f24f5d58 | ||
|  | 14668044f4 | ||
|  | c5281d7f10 | ||
|  | 00565f3bc9 | ||
|  | f15c4d7a8f | ||
|  | 85a3c71849 | ||
|  | 4db8ca16e1 | 
							
								
								
									
										181
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal 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
									
								
							
							
						
						
									
										6
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal 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] | ||||||
| @@ -1,4 +1,7 @@ | |||||||
| --- | --- | ||||||
|  | import: | ||||||
|  |   - source: Alfresco/alfresco-build-tools:.travis.pre-commit.yml@v1.1.5 | ||||||
|  |  | ||||||
| dist: focal | dist: focal | ||||||
| language: java | language: java | ||||||
| jdk: openjdk11 | jdk: openjdk11 | ||||||
| @@ -145,7 +148,8 @@ jobs: | |||||||
|       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 |       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" |     - name: "Repository - MariaDB 10.6 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ |       # 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: |       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 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 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
| @@ -159,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 |       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" |     - name: "Repository - MySQL 8 tests" | ||||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest 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: |       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 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 |         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-community-repo-amps</artifactId> |       <artifactId>alfresco-community-repo-amps</artifactId> | ||||||
|       <version>14.2</version> |       <version>14.15-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <modules> |    <modules> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> |       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||||
|       <version>14.2</version> |       <version>14.15-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|    <modules> |    <modules> | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|    <parent> |    <parent> | ||||||
|       <groupId>org.alfresco</groupId> |       <groupId>org.alfresco</groupId> | ||||||
|       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> |       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> | ||||||
|       <version>14.2</version> |       <version>14.15-SNAPSHOT</version> | ||||||
|    </parent> |    </parent> | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -40,7 +40,7 @@ | |||||||
|       <dependency> |       <dependency> | ||||||
|          <groupId>org.slf4j</groupId> |          <groupId>org.slf4j</groupId> | ||||||
|          <artifactId>slf4j-log4j12</artifactId> |          <artifactId>slf4j-log4j12</artifactId> | ||||||
|          <version>1.7.26</version> |          <version>1.7.32</version> | ||||||
|          <scope>test</scope> |          <scope>test</scope> | ||||||
|       </dependency> |       </dependency> | ||||||
|       <dependency> |       <dependency> | ||||||
| @@ -82,7 +82,7 @@ | |||||||
|       <dependency> |       <dependency> | ||||||
|          <groupId>com.github.docker-java</groupId> |          <groupId>com.github.docker-java</groupId> | ||||||
|          <artifactId>docker-java</artifactId> |          <artifactId>docker-java</artifactId> | ||||||
|          <version>3.2.11</version> |          <version>3.2.12</version> | ||||||
|       </dependency> |       </dependency> | ||||||
|    </dependencies> |    </dependencies> | ||||||
| </project> | </project> | ||||||
|   | |||||||
| @@ -26,12 +26,12 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.core; | package org.alfresco.rest.core; | ||||||
|  |  | ||||||
|  | import lombok.Getter; | ||||||
|  |  | ||||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||||
| import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||||
| import org.springframework.context.annotation.PropertySource; | import org.springframework.context.annotation.PropertySource; | ||||||
|  |  | ||||||
| import lombok.Getter; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Extends {@link RestProperties} to be able to change/add properties |  * 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:default.properties", "classpath:config.properties"}) | ||||||
| @PropertySource(value = "classpath:module.properties", ignoreResourceNotFound = true) | @PropertySource(value = "classpath:module.properties", ignoreResourceNotFound = true) | ||||||
| @PropertySource(value = "classpath:local.properties", ignoreResourceNotFound = true) | @PropertySource(value = "classpath:local.properties", ignoreResourceNotFound = true) | ||||||
| public class RMRestProperties extends RestProperties | public class RMRestProperties extends RestProperties { | ||||||
| { |     @Value("${alfresco.scheme}") | ||||||
|     @Value ("${alfresco.scheme}") |  | ||||||
|     private String scheme; |     private String scheme; | ||||||
|  |  | ||||||
|     @Value ("${alfresco.server}") |     @Value("${alfresco.server}") | ||||||
|     private String server; |     private String server; | ||||||
|  |  | ||||||
|     @Value ("${alfresco.port}") |     @Value("${alfresco.port}") | ||||||
|     private String port; |     private String port; | ||||||
|  |  | ||||||
|     @Value ("${rest.rmPath}") |     @Value("${rest.rmPath}") | ||||||
|     private String restRmPath; |     private String restRmPath; | ||||||
|  |  | ||||||
|     @Value ("${docker.host}") |     @Value("${docker.host}") | ||||||
|     private String dockerHost; |     private String dockerHost; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,6 +28,8 @@ package org.alfresco.rest.core; | |||||||
|  |  | ||||||
| import io.restassured.builder.RequestSpecBuilder; | import io.restassured.builder.RequestSpecBuilder; | ||||||
|  |  | ||||||
|  | import lombok.Getter; | ||||||
|  |  | ||||||
| import org.alfresco.rest.exception.EmptyJsonResponseException; | import org.alfresco.rest.exception.EmptyJsonResponseException; | ||||||
| import org.alfresco.rest.model.RestErrorModel; | import org.alfresco.rest.model.RestErrorModel; | ||||||
| import org.alfresco.rest.model.RestHtmlResponse; | import org.alfresco.rest.model.RestHtmlResponse; | ||||||
| @@ -43,8 +45,6 @@ import org.springframework.context.annotation.Scope; | |||||||
| import org.springframework.http.HttpStatus; | import org.springframework.http.HttpStatus; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| import lombok.Getter; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Extends {@link RestWrapper} in order to call GS APIs with our own properties |  * Extends {@link RestWrapper} in order to call GS APIs with our own properties | ||||||
|  * |  * | ||||||
| @@ -53,118 +53,105 @@ import lombok.Getter; | |||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| @Scope(value = "prototype") | @Scope(value = "prototype") | ||||||
| public class RMRestWrapper | public class RMRestWrapper { | ||||||
| { |  | ||||||
|     /** The class that wraps the ReST APIs from core. */ |     /** The class that wraps the ReST APIs from core. */ | ||||||
|     @Autowired |     @Autowired private RestWrapper restWrapper; | ||||||
|     private RestWrapper restWrapper; |  | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired @Getter private RMRestProperties rmRestProperties; | ||||||
|     @Getter |  | ||||||
|     private RMRestProperties rmRestProperties; |  | ||||||
|  |  | ||||||
|     public GSCoreAPI withGSCoreAPI() |     public GSCoreAPI withGSCoreAPI() { | ||||||
|     { |  | ||||||
|         return new GSCoreAPI(this, getRmRestProperties()); |         return new GSCoreAPI(this, getRmRestProperties()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the core class that wraps the ReST APIs. */ |     /** Get the core class that wraps the ReST APIs. */ | ||||||
|     public RestWrapper getRestWrapper() |     public RestWrapper getRestWrapper() { | ||||||
|     { |  | ||||||
|         return restWrapper; |         return restWrapper; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Authenticate specific user to Alfresco REST API */ |     /** Authenticate specific user to Alfresco REST API */ | ||||||
|     public void authenticateUser(UserModel userModel) |     public void authenticateUser(UserModel userModel) { | ||||||
|     { |  | ||||||
|         restWrapper.authenticateUser(userModel); |         restWrapper.authenticateUser(userModel); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the last error thrown (if any). */ |     /** Get the last error thrown (if any). */ | ||||||
|     public RestErrorModel assertLastError() |     public RestErrorModel assertLastError() { | ||||||
|     { |  | ||||||
|         return restWrapper.assertLastError(); |         return restWrapper.assertLastError(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Process responses for a collection of models as {@link RestSiteModelsCollection}. */ |     /** 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); |         return restWrapper.processModels(classz, simpleRequest); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Process responses for a single model as {@link RestSiteModel}. */ |     /** 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); |         return restWrapper.processModel(classz, restRequest); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Process a response that has no body - basically will need only the status code from it. */ |     /** 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); |         restWrapper.processEmptyModel(simpleRequest); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the most recently returned status object. */ |     /** Get the most recently returned status object. */ | ||||||
|     public StatusModel getLastStatus() |     public StatusModel getLastStatus() { | ||||||
|     { |  | ||||||
|         return restWrapper.getLastStatus(); |         return restWrapper.getLastStatus(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the most recently returned status code. */ |     /** Get the most recently returned status code. */ | ||||||
|     public String getStatusCode() |     public String getStatusCode() { | ||||||
|     { |  | ||||||
|         return restWrapper.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); |         restWrapper.setStatusCode(statusCode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Assert that a specific status code is returned. */ |     /** Assert that a specific status code is returned. */ | ||||||
|     public void assertStatusCodeIs(HttpStatus statusCode) |     public void assertStatusCodeIs(HttpStatus statusCode) { | ||||||
|     { |  | ||||||
|         restWrapper.assertStatusCodeIs(statusCode); |         restWrapper.assertStatusCodeIs(statusCode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @return A parameters string that you could pass on the request ?param=value */ |     /** @return A parameters string that you could pass on the request ?param=value */ | ||||||
|     public String getParameters() |     public String getParameters() { | ||||||
|     { |  | ||||||
|         return restWrapper.getParameters(); |         return restWrapper.getParameters(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Create a {@link UserModel} for a new test user. */ |     /** Create a {@link UserModel} for a new test user. */ | ||||||
|     public UserModel getTestUser() |     public UserModel getTestUser() { | ||||||
|     { |  | ||||||
|         return restWrapper.getTestUser(); |         return restWrapper.getTestUser(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the Alfresco Core API. */ |     /** Get the Alfresco Core API. */ | ||||||
|     public RestCoreAPI withCoreAPI() |     public RestCoreAPI withCoreAPI() { | ||||||
|     { |  | ||||||
|         return restWrapper.withCoreAPI(); |         return restWrapper.withCoreAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Get the Alfresco Search API. */ |     /** Get the Alfresco Search API. */ | ||||||
|     public SearchAPI withSearchAPI() |     public SearchAPI withSearchAPI() { | ||||||
|     { |  | ||||||
|         return restWrapper.withSearchAPI(); |         return restWrapper.withSearchAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * You can handle the request sent to server by calling this method. |      * You can handle the request sent to server by calling this method. If for example you want to | ||||||
|      * If for example you want to sent multipart form data you can use: <pre> |      * sent multipart form data you can use: | ||||||
|  |      * | ||||||
|  |      * <pre> | ||||||
|      * restClient.configureRequestSpec() |      * restClient.configureRequestSpec() | ||||||
|      *              .addMultiPart("filedata", Utility.getResourceTestDataFile("restapi-resource")) |      *              .addMultiPart("filedata", Utility.getResourceTestDataFile("restapi-resource")) | ||||||
|      *              .addFormParam("renditions", "doclib") |      *              .addFormParam("renditions", "doclib") | ||||||
|      *              .addFormParam("autoRename", true); |      *              .addFormParam("autoRename", true); | ||||||
|      * |      * | ||||||
|      * restClient.withCoreAPI().usingNode(ContentModel.my()).createNode(); |      * 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(); |         return restWrapper.configureRequestSpec(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -173,8 +160,7 @@ public class RMRestWrapper | |||||||
|      * |      * | ||||||
|      * @throws EmptyJsonResponseException If there is no response from the server. |      * @throws EmptyJsonResponseException If there is no response from the server. | ||||||
|      */ |      */ | ||||||
|     public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) |     public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) { | ||||||
|     { |  | ||||||
|         return restWrapper.processHtmlResponse(simpleRequest); |         return restWrapper.processHtmlResponse(simpleRequest); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,10 +28,9 @@ package org.alfresco.rest.core; | |||||||
|  |  | ||||||
| import static lombok.AccessLevel.PROTECTED; | import static lombok.AccessLevel.PROTECTED; | ||||||
|  |  | ||||||
| import javax.annotation.Resource; |  | ||||||
|  |  | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.Setter; | import lombok.Setter; | ||||||
|  |  | ||||||
| import org.alfresco.rest.requests.Node; | import org.alfresco.rest.requests.Node; | ||||||
| import org.alfresco.rest.requests.coreAPI.RestCoreAPI; | import org.alfresco.rest.requests.coreAPI.RestCoreAPI; | ||||||
| import org.alfresco.rest.requests.search.SearchAPI; | 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.context.annotation.Scope; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * REST API Factory which provides access to the APIs |  * REST API Factory which provides access to the APIs | ||||||
|  * |  * | ||||||
| @@ -63,10 +64,9 @@ import org.springframework.stereotype.Service; | |||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| @Scope(value = "prototype") | @Scope(value = "prototype") | ||||||
| public class RestAPIFactory | public class RestAPIFactory { | ||||||
| { |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     @Getter (value = PROTECTED) |     @Getter(value = PROTECTED) | ||||||
|     private DataUserAIS dataUser; |     private DataUserAIS dataUser; | ||||||
|  |  | ||||||
|     @Resource(name = "RMRestWrapper") |     @Resource(name = "RMRestWrapper") | ||||||
| @@ -74,173 +74,138 @@ public class RestAPIFactory | |||||||
|     @Setter |     @Setter | ||||||
|     private RMRestWrapper rmRestWrapper; |     private RMRestWrapper rmRestWrapper; | ||||||
|  |  | ||||||
|     private GSCoreAPI getGSCoreAPI(UserModel userModel) |     private GSCoreAPI getGSCoreAPI(UserModel userModel) { | ||||||
|     { |         getRmRestWrapper() | ||||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); |                 .authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||||
|         return getRmRestWrapper().withGSCoreAPI(); |         return getRmRestWrapper().withGSCoreAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private RestCoreAPI getCoreAPI(UserModel userModel) |     private RestCoreAPI getCoreAPI(UserModel userModel) { | ||||||
|     { |         getRmRestWrapper() | ||||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); |                 .authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||||
|         return getRmRestWrapper().withCoreAPI(); |         return getRmRestWrapper().withCoreAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public SearchAPI getSearchAPI(UserModel userModel) |     public SearchAPI getSearchAPI(UserModel userModel) { | ||||||
|     { |         getRmRestWrapper() | ||||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); |                 .authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||||
|         return getRmRestWrapper().withSearchAPI(); |         return getRmRestWrapper().withSearchAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** When no user is given the default is set to admin */ | ||||||
|      * When no user is given the default is set to admin |     public SearchAPI getSearchAPI() { | ||||||
|      */ |  | ||||||
|     public SearchAPI getSearchAPI() |  | ||||||
|     { |  | ||||||
|         return getSearchAPI(null); |         return getSearchAPI(null); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Node getNodeAPI(RepoTestModel model) throws RuntimeException |     public Node getNodeAPI(RepoTestModel model) throws RuntimeException { | ||||||
|     { |         try { | ||||||
|         try |  | ||||||
|         { |  | ||||||
|             return getCoreAPI(null).usingNode(model); |             return getCoreAPI(null).usingNode(model); | ||||||
|         } |         } catch (Exception e) { | ||||||
|         catch (Exception e) |  | ||||||
|         { |  | ||||||
|             throw new RuntimeException("Failed to load nodeAPI.", e); |             throw new RuntimeException("Failed to load nodeAPI.", e); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Node getNodeAPI(UserModel userModel, RepoTestModel model) throws RuntimeException |     public Node getNodeAPI(UserModel userModel, RepoTestModel model) throws RuntimeException { | ||||||
|     { |         try { | ||||||
|         try |  | ||||||
|         { |  | ||||||
|             return getCoreAPI(userModel).usingNode(model); |             return getCoreAPI(userModel).usingNode(model); | ||||||
|         } |         } catch (Exception e) { | ||||||
|         catch (Exception e) |  | ||||||
|         { |  | ||||||
|             throw new RuntimeException("Failed to load nodeAPI.", e); |             throw new RuntimeException("Failed to load nodeAPI.", e); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RMSiteAPI getRMSiteAPI() |     public RMSiteAPI getRMSiteAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingRMSite(); |         return getGSCoreAPI(null).usingRMSite(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RMSiteAPI getRMSiteAPI(UserModel userModel) |     public RMSiteAPI getRMSiteAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingRMSite(); |         return getGSCoreAPI(userModel).usingRMSite(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public FilePlanAPI getFilePlansAPI() |     public FilePlanAPI getFilePlansAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingFilePlans(); |         return getGSCoreAPI(null).usingFilePlans(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public FilePlanAPI getFilePlansAPI(UserModel userModel) |     public FilePlanAPI getFilePlansAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingFilePlans(); |         return getGSCoreAPI(userModel).usingFilePlans(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordCategoryAPI getRecordCategoryAPI() |     public RecordCategoryAPI getRecordCategoryAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingRecordCategory(); |         return getGSCoreAPI(null).usingRecordCategory(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel) |     public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingRecordCategory(); |         return getGSCoreAPI(userModel).usingRecordCategory(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordFolderAPI getRecordFolderAPI() |     public RecordFolderAPI getRecordFolderAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingRecordFolder(); |         return getGSCoreAPI(null).usingRecordFolder(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordFolderAPI getRecordFolderAPI(UserModel userModel) |     public RecordFolderAPI getRecordFolderAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingRecordFolder(); |         return getGSCoreAPI(userModel).usingRecordFolder(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordsAPI getRecordsAPI() |     public RecordsAPI getRecordsAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingRecords(); |         return getGSCoreAPI(null).usingRecords(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RecordsAPI getRecordsAPI(UserModel userModel) |     public RecordsAPI getRecordsAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingRecords(); |         return getGSCoreAPI(userModel).usingRecords(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public FilesAPI getFilesAPI() |     public FilesAPI getFilesAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingFiles(); |         return getGSCoreAPI(null).usingFiles(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public FilesAPI getFilesAPI(UserModel userModel) |     public FilesAPI getFilesAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingFiles(); |         return getGSCoreAPI(userModel).usingFiles(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public TransferContainerAPI getTransferContainerAPI() |     public TransferContainerAPI getTransferContainerAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingTransferContainer(); |         return getGSCoreAPI(null).usingTransferContainer(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public TransferContainerAPI getTransferContainerAPI(UserModel userModel) |     public TransferContainerAPI getTransferContainerAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingTransferContainer(); |         return getGSCoreAPI(userModel).usingTransferContainer(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public TransferAPI getTransferAPI() |     public TransferAPI getTransferAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingTransfer(); |         return getGSCoreAPI(null).usingTransfer(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public TransferAPI getTransferAPI(UserModel userModel) |     public TransferAPI getTransferAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingTransfer(); |         return getGSCoreAPI(userModel).usingTransfer(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RMUserAPI getRMUserAPI() |     public RMUserAPI getRMUserAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingRMUser(); |         return getGSCoreAPI(null).usingRMUser(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RMUserAPI getRMUserAPI(UserModel userModel) |     public RMUserAPI getRMUserAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingRMUser(); |         return getGSCoreAPI(userModel).usingRMUser(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public UnfiledContainerAPI getUnfiledContainersAPI() |     public UnfiledContainerAPI getUnfiledContainersAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingUnfiledContainers(); |         return getGSCoreAPI(null).usingUnfiledContainers(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel) |     public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingUnfiledContainers(); |         return getGSCoreAPI(userModel).usingUnfiledContainers(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI() |     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingUnfiledRecordFolder(); |         return getGSCoreAPI(null).usingUnfiledRecordFolder(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI(UserModel userModel) |     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingUnfiledRecordFolder(); |         return getGSCoreAPI(userModel).usingUnfiledRecordFolder(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public ActionsExecutionAPI getActionsAPI(UserModel userModel) |     public ActionsExecutionAPI getActionsAPI(UserModel userModel) { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(userModel).usingActionsExecutionsAPI(); |         return getGSCoreAPI(userModel).usingActionsExecutionsAPI(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public ActionsExecutionAPI getActionsAPI() |     public ActionsExecutionAPI getActionsAPI() { | ||||||
|     { |  | ||||||
|         return getGSCoreAPI(null).usingActionsExecutionsAPI(); |         return getGSCoreAPI(null).usingActionsExecutionsAPI(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,32 +26,25 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.core.search; | package org.alfresco.rest.core.search; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import org.alfresco.rest.search.Pagination; | import org.alfresco.rest.search.Pagination; | ||||||
| import org.alfresco.rest.search.RestRequestQueryModel; | import org.alfresco.rest.search.RestRequestQueryModel; | ||||||
| import org.alfresco.rest.search.SearchRequest; | import org.alfresco.rest.search.SearchRequest; | ||||||
|  |  | ||||||
| /** | import java.util.List; | ||||||
|  * Builder class for creating a search api request |  | ||||||
|  */ | /** Builder class for creating a search api request */ | ||||||
| public class SearchRequestBuilder extends SearchRequest | public class SearchRequestBuilder extends SearchRequest { | ||||||
| { |     /** Constructor for Search API Request */ | ||||||
|     /** |     public SearchRequestBuilder() { | ||||||
|      * Constructor for Search API Request |  | ||||||
|      */ |  | ||||||
|     public SearchRequestBuilder() |  | ||||||
|     { |  | ||||||
|         new SearchRequest(); |         new SearchRequest(); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Set the sql statement for the SearchRequest |      * Set the sql statement for the SearchRequest | ||||||
|      * |      * | ||||||
|      * @param query sql statement |      * @param query sql statement | ||||||
|      * @return search  request |      * @return search request | ||||||
|      */ |      */ | ||||||
|     public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query) |     public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query) { | ||||||
|     { |  | ||||||
|         super.setQuery(query); |         super.setQuery(query); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
| @@ -62,17 +55,13 @@ public class SearchRequestBuilder extends SearchRequest | |||||||
|      * @param paging pagination requested |      * @param paging pagination requested | ||||||
|      * @return search request |      * @return search request | ||||||
|      */ |      */ | ||||||
|     public SearchRequestBuilder setPagingBuilder(Pagination paging) |     public SearchRequestBuilder setPagingBuilder(Pagination paging) { | ||||||
|     { |  | ||||||
|         super.setPaging(paging); |         super.setPaging(paging); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** Set the pagination properties */ | ||||||
|      * Set the pagination properties |     public Pagination setPagination(Integer maxItems, Integer skipCount) { | ||||||
|      */ |  | ||||||
|     public Pagination setPagination(Integer maxItems, Integer skipCount) |  | ||||||
|     { |  | ||||||
|         Pagination pagination = new Pagination(); |         Pagination pagination = new Pagination(); | ||||||
|         pagination.setMaxItems(maxItems); |         pagination.setMaxItems(maxItems); | ||||||
|         pagination.setSkipCount(skipCount); |         pagination.setSkipCount(skipCount); | ||||||
| @@ -85,10 +74,8 @@ public class SearchRequestBuilder extends SearchRequest | |||||||
|      * @param fields requested fields |      * @param fields requested fields | ||||||
|      * @return search request |      * @return search request | ||||||
|      */ |      */ | ||||||
|     public SearchRequestBuilder setFieldsBuilder(List<String> fields) |     public SearchRequestBuilder setFieldsBuilder(List<String> fields) { | ||||||
|     { |  | ||||||
|         super.setFields(fields); |         super.setFields(fields); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,13 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.core.v0; | 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.commons.io.IOUtils; | ||||||
| import org.apache.http.HttpEntity; | import org.apache.http.HttpEntity; | ||||||
| import org.apache.http.HttpResponse; | import org.apache.http.HttpResponse; | ||||||
| @@ -42,25 +35,33 @@ import org.json.JSONObject; | |||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | 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. |  * Helper methods for use with REST APIs. | ||||||
|  * |  * | ||||||
|  * @author Tom Page |  * @author Tom Page | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class APIUtils | public class APIUtils { | ||||||
| { |  | ||||||
|     /** Logger for this class. */ |     /** Logger for this class. */ | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(APIUtils.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 = |     public static final DateTimeFormatter ISO_INSTANT_FORMATTER = | ||||||
|             new DateTimeFormatterBuilder().appendInstant(3).toFormatter(); |             new DateTimeFormatterBuilder().appendInstant(3).toFormatter(); | ||||||
|  |  | ||||||
|     /** Private constructor for helper class. */ |     /** Private constructor for helper class. */ | ||||||
|     private APIUtils() |     private APIUtils() {} | ||||||
|     { |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Extract the body of a HTTP response as a JSON object. |      * Extract the body of a HTTP response as a JSON object. | ||||||
| @@ -68,15 +69,11 @@ public class APIUtils | |||||||
|      * @param httpResponse The HTTP response. |      * @param httpResponse The HTTP response. | ||||||
|      * @return A JSON representation of the object. |      * @return A JSON representation of the object. | ||||||
|      */ |      */ | ||||||
|     public static JSONObject convertHTTPResponseToJSON(HttpResponse httpResponse) |     public static JSONObject convertHTTPResponseToJSON(HttpResponse httpResponse) { | ||||||
|     { |  | ||||||
|         String source = null; |         String source = null; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             source = IOUtils.toString(httpResponse.getEntity().getContent(), "UTF-8"); |             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); |             throw new IllegalArgumentException("Could not extract JSON from HTTP response.", e); | ||||||
|         } |         } | ||||||
|         LOGGER.info("Response body:\n{}", source); |         LOGGER.info("Response body:\n{}", source); | ||||||
| @@ -89,30 +86,21 @@ public class APIUtils | |||||||
|      * @param httpResponse http response |      * @param httpResponse http response | ||||||
|      * @return error message from the 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(); |         final HttpEntity entity = httpResponse.getEntity(); | ||||||
|         JsonReader reader = null; |         JsonReader reader = null; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             final InputStream responseStream = entity.getContent(); |             final InputStream responseStream = entity.getContent(); | ||||||
|             reader = Json.createReader(responseStream); |             reader = Json.createReader(responseStream); | ||||||
|             return reader.readObject().getString("message"); |             return reader.readObject().getString("message"); | ||||||
|         } |         } catch (JSONException error) { | ||||||
|         catch (JSONException error) |  | ||||||
|         { |  | ||||||
|  |  | ||||||
|             LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, 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); |             LOGGER.error("Parsing message body failed.", error); | ||||||
|         } |         } finally { | ||||||
|         finally |             if (reader != null) { | ||||||
|         { |  | ||||||
|             if (reader != null) |  | ||||||
|             { |  | ||||||
|                 reader.close(); |                 reader.close(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -29,16 +29,6 @@ package org.alfresco.rest.core.v0; | |||||||
| import static org.testng.AssertJUnit.assertEquals; | import static org.testng.AssertJUnit.assertEquals; | ||||||
| import static org.testng.AssertJUnit.assertNull; | 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.AlfrescoHttpClient; | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||||
| import org.alfresco.dataprep.ContentService; | import org.alfresco.dataprep.ContentService; | ||||||
| @@ -64,33 +54,42 @@ import org.slf4j.Logger; | |||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | 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 |  * The base API class containing common methods for making v0 API requests | ||||||
|  * |  * | ||||||
|  * @author Kristijan Conkas |  * @author Kristijan Conkas | ||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| public abstract class BaseAPI | public abstract class BaseAPI { | ||||||
| { |  | ||||||
|     // logger |     // logger | ||||||
|     protected static final Logger LOGGER = LoggerFactory.getLogger(BaseAPI.class); |     protected static final Logger LOGGER = LoggerFactory.getLogger(BaseAPI.class); | ||||||
|  |  | ||||||
|     /** exception key in JSON response body */ |     /** exception key in JSON response body */ | ||||||
|     private static final String EXCEPTION_KEY = "exception"; |     private static final String EXCEPTION_KEY = "exception"; | ||||||
|  |  | ||||||
|     private static final String MESSAGE_KEY = "message"; |     private static final String MESSAGE_KEY = "message"; | ||||||
|     public static final String NODE_PREFIX = "workspace/SpacesStore/"; |     public static final String NODE_PREFIX = "workspace/SpacesStore/"; | ||||||
|     protected static final String UPDATE_METADATA_API = "{0}node/{1}/formprocessor"; |     protected static final String UPDATE_METADATA_API = "{0}node/{1}/formprocessor"; | ||||||
|     protected static final String ACTIONS_API = "{0}actionQueue"; |     protected static final String ACTIONS_API = "{0}actionQueue"; | ||||||
|     protected static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue"; |     protected static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue"; | ||||||
|     public static final String RM_SITE_ID = "rm"; |     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/"; |     private static final String SLINGSHOT_PREFIX = "alfresco/s/slingshot/"; | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||||
|     private AlfrescoHttpClientFactory alfrescoHttpClientFactory; |  | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired protected ContentService contentService; | ||||||
|     protected ContentService contentService; |  | ||||||
|  |  | ||||||
|     public static final String NODE_REF_WORKSPACE_SPACES_STORE = "workspace://SpacesStore/"; |     public static final String NODE_REF_WORKSPACE_SPACES_STORE = "workspace://SpacesStore/"; | ||||||
|     private static final String FILE_PLAN_PATH = "/Sites/rm/documentLibrary"; |     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 |      * @return list of specified property values in result | ||||||
|      * @throws RuntimeException for malformed response |      * @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<>(); |         ArrayList<String> results = new ArrayList<>(); | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             JSONArray items = result.getJSONArray("items"); |             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)); |                 results.add(items.getJSONObject(i).getString(propertyName)); | ||||||
|             } |             } | ||||||
|         } |         } catch (JSONException error) { | ||||||
|         catch (JSONException error) |  | ||||||
|         { |  | ||||||
|             throw new RuntimeException("Unable to parse result", 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 |      * Helper method to extract the property value for the given nodeRef and property name | ||||||
|      *  |      * | ||||||
|      * @param result |      * @param result | ||||||
|      * @param nodeRef |      * @param nodeRef | ||||||
|      * @param propertyName |      * @param propertyName | ||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName) |     protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName) { | ||||||
|     { |  | ||||||
|         String propertyValue = ""; |         String propertyValue = ""; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             JSONArray items = result.getJSONArray("items"); |             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); |                 JSONObject item = items.getJSONObject(i); | ||||||
|                 if(nodeRef.equals(item.getString("nodeRef"))) |                 if (nodeRef.equals(item.getString("nodeRef"))) { | ||||||
|                 { |  | ||||||
|                     propertyValue = item.getJSONObject("properties").getString(propertyName); |                     propertyValue = item.getJSONObject("properties").getString(propertyName); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } catch (JSONException error) { | ||||||
|         catch (JSONException error) |  | ||||||
|         { |  | ||||||
|             throw new RuntimeException("Unable to parse result", error); |             throw new RuntimeException("Unable to parse result", error); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return propertyValue; |         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 |      * @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 |      * @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<>(); |         Map<String, List<String>> valuesByUniqueProperty = new HashMap<>(); | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             JSONArray items = requestResult.getJSONArray("items"); |             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<>(); |                 List<String> otherPropertiesValues = new ArrayList<>(); | ||||||
|  |  | ||||||
|                 for (int j = 0; j < otherProperties.size(); j++) |                 for (int j = 0; j < otherProperties.size(); j++) { | ||||||
|                 { |                     otherPropertiesValues.add( | ||||||
|                     otherPropertiesValues.add(items.getJSONObject(i).get(otherProperties.get(j)).toString()); |                             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); |             throw new RuntimeException("Unable to parse result", error); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -191,13 +178,12 @@ public abstract class BaseAPI | |||||||
|      * |      * | ||||||
|      * @param username the username |      * @param username the username | ||||||
|      * @param password the password |      * @param password the password | ||||||
|      * @param path     the path to the container eg. in case of a category it would be the category name, |      * @param path the path to the container eg. in case of a category it would be the category | ||||||
|      *                 in case of a folder it would be /categoryName/folderName |      *     name, in case of a folder it would be /categoryName/folderName when trying to get File | ||||||
|      *                 when trying to get File Plan, the path would be "" |      *     Plan, the path would be "" | ||||||
|      * @return the container nodeRef |      * @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); |         return contentService.getNodeRefByPath(username, password, FILE_PLAN_PATH + path); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -206,17 +192,14 @@ public abstract class BaseAPI | |||||||
|      * |      * | ||||||
|      * @param username the user's username |      * @param username the user's username | ||||||
|      * @param password its password |      * @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 |      * @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; |         CmisObject object; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             object = contentService.getCMISSession(username, password).getObjectByPath(path); |             object = contentService.getCMISSession(username, password).getObjectByPath(path); | ||||||
|         } catch (CmisObjectNotFoundException notFoundError) |         } catch (CmisObjectNotFoundException notFoundError) { | ||||||
|         { |  | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|         return object; |         return object; | ||||||
| @@ -230,23 +213,19 @@ public abstract class BaseAPI | |||||||
|      * @param parameters if the request has parameters |      * @param parameters if the request has parameters | ||||||
|      * @return result object (see API reference for more details), null for any errors |      * @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; |         String requestURL; | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|  |  | ||||||
|         if (parameters == null || parameters.isEmpty()) |         if (parameters == null || parameters.isEmpty()) { | ||||||
|         { |             requestURL = MessageFormat.format(requestURI, client.getAlfrescoUrl()); | ||||||
|              requestURL = MessageFormat.format( |         } else { | ||||||
|                     requestURI, |             requestURL = | ||||||
|                     client.getAlfrescoUrl()); |                     MessageFormat.format( | ||||||
|         } |                             requestURI, | ||||||
|         else |                             client.getAlfrescoUrl(), | ||||||
|         { |                             URLEncodedUtils.format(parameters, "UTF-8")); | ||||||
|              requestURL = MessageFormat.format( |  | ||||||
|                     requestURI, |  | ||||||
|                     client.getAlfrescoUrl(), |  | ||||||
|                     URLEncodedUtils.format(parameters, "UTF-8")); |  | ||||||
|         } |         } | ||||||
|         LOGGER.info("On GET {}, received following response: ", requestURL); |         LOGGER.info("On GET {}, received following response: ", requestURL); | ||||||
|         client.close(); |         client.close(); | ||||||
| @@ -255,89 +234,77 @@ public abstract class BaseAPI | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method for GET requests |      * Helper method for GET requests | ||||||
|  |      * | ||||||
|      * @param adminUser user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
|      * @param adminPassword password for adminUser |      * @param adminPassword password for adminUser | ||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected JSONObject doGetRequest(String adminUser, |     protected JSONObject doGetRequest( | ||||||
|         String adminPassword, |             String adminUser, | ||||||
|         String urlTemplate, |             String adminPassword, | ||||||
|         String ... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         String requestUrl = MessageFormat.format( |         String requestUrl = | ||||||
|             urlTemplate, |                 MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams); | ||||||
|             client.getApiUrl(), |  | ||||||
|             urlTemplateParams); |  | ||||||
|         client.close(); |         client.close(); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             return doRequest(HttpGet.class, requestUrl, adminUser, adminPassword, null); |             return doRequest(HttpGet.class, requestUrl, adminUser, adminPassword, null); | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doGetRequest failed", error); |             throw new IllegalArgumentException("doGetRequest failed", error); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method for Delete requests |      * Helper method for Delete requests | ||||||
|  |      * | ||||||
|      * @param adminUser user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
|      * @param adminPassword password for adminUser |      * @param adminPassword password for adminUser | ||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected JSONObject doDeleteRequest(String adminUser, |     protected JSONObject doDeleteRequest( | ||||||
|         String adminPassword, |             String adminUser, | ||||||
|         String urlTemplate, |             String adminPassword, | ||||||
|         String ... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         String requestUrl = MessageFormat.format( |         String requestUrl = | ||||||
|             urlTemplate, |                 MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams); | ||||||
|             client.getApiUrl(), |  | ||||||
|             urlTemplateParams); |  | ||||||
|         client.close(); |         client.close(); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             return doRequest(HttpDelete.class, requestUrl, adminUser, adminPassword, null); |             return doRequest(HttpDelete.class, requestUrl, adminUser, adminPassword, null); | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doDeleteRequest failed", error); |             throw new IllegalArgumentException("doDeleteRequest failed", error); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method for PUT requests |      * Helper method for PUT requests | ||||||
|  |      * | ||||||
|      * @param adminUser user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
|      * @param adminPassword password for adminUser |      * @param adminPassword password for adminUser | ||||||
|      * @param requestParams zero or more endpoint specific request parameters |      * @param requestParams zero or more endpoint specific request parameters | ||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected JSONObject doPutRequest(String adminUser, |     protected JSONObject doPutRequest( | ||||||
|         String adminPassword, |             String adminUser, | ||||||
|         JSONObject requestParams, |             String adminPassword, | ||||||
|         String urlTemplate, |             JSONObject requestParams, | ||||||
|         String ... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         String requestUrl = MessageFormat.format( |         String requestUrl = | ||||||
|             urlTemplate, |                 MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams); | ||||||
|             client.getApiUrl(), |  | ||||||
|             urlTemplateParams); |  | ||||||
|         client.close(); |         client.close(); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             return doRequest(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); |             return doRequest(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doPutRequest failed", error); |             throw new IllegalArgumentException("doPutRequest failed", error); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -352,15 +319,22 @@ public abstract class BaseAPI | |||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected HttpResponse doPutJsonRequest(String adminUser, |     protected HttpResponse doPutJsonRequest( | ||||||
|                 String adminPassword, |             String adminUser, | ||||||
|                 int expectedStatusCode, |             String adminPassword, | ||||||
|                 JSONObject requestParams, |             int expectedStatusCode, | ||||||
|                 String urlTemplate, |             JSONObject requestParams, | ||||||
|                 String... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         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> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      * @throws AssertionError if the returned status code is not as expected. |      * @throws AssertionError if the returned status code is not as expected. | ||||||
|      */ |      */ | ||||||
|     private HttpResponse doPutJsonRequest(String adminUser, |     private HttpResponse doPutJsonRequest( | ||||||
|                 String adminPassword, |             String adminUser, | ||||||
|                 int expectedStatusCode, |             String adminPassword, | ||||||
|                 String urlStart, |             int expectedStatusCode, | ||||||
|                 JSONObject requestParams, |             String urlStart, | ||||||
|                 String urlTemplate, |             JSONObject requestParams, | ||||||
|                 String... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         String requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); |         String requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); | ||||||
|         try |         try { | ||||||
|         { |             HttpResponse httpResponse = | ||||||
|             HttpResponse httpResponse = doRequestJson(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); |                     doRequestJson( | ||||||
|             assertEquals("PUT request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode()); |                             HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); | ||||||
|  |             assertEquals( | ||||||
|  |                     "PUT request to " + requestUrl + " was not successful.", | ||||||
|  |                     expectedStatusCode, | ||||||
|  |                     httpResponse.getStatusLine().getStatusCode()); | ||||||
|             return httpResponse; |             return httpResponse; | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doPutRequest failed", 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. |      * @param urlTemplateParams Any parameters that need to be filled into the URL template. | ||||||
|      * @return The resultant URL. |      * @return The resultant URL. | ||||||
|      */ |      */ | ||||||
|     private String formatRequestUrl(String urlStart, String urlTemplate, String[] urlTemplateParams) |     private String formatRequestUrl( | ||||||
|     { |             String urlStart, String urlTemplate, String[] urlTemplateParams) { | ||||||
|         if (urlTemplateParams.length == 1) |         if (urlTemplateParams.length == 1) { | ||||||
|         { |  | ||||||
|             // The format method needs some help to know not to use the whole array object. |             // The format method needs some help to know not to use the whole array object. | ||||||
|             return MessageFormat.format(urlTemplate, urlStart, urlTemplateParams[0]); |             return MessageFormat.format(urlTemplate, urlStart, urlTemplateParams[0]); | ||||||
|         } |         } | ||||||
| @@ -416,31 +391,27 @@ public abstract class BaseAPI | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method for POST requests |      * Helper method for POST requests | ||||||
|  |      * | ||||||
|      * @param adminUser user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
|      * @param adminPassword password for adminUser |      * @param adminPassword password for adminUser | ||||||
|      * @param requestParams zero or more endpoint specific request parameters |      * @param requestParams zero or more endpoint specific request parameters | ||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected JSONObject doPostRequest(String adminUser, |     protected JSONObject doPostRequest( | ||||||
|         String adminPassword, |             String adminUser, | ||||||
|         JSONObject requestParams, |             String adminPassword, | ||||||
|         String urlTemplate, |             JSONObject requestParams, | ||||||
|         String ... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         String requestUrl = MessageFormat.format( |         String requestUrl = | ||||||
|             urlTemplate, |                 MessageFormat.format(urlTemplate, client.getApiUrl(), urlTemplateParams); | ||||||
|             client.getApiUrl(), |  | ||||||
|             urlTemplateParams); |  | ||||||
|         client.close(); |         client.close(); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             return doRequest(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); |             return doRequest(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doPostRequest failed", error); |             throw new IllegalArgumentException("doPostRequest failed", error); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -455,15 +426,22 @@ public abstract class BaseAPI | |||||||
|      * @param urlTemplate request URL template |      * @param urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected HttpResponse doPostJsonRequest(String adminUser, |     protected HttpResponse doPostJsonRequest( | ||||||
|                                     String adminPassword, |             String adminUser, | ||||||
|                                     int expectedStatusCode, |             String adminPassword, | ||||||
|                                     JSONObject requestParams, |             int expectedStatusCode, | ||||||
|                                     String urlTemplate, |             JSONObject requestParams, | ||||||
|                                     String... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         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 urlTemplate request URL template | ||||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      */ |      */ | ||||||
|     protected HttpResponse doSlingshotPostJsonRequest(String adminUser, |     protected HttpResponse doSlingshotPostJsonRequest( | ||||||
|                 String adminPassword, |             String adminUser, | ||||||
|                 int expectedStatusCode, |             String adminPassword, | ||||||
|                 JSONObject requestParams, |             int expectedStatusCode, | ||||||
|                 String urlTemplate, |             JSONObject requestParams, | ||||||
|                 String... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         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> |      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||||
|      * @throws AssertionError if the returned status code is not as expected. |      * @throws AssertionError if the returned status code is not as expected. | ||||||
|      */ |      */ | ||||||
|     private HttpResponse doPostJsonRequest(String adminUser, |     private HttpResponse doPostJsonRequest( | ||||||
|                 String adminPassword, |             String adminUser, | ||||||
|                 int expectedStatusCode, |             String adminPassword, | ||||||
|                 String urlStart, |             int expectedStatusCode, | ||||||
|                 JSONObject requestParams, |             String urlStart, | ||||||
|                 String urlTemplate, |             JSONObject requestParams, | ||||||
|                 String... urlTemplateParams) |             String urlTemplate, | ||||||
|     { |             String... urlTemplateParams) { | ||||||
|         String requestUrl; |         String requestUrl; | ||||||
|         requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); |         requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); | ||||||
|         try |         try { | ||||||
|         { |             HttpResponse httpResponse = | ||||||
|             HttpResponse httpResponse = doRequestJson(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); |                     doRequestJson( | ||||||
|             assertEquals("POST request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode()); |                             HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); | ||||||
|  |             assertEquals( | ||||||
|  |                     "POST request to " + requestUrl + " was not successful.", | ||||||
|  |                     expectedStatusCode, | ||||||
|  |                     httpResponse.getStatusLine().getStatusCode()); | ||||||
|             return httpResponse; |             return httpResponse; | ||||||
|         } |         } catch (InstantiationException | IllegalAccessException error) { | ||||||
|         catch (InstantiationException | IllegalAccessException error) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("doPostRequest failed", error); |             throw new IllegalArgumentException("doPostRequest failed", error); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method for handling generic HTTP requests |      * Helper method for handling generic HTTP requests | ||||||
|  |      * | ||||||
|      * @param requestType request type (a subclass of {@link HttpRequestBase}) |      * @param requestType request type (a subclass of {@link HttpRequestBase}) | ||||||
|      * @param requestUrl URL the request is to be sent to |      * @param requestUrl URL the request is to be sent to | ||||||
|      * @param adminUser user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
| @@ -533,88 +521,76 @@ public abstract class BaseAPI | |||||||
|      * @throws InstantiationException for invalid <i>requestType</i> |      * @throws InstantiationException for invalid <i>requestType</i> | ||||||
|      */ |      */ | ||||||
|     private <T extends HttpRequestBase> JSONObject doRequest( |     private <T extends HttpRequestBase> JSONObject doRequest( | ||||||
|         Class<T> requestType, |             Class<T> requestType, | ||||||
|         String requestUrl, |             String requestUrl, | ||||||
|         String adminUser, |             String adminUser, | ||||||
|         String adminPassword, |             String adminPassword, | ||||||
|         JSONObject requestParams) throws InstantiationException, IllegalAccessException |             JSONObject requestParams) | ||||||
|     { |             throws InstantiationException, IllegalAccessException { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         T request = requestType.newInstance(); |         T request = requestType.newInstance(); | ||||||
|  |  | ||||||
|         JSONObject responseBody = null; |         JSONObject responseBody = null; | ||||||
|         JSONObject returnValues = null; |         JSONObject returnValues = null; | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             request.setURI(new URI(requestUrl)); |             request.setURI(new URI(requestUrl)); | ||||||
|  |  | ||||||
|             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) |             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) { | ||||||
|             { |                 ((HttpEntityEnclosingRequestBase) request) | ||||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString())); |                         .setEntity(new StringEntity(requestParams.toString())); | ||||||
|             } |             } | ||||||
|             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); |             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); | ||||||
|             LOGGER.info("Request body: {}", requestParams); |             LOGGER.info("Request body: {}", requestParams); | ||||||
|             HttpResponse response = client.execute(adminUser, adminPassword, request); |             HttpResponse response = client.execute(adminUser, adminPassword, request); | ||||||
|             LOGGER.info("Response: {}", response.getStatusLine()); |             LOGGER.info("Response: {}", response.getStatusLine()); | ||||||
|  |  | ||||||
|             try |             try { | ||||||
|             { |  | ||||||
|                 responseBody = new JSONObject(EntityUtils.toString(response.getEntity())); |                 responseBody = new JSONObject(EntityUtils.toString(response.getEntity())); | ||||||
|             } |             } catch (JSONException error) { | ||||||
|             catch (JSONException error) |                 LOGGER.error( | ||||||
|             { |                         "Converting message body to JSON failed. Body: {}", responseBody, error); | ||||||
|                 LOGGER.error("Converting message body to JSON failed. Body: {}", responseBody, error); |             } catch (ParseException | IOException error) { | ||||||
|             } |  | ||||||
|             catch (ParseException | IOException error) |  | ||||||
|             { |  | ||||||
|                 LOGGER.error("Parsing message body failed.", error); |                 LOGGER.error("Parsing message body failed.", error); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             switch (response.getStatusLine().getStatusCode()) |             switch (response.getStatusLine().getStatusCode()) { | ||||||
|             { |  | ||||||
|                 case HttpStatus.SC_OK: |                 case HttpStatus.SC_OK: | ||||||
|                 case HttpStatus.SC_CREATED: |                 case HttpStatus.SC_CREATED: | ||||||
|                     // request successful |                     // request successful | ||||||
|                     if (responseBody != null) |                     if (responseBody != null) { | ||||||
|                     { |  | ||||||
|                         returnValues = responseBody; |                         returnValues = responseBody; | ||||||
|                     } |                     } | ||||||
|                     break; |                     break; | ||||||
|  |  | ||||||
|                 case HttpStatus.SC_INTERNAL_SERVER_ERROR: |                 case HttpStatus.SC_INTERNAL_SERVER_ERROR: | ||||||
| 					if (responseBody != null  && responseBody.has(EXCEPTION_KEY)) |                     if (responseBody != null && responseBody.has(EXCEPTION_KEY)) { | ||||||
|                     { |                         LOGGER.error( | ||||||
|                         LOGGER.error("Request failed with error message: {}", responseBody.getString(MESSAGE_KEY)); |                                 "Request failed with error message: {}", | ||||||
|  |                                 responseBody.getString(MESSAGE_KEY)); | ||||||
|                         returnValues = responseBody; |                         returnValues = responseBody; | ||||||
|                     } |                     } | ||||||
|                     break; |                     break; | ||||||
|                 case HttpStatus.SC_BAD_REQUEST: |                 case HttpStatus.SC_BAD_REQUEST: | ||||||
|                 case HttpStatus.SC_UNPROCESSABLE_ENTITY: |                 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)); |                         LOGGER.error("Request failed: {}", responseBody.getString(EXCEPTION_KEY)); | ||||||
|                         returnValues = responseBody; |                         returnValues = responseBody; | ||||||
|                     } |                     } | ||||||
|                     break; |                     break; | ||||||
|  |  | ||||||
|                 default: |                 default: | ||||||
|                     LOGGER.error("Request returned unexpected HTTP status {}", response.getStatusLine().getStatusCode()); |                     LOGGER.error( | ||||||
|  |                             "Request returned unexpected HTTP status {}", | ||||||
|  |                             response.getStatusLine().getStatusCode()); | ||||||
|                     break; |                     break; | ||||||
|             } |             } | ||||||
|         } |         } catch (JSONException error) { | ||||||
|         catch (JSONException error) |  | ||||||
|         { |  | ||||||
|             LOGGER.error("Unable to extract response parameter", error); |             LOGGER.error("Unable to extract response parameter", error); | ||||||
|         } |         } catch (UnsupportedEncodingException | URISyntaxException error1) { | ||||||
|         catch (UnsupportedEncodingException | URISyntaxException error1) |  | ||||||
|         { |  | ||||||
|             LOGGER.error("Unable to construct request", error1); |             LOGGER.error("Unable to construct request", error1); | ||||||
|         } |         } finally { | ||||||
|         finally |             if (request != null) { | ||||||
|         { |  | ||||||
|             if (request != null) |  | ||||||
|             { |  | ||||||
|                 request.releaseConnection(); |                 request.releaseConnection(); | ||||||
|             } |             } | ||||||
|             client.close(); |             client.close(); | ||||||
| @@ -628,19 +604,18 @@ public abstract class BaseAPI | |||||||
|             String requestUrl, |             String requestUrl, | ||||||
|             String adminUser, |             String adminUser, | ||||||
|             String adminPassword, |             String adminPassword, | ||||||
|             JSONObject requestParams) throws InstantiationException, IllegalAccessException |             JSONObject requestParams) | ||||||
|     { |             throws InstantiationException, IllegalAccessException { | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         T request = requestType.newInstance(); |         T request = requestType.newInstance(); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             request.setURI(new URI(requestUrl)); |             request.setURI(new URI(requestUrl)); | ||||||
|             request.setHeader("Content-Type", "application/json"); |             request.setHeader("Content-Type", "application/json"); | ||||||
|  |  | ||||||
|             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) |             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) { | ||||||
|             { |                 ((HttpEntityEnclosingRequestBase) request) | ||||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString())); |                         .setEntity(new StringEntity(requestParams.toString())); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); |             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); | ||||||
| @@ -648,15 +623,10 @@ public abstract class BaseAPI | |||||||
|             HttpResponse httpResponse = client.execute(adminUser, adminPassword, request); |             HttpResponse httpResponse = client.execute(adminUser, adminPassword, request); | ||||||
|             LOGGER.info("Response: {}", httpResponse.getStatusLine()); |             LOGGER.info("Response: {}", httpResponse.getStatusLine()); | ||||||
|             return httpResponse; |             return httpResponse; | ||||||
|         } |         } catch (UnsupportedEncodingException | URISyntaxException error1) { | ||||||
|         catch (UnsupportedEncodingException | URISyntaxException error1) |  | ||||||
|         { |  | ||||||
|             LOGGER.error("Unable to construct request", error1); |             LOGGER.error("Unable to construct request", error1); | ||||||
|         } |         } finally { | ||||||
|         finally |             if (request != null) { | ||||||
|         { |  | ||||||
|             if (request != null) |  | ||||||
|             { |  | ||||||
|                 request.releaseConnection(); |                 request.releaseConnection(); | ||||||
|             } |             } | ||||||
|             client.close(); |             client.close(); | ||||||
| @@ -665,12 +635,8 @@ public abstract class BaseAPI | |||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** Used to set RM items properties including records, categories and folders */ | ||||||
|      * Used to set RM items properties |     public enum RMProperty { | ||||||
|      * including records, categories and folders |  | ||||||
|      */ |  | ||||||
|     public enum RMProperty |  | ||||||
|     { |  | ||||||
|         NAME, |         NAME, | ||||||
|         TITLE, |         TITLE, | ||||||
|         CONTENT, |         CONTENT, | ||||||
| @@ -687,8 +653,7 @@ public abstract class BaseAPI | |||||||
|         PUBLICATION_DATE |         PUBLICATION_DATE | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public enum RETENTION_SCHEDULE |     public enum RETENTION_SCHEDULE { | ||||||
|     { |  | ||||||
|         NAME, |         NAME, | ||||||
|         DESCRIPTION, |         DESCRIPTION, | ||||||
|         RETENTION_AUTHORITY, |         RETENTION_AUTHORITY, | ||||||
| @@ -702,11 +667,8 @@ public abstract class BaseAPI | |||||||
|         COMBINE_DISPOSITION_STEP_CONDITIONS |         COMBINE_DISPOSITION_STEP_CONDITIONS | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** Used to execute rm actions on a node */ | ||||||
|      * Used to execute rm actions on a node |     public enum RM_ACTIONS { | ||||||
|      */ |  | ||||||
|     public enum RM_ACTIONS |  | ||||||
|     { |  | ||||||
|         EDIT_DISPOSITION_DATE("editDispositionActionAsOfDate"), |         EDIT_DISPOSITION_DATE("editDispositionActionAsOfDate"), | ||||||
|         END_RETENTION("retain"), |         END_RETENTION("retain"), | ||||||
|         CUT_OFF("cutoff"), |         CUT_OFF("cutoff"), | ||||||
| @@ -717,19 +679,16 @@ public abstract class BaseAPI | |||||||
|         DESTROY("destroy"); |         DESTROY("destroy"); | ||||||
|         String action; |         String action; | ||||||
|  |  | ||||||
|         private RM_ACTIONS(String action) |         private RM_ACTIONS(String action) { | ||||||
|         { |  | ||||||
|             this.action = action; |             this.action = action; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public String getAction() |         public String getAction() { | ||||||
|         { |  | ||||||
|             return action; |             return action; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public enum PermissionType |     public enum PermissionType { | ||||||
|     { |  | ||||||
|         SET_READ, |         SET_READ, | ||||||
|         REMOVE_READ, |         REMOVE_READ, | ||||||
|         SET_READ_AND_FILE, |         SET_READ_AND_FILE, | ||||||
| @@ -740,14 +699,13 @@ public abstract class BaseAPI | |||||||
|      * Util to return the property value from a map |      * Util to return the property value from a map | ||||||
|      * |      * | ||||||
|      * @param properties the map containing properties |      * @param properties the map containing properties | ||||||
|      * @param property   to get value for |      * @param property to get value for | ||||||
|      * @return the property value |      * @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); |         String value = properties.get(property); | ||||||
|         if (value == null) |         if (value == null) { | ||||||
|         { |  | ||||||
|             return ""; |             return ""; | ||||||
|         } |         } | ||||||
|         return value; |         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 |      * 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 propertyRequestValue the property name in the request, eg. "prop_cm_name" | ||||||
|      * @param itemProperties       map of item's properties values |      * @param itemProperties map of item's properties values | ||||||
|      * @param property             the property in the property map to check value for |      * @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 |      * @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); |         String propertyValue = getPropertyValue(itemProperties, property); | ||||||
|  |  | ||||||
|         if (!propertyValue.equals("")) |         if (!propertyValue.equals("")) { | ||||||
|         { |  | ||||||
|             requestParams.put(propertyRequestValue, propertyValue); |             requestParams.put(propertyRequestValue, propertyValue); | ||||||
|         } |         } | ||||||
|         return requestParams; |         return requestParams; | ||||||
| @@ -778,16 +740,14 @@ public abstract class BaseAPI | |||||||
|      * |      * | ||||||
|      * @param username the username with whom the delete is performed |      * @param username the username with whom the delete is performed | ||||||
|      * @param password the user's password |      * @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, |      * @param itemPath the path to the item eg. in case of a category it would be the "/" + category | ||||||
|      *                 in case of a folder or subCategory it would be /categoryName/folderName or /categoryName/subCategoryName/ |      *     name, in case of a folder or subCategory it would be /categoryName/folderName or | ||||||
|      *                 in case of a record /categoryName/folderName/recordName |      *     /categoryName/subCategoryName/ in case of a record /categoryName/folderName/recordName | ||||||
|      * @throws AssertionError if the delete was not successful. |      * @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); |         CmisObject container = getObjectByPath(username, password, FILE_PLAN_PATH + itemPath); | ||||||
|         if (container != null) |         if (container != null) { | ||||||
|         { |  | ||||||
|             container.delete(); |             container.delete(); | ||||||
|         } |         } | ||||||
|         assertNull("Could not delete " + itemPath, getObjectByPath(username, password, itemPath)); |         assertNull("Could not delete " + itemPath, getObjectByPath(username, password, itemPath)); | ||||||
| @@ -798,8 +758,7 @@ public abstract class BaseAPI | |||||||
|      * |      * | ||||||
|      * @return node ref spaces store |      * @return node ref spaces store | ||||||
|      */ |      */ | ||||||
|     public static String getNodeRefSpacesStore() |     public static String getNodeRefSpacesStore() { | ||||||
|     { |  | ||||||
|         return NODE_REF_WORKSPACE_SPACES_STORE; |         return NODE_REF_WORKSPACE_SPACES_STORE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -808,8 +767,7 @@ public abstract class BaseAPI | |||||||
|      * |      * | ||||||
|      * @return the File Plan path |      * @return the File Plan path | ||||||
|      */ |      */ | ||||||
|     public static String getFilePlanPath() |     public static String getFilePlanPath() { | ||||||
|     { |  | ||||||
|         return FILE_PLAN_PATH; |         return FILE_PLAN_PATH; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,8 +26,7 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.core.v0; | package org.alfresco.rest.core.v0; | ||||||
|  |  | ||||||
| public enum RMEvents | public enum RMEvents { | ||||||
| { |  | ||||||
|     ABOLISHED("abolished"), |     ABOLISHED("abolished"), | ||||||
|     ALL_ALLOWANCES_GRANTED_ARE_TERMINATED("all_allowances_granted_are_terminated"), |     ALL_ALLOWANCES_GRANTED_ARE_TERMINATED("all_allowances_granted_are_terminated"), | ||||||
|     CASE_CLOSED("case_closed"), |     CASE_CLOSED("case_closed"), | ||||||
| @@ -37,13 +36,11 @@ public enum RMEvents | |||||||
|     STUDY_COMPLETE("study_complete"); |     STUDY_COMPLETE("study_complete"); | ||||||
|     private String eventName; |     private String eventName; | ||||||
|  |  | ||||||
|     RMEvents(String eventName) |     RMEvents(String eventName) { | ||||||
|     { |  | ||||||
|         this.eventName = eventName; |         this.eventName = eventName; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getEventName() |     public String getEventName() { | ||||||
|     { |  | ||||||
|         return eventName; |         return eventName; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,8 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.audit; | package org.alfresco.rest.rm.community.model.audit; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| @@ -35,8 +33,11 @@ import lombok.AllArgsConstructor; | |||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for audit entry |  * POJO for audit entry | ||||||
|  * |  * | ||||||
| @@ -47,43 +48,40 @@ import org.alfresco.utility.model.TestModel; | |||||||
| @Data | @Data | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class AuditEntry extends TestModel | public class AuditEntry extends TestModel { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String nodeName; |     private String nodeName; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<Object> changedValues; |     private List<Object> changedValues; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String path; |     private String path; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeRef; |     private String nodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String fullName; |     private String fullName; | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private String createPerson; | ||||||
|     private String createPerson; |  | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String userName; |     private String userName; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String userRole; |     private String userRole; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String event; |     private String event; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String timestamp; |     private String timestamp; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,12 +29,10 @@ package org.alfresco.rest.rm.community.model.audit; | |||||||
| /** | /** | ||||||
|  * Enumerates the list of events audited |  * Enumerates the list of events audited | ||||||
|  * |  * | ||||||
|  * @author  Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.7 |  * @since 2.7 | ||||||
|  * |  | ||||||
|  */ |  */ | ||||||
| public enum AuditEvents | public enum AuditEvents { | ||||||
| { |  | ||||||
|     CREATE_PERSON("Create Person", "Create User"), |     CREATE_PERSON("Create Person", "Create User"), | ||||||
|     DELETE_PERSON("Delete Person", "Delete User"), |     DELETE_PERSON("Delete Person", "Delete User"), | ||||||
|     CREATE_USER_GROUP("Create User Group", "Create User Group"), |     CREATE_USER_GROUP("Create User Group", "Create User Group"), | ||||||
| @@ -54,8 +52,7 @@ public enum AuditEvents | |||||||
|     /** display name for the event audited */ |     /** display name for the event audited */ | ||||||
|     public final String eventDisplayName; |     public final String eventDisplayName; | ||||||
|  |  | ||||||
|     AuditEvents(String event, String displayName) |     AuditEvents(String event, String displayName) { | ||||||
|     { |  | ||||||
|         this.event = event; |         this.event = event; | ||||||
|         this.eventDisplayName = displayName; |         this.eventDisplayName = displayName; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -26,8 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.common; | package org.alfresco.rest.rm.community.model.common; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -35,6 +33,8 @@ import lombok.Builder; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for id/name pair |  * POJO for id/name pair | ||||||
|  * |  * | ||||||
| @@ -45,17 +45,16 @@ import lombok.NoArgsConstructor; | |||||||
| @Data | @Data | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class IdNamePair | public class IdNamePair { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | |||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -42,10 +43,7 @@ import org.alfresco.utility.model.TestModel; | |||||||
| @Builder | @Builder | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| //@NoArgsConstructor | // @NoArgsConstructor | ||||||
| //@AllArgsConstructor | // @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class Owner extends TestModel | public class Owner extends TestModel {} | ||||||
| { |  | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -26,18 +26,18 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.common; | package org.alfresco.rest.rm.community.model.common; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for path parameter |  * POJO for path parameter | ||||||
|  * |  * | ||||||
| @@ -49,14 +49,13 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class Path extends TestModel | public class Path extends TestModel { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private Boolean isComplete; |     private Boolean isComplete; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<IdNamePair> elements; |     private List<IdNamePair> elements; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -43,11 +43,10 @@ import lombok.NoArgsConstructor; | |||||||
| @Data | @Data | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class ReviewPeriod | public class ReviewPeriod { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String periodType; |     private String periodType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String expression; |     private String expression; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,22 +32,16 @@ package org.alfresco.rest.rm.community.model.custom; | |||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public enum CustomDefinitions | public enum CustomDefinitions { | ||||||
| { |  | ||||||
|     ATTACHMENT("Attachment"), |     ATTACHMENT("Attachment"), | ||||||
|     MESSAGE("Message"), |     MESSAGE("Message"), | ||||||
|     NEXT_VERSION("Next Version"), |     NEXT_VERSION("Next Version"), | ||||||
|     RENDITION("Rendition"); |     RENDITION("Rendition"); | ||||||
|     /** |     /** The name of custom reference. */ | ||||||
|      * The name of custom reference. |  | ||||||
|      */ |  | ||||||
|     private String definition; |     private String definition; | ||||||
|  |  | ||||||
|     /** |     /** Private constructor. */ | ||||||
|      * Private constructor. |     CustomDefinitions(String definition) { | ||||||
|      */ |  | ||||||
|     CustomDefinitions(String definition) |  | ||||||
|     { |  | ||||||
|         this.definition = definition; |         this.definition = definition; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -56,8 +50,7 @@ public enum CustomDefinitions | |||||||
|      * |      * | ||||||
|      * @return The value of custom reference. |      * @return The value of custom reference. | ||||||
|      */ |      */ | ||||||
|     public String getDefinition() |     public String getDefinition() { | ||||||
|     { |  | ||||||
|         return definition; |         return definition; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,20 +26,20 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.fileplan; | package org.alfresco.rest.rm.community.model.fileplan; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for file plan | ||||||
|  * |  * | ||||||
| @@ -52,48 +52,45 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class FilePlan extends TestModel | public class FilePlan extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private FilePlanProperties properties; |     private FilePlanProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,14 +35,14 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for file plan properties |  * POJO for file plan properties | ||||||
|  * |  * | ||||||
| @@ -54,29 +54,28 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class FilePlanProperties extends TestModel | public class FilePlanProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_COMPONENT_ID) |     @JsonProperty(required = true, value = PROPERTIES_COMPONENT_ID) | ||||||
|     private String componentd; |     private String componentd; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty (PROPERTIES_COUNT) |     @JsonProperty(PROPERTIES_COUNT) | ||||||
|     private Integer count; |     private Integer count; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_TITLE) |     @JsonProperty(PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) |     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilePlanComponentAlias | public class FilePlanComponentAlias { | ||||||
| { |  | ||||||
|     public static final String FILE_PLAN_ALIAS = "-filePlan-"; |     public static final String FILE_PLAN_ALIAS = "-filePlan-"; | ||||||
|     public static final String TRANSFERS_ALIAS = "-transfers-"; |     public static final String TRANSFERS_ALIAS = "-transfers-"; | ||||||
|     public static final String UNFILED_RECORDS_CONTAINER_ALIAS = "-unfiled-"; |     public static final String UNFILED_RECORDS_CONTAINER_ALIAS = "-unfiled-"; | ||||||
|   | |||||||
| @@ -32,20 +32,17 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | |||||||
|  * @author Kristijan Conkas |  * @author Kristijan Conkas | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilePlanComponentAspects | public class FilePlanComponentAspects { | ||||||
| { |  | ||||||
|     /** Private constructor to prevent instantiation. */ |     /** Private constructor to prevent instantiation. */ | ||||||
|     private FilePlanComponentAspects() |     private FilePlanComponentAspects() {} | ||||||
|     { |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // aspect present on completed records |     // aspect present on completed records | ||||||
|     public static final String ASPECTS_COMPLETED_RECORD = "rma:declaredRecord"; |     public static final String ASPECTS_COMPLETED_RECORD = "rma:declaredRecord"; | ||||||
|  |  | ||||||
| 	// aspect present on record folders/categories with vital records |     // aspect present on record folders/categories with vital records | ||||||
|     public static final String ASPECTS_VITAL_RECORD_DEFINITION= "rma:vitalRecordDefinition"; |     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"; |     public static final String ASPECTS_VITAL_RECORD = "rma:vitalRecord"; | ||||||
|  |  | ||||||
|     // Frozen aspect |     // Frozen aspect | ||||||
|   | |||||||
| @@ -32,61 +32,79 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilePlanComponentFields | public class FilePlanComponentFields { | ||||||
| { |  | ||||||
|     /** Common properties for file plans, record categories, record folders and records */ |     /** 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_ROOT_NODE_REF = "rma:rootNodeRef"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_IDENTIFIER = "rma:identifier"; |     public static final String PROPERTIES_IDENTIFIER = "rma:identifier"; | ||||||
|  |  | ||||||
|     /** Common properties for record categories, record folders and records */ |     /** Common properties for record categories, record folders and records */ | ||||||
|     // Non-electronic record properties |     // Non-electronic record properties | ||||||
|     public static final String PROPERTIES_TITLE = "cm:title"; |     public static final String PROPERTIES_TITLE = "cm:title"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_DESCRIPTION = "cm:description"; |     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_VITAL_RECORD_INDICATOR = "rma:vitalRecordIndicator"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_REVIEW_PERIOD = "rma:reviewPeriod"; |     public static final String PROPERTIES_REVIEW_PERIOD = "rma:reviewPeriod"; | ||||||
|     public static final String PROPERTIES_OWNER = "cm:owner"; |     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 */ |     /** 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_HAS_DISPOSITION_SCHEDULE = | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION = "rma:recordSearchDispositionPeriodExpression"; |             "rma:recordSearchHasDispositionSchedule"; | ||||||
|     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_EXPRESSION = | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD = "rma:recordSearchDispositionPeriod"; |             "rma:recordSearchDispositionPeriodExpression"; | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME = "rma:recordSearchDispositionActionName"; |     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY = | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE = "rma:recordSearchDispositionEventsEligible"; |             "rma:recordSearchDispositionAuthority"; | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS = "rma:recordSearchDispositionInstructions"; |     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF = | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS = "rma:recordSearchDispositionEvents"; |             "rma:recordSearchDispositionActionAsOf"; | ||||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_BY = "rma:declassificationReviewCompletedBy"; |     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD = | ||||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_AT = "rma:declassificationReviewCompletedAt"; |             "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 */ |     /** File plan properties */ | ||||||
|     public static final String PROPERTIES_COMPONENT_ID = "st:componentId"; |     public static final String PROPERTIES_COMPONENT_ID = "st:componentId"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_COUNT = "rma:count"; |     public static final String PROPERTIES_COUNT = "rma:count"; | ||||||
|  |  | ||||||
|     /** Record category properties */ |     /** Record category properties */ | ||||||
|     // All fields are shared with record folders |     // All fields are shared with record folders | ||||||
|  |  | ||||||
|     /** Record folder properties */ |     /** 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_HELD_CHILDREN_COUNT = "rma:heldChildrenCount"; | ||||||
|     public static final String PROPERTIES_LOCATION = "rma:location"; |     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 = | ||||||
|     public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION = "rma:recordSearchVitalRecordReviewPeriodExpression"; |             "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_CLASSIFICATION = "sc:classification"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_DATE_FILED = "rma:dateFiled"; |     public static final String PROPERTIES_DATE_FILED = "rma:dateFiled"; | ||||||
|     public static final String PROPERTIES_ORIGINAL_NAME = "rma:origionalName"; |     public static final String PROPERTIES_ORIGINAL_NAME = "rma:origionalName"; | ||||||
|     public static final String PROPERTIES_REVIEW_AS_OF = "rma:reviewAsOf"; |     public static final String PROPERTIES_REVIEW_AS_OF = "rma:reviewAsOf"; | ||||||
|  |  | ||||||
|     /** Electronic record properties */ |     /** Electronic record properties */ | ||||||
|     public static final String PROPERTIES_VERSION_TYPE = "cm:versionType"; |     public static final String PROPERTIES_VERSION_TYPE = "cm:versionType"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_VERSION_LABEL = "cm:versionLabel"; |     public static final String PROPERTIES_VERSION_LABEL = "cm:versionLabel"; | ||||||
|     public static final String PROPERTIES_VERSIONED_NODEREF = "rmv:versionedNodeRef"; |     public static final String PROPERTIES_VERSIONED_NODEREF = "rmv:versionedNodeRef"; | ||||||
|     public static final String PROPERTIES_RMV_VERSIONED = "rmv:versionLabel"; |     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_SOFTWARE = "exif:software"; | ||||||
|     public static final String PROPERTIES_X_RESOLUTION = "exif:xResolution"; |     public static final String PROPERTIES_X_RESOLUTION = "exif:xResolution"; | ||||||
|     public static final String PROPERTIES_Y_RESOLUTION = "exif:yResolution"; |     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_LOCATION = | ||||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_USER_ID = "rma:recordOriginatingUserId"; |             "rma:recordOriginatingLocation"; | ||||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_CREATION_DATE = "rma:recordOriginatingCreationDate"; |     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 */ |     /** Non-electronic record properties */ | ||||||
|     public static final String PROPERTIES_SHELF = "rma:shelf"; |     public static final String PROPERTIES_SHELF = "rma:shelf"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_STORAGE_LOCATION = "rma:storageLocation"; |     public static final String PROPERTIES_STORAGE_LOCATION = "rma:storageLocation"; | ||||||
|     public static final String PROPERTIES_FILE = "rma:file"; |     public static final String PROPERTIES_FILE = "rma:file"; | ||||||
|     public static final String PROPERTIES_BOX = "rma:box"; |     public static final String PROPERTIES_BOX = "rma:box"; | ||||||
| @@ -119,15 +141,18 @@ public class FilePlanComponentFields | |||||||
|  |  | ||||||
|     /** Transfer properties */ |     /** Transfer properties */ | ||||||
|     public static final String PROPERTIES_PDF_INDICATOR = "rma:transferPDFIndicator"; |     public static final String PROPERTIES_PDF_INDICATOR = "rma:transferPDFIndicator"; | ||||||
|  |  | ||||||
|     public static final String PROPERTIES_TRANSFER_LOCATION = "rma:transferLocation"; |     public static final String PROPERTIES_TRANSFER_LOCATION = "rma:transferLocation"; | ||||||
|     public static final String PROPERTIES_ACCESSION_INDICATOR = "rma:transferAccessionIndicator"; |     public static final String PROPERTIES_ACCESSION_INDICATOR = "rma:transferAccessionIndicator"; | ||||||
|  |  | ||||||
|     /** Parameters */ |     /** Parameters */ | ||||||
|     public static final String RELATIVE_PATH = "relativePath"; |     public static final String RELATIVE_PATH = "relativePath"; | ||||||
|  |  | ||||||
|     public static final String INCLUDE = "include"; |     public static final String INCLUDE = "include"; | ||||||
|  |  | ||||||
|     /** Include options */ |     /** Include options */ | ||||||
|     public static final String ALLOWABLE_OPERATIONS = "allowableOperations"; |     public static final String ALLOWABLE_OPERATIONS = "allowableOperations"; | ||||||
|  |  | ||||||
|     public static final String IS_CLOSED = "isClosed"; |     public static final String IS_CLOSED = "isClosed"; | ||||||
|     public static final String IS_COMPLETED = "isCompleted"; |     public static final String IS_COMPLETED = "isCompleted"; | ||||||
|     public static final String CONTENT = "content"; |     public static final String CONTENT = "content"; | ||||||
|   | |||||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilePlanComponentType | public class FilePlanComponentType { | ||||||
| { |  | ||||||
|     public static final String FILE_PLAN_TYPE = "rma:filePlan"; |     public static final String FILE_PLAN_TYPE = "rma:filePlan"; | ||||||
|     public static final String RECORD_CATEGORY_TYPE = "rma:recordCategory"; |     public static final String RECORD_CATEGORY_TYPE = "rma:recordCategory"; | ||||||
|     public static final String RECORD_FOLDER_TYPE = "rma:recordFolder"; |     public static final String RECORD_FOLDER_TYPE = "rma:recordFolder"; | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ import lombok.AllArgsConstructor; | |||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -45,12 +46,11 @@ import org.alfresco.utility.model.TestModel; | |||||||
| @Data | @Data | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class HoldEntry extends TestModel | public class HoldEntry extends TestModel { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeRef; |     private String nodeRef; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,10 +26,14 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.record; | package org.alfresco.rest.rm.community.model.record; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.IRestModel; | ||||||
| import org.alfresco.rest.core.assertion.ModelAssertion; | import org.alfresco.rest.core.assertion.ModelAssertion; | ||||||
| import org.alfresco.rest.model.RestByUserModel; | 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.rest.rm.community.model.common.Path; | ||||||
| import org.alfresco.utility.model.TestModel; | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import java.util.List; | ||||||
| import lombok.Builder; |  | ||||||
| import lombok.Data; |  | ||||||
| import lombok.EqualsAndHashCode; |  | ||||||
| import lombok.NoArgsConstructor; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record |  * POJO for record | ||||||
| @@ -54,76 +54,66 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class Record extends TestModel implements IRestModel<RestNodeModel> | public class Record extends TestModel implements IRestModel<RestNodeModel> { | ||||||
| { |     public static final String CONTENT_NODE_TYPE = "cm:content"; | ||||||
|     public final static String CONTENT_NODE_TYPE = "cm:content"; |  | ||||||
|  |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private RecordContent content; | ||||||
|     private RecordContent content; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isCompleted; | ||||||
|     private Boolean isCompleted; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private RecordProperties properties; | ||||||
|     private RecordProperties properties; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> aspectNames; | ||||||
|     private List<String> aspectNames; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public ModelAssertion<RestNodeModel> assertThat() |     public ModelAssertion<RestNodeModel> assertThat() { | ||||||
|     { |  | ||||||
|         return new ModelAssertion<>(this); |         return new ModelAssertion<>(this); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public ModelAssertion<RestNodeModel> and() |     public ModelAssertion<RestNodeModel> and() { | ||||||
|     { |  | ||||||
|         return assertThat(); |         return assertThat(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @JsonProperty (value = "entry") |     @JsonProperty(value = "entry") | ||||||
|     RestNodeModel model; |     RestNodeModel model; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public RestNodeModel onModel() |     public RestNodeModel onModel() { | ||||||
|     { |  | ||||||
|         return model; |         return model; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.record; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for File records |  * POJO for File records | ||||||
|  * |  * | ||||||
| @@ -47,8 +47,6 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordBodyFile extends TestModel | public class RecordBodyFile extends TestModel { | ||||||
| { |     @JsonProperty private String targetParentId; | ||||||
|     @JsonProperty |  | ||||||
|     private String targetParentId; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.record; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record content field |  * POJO for record content field | ||||||
|  * |  * | ||||||
| @@ -48,17 +48,16 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordContent extends TestModel | public class RecordContent extends TestModel { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private String mimeType; |     private String mimeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String mimeTypeName; |     private String mimeTypeName; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private Integer sizeInBytes; |     private Integer sizeInBytes; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String encoding; |     private String encoding; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -64,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; | ||||||
| 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_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_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_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_RMV_VERSIONED; | ||||||
| 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_ROOT_NODE_REF; | ||||||
| @@ -80,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_X_RESOLUTION; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| @@ -91,9 +87,13 @@ import lombok.Builder; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
| import org.alfresco.rest.rm.community.model.common.Owner; | import org.alfresco.rest.rm.community.model.common.Owner; | ||||||
| import org.alfresco.utility.model.TestModel; | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record properties |  * POJO for record properties | ||||||
|  * |  * | ||||||
| @@ -106,165 +106,164 @@ import org.alfresco.utility.model.TestModel; | |||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties(ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class RecordProperties extends TestModel | public class RecordProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_DATE_FILED) |     @JsonProperty(required = true, value = PROPERTIES_DATE_FILED) | ||||||
|     private String dateField; |     private String dateField; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String 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; |     private Boolean recordSearchHasDispositionSchedule; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ORIGINAL_NAME) |     @JsonProperty(required = true, value = PROPERTIES_ORIGINAL_NAME) | ||||||
|     private String originalName; |     private String originalName; | ||||||
|      |  | ||||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) |     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||||
|     private List<String> classification; |     private List<String> classification; | ||||||
|  |  | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     /** Electronic record parameters */ |     /** Electronic record parameters */ | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) |     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||||
|     private String versionType; |     private String versionType; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) |     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||||
|     private String versionLabel; |     private String versionLabel; | ||||||
|  |  | ||||||
|     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) |     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) | ||||||
|     private String versionedNodeRef; |     private String versionedNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RMV_VERSIONED) |     @JsonProperty(PROPERTIES_RMV_VERSIONED) | ||||||
|     private String recordVersionLabel; |     private String recordVersionLabel; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) |     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||||
|     private String dateTimeOriginal; |     private String dateTimeOriginal; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) |     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||||
|     private Double exposureTime; |     private Double exposureTime; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FLASH) |     @JsonProperty(PROPERTIES_FLASH) | ||||||
|     private Boolean flash; |     private Boolean flash; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_F_NUMBER) |     @JsonProperty(PROPERTIES_F_NUMBER) | ||||||
|     private Double fNumber; |     private Double fNumber; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) |     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||||
|     private Double focalLength; |     private Double focalLength; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) |     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||||
|     private Integer isoSpeedRatings; |     private Integer isoSpeedRatings; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) |     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||||
|     private String manufacturer; |     private String manufacturer; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MODEL) |     @JsonProperty(PROPERTIES_MODEL) | ||||||
|     private String model; |     private String model; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ORIENTATION) |     @JsonProperty(PROPERTIES_ORIENTATION) | ||||||
|     private Integer orientation; |     private Integer orientation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||||
|     private Integer pixelXDimension; |     private Integer pixelXDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||||
|     private Integer pixelYDimension; |     private Integer pixelYDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) |     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||||
|     private String resolutionUnit; |     private String resolutionUnit; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SOFTWARE) |     @JsonProperty(PROPERTIES_SOFTWARE) | ||||||
|     private String software; |     private String software; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) |     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||||
|     private Double xResolution; |     private Double xResolution; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) |     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||||
|     private Double yResolution; |     private Double yResolution; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_LOCATION) |     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_LOCATION) | ||||||
|     private String originatingLocation; |     private String originatingLocation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_USER_ID) |     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_USER_ID) | ||||||
|     private String originatingUserId; |     private String originatingUserId; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_CREATION_DATE) |     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_CREATION_DATE) | ||||||
|     private String originatingCreationDate; |     private String originatingCreationDate; | ||||||
|  |  | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|     /** Non-electronic record parameters */ |     /** Non-electronic record parameters */ | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|     @JsonProperty (PROPERTIES_TITLE) |     @JsonProperty(PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SHELF) |     @JsonProperty(PROPERTIES_SHELF) | ||||||
|     private String shelf; |     private String shelf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) |     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||||
|     private String storageLocation; |     private String storageLocation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FILE) |     @JsonProperty(PROPERTIES_FILE) | ||||||
|     private String file; |     private String file; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_BOX) |     @JsonProperty(PROPERTIES_BOX) | ||||||
|     private String box; |     private String box; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) |     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) |     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||||
|     private Integer numberOfCopies; |     private Integer numberOfCopies; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) |     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||||
|     private Integer physicalSize; |     private Integer physicalSize; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
|  |  | ||||||
|     @JsonProperty(PROPERTIES_AUTHOR) |     @JsonProperty(PROPERTIES_AUTHOR) | ||||||
|     private String author; |     private String author; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||||
|     private String recordSearchDispositionPeriodExpression; |     private String recordSearchDispositionPeriodExpression; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||||
|     private String recordSearchDispositionAuthority; |     private String recordSearchDispositionAuthority; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||||
|     private Date recordSearchDispositionActionAsOf; |     private Date recordSearchDispositionActionAsOf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||||
|     private String recordSearchDispositionPeriod; |     private String recordSearchDispositionPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||||
|     private String recordSearchDispositionActionName; |     private String recordSearchDispositionActionName; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||||
|     private Boolean recordSearchDispositionEventsEligible; |     private Boolean recordSearchDispositionEventsEligible; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||||
|     private List<String> recordSearchDispositionEvents; |     private List<String> recordSearchDispositionEvents; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||||
|     private String recordSearchDispositionInstructions; |     private String recordSearchDispositionInstructions; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||||
|     private String recordSearchVitalRecordReviewPeriod; |     private String recordSearchVitalRecordReviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) | ||||||
|     private String recordSearchVitalRecordReviewPeriodExpression; |     private String recordSearchVitalRecordReviewPeriodExpression; | ||||||
|  |  | ||||||
|     @JsonProperty(PROPERTIES_REVIEW_AS_OF) |     @JsonProperty(PROPERTIES_REVIEW_AS_OF) | ||||||
|     private Date reviewAsOf; |     private Date reviewAsOf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_STORE) |     @JsonProperty(PROPERTIES_STORE) | ||||||
|     private String store; |     private String store; | ||||||
|  |  | ||||||
|     @JsonProperty(PROPERTIES_WORM_UNLOCK_DATE) |     @JsonProperty(PROPERTIES_WORM_UNLOCK_DATE) | ||||||
|   | |||||||
| @@ -26,20 +26,20 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.recordcategory; | package org.alfresco.rest.rm.community.model.recordcategory; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record category | ||||||
|  * |  * | ||||||
| @@ -51,53 +51,49 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordCategory extends TestModel | public class RecordCategory extends TestModel { | ||||||
| { |  | ||||||
|     public static final String DEFAULT_FILE_PLAN_ALIAS = "-filePlan-"; |     public static final String DEFAULT_FILE_PLAN_ALIAS = "-filePlan-"; | ||||||
|  |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RecordCategoryProperties properties; |     private RecordCategoryProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private Boolean hasRetentionSchedule; | ||||||
|     private Boolean hasRetentionSchedule; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,20 +26,20 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.recordcategory; | package org.alfresco.rest.rm.community.model.recordcategory; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record category child | ||||||
|  * |  * | ||||||
| @@ -51,64 +51,54 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordCategoryChild extends TestModel | public class RecordCategoryChild extends TestModel { | ||||||
| { |  | ||||||
|     public static final String RECORD_FOLDER_NODE_TYPE = "rma:recordFolder"; |     public static final String RECORD_FOLDER_NODE_TYPE = "rma:recordFolder"; | ||||||
|  |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isRecordCategory; | ||||||
|     private Boolean isRecordCategory; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isRecordFolder; | ||||||
|     private Boolean isRecordFolder; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private RecordCategoryChildProperties properties; | ||||||
|     private RecordCategoryChildProperties properties; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> aspectNames; | ||||||
|     private List<String> aspectNames; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean hasRetentionSchedule; | ||||||
|     private Boolean hasRetentionSchedule; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isClosed; | ||||||
|     private Boolean isClosed; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private String relativePath; | ||||||
|     private String relativePath; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordCategoryChildCollection extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection> | public class RecordCategoryChildCollection | ||||||
| { |         extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection> {} | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -28,11 +28,11 @@ package org.alfresco.rest.rm.community.model.recordcategory; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RestModels; |  | ||||||
|  |  | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record category child entry |  * POJO for record category child entry | ||||||
|  * |  * | ||||||
| @@ -41,8 +41,6 @@ import lombok.EqualsAndHashCode; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| public class RecordCategoryChildEntry extends RestModels<RecordCategory, RecordCategoryChildEntry> | public class RecordCategoryChildEntry extends RestModels<RecordCategory, RecordCategoryChildEntry> { | ||||||
| { |     @JsonProperty private RecordCategoryChild entry; | ||||||
|     @JsonProperty |  | ||||||
|     private RecordCategoryChild entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,37 +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_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_LOCATION; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | 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_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_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_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_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_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_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_TITLE; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | ||||||
|  |  | ||||||
| import java.util.Date; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record category child properties | ||||||
|  * |  * | ||||||
| @@ -74,70 +74,68 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordCategoryChildProperties extends TestModel | public class RecordCategoryChildProperties extends TestModel { | ||||||
| { |  | ||||||
|     /**************************************************************************/ |     /**************************************************************************/ | ||||||
|     /** Mandatory parameters - Shared by record categories and record folders */ |     /** Mandatory parameters - Shared by record categories and record folders */ | ||||||
|     /**************************************************************************/ |     /**************************************************************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_TITLE) |     @JsonProperty(required = true, value = PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) |     @JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||||
|     private Boolean vitalRecordIndicator; |     private Boolean vitalRecordIndicator; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD) |     @JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) |     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||||
|     private ReviewPeriod reviewPeriod; |     private ReviewPeriod reviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_DESCRIPTION) |     @JsonProperty(required = true, value = PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     /** Optional parameters - Applies only to record folders */ |     /** Optional parameters - Applies only to record folders */ | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     @JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT) |     @JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT) | ||||||
|     private Integer heldChildrenCount; |     private Integer heldChildrenCount; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_LOCATION) |     @JsonProperty(PROPERTIES_LOCATION) | ||||||
|     private String location; |     private String location; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_IS_CLOSED) |     @JsonProperty(PROPERTIES_IS_CLOSED) | ||||||
|     private Boolean isClosed; |     private Boolean isClosed; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||||
|     private Boolean recordSearchHasDispositionSchedule; |     private Boolean recordSearchHasDispositionSchedule; | ||||||
|      |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||||
|     private String recordSearchDispositionPeriodExpression; |     private String recordSearchDispositionPeriodExpression; | ||||||
|      |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||||
|     private String recordSearchDispositionAuthority; |     private String recordSearchDispositionAuthority; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||||
|     private Date recordSearchDispositionActionAsOf; |     private Date recordSearchDispositionActionAsOf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||||
|     private String recordSearchDispositionPeriod; |     private String recordSearchDispositionPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||||
|     private String recordSearchDispositionActionName; |     private String recordSearchDispositionActionName; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||||
|     private Boolean recordSearchDispositionEventsEligible; |     private Boolean recordSearchDispositionEventsEligible; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||||
|     private String recordSearchDispositionInstructions; |     private String recordSearchDispositionInstructions; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||||
|     private List<String> recordSearchDispositionEvents; |     private List<String> recordSearchDispositionEvents; | ||||||
|      |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |  | ||||||
|     private Owner owner; |  | ||||||
|  |  | ||||||
|  |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|  |     private Owner owner; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordCategoryCollection extends RestModels<RecordCategoryEntry, RecordCategoryCollection> | public class RecordCategoryCollection | ||||||
| { |         extends RestModels<RecordCategoryEntry, RecordCategoryCollection> {} | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -28,12 +28,12 @@ package org.alfresco.rest.rm.community.model.recordcategory; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  | import org.alfresco.rest.rm.community.model.fileplan.FilePlan; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for file plan entry |  * POJO for file plan entry | ||||||
|  * |  * | ||||||
| @@ -43,8 +43,6 @@ import lombok.EqualsAndHashCode; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| public class RecordCategoryEntry extends RestModels<FilePlan, RecordCategoryEntry> | public class RecordCategoryEntry extends RestModels<FilePlan, RecordCategoryEntry> { | ||||||
| { |     @JsonProperty private RecordCategory entry; | ||||||
|     @JsonProperty |  | ||||||
|     private RecordCategory entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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_TITLE; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | 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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record category properties | ||||||
|  * |  * | ||||||
| @@ -64,37 +63,36 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class RecordCategoryProperties extends TestModel | public class RecordCategoryProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD) |     @JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) |     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||||
|     private ReviewPeriod reviewPeriod; |     private ReviewPeriod reviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) |     @JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||||
|     private Boolean vitalRecordIndicator; |     private Boolean vitalRecordIndicator; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty (PROPERTIES_TITLE) |     @JsonProperty(PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) |     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) |     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||||
|     private List<String> classification; |     private List<String> classification; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,11 +26,8 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.recordcategory; | package org.alfresco.rest.rm.community.model.recordcategory; | ||||||
|  |  | ||||||
| /** | /** The property of the dispositioned item that is used to calculate the "as of" period. */ | ||||||
|  * The property of the dispositioned item that is used to calculate the "as of" period. | public enum RetentionPeriodProperty { | ||||||
|  */ |  | ||||||
| public enum RetentionPeriodProperty |  | ||||||
| { |  | ||||||
|     /** Item created date. */ |     /** Item created date. */ | ||||||
|     CREATED_DATE("cm:created"), |     CREATED_DATE("cm:created"), | ||||||
|     /** Record filed date. */ |     /** Record filed date. */ | ||||||
| @@ -40,13 +37,11 @@ public enum RetentionPeriodProperty | |||||||
|  |  | ||||||
|     String periodProperty; |     String periodProperty; | ||||||
|  |  | ||||||
|     RetentionPeriodProperty(String periodProperty) |     RetentionPeriodProperty(String periodProperty) { | ||||||
|     { |  | ||||||
|         this.periodProperty = periodProperty; |         this.periodProperty = periodProperty; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getPeriodProperty() |     public String getPeriodProperty() { | ||||||
|     { |  | ||||||
|         return periodProperty; |         return periodProperty; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,20 +26,20 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.recordfolder; | package org.alfresco.rest.rm.community.model.recordfolder; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record folder | ||||||
|  * |  * | ||||||
| @@ -51,50 +51,46 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordFolder extends TestModel | public class RecordFolder extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RecordFolderProperties properties; |     private RecordFolderProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isClosed; | ||||||
|     private Boolean isClosed; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,7 +35,4 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordFolderCollection extends RestModels<RecordFolderEntry, RecordFolderCollection> | public class RecordFolderCollection extends RestModels<RecordFolderEntry, RecordFolderCollection> {} | ||||||
| { |  | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -28,15 +28,15 @@ package org.alfresco.rest.rm.community.model.recordfolder; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  | import org.alfresco.rest.rm.community.model.record.Record; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record folder entry |  * POJO for record folder entry | ||||||
|  * |  * | ||||||
| @@ -48,8 +48,6 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RecordFolderEntry extends RestModels<RecordFolder, RecordFolderEntry> | public class RecordFolderEntry extends RestModels<RecordFolder, RecordFolderEntry> { | ||||||
| { |     @JsonProperty private Record entry; | ||||||
|     @JsonProperty |  | ||||||
|     private Record entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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_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_LOCATION; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields | import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY; | ||||||
|         .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_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_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; | ||||||
| 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_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_TITLE; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | 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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record folder properties | ||||||
|  * |  * | ||||||
| @@ -73,62 +71,60 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class RecordFolderProperties extends TestModel | public class RecordFolderProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IS_CLOSED) |     @JsonProperty(required = true, value = PROPERTIES_IS_CLOSED) | ||||||
|     private Boolean isClosed; |     private Boolean isClosed; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_HELD_CHILDREN_COUNT) |     @JsonProperty(required = true, value = PROPERTIES_HELD_CHILDREN_COUNT) | ||||||
|     private Integer heldChildrenCount; |     private Integer heldChildrenCount; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty (PROPERTIES_TITLE) |     @JsonProperty(PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR) |     @JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR) | ||||||
|     private Boolean vitalRecordIndicator; |     private Boolean vitalRecordIndicator; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_LOCATION) |     @JsonProperty(PROPERTIES_LOCATION) | ||||||
|     private String location; |     private String location; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||||
|     private Boolean recordSearchHasDispositionSchedule; |     private Boolean recordSearchHasDispositionSchedule; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_REVIEW_PERIOD) |     @JsonProperty(PROPERTIES_REVIEW_PERIOD) | ||||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) |     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||||
|     private ReviewPeriod reviewPeriod; |     private ReviewPeriod reviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) |     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||||
|     private List<String> classification; |     private List<String> classification; | ||||||
|      |  | ||||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) |     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
|   |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||||
|     private String recordSearchVitalRecordReviewPeriod; |     private String recordSearchVitalRecordReviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) | ||||||
|     private String recordSearchVitalRecordReviewPeriodExpression; |     private String recordSearchVitalRecordReviewPeriodExpression; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||||
|     private String recordSearchDispositionAuthority; |     private String recordSearchDispositionAuthority; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||||
|     private String recordSearchDispositionInstructions; |     private String recordSearchDispositionInstructions; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,11 +26,8 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.rules; | package org.alfresco.rest.rm.community.model.rules; | ||||||
|  |  | ||||||
| /** | /** Action values. */ | ||||||
|  * Action values. | public enum ActionsOnRule { | ||||||
|  */ |  | ||||||
| public enum ActionsOnRule |  | ||||||
| { |  | ||||||
|     COMPLETE_RECORD("declareRecord"), |     COMPLETE_RECORD("declareRecord"), | ||||||
|     REOPEN_RECORD("undeclareRecord"), |     REOPEN_RECORD("undeclareRecord"), | ||||||
|     OPEN_RECORD_FOLDER("openRecordFolder"), |     OPEN_RECORD_FOLDER("openRecordFolder"), | ||||||
| @@ -54,13 +51,11 @@ public enum ActionsOnRule | |||||||
|  |  | ||||||
|     private String actionValue; |     private String actionValue; | ||||||
|  |  | ||||||
|     ActionsOnRule(String value) |     ActionsOnRule(String value) { | ||||||
|     { |  | ||||||
|         this.actionValue = value; |         this.actionValue = value; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getActionValue() |     public String getActionValue() { | ||||||
|     { |  | ||||||
|         return actionValue; |         return actionValue; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,23 +26,18 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.rules; | package org.alfresco.rest.rm.community.model.rules; | ||||||
|  |  | ||||||
| /** | /** enum used to find the when condition names options by their value */ | ||||||
|  * enum used to find the when condition names options by their value | public enum ConditionsOnRule { | ||||||
|  */ |  | ||||||
| public enum ConditionsOnRule |  | ||||||
| { |  | ||||||
|     UPDATE("update"), |     UPDATE("update"), | ||||||
|     ADDED("inbound"), |     ADDED("inbound"), | ||||||
|     REMOVED("outbound"); |     REMOVED("outbound"); | ||||||
|     private String whenConditionValue; |     private String whenConditionValue; | ||||||
|  |  | ||||||
|     ConditionsOnRule(String value) |     ConditionsOnRule(String value) { | ||||||
|     { |         this.whenConditionValue = value; | ||||||
|             this.whenConditionValue = value; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getWhenConditionValue() |     public String getWhenConditionValue() { | ||||||
|     { |         return whenConditionValue; | ||||||
|             return whenConditionValue; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,11 +28,8 @@ package org.alfresco.rest.rm.community.model.rules; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** A class describing the rule */ | ||||||
|  * A class describing the rule | public class RuleDefinition { | ||||||
|  */ |  | ||||||
| public class RuleDefinition |  | ||||||
| { |  | ||||||
|     private String id = ""; |     private String id = ""; | ||||||
|     private String title; |     private String title; | ||||||
|     private String description = ""; |     private String description = ""; | ||||||
| @@ -52,152 +49,124 @@ public class RuleDefinition | |||||||
|      * |      * | ||||||
|      * @return the object |      * @return the object | ||||||
|      */ |      */ | ||||||
|     public static RuleDefinition createNewRule() |     public static RuleDefinition createNewRule() { | ||||||
|     { |  | ||||||
|         return new RuleDefinition(); |         return new RuleDefinition(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getId() |     public String getId() { | ||||||
|     { |  | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition id(String id) |     public RuleDefinition id(String id) { | ||||||
|     { |  | ||||||
|         this.id = id; |         this.id = id; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getTitle() |     public String getTitle() { | ||||||
|     { |  | ||||||
|         return title; |         return title; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition title(String title) |     public RuleDefinition title(String title) { | ||||||
|     { |  | ||||||
|         this.title = title; |         this.title = title; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getDescription() |     public String getDescription() { | ||||||
|     { |  | ||||||
|         return description; |         return description; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition description(String description) |     public RuleDefinition description(String description) { | ||||||
|     { |  | ||||||
|         this.description = description; |         this.description = description; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public boolean isDisabled() |     public boolean isDisabled() { | ||||||
|     { |  | ||||||
|         return disabled; |         return disabled; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition disabled(boolean disabled) |     public RuleDefinition disabled(boolean disabled) { | ||||||
|     { |  | ||||||
|         this.disabled = disabled; |         this.disabled = disabled; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public boolean isApplyToChildren() |     public boolean isApplyToChildren() { | ||||||
|     { |  | ||||||
|         return applyToChildren; |         return applyToChildren; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition applyToChildren(boolean applyToChildren) |     public RuleDefinition applyToChildren(boolean applyToChildren) { | ||||||
|     { |  | ||||||
|         this.applyToChildren = applyToChildren; |         this.applyToChildren = applyToChildren; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public boolean getRunInBackground() |     public boolean getRunInBackground() { | ||||||
|     { |  | ||||||
|         return runInBackground; |         return runInBackground; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition runInBackground(boolean runInBackground) |     public RuleDefinition runInBackground(boolean runInBackground) { | ||||||
|     { |  | ||||||
|         this.runInBackground = runInBackground; |         this.runInBackground = runInBackground; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getRuleType() |     public String getRuleType() { | ||||||
|     { |  | ||||||
|         return ruleType; |         return ruleType; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition ruleType(String ruleType) |     public RuleDefinition ruleType(String ruleType) { | ||||||
|     { |  | ||||||
|         this.ruleType = ruleType; |         this.ruleType = ruleType; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getPath() |     public String getPath() { | ||||||
|     { |  | ||||||
|         return path; |         return path; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition path(String path) |     public RuleDefinition path(String path) { | ||||||
|     { |  | ||||||
|         this.path = path; |         this.path = path; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Boolean getCreateRecordPath() |     public Boolean getCreateRecordPath() { | ||||||
|     { |  | ||||||
|         return createRecordPath; |         return createRecordPath; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition createRecordPath(boolean createRecordPath) |     public RuleDefinition createRecordPath(boolean createRecordPath) { | ||||||
|     { |  | ||||||
|         this.createRecordPath = createRecordPath; |         this.createRecordPath = createRecordPath; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getContentTitle() |     public String getContentTitle() { | ||||||
|     { |  | ||||||
|         return contentTitle; |         return contentTitle; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition contentTitle(String contentTitle) |     public RuleDefinition contentTitle(String contentTitle) { | ||||||
|     { |  | ||||||
|         this.contentTitle = contentTitle; |         this.contentTitle = contentTitle; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getContentDescription() |     public String getContentDescription() { | ||||||
|     { |  | ||||||
|         return contentDescription; |         return contentDescription; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition contentDescription(String contentDescription) |     public RuleDefinition contentDescription(String contentDescription) { | ||||||
|     { |  | ||||||
|         this.contentDescription = contentDescription; |         this.contentDescription = contentDescription; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String getRejectReason() |     public String getRejectReason() { | ||||||
|     { |  | ||||||
|         return rejectReason; |         return rejectReason; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition rejectReason(String rejectReason) |     public RuleDefinition rejectReason(String rejectReason) { | ||||||
|     { |  | ||||||
|         this.rejectReason = rejectReason; |         this.rejectReason = rejectReason; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public List<String> getActions() |     public List<String> getActions() { | ||||||
|     { |  | ||||||
|         return actions; |         return actions; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RuleDefinition actions(List<String> actions) |     public RuleDefinition actions(List<String> actions) { | ||||||
|     { |  | ||||||
|         this.actions = actions; |         this.actions = actions; | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,14 +28,14 @@ package org.alfresco.rest.rm.community.model.site; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.rest.model.RestSiteModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.model.RestSiteModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for RM Site component |  * POJO for RM Site component | ||||||
|  * |  * | ||||||
| @@ -46,15 +46,13 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class RMSite extends RestSiteModel | public class RMSite extends RestSiteModel { | ||||||
| { |     @JsonProperty(required = true) | ||||||
|     @JsonProperty (required = true) |  | ||||||
|     private RMSiteCompliance compliance; |     private RMSiteCompliance compliance; | ||||||
|  |  | ||||||
|     /** Private constructor allowing Lombok to include superclass fields in the builder. */ |     /** Private constructor allowing Lombok to include superclass fields in the builder. */ | ||||||
|     @Builder |     @Builder | ||||||
|     private RMSite(String title, String description, RMSiteCompliance compliance) |     private RMSite(String title, String description, RMSiteCompliance compliance) { | ||||||
|     { |  | ||||||
|         this.setTitle(title); |         this.setTitle(title); | ||||||
|         this.setDescription(description); |         this.setDescription(description); | ||||||
|         this.compliance = compliance; |         this.compliance = compliance; | ||||||
|   | |||||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.site; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public enum RMSiteCompliance | public enum RMSiteCompliance { | ||||||
| { |  | ||||||
|     STANDARD, |     STANDARD, | ||||||
|     DOD5015 |     DOD5015 | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,26 +27,20 @@ | |||||||
| package org.alfresco.rest.rm.community.model.site; | package org.alfresco.rest.rm.community.model.site; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  *RM Site properties from the RM Model Schema |  * RM Site properties from the RM Model Schema "entry": { "id": "string", "guid": "string", "title": | ||||||
|  *"entry": { |  * "string", "description": "string", "visibility": "{@link | ||||||
|  *      "id": "string", |  * org.springframework.social.alfresco.api.entities.Site.Visibility}", "compliance": "{@link | ||||||
|  *      "guid": "string", |  * RMSiteCompliance}", "role": "{@link org.alfresco.utility.constants.UserRole}" } | ||||||
|  *      "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 Tuna Aksoy | ||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RMSiteFields | public class RMSiteFields { | ||||||
| { |  | ||||||
|     public static final String ID = "id"; |     public static final String ID = "id"; | ||||||
|     public static final String COMPLIANCE = "compliance"; |     public static final String COMPLIANCE = "compliance"; | ||||||
|     public static final String TITLE = "title"; |     public static final String TITLE = "title"; | ||||||
|     public static final String DESCRIPTION = "description"; |     public static final String DESCRIPTION = "description"; | ||||||
|     public static final String VISIBILITY ="visibility"; |     public static final String VISIBILITY = "visibility"; | ||||||
|     public static final String ROLE = "role"; |     public static final String ROLE = "role"; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,19 +27,19 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfer; | package org.alfresco.rest.rm.community.model.transfer; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.rest.model.RestByUserModel; |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.model.RestByUserModel; | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for Transfer |  * POJO for Transfer | ||||||
|  * |  * | ||||||
| @@ -51,38 +51,36 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class Transfer extends TestModel | public class Transfer extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private TransferProperties properties; |     private TransferProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,20 +27,20 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfer; | package org.alfresco.rest.rm.community.model.transfer; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for transfer child | ||||||
|  * |  * | ||||||
| @@ -52,59 +52,50 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferChild extends TestModel | public class TransferChild extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private TransferChildProperties properties; | ||||||
|     private TransferChildProperties properties; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isRecord; | ||||||
|     private Boolean isRecord; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isRecordFolder; | ||||||
|     private Boolean isRecordFolder; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> aspectNames; | ||||||
|     private List<String> aspectNames; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isCompleted; | ||||||
|     private Boolean isCompleted; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isClosed; | ||||||
|     private Boolean isClosed; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,10 +31,9 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Handle collection of {@link TransferChildEntry} |  * Handle collection of {@link TransferChildEntry} | ||||||
|  |  * | ||||||
|  * @author Silviu Dinuta |  * @author Silviu Dinuta | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class TransferChildCollection extends RestModels<TransferChildEntry, TransferChildCollection> | public class TransferChildCollection | ||||||
| { |         extends RestModels<TransferChildEntry, TransferChildCollection> {} | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -27,8 +27,6 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfer; | package org.alfresco.rest.rm.community.model.transfer; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RestModels; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -37,6 +35,8 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for transfer child entry |  * POJO for transfer child entry | ||||||
|  * |  * | ||||||
| @@ -48,8 +48,6 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry> | public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry> { | ||||||
| { |     @JsonProperty private TransferChild entry; | ||||||
|     @JsonProperty |  | ||||||
|     private TransferChild entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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_X_RESOLUTION; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_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.annotation.JsonProperty; | ||||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||||
|  |  | ||||||
| @@ -78,6 +73,11 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for transfer child properties | ||||||
|  * |  * | ||||||
| @@ -89,131 +89,129 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @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; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) |     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     /** Optional parameters - Applies only to record folders */ |     /** Optional parameters - Applies only to record folders */ | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     @JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR) |     @JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR) | ||||||
|     private Boolean vitalRecordIndicator; |     private Boolean vitalRecordIndicator; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_REVIEW_PERIOD) |     @JsonProperty(PROPERTIES_REVIEW_PERIOD) | ||||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) |     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||||
|     private ReviewPeriod reviewPeriod; |     private ReviewPeriod reviewPeriod; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT) |     @JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT) | ||||||
|     private Integer heldChildrenCount; |     private Integer heldChildrenCount; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_LOCATION) |     @JsonProperty(PROPERTIES_LOCATION) | ||||||
|     private String location; |     private String location; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_IS_CLOSED) |     @JsonProperty(PROPERTIES_IS_CLOSED) | ||||||
|     private Boolean isClosed; |     private Boolean isClosed; | ||||||
|  |  | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     /** Optional parameters - Applies only to records */ |     /** Optional parameters - Applies only to records */ | ||||||
|     /*********************************************************/ |     /*********************************************************/ | ||||||
|     @JsonProperty (PROPERTIES_DATE_FILED) |     @JsonProperty(PROPERTIES_DATE_FILED) | ||||||
|     private String dateField; |     private String dateField; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) |     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||||
|     private Boolean recordSearchHasDispositionSchedule; |     private Boolean recordSearchHasDispositionSchedule; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ORIGINAL_NAME) |     @JsonProperty(PROPERTIES_ORIGINAL_NAME) | ||||||
|     private String originalName; |     private String originalName; | ||||||
|  |  | ||||||
|  |  | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     /** Electronic record parameters */ |     /** Electronic record parameters */ | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) |     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||||
|     private String versionType; |     private String versionType; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) |     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||||
|     private String versionLabel; |     private String versionLabel; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) |     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||||
|     private String dateTimeOriginal; |     private String dateTimeOriginal; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) |     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||||
|     private Double exposureTime; |     private Double exposureTime; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FLASH) |     @JsonProperty(PROPERTIES_FLASH) | ||||||
|     private Boolean flash; |     private Boolean flash; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_F_NUMBER) |     @JsonProperty(PROPERTIES_F_NUMBER) | ||||||
|     private Double fNumber; |     private Double fNumber; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) |     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||||
|     private Double focalLength; |     private Double focalLength; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) |     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||||
|     private Integer isoSpeedRatings; |     private Integer isoSpeedRatings; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) |     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||||
|     private String manufacturer; |     private String manufacturer; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MODEL) |     @JsonProperty(PROPERTIES_MODEL) | ||||||
|     private String model; |     private String model; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ORIENTATION) |     @JsonProperty(PROPERTIES_ORIENTATION) | ||||||
|     private Integer orientation; |     private Integer orientation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||||
|     private Integer pixelXDimension; |     private Integer pixelXDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||||
|     private Integer pixelYDimension; |     private Integer pixelYDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) |     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||||
|     private String resolutionUnit; |     private String resolutionUnit; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SOFTWARE) |     @JsonProperty(PROPERTIES_SOFTWARE) | ||||||
|     private String software; |     private String software; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) |     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||||
|     private Double xResolution; |     private Double xResolution; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) |     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||||
|     private Double yResolution; |     private Double yResolution; | ||||||
|  |  | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|     /** Non-electronic record parameters */ |     /** Non-electronic record parameters */ | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SHELF) |     @JsonProperty(PROPERTIES_SHELF) | ||||||
|     private String shelf; |     private String shelf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) |     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||||
|     private String storageLocation; |     private String storageLocation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FILE) |     @JsonProperty(PROPERTIES_FILE) | ||||||
|     private String file; |     private String file; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_BOX) |     @JsonProperty(PROPERTIES_BOX) | ||||||
|     private String box; |     private String box; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) |     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||||
|     private Integer numberOfCopies; |     private Integer numberOfCopies; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) |     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||||
|     private Integer physicalSize; |     private Integer physicalSize; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,10 +31,8 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Handle collection of {@link TransferEntry} |  * Handle collection of {@link TransferEntry} | ||||||
|  |  * | ||||||
|  * @author Silviu Dinuta |  * @author Silviu Dinuta | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class TransferCollection extends RestModels<TransferEntry, TransferCollection> | public class TransferCollection extends RestModels<TransferEntry, TransferCollection> {} | ||||||
| { |  | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -27,9 +27,6 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfer; | 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 com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -38,6 +35,9 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  | import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for transfer entry |  * POJO for transfer entry | ||||||
|  * |  * | ||||||
| @@ -49,8 +49,6 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferEntry extends RestModels<TransferContainer, TransferEntry> | public class TransferEntry extends RestModels<TransferContainer, TransferEntry> { | ||||||
| { |     @JsonProperty private Transfer entry; | ||||||
|     @JsonProperty |  | ||||||
|     private Transfer entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,15 +27,12 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfer; | 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_IDENTIFIER; | ||||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | 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_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_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; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| @@ -45,6 +42,9 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.rm.community.model.common.Owner; | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for Transfer properties |  * POJO for Transfer properties | ||||||
|  * |  * | ||||||
| @@ -56,29 +56,28 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferProperties extends TestModel | public class TransferProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PDF_INDICATOR) |     @JsonProperty(PROPERTIES_PDF_INDICATOR) | ||||||
|     private Boolean pdfIndicator; |     private Boolean pdfIndicator; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_TRANSFER_LOCATION) |     @JsonProperty(PROPERTIES_TRANSFER_LOCATION) | ||||||
|     private String transferLocation; |     private String transferLocation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ACCESSION_INDICATOR) |     @JsonProperty(PROPERTIES_ACCESSION_INDICATOR) | ||||||
|     private Boolean accessionIndicator; |     private Boolean accessionIndicator; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,19 +27,19 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.rm.community.model.transfercontainer; | package org.alfresco.rest.rm.community.model.transfercontainer; | ||||||
|  |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.rest.model.RestByUserModel; |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.model.RestByUserModel; | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for Transfer Container |  * POJO for Transfer Container | ||||||
|  * |  * | ||||||
| @@ -51,44 +51,42 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferContainer extends TestModel | public class TransferContainer extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private TransferContainerProperties properties; |     private TransferContainerProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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_IDENTIFIER; | ||||||
| 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_ROOT_NODE_REF; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -41,6 +39,8 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for Transfer Container properties |  * POJO for Transfer Container properties | ||||||
|  * |  * | ||||||
| @@ -52,21 +52,19 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class TransferContainerProperties extends TestModel | public class TransferContainerProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_COUNT) |     @JsonProperty(PROPERTIES_COUNT) | ||||||
|     private Integer count; |     private Integer count; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,12 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.unfiledcontainer; | 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 com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -40,6 +34,12 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for unfiled container | ||||||
|  * |  * | ||||||
| @@ -51,47 +51,44 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class UnfiledContainer extends TestModel | public class UnfiledContainer extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private List<String> aspectNames; |     private List<String> aspectNames; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private UnfiledContainerProperties properties; |     private UnfiledContainerProperties properties; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,13 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.unfiledcontainer; | 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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| @@ -42,6 +35,13 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for record category child | ||||||
|  * |  * | ||||||
| @@ -53,66 +53,57 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class UnfiledContainerChild extends TestModel | public class UnfiledContainerChild extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private Boolean isUnfiledRecordFolder; |     private Boolean isUnfiledRecordFolder; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private Boolean isRecord; |     private Boolean isRecord; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private UnfiledContainerChildProperties properties; | ||||||
|     private UnfiledContainerChildProperties properties; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> aspectNames; | ||||||
|     private List<String> aspectNames; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isClosed; | ||||||
|     private Boolean isClosed; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private String relativePath; | ||||||
|     private String relativePath; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private RecordContent content; | ||||||
|     private RecordContent content; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isCompleted; | ||||||
|     private Boolean isCompleted; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class UnfiledContainerChildCollection extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection> | public class UnfiledContainerChildCollection | ||||||
| { |         extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection> {} | ||||||
|  |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -28,11 +28,11 @@ package org.alfresco.rest.rm.community.model.unfiledcontainer; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RestModels; |  | ||||||
|  |  | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RestModels; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record category child entry |  * POJO for record category child entry | ||||||
|  * |  * | ||||||
| @@ -41,8 +41,7 @@ import lombok.EqualsAndHashCode; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| public class UnfiledContainerChildEntry extends RestModels<UnfiledContainer, UnfiledContainerChildEntry> | public class UnfiledContainerChildEntry | ||||||
| { |         extends RestModels<UnfiledContainer, UnfiledContainerChildEntry> { | ||||||
|     @JsonProperty |     @JsonProperty private UnfiledContainerChild entry; | ||||||
|     private UnfiledContainerChild entry; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | 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.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.rm.community.model.common.Owner; | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for record category child properties |  * POJO for record category child properties | ||||||
|  * |  * | ||||||
| @@ -83,112 +83,111 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class UnfiledContainerChildProperties extends TestModel | public class UnfiledContainerChildProperties extends TestModel { | ||||||
| { |  | ||||||
|     /**************************************************************************/ |     /**************************************************************************/ | ||||||
|     /** Mandatory parameters - Shared by unfiled record folder and records */ |     /** Mandatory parameters - Shared by unfiled record folder and records */ | ||||||
|     /**************************************************************************/ |     /**************************************************************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_TITLE) |     @JsonProperty(required = true, value = PROPERTIES_TITLE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_DESCRIPTION) |     @JsonProperty(required = true, value = PROPERTIES_DESCRIPTION) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     @JsonProperty (value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) |     @JsonProperty(value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||||
|     private Boolean recordSearchHasDispositionSchedule; |     private Boolean recordSearchHasDispositionSchedule; | ||||||
|  |  | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     /** Electronic record parameters */ |     /** Electronic record parameters */ | ||||||
|     /*********************************/ |     /*********************************/ | ||||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) |     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||||
|     private String versionType; |     private String versionType; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) |     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||||
|     private String versionLabel; |     private String versionLabel; | ||||||
|  |  | ||||||
|     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) |     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) | ||||||
|     private String versionedNodeRef; |     private String versionedNodeRef; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RMV_VERSIONED) |     @JsonProperty(PROPERTIES_RMV_VERSIONED) | ||||||
|     private String recordVersionLabel; |     private String recordVersionLabel; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) |     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||||
|     private String dateTimeOriginal; |     private String dateTimeOriginal; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) |     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||||
|     private Double exposureTime; |     private Double exposureTime; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FLASH) |     @JsonProperty(PROPERTIES_FLASH) | ||||||
|     private Boolean flash; |     private Boolean flash; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_F_NUMBER) |     @JsonProperty(PROPERTIES_F_NUMBER) | ||||||
|     private Double fNumber; |     private Double fNumber; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) |     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||||
|     private Double focalLength; |     private Double focalLength; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) |     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||||
|     private Integer isoSpeedRatings; |     private Integer isoSpeedRatings; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) |     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||||
|     private String manufacturer; |     private String manufacturer; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_MODEL) |     @JsonProperty(PROPERTIES_MODEL) | ||||||
|     private String model; |     private String model; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ORIENTATION) |     @JsonProperty(PROPERTIES_ORIENTATION) | ||||||
|     private Integer orientation; |     private Integer orientation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||||
|     private Integer pixelXDimension; |     private Integer pixelXDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) |     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||||
|     private Integer pixelYDimension; |     private Integer pixelYDimension; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) |     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||||
|     private String resolutionUnit; |     private String resolutionUnit; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SOFTWARE) |     @JsonProperty(PROPERTIES_SOFTWARE) | ||||||
|     private String software; |     private String software; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) |     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||||
|     private Double xResolution; |     private Double xResolution; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) |     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||||
|     private Double yResolution; |     private Double yResolution; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_ORIGINAL_NAME) |     @JsonProperty(PROPERTIES_ORIGINAL_NAME) | ||||||
|     private String originalName; |     private String originalName; | ||||||
|  |  | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|     /** Non-electronic record parameters */ |     /** Non-electronic record parameters */ | ||||||
|     /*************************************/ |     /*************************************/ | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_SHELF) |     @JsonProperty(PROPERTIES_SHELF) | ||||||
|     private String shelf; |     private String shelf; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) |     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||||
|     private String storageLocation; |     private String storageLocation; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_FILE) |     @JsonProperty(PROPERTIES_FILE) | ||||||
|     private String file; |     private String file; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_BOX) |     @JsonProperty(PROPERTIES_BOX) | ||||||
|     private String box; |     private String box; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) |     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||||
|     private Integer numberOfCopies; |     private Integer numberOfCopies; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) |     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||||
|     private Integer physicalSize; |     private Integer physicalSize; | ||||||
|  |  | ||||||
|     @JsonProperty (PROPERTIES_OWNER) |     @JsonProperty(PROPERTIES_OWNER) | ||||||
|     private Owner owner; |     private Owner owner; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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.JsonIgnoreProperties; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import org.alfresco.utility.model.TestModel; |  | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | import org.alfresco.utility.model.TestModel; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * POJO for file plan properties |  * POJO for file plan properties | ||||||
|  * |  * | ||||||
| @@ -51,15 +51,14 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @JsonIgnoreProperties (ignoreUnknown = true) | @JsonIgnoreProperties(ignoreUnknown = true) | ||||||
| public class UnfiledContainerProperties extends TestModel | public class UnfiledContainerProperties extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) |     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||||
|     private String identifier; |     private String identifier; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) |     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||||
|     private String rootNodeRef; |     private String rootNodeRef; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,13 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.model.unfiledcontainer; | 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 com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| @@ -41,6 +34,13 @@ import lombok.Data; | |||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
| import lombok.NoArgsConstructor; | 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 |  * POJO for unfiled container | ||||||
|  * |  * | ||||||
| @@ -52,62 +52,52 @@ import lombok.NoArgsConstructor; | |||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class UnfiledRecordFolder extends TestModel | public class UnfiledRecordFolder extends TestModel { | ||||||
| { |  | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     /** Mandatory parameters */ |     /** Mandatory parameters */ | ||||||
|     /*************************/ |     /*************************/ | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String createdAt; |     private String createdAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel createdByUser; |     private RestByUserModel createdByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String modifiedAt; |     private String modifiedAt; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private RestByUserModel modifiedByUser; |     private RestByUserModel modifiedByUser; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String id; |     private String id; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String nodeType; |     private String nodeType; | ||||||
|  |  | ||||||
|     @JsonProperty (required = true) |     @JsonProperty(required = true) | ||||||
|     private String parentId; |     private String parentId; | ||||||
|  |  | ||||||
|     /************************/ |     /************************/ | ||||||
|     /** Optional parameters */ |     /** Optional parameters */ | ||||||
|     /************************/ |     /************************/ | ||||||
|     @JsonProperty |     @JsonProperty private UnfiledContainerChildProperties properties; | ||||||
|     private UnfiledContainerChildProperties properties; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> aspectNames; | ||||||
|     private List<String> aspectNames; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean hasRetentionSchedule; | ||||||
|     private Boolean hasRetentionSchedule; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isClosed; | ||||||
|     private Boolean isClosed; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private List<String> allowableOperations; | ||||||
|     private List<String> allowableOperations; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Path path; | ||||||
|     private Path path; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private String relativePath; | ||||||
|     private String relativePath; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private RecordContent content; | ||||||
|     private RecordContent content; |  | ||||||
|  |  | ||||||
|     @JsonProperty |     @JsonProperty private Boolean isCompleted; | ||||||
|     private Boolean isCompleted; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.user; | |||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.7 |  * @since 2.7 | ||||||
|  */ |  */ | ||||||
| public class UserCapabilities | public class UserCapabilities { | ||||||
| { |  | ||||||
|  |  | ||||||
|     /** The id of the view records capability. */ |     /** The id of the view records capability. */ | ||||||
|     public static final String VIEW_RECORDS_CAP = "ViewRecords"; |     public static final String VIEW_RECORDS_CAP = "ViewRecords"; | ||||||
|   | |||||||
| @@ -28,20 +28,18 @@ package org.alfresco.rest.rm.community.model.user; | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Constants for RM user capabilities |  * Constants for RM user capabilities | ||||||
|  *  |  * | ||||||
|  * @author Kristijan Conkas |  * @author Kristijan Conkas | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public enum UserPermissions | public enum UserPermissions { | ||||||
| { |  | ||||||
|     PERMISSION_FILING("Filing"), |     PERMISSION_FILING("Filing"), | ||||||
|     PERMISSION_READ_RECORDS("ReadRecords"), |     PERMISSION_READ_RECORDS("ReadRecords"), | ||||||
|     PERMISSION_FILE_RECORDS("FileRecords"); |     PERMISSION_FILE_RECORDS("FileRecords"); | ||||||
|  |  | ||||||
|     public final String permissionId; |     public final String permissionId; | ||||||
|  |  | ||||||
|     UserPermissions(String permissionId) |     UserPermissions(String permissionId) { | ||||||
|     { |  | ||||||
|         this.permissionId = permissionId; |         this.permissionId = permissionId; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -33,8 +33,7 @@ package org.alfresco.rest.rm.community.model.user; | |||||||
|  * @author Kristijan Conkas |  * @author Kristijan Conkas | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public enum UserRoles | public enum UserRoles { | ||||||
| { |  | ||||||
|     IN_PLACE_WRITERS("ExtendedWriters", "In-Place Writers"), |     IN_PLACE_WRITERS("ExtendedWriters", "In-Place Writers"), | ||||||
|     ROLE_RM_ADMIN("Administrator", "Records Management Administrator"), |     ROLE_RM_ADMIN("Administrator", "Records Management Administrator"), | ||||||
|     ROLE_RM_MANAGER("RecordsManager", "Records Management Manager"), |     ROLE_RM_MANAGER("RecordsManager", "Records Management Manager"), | ||||||
| @@ -45,11 +44,8 @@ public enum UserRoles | |||||||
|     public final String roleId; |     public final String roleId; | ||||||
|     public final String displayName; |     public final String displayName; | ||||||
|  |  | ||||||
|     UserRoles(String roleId, String displayName) |     UserRoles(String roleId, String displayName) { | ||||||
|     { |  | ||||||
|         this.roleId = roleId; |         this.roleId = roleId; | ||||||
|         this.displayName = displayName; |         this.displayName = displayName; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,29 +29,25 @@ package org.alfresco.rest.rm.community.requests; | |||||||
| import static lombok.AccessLevel.PRIVATE; | import static lombok.AccessLevel.PRIVATE; | ||||||
| import static lombok.AccessLevel.PROTECTED; | import static lombok.AccessLevel.PROTECTED; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RMRestWrapper; |  | ||||||
| import org.alfresco.rest.requests.ModelRequest; |  | ||||||
|  |  | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.Setter; | import lombok.Setter; | ||||||
|  |  | ||||||
|  | import org.alfresco.rest.core.RMRestWrapper; | ||||||
|  | import org.alfresco.rest.requests.ModelRequest; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Extends {@link ModelRequest} to set {@link RMRestWrapper} |  * Extends {@link ModelRequest} to set {@link RMRestWrapper} | ||||||
|  * |  * | ||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public abstract class RMModelRequest<Request> extends ModelRequest<Request> | public abstract class RMModelRequest<Request> extends ModelRequest<Request> { | ||||||
| { |     @Getter(value = PROTECTED) | ||||||
|     @Getter (value = PROTECTED) |     @Setter(value = PRIVATE) | ||||||
|     @Setter (value = PRIVATE) |  | ||||||
|     private RMRestWrapper rmRestWrapper; |     private RMRestWrapper rmRestWrapper; | ||||||
|  |  | ||||||
|     /** |     /** @param rmRestWrapper */ | ||||||
|      * @param rmRestWrapper |     public RMModelRequest(RMRestWrapper rmRestWrapper) { | ||||||
|      */ |  | ||||||
|     public RMModelRequest(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper.getRestWrapper()); |         super(rmRestWrapper.getRestWrapper()); | ||||||
|         setRmRestWrapper(rmRestWrapper); |         setRmRestWrapper(rmRestWrapper); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -33,8 +33,8 @@ import io.restassured.RestAssured; | |||||||
|  |  | ||||||
| import org.alfresco.rest.core.RMRestProperties; | import org.alfresco.rest.core.RMRestProperties; | ||||||
| import org.alfresco.rest.core.RMRestWrapper; | 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.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.FilePlanAPI; | ||||||
| import org.alfresco.rest.rm.community.requests.gscore.api.FilesAPI; | import org.alfresco.rest.rm.community.requests.gscore.api.FilesAPI; | ||||||
| import org.alfresco.rest.rm.community.requests.gscore.api.RMSiteAPI; | 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; | import org.alfresco.rest.rm.community.requests.gscore.api.UnfiledRecordFolderAPI; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Defines the entire GS Core API |  * Defines the entire GS Core API {@link http://host:port/gs-api-explorer} select "GS Core API" | ||||||
|  * {@link http://host:port/gs-api-explorer} select "GS Core API" |  | ||||||
|  * |  * | ||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class GSCoreAPI extends RMModelRequest | public class GSCoreAPI extends RMModelRequest { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Constructor |      * Constructor | ||||||
|      * |      * | ||||||
|      * @param rmRestWrapper RM REST Wrapper |      * @param rmRestWrapper RM REST Wrapper | ||||||
|      * @param rmRestProperties RM REST Properties |      * @param rmRestProperties RM REST Properties | ||||||
|      */ |      */ | ||||||
|     public GSCoreAPI(RMRestWrapper rmRestWrapper, RMRestProperties rmRestProperties) |     public GSCoreAPI(RMRestWrapper rmRestWrapper, RMRestProperties rmRestProperties) { | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         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.port = parseInt(rmRestProperties.getPort()); | ||||||
|         RestAssured.basePath = rmRestProperties.getRestRmPath(); |         RestAssured.basePath = rmRestProperties.getRestRmPath(); | ||||||
|         restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath); |         restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath); | ||||||
| @@ -76,9 +74,8 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link RMSiteAPI} |      * @return {@link RMSiteAPI} | ||||||
|      */ |      */ | ||||||
|     public RMSiteAPI usingRMSite() |     public RMSiteAPI usingRMSite() { | ||||||
|     { |         return new RMSiteAPI(getRmRestWrapper()); | ||||||
|       return new RMSiteAPI(getRmRestWrapper()); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -86,8 +83,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link FilePlanAPI} |      * @return {@link FilePlanAPI} | ||||||
|      */ |      */ | ||||||
|     public FilePlanAPI usingFilePlans() |     public FilePlanAPI usingFilePlans() { | ||||||
|     { |  | ||||||
|         return new FilePlanAPI(getRmRestWrapper()); |         return new FilePlanAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -96,8 +92,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link RecordCategoryAPI} |      * @return {@link RecordCategoryAPI} | ||||||
|      */ |      */ | ||||||
|     public RecordCategoryAPI usingRecordCategory() |     public RecordCategoryAPI usingRecordCategory() { | ||||||
|     { |  | ||||||
|         return new RecordCategoryAPI(getRmRestWrapper()); |         return new RecordCategoryAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -106,8 +101,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link RecordFolderAPI} |      * @return {@link RecordFolderAPI} | ||||||
|      */ |      */ | ||||||
|     public RecordFolderAPI usingRecordFolder() |     public RecordFolderAPI usingRecordFolder() { | ||||||
|     { |  | ||||||
|         return new RecordFolderAPI(getRmRestWrapper()); |         return new RecordFolderAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -116,8 +110,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link RecordsAPI} |      * @return {@link RecordsAPI} | ||||||
|      */ |      */ | ||||||
|     public RecordsAPI usingRecords() |     public RecordsAPI usingRecords() { | ||||||
|     { |  | ||||||
|         return new RecordsAPI(getRmRestWrapper()); |         return new RecordsAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -126,8 +119,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link FilesAPI} |      * @return {@link FilesAPI} | ||||||
|      */ |      */ | ||||||
|     public FilesAPI usingFiles() |     public FilesAPI usingFiles() { | ||||||
|     { |  | ||||||
|         return new FilesAPI(getRmRestWrapper()); |         return new FilesAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -136,8 +128,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link TransferContainerAPI} |      * @return {@link TransferContainerAPI} | ||||||
|      */ |      */ | ||||||
|     public TransferContainerAPI usingTransferContainer() |     public TransferContainerAPI usingTransferContainer() { | ||||||
|     { |  | ||||||
|         return new TransferContainerAPI(getRmRestWrapper()); |         return new TransferContainerAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -146,8 +137,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link TransferAPI} |      * @return {@link TransferAPI} | ||||||
|      */ |      */ | ||||||
|     public TransferAPI usingTransfer() |     public TransferAPI usingTransfer() { | ||||||
|     { |  | ||||||
|         return new TransferAPI(getRmRestWrapper()); |         return new TransferAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -156,8 +146,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link UnfiledContainerAPI} |      * @return {@link UnfiledContainerAPI} | ||||||
|      */ |      */ | ||||||
|     public UnfiledContainerAPI usingUnfiledContainers() |     public UnfiledContainerAPI usingUnfiledContainers() { | ||||||
|     { |  | ||||||
|         return new UnfiledContainerAPI(getRmRestWrapper()); |         return new UnfiledContainerAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -166,8 +155,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link UnfiledRecordFolderAPI} |      * @return {@link UnfiledRecordFolderAPI} | ||||||
|      */ |      */ | ||||||
|     public UnfiledRecordFolderAPI usingUnfiledRecordFolder() |     public UnfiledRecordFolderAPI usingUnfiledRecordFolder() { | ||||||
|     { |  | ||||||
|         return new UnfiledRecordFolderAPI(getRmRestWrapper()); |         return new UnfiledRecordFolderAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -176,8 +164,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link RMUserAPI} |      * @return {@link RMUserAPI} | ||||||
|      */ |      */ | ||||||
|     public RMUserAPI usingRMUser() |     public RMUserAPI usingRMUser() { | ||||||
|     { |  | ||||||
|         return new RMUserAPI(getRmRestWrapper()); |         return new RMUserAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -186,8 +173,7 @@ public class GSCoreAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return {@link ActionsExecutionAPI} |      * @return {@link ActionsExecutionAPI} | ||||||
|      */ |      */ | ||||||
|     public ActionsExecutionAPI usingActionsExecutionsAPI() |     public ActionsExecutionAPI usingActionsExecutionsAPI() { | ||||||
|     { |  | ||||||
|         return new ActionsExecutionAPI(getRmRestWrapper()); |         return new ActionsExecutionAPI(getRmRestWrapper()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ package org.alfresco.rest.rm.community.requests.gscore.api; | |||||||
| import com.google.common.collect.ImmutableMap; | import com.google.common.collect.ImmutableMap; | ||||||
|  |  | ||||||
| import lombok.SneakyThrows; | import lombok.SneakyThrows; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RMRestWrapper; | import org.alfresco.rest.core.RMRestWrapper; | ||||||
| import org.alfresco.rest.rm.community.model.rules.ActionsOnRule; | import org.alfresco.rest.rm.community.model.rules.ActionsOnRule; | ||||||
| import org.alfresco.rest.rm.community.requests.RMModelRequest; | import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||||
| @@ -41,28 +42,28 @@ import org.json.JSONObject; | |||||||
|  * @author Claudia Agache |  * @author Claudia Agache | ||||||
|  * @since 3.1 |  * @since 3.1 | ||||||
|  */ |  */ | ||||||
| public class ActionsExecutionAPI extends RMModelRequest | public class ActionsExecutionAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public ActionsExecutionAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public ActionsExecutionAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Declares and files a document as record to a record folder using v1 actions api |      * 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 |      * @param destinationPath the path to the record folder | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public JSONObject declareAndFile(RepoTestModel targetNode, String destinationPath) throws Exception |     public JSONObject declareAndFile(RepoTestModel targetNode, String destinationPath) | ||||||
|     { |             throws Exception { | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |         return getRmRestWrapper() | ||||||
|                                  .executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode, |                 .withCoreAPI() | ||||||
|                                          ImmutableMap.of("path", destinationPath)); |                 .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 |      * @param targetNode the node on which the action is executed | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public JSONObject declareAsRecord(RepoTestModel targetNode) throws Exception |     public JSONObject declareAsRecord(RepoTestModel targetNode) throws Exception { | ||||||
|     { |         return getRmRestWrapper() | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |                 .withCoreAPI() | ||||||
|                                  .executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode); |                 .usingActions() | ||||||
|  |                 .executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Declares and file a document version as record to a record folder using v1 actions api |      * 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 |      * @param destinationPath the path to the record folder | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public JSONObject declareAndFileVersionAsRecord(RepoTestModel targetNode, String destinationPath) throws Exception |     public JSONObject declareAndFileVersionAsRecord( | ||||||
|     { |             RepoTestModel targetNode, String destinationPath) throws Exception { | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |         return getRmRestWrapper() | ||||||
|                                  .executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode, |                 .withCoreAPI() | ||||||
|                                          ImmutableMap.of("path", destinationPath)); |                 .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 |      * @param targetNode the node on which the action is executed | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public JSONObject declareVersionAsRecord(RepoTestModel targetNode) throws Exception |     public JSONObject declareVersionAsRecord(RepoTestModel targetNode) throws Exception { | ||||||
|     { |         return getRmRestWrapper() | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |                 .withCoreAPI() | ||||||
|                                  .executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode); |                 .usingActions() | ||||||
|  |                 .executeAction( | ||||||
|  |                         ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -111,24 +118,28 @@ public class ActionsExecutionAPI extends RMModelRequest | |||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     @SneakyThrows |     @SneakyThrows | ||||||
|     public JSONObject addWORMLock(RepoTestModel targetNode) |     public JSONObject addWORMLock(RepoTestModel targetNode) { | ||||||
|     { |         return getRmRestWrapper() | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |                 .withCoreAPI() | ||||||
|                                  .executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode); |                 .usingActions() | ||||||
|  |                 .executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * WORM lock a node for a period of days |      * 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 |      * @param retentionPeriod the retention period in days for the WORM lock | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     @SneakyThrows |     @SneakyThrows | ||||||
|     public JSONObject addWORMLock(RepoTestModel targetNode, int retentionPeriod) |     public JSONObject addWORMLock(RepoTestModel targetNode, int retentionPeriod) { | ||||||
|     { |         return getRmRestWrapper() | ||||||
|         return getRmRestWrapper().withCoreAPI().usingActions() |                 .withCoreAPI() | ||||||
|                                  .executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode, |                 .usingActions() | ||||||
|                                          ImmutableMap.of("retentionPeriod", String.valueOf(retentionPeriod))); |                 .executeAction( | ||||||
|  |                         ActionsOnRule.WORM_LOCK.getActionValue(), | ||||||
|  |                         targetNode, | ||||||
|  |                         ImmutableMap.of("retentionPeriod", String.valueOf(retentionPeriod))); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -49,23 +49,18 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilePlanAPI extends RMModelRequest | public class FilePlanAPI extends RMModelRequest { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Constructor. |      * Constructor. | ||||||
|      * |      * | ||||||
|      * @param rmRestWrapper RM REST Wrapper |      * @param rmRestWrapper RM REST Wrapper | ||||||
|      */ |      */ | ||||||
|     public FilePlanAPI(RMRestWrapper rmRestWrapper) |     public FilePlanAPI(RMRestWrapper rmRestWrapper) { | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getFilePlan(String, String)} */ | ||||||
|      * see {@link #getFilePlan(String, String)} |     public FilePlan getFilePlan(String filePlanId) { | ||||||
|      */ |  | ||||||
|     public FilePlan getFilePlan(String filePlanId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getFilePlan(filePlanId, EMPTY); |         return getFilePlan(filePlanId, EMPTY); | ||||||
| @@ -78,30 +73,28 @@ public class FilePlanAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link FilePlan} for the given {@code filePlanId} |      * @return The {@link FilePlan} for the given {@code filePlanId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code filePlanId} is not a valid format</li> |      *       <li>{@code filePlanId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code filePlanId}</li> |      *       <li>current user does not have permission to read {@code filePlanId} | ||||||
|      *  <li>{@code filePlanId} does not exist</li> |      *       <li>{@code filePlanId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public FilePlan getFilePlan(String filePlanId, String parameters) |     public FilePlan getFilePlan(String filePlanId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(FilePlan.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "/file-plans/{filePlanId}?{parameters}", |                         FilePlan.class, | ||||||
|                 filePlanId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "/file-plans/{filePlanId}?{parameters}", | ||||||
|  |                                 filePlanId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRootRecordCategories(String, String)} */ | ||||||
|      * see {@link #getRootRecordCategories(String, String)} |     public RecordCategoryCollection getRootRecordCategories(String filePlanId) { | ||||||
|      */ |  | ||||||
|     public RecordCategoryCollection getRootRecordCategories(String filePlanId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getRootRecordCategories(filePlanId, EMPTY); |         return getRootRecordCategories(filePlanId, EMPTY); | ||||||
| @@ -114,29 +107,28 @@ public class FilePlanAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link RecordCategoryCollection} for the given {@code filePlanId} |      * @return The {@link RecordCategoryCollection} for the given {@code filePlanId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code filePlanId}</li> |      *       <li>current user does not have permission to read {@code filePlanId} | ||||||
|      *  <li>{@code filePlanId} does not exist</li> |      *       <li>{@code filePlanId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordCategoryCollection getRootRecordCategories(String filePlanId, String parameters) |     public RecordCategoryCollection getRootRecordCategories(String filePlanId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(RecordCategoryCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "file-plans/{filePlanId}/categories?{parameters}", |                         RecordCategoryCollection.class, | ||||||
|             filePlanId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "file-plans/{filePlanId}/categories?{parameters}", | ||||||
|  |                                 filePlanId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #createRootRecordCategory(RecordCategory, String, String)} */ | ||||||
|      * see {@link #createRootRecordCategory(RecordCategory, String, String)} |     public RecordCategory createRootRecordCategory( | ||||||
|      */ |             RecordCategory recordCategoryModel, String filePlanId) { | ||||||
|     public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); |         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
| @@ -151,34 +143,35 @@ public class FilePlanAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The created {@link RecordCategory} |      * @return The created {@link RecordCategory} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code filePlanId} is not a valid format or {@code filePlanId} is invalid</li> |      *       <li>{@code filePlanId} is not a valid format or {@code filePlanId} is invalid | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to add children to {@code filePlanId}</li> |      *       <li>current user does not have permission to add children to {@code filePlanId} | ||||||
|      *  <li>{@code filePlanIds} does not exist</li> |      *       <li>{@code filePlanIds} does not exist | ||||||
|      *  <li>new name clashes with an existing node in the current parent container</li> |      *       <li>new name clashes with an existing node in the current parent container | ||||||
|      *  <li>model integrity exception, including node name with invalid characters</li> |      *       <li>model integrity exception, including node name with invalid characters | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId, String parameters) |     public RecordCategory createRootRecordCategory( | ||||||
|     { |             RecordCategory recordCategoryModel, String filePlanId, String parameters) { | ||||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); |         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel( | ||||||
|                 toJson(recordCategoryModel), |                         RecordCategory.class, | ||||||
|                 "file-plans/{filePlanId}/categories?{parameters}", |                         requestWithBody( | ||||||
|                 filePlanId, |                                 POST, | ||||||
|                 parameters |                                 toJson(recordCategoryModel), | ||||||
|         )); |                                 "file-plans/{filePlanId}/categories?{parameters}", | ||||||
|  |                                 filePlanId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #updateFilePlan(FilePlan, String, String) |      * see {@link #updateFilePlan(FilePlan, String, String) | ||||||
|      */ |      */ | ||||||
|     public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId) |     public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId) { | ||||||
|     { |  | ||||||
|         mandatoryObject("filePlanModel", filePlanModel); |         mandatoryObject("filePlanModel", filePlanModel); | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
| @@ -188,29 +181,31 @@ public class FilePlanAPI extends RMModelRequest | |||||||
|     /** |     /** | ||||||
|      * Updates a file plan. |      * Updates a file plan. | ||||||
|      * |      * | ||||||
|      * @param filePlanModel The file plan  model which holds the information |      * @param filePlanModel The file plan model which holds the information | ||||||
|      * @param filePlanId    The identifier of the file plan |      * @param filePlanId The identifier of the file plan | ||||||
|      * @param parameters          The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      *                   <ul> |      *     <ul> | ||||||
|      *                   <li>the update request is invalid or {@code filePlanId} is not a valid format or {@code filePlanModel} is invalid</li> |      *       <li>the update request is invalid or {@code filePlanId} is not a valid format or {@code | ||||||
|      *                   <li>authentication fails</li> |      *           filePlanModel} is invalid | ||||||
|      *                   <li>current user does not have permission to update {@code filePlanId}</li> |      *       <li>authentication fails | ||||||
|      *                   <li>{@code filePlanId} does not exist</li> |      *       <li>current user does not have permission to update {@code filePlanId} | ||||||
|      *                   <li>model integrity exception, including file name with invalid characters</li> |      *       <li>{@code filePlanId} does not exist | ||||||
|      *                   </ul> |      *       <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); |         mandatoryObject("filePlanModel", filePlanModel); | ||||||
|         mandatoryString("filePlanId", filePlanId); |         mandatoryString("filePlanId", filePlanId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(FilePlan.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(filePlanModel), |                         FilePlan.class, | ||||||
|                 "file-plans/{filePlanId}?{parameters}", |                         requestWithBody( | ||||||
|                 filePlanId, |                                 PUT, | ||||||
|                 parameters)); |                                 toJson(filePlanModel), | ||||||
|  |                                 "file-plans/{filePlanId}?{parameters}", | ||||||
|  |                                 filePlanId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -40,15 +40,11 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Kristijan Conkas |  * @author Kristijan Conkas | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class FilesAPI extends RMModelRequest<FilesAPI> | public class FilesAPI extends RMModelRequest<FilesAPI> { | ||||||
| { |  | ||||||
|     public static final String PARENT_ID_PARAM = "parentId"; |     public static final String PARENT_ID_PARAM = "parentId"; | ||||||
|  |  | ||||||
|     /** |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|      * @param rmRestWrapper RM REST Wrapper |     public FilesAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      */ |  | ||||||
|     public FilesAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -59,16 +55,16 @@ public class FilesAPI extends RMModelRequest<FilesAPI> | |||||||
|      * @return The {@link Record} for created record |      * @return The {@link Record} for created record | ||||||
|      * @throws RuntimeException for malformed JSON responses |      * @throws RuntimeException for malformed JSON responses | ||||||
|      */ |      */ | ||||||
|     public Record declareAsRecord(String fileId) |     public Record declareAsRecord(String fileId) { | ||||||
|     { |  | ||||||
|         mandatoryString("fileId", fileId); |         mandatoryString("fileId", fileId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             POST, |                 .processModel( | ||||||
|             "/files/{fileId}/declare?{parameters}", |                         Record.class, | ||||||
|             fileId, |                         simpleRequest( | ||||||
|             getRmRestWrapper().getParameters() |                                 POST, | ||||||
|         )); |                                 "/files/{fileId}/declare?{parameters}", | ||||||
|  |                                 fileId, | ||||||
|  |                                 getRmRestWrapper().getParameters())); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,15 +46,13 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RMSiteAPI extends RMModelRequest | public class RMSiteAPI extends RMModelRequest { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Constructor |      * Constructor | ||||||
|      * |      * | ||||||
|      * @param rmRestWrapper RM REST Wrapper |      * @param rmRestWrapper RM REST Wrapper | ||||||
|      */ |      */ | ||||||
|     public RMSiteAPI(RMRestWrapper rmRestWrapper) |     public RMSiteAPI(RMRestWrapper rmRestWrapper) { | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -63,19 +61,16 @@ public class RMSiteAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @return The {@link RMSite} for the given file plan component id |      * @return The {@link RMSite} for the given file plan component id | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM site</li> |      *       <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM | ||||||
|      *  <li>Api Response code 401 If authentication failed</li> |      *           site | ||||||
|      *  <li>Api Response code 409 If RM Site does not exist</li> |      *       <li>Api Response code 401 If authentication failed | ||||||
|      *  <li>Api Response code default Unexpected error</li> |      *       <li>Api Response code 409 If RM Site does not exist | ||||||
|      * </ul> |      *       <li>Api Response code default Unexpected error | ||||||
|  |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RMSite getSite() |     public RMSite getSite() { | ||||||
|     { |         return getRmRestWrapper().processModel(RMSite.class, simpleRequest(GET, "gs-sites/rm")); | ||||||
|         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 |      * @param rmSiteModel The properties of the rm site to be created | ||||||
|      * @return The {@link RMSite} with the given properties |      * @return The {@link RMSite} with the given properties | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Api Response code 400 Invalid parameter: title, or description exceed the maximum length; or siteBodyCreate invalid</li> |      *       <li>Api Response code 400 Invalid parameter: title, or description exceed the maximum | ||||||
|      *  <li>Api Response code 401 If authentication failed</ |      *           length; or siteBodyCreate invalid | ||||||
|      *  <li>Api Response code 409 RM Site already exists</li> |      *       <li>Api Response code 401 If authentication failed</ | ||||||
|      *  <li>Api Response code default Unexpected error</li> |      *       <li>Api Response code 409 RM Site already exists | ||||||
|      * </ul> |      *       <li>Api Response code default Unexpected error | ||||||
|  |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RMSite createRMSite(RMSite rmSiteModel) |     public RMSite createRMSite(RMSite rmSiteModel) { | ||||||
|     { |  | ||||||
|         mandatoryObject("rmSiteModel", rmSiteModel); |         mandatoryObject("rmSiteModel", rmSiteModel); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RMSite.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel(RMSite.class, requestWithBody(POST, toJson(rmSiteModel), "gs-sites")); | ||||||
|                 toJson(rmSiteModel), |  | ||||||
|                 "gs-sites" |  | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Delete RM site |      * Delete RM site | ||||||
|  |      * | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Api Response code 400 Invalid parameter: DELETE request is supported only for the RM site</li> |      *       <li>Api Response code 400 Invalid parameter: DELETE request is supported only for the | ||||||
|      *  <li>Api Response code 401 If authentication failed</ |      *           RM site | ||||||
|      *  <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 401 If authentication failed</ | ||||||
|      *  <li>Api Response code 404 RM site does not exist</li> |      *       <li>Api Response code 403 Current user does not have permission to delete the site that | ||||||
|      *  <li>Api Response code default Unexpected error</li> |      *           is visible to them. | ||||||
|      * </ul> |      *       <li>Api Response code 404 RM site does not exist | ||||||
|  |      *       <li>Api Response code default Unexpected error | ||||||
|  |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public void deleteRMSite() |     public void deleteRMSite() { | ||||||
|     { |         getRmRestWrapper().processEmptyModel(simpleRequest(DELETE, "gs-sites/rm")); | ||||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( |  | ||||||
|                 DELETE, |  | ||||||
|                 "gs-sites/rm" |  | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -127,23 +118,20 @@ public class RMSiteAPI extends RMModelRequest | |||||||
|      * @param rmSiteModel The properties to be updated |      * @param rmSiteModel The properties to be updated | ||||||
|      * @return The updated {@link RMSite} |      * @return The updated {@link RMSite} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Api Response code 400 the update request is invalid {@code rmSiteModel} is invalid</li> |      *       <li>Api Response code 400 the update request is invalid {@code rmSiteModel} is invalid | ||||||
|      *  <li>Api Response code 401 If authentication fails</li> |      *       <li>Api Response code 401 If authentication fails | ||||||
|      *  <li>Api Response code 403 does not have permission to update {@code RMSite}</li> |      *       <li>Api Response code 403 does not have permission to update {@code RMSite} | ||||||
|      *  <li>Api Response code 404 {@code RMSiteModel} does not exist</li> |      *       <li>Api Response code 404 {@code RMSiteModel} does not exist | ||||||
|      *  <li>Api Response code default Unexpected error,model integrity exception</li> |      *       <li>Api Response code default Unexpected error,model integrity exception | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RMSite updateRMSite(RMSite rmSiteModel) |     public RMSite updateRMSite(RMSite rmSiteModel) { | ||||||
|     { |  | ||||||
|         mandatoryObject("rmSiteProperties", rmSiteModel); |         mandatoryObject("rmSiteProperties", rmSiteModel); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RMSite.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(rmSiteModel), |                         RMSite.class, requestWithBody(PUT, toJson(rmSiteModel), "gs-sites/rm")); | ||||||
|                 "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 |      * @return <code>true</code> if the RM site exists, <code>false</code> otherwise | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM site</li> |      *       <li>Api Response code 400 Invalid parameter: GET request is supported only for the RM | ||||||
|      *  <li>Api Response code 401 If authentication failed</li> |      *           site | ||||||
|      *  <li>Api Response code 409 If RM Site does not exist</li> |      *       <li>Api Response code 401 If authentication failed | ||||||
|      *  <li>Api Response code default Unexpected error</li> |      *       <li>Api Response code 409 If RM Site does not exist | ||||||
|      * </ul> |      *       <li>Api Response code default Unexpected error | ||||||
|  |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public boolean existsRMSite() |     public boolean existsRMSite() { | ||||||
|     { |  | ||||||
|         getSite(); |         getSite(); | ||||||
|         return getRmRestWrapper().getStatusCode().equals(String.valueOf(OK.value())); |         return getRmRestWrapper().getStatusCode().equals(String.valueOf(OK.value())); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -26,6 +26,9 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.requests.gscore.api; | 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.jglue.fluentjson.JsonBuilderFactory.buildObject; | ||||||
| import static org.springframework.http.HttpStatus.OK; | import static org.springframework.http.HttpStatus.OK; | ||||||
|  |  | ||||||
| @@ -35,8 +38,6 @@ import io.restassured.builder.RequestSpecBuilder; | |||||||
| import io.restassured.http.ContentType; | import io.restassured.http.ContentType; | ||||||
| import io.restassured.response.Response; | import io.restassured.response.Response; | ||||||
| import io.restassured.specification.RequestSpecification; | 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.AlfrescoHttpClient; | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||||
| @@ -54,24 +55,21 @@ import org.alfresco.utility.model.UserModel; | |||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| // FIXME: As of December 2016 there is no v1-style API for managing RM users and users' | // 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. | // "old-style" API calls. | ||||||
| public class RMUserAPI extends RMModelRequest | public class RMUserAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public RMUserAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public RMUserAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method to obtain {@link AlfrescoHttpClient} |      * Helper method to obtain {@link AlfrescoHttpClient} | ||||||
|  |      * | ||||||
|      * @return Initialized {@link AlfrescoHttpClient} instance |      * @return Initialized {@link AlfrescoHttpClient} instance | ||||||
|      */ |      */ | ||||||
|     private AlfrescoHttpClient getAlfrescoHttpClient() |     private AlfrescoHttpClient getAlfrescoHttpClient() { | ||||||
|     { |  | ||||||
|         RMRestProperties properties = getRmRestWrapper().getRmRestProperties(); |         RMRestProperties properties = getRmRestWrapper().getRmRestProperties(); | ||||||
|  |  | ||||||
|         AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory(); |         AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory(); | ||||||
| @@ -89,117 +87,120 @@ public class RMUserAPI extends RMModelRequest | |||||||
|      * @param userRole User's RM role, one of {@link UserRoles} roles |      * @param userRole User's RM role, one of {@link UserRoles} roles | ||||||
|      * @throws RuntimeException for failed requests |      * @throws RuntimeException for failed requests | ||||||
|      */ |      */ | ||||||
|     public void assignRoleToUser(String userName, String userRole) |     public void assignRoleToUser(String userName, String userRole) { | ||||||
|     { |  | ||||||
|         UserModel adminUser = getRmRestWrapper().getTestUser(); |         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||||
|  |  | ||||||
|         // get an "old-style" REST API client |         // get an "old-style" REST API client | ||||||
|         AlfrescoHttpClient client = getAlfrescoHttpClient(); |         AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||||
|  |  | ||||||
|         // override v1 baseURI and basePath |         // override v1 baseURI and basePath | ||||||
|         RequestSpecification spec = new RequestSpecBuilder() |         RequestSpecification spec = | ||||||
|                 .setBaseUri(client.getApiUrl()) |                 new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build(); | ||||||
|                 .setBasePath("/") |  | ||||||
|                 .build(); |  | ||||||
|  |  | ||||||
|         Response response = given() |         Response response = | ||||||
|                 .spec(spec) |                 given().spec(spec) | ||||||
|                 .log().all() |                         .log() | ||||||
|                 .pathParam("role", userRole) |                         .all() | ||||||
|                 .pathParam("authority", userName) |                         .pathParam("role", userRole) | ||||||
|                 .param("alf_ticket", client.getAlfTicket(adminUser.getUsername(), |                         .pathParam("authority", userName) | ||||||
|                         adminUser.getPassword())) |                         .param( | ||||||
|                 .when() |                                 "alf_ticket", | ||||||
|                 .post("/rm/roles/{role}/authorities/{authority}") |                                 client.getAlfTicket( | ||||||
|                 .prettyPeek() |                                         adminUser.getUsername(), adminUser.getPassword())) | ||||||
|                 .andReturn(); |                         .when() | ||||||
|  |                         .post("/rm/roles/{role}/authorities/{authority}") | ||||||
|  |                         .prettyPeek() | ||||||
|  |                         .andReturn(); | ||||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); |         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method to add permission on a component to user |      * 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 user {@link UserModel} for a user to be granted permission | ||||||
|      * @param permission {@link UserPermissions} to be granted |      * @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(); |         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||||
|  |  | ||||||
|         // get an "old-style" REST API client |         // get an "old-style" REST API client | ||||||
|         AlfrescoHttpClient client = getAlfrescoHttpClient(); |         AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||||
|  |  | ||||||
|         JsonObject bodyJson = buildObject() |         JsonObject bodyJson = | ||||||
|                 .addArray("permissions") |                 buildObject() | ||||||
|                 .addObject() |                         .addArray("permissions") | ||||||
|                 .add("authority", user.getUsername()) |                         .addObject() | ||||||
|                 .add("role", permission.permissionId) |                         .add("authority", user.getUsername()) | ||||||
|                 .end() |                         .add("role", permission.permissionId) | ||||||
|                 .getJson(); |                         .end() | ||||||
|  |                         .getJson(); | ||||||
|  |  | ||||||
|         // override v1 baseURI and basePath |         // override v1 baseURI and basePath | ||||||
|         RequestSpecification spec = new RequestSpecBuilder() |         RequestSpecification spec = | ||||||
|                 .setBaseUri(client.getApiUrl()) |                 new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build(); | ||||||
|                 .setBasePath("/") |  | ||||||
|                 .build(); |  | ||||||
|  |  | ||||||
|         // execute an "old-style" API call |         // execute an "old-style" API call | ||||||
|         Response response = given() |         Response response = | ||||||
|                 .spec(spec) |                 given().spec(spec) | ||||||
|                 .auth().basic(adminUser.getUsername(), adminUser.getPassword()) |                         .auth() | ||||||
|                 .contentType(ContentType.JSON) |                         .basic(adminUser.getUsername(), adminUser.getPassword()) | ||||||
|                 .body(bodyJson.toString()) |                         .contentType(ContentType.JSON) | ||||||
|                 .pathParam("nodeId", filePlanComponentId) |                         .body(bodyJson.toString()) | ||||||
|                 .log().all() |                         .pathParam("nodeId", filePlanComponentId) | ||||||
|                 .when() |                         .log() | ||||||
|                 .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") |                         .all() | ||||||
|                 .prettyPeek() |                         .when() | ||||||
|                 .andReturn(); |                         .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||||
|  |                         .prettyPeek() | ||||||
|  |                         .andReturn(); | ||||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); |         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method to set permission inheritance on a file plan component |      * 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 filePlanComponentId The id of the file plan component on which inherited permission | ||||||
|      * @param isInherited          true if the permission is inherited |      *     should be set | ||||||
|      *                             false if the permission inheritance is disabled |      * @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(); |         final UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||||
|  |  | ||||||
|         // get an "old-style" REST API client |         // get an "old-style" REST API client | ||||||
|         final AlfrescoHttpClient client = getAlfrescoHttpClient(); |         final AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||||
|  |  | ||||||
|         final JsonObject bodyJson = buildObject() |         final JsonObject bodyJson = | ||||||
|                 .addArray("permissions") |                 buildObject() | ||||||
|                 .end() |                         .addArray("permissions") | ||||||
|                 .add("isInherited", isInherited) |                         .end() | ||||||
|                 .getJson(); |                         .add("isInherited", isInherited) | ||||||
|  |                         .getJson(); | ||||||
|  |  | ||||||
|         // override v1 baseURI and basePath |         // override v1 baseURI and basePath | ||||||
|         RequestSpecification spec = new RequestSpecBuilder() |         RequestSpecification spec = | ||||||
|                 .setBaseUri(client.getApiUrl()) |                 new RequestSpecBuilder().setBaseUri(client.getApiUrl()).setBasePath("/").build(); | ||||||
|                 .setBasePath("/") |  | ||||||
|                 .build(); |  | ||||||
|  |  | ||||||
|         // execute an "old-style" API call |         // execute an "old-style" API call | ||||||
|         final Response response = given() |         final Response response = | ||||||
|                 .spec(spec) |                 given().spec(spec) | ||||||
|                 .auth().basic(adminUser.getUsername(), adminUser.getPassword()) |                         .auth() | ||||||
|                 .contentType(ContentType.JSON) |                         .basic(adminUser.getUsername(), adminUser.getPassword()) | ||||||
|                 .body(bodyJson.toString()) |                         .contentType(ContentType.JSON) | ||||||
|                 .pathParam("nodeId", filePlanComponentId) |                         .body(bodyJson.toString()) | ||||||
|                 .log().all() |                         .pathParam("nodeId", filePlanComponentId) | ||||||
|                 .when() |                         .log() | ||||||
|                 .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") |                         .all() | ||||||
|                 .prettyPeek() |                         .when() | ||||||
|                 .andReturn(); |                         .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||||
|  |                         .prettyPeek() | ||||||
|  |                         .andReturn(); | ||||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); |         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates a user with the given name using the old APIs |      * 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 |      * @param userEmail The user's e-mail address | ||||||
|      * @return <code>true</code> if the user was created successfully, <code>false</code> otherwise. |      * @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(); |         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||||
|         final AlfrescoHttpClient client = getAlfrescoHttpClient(); |         final AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||||
|  |  | ||||||
|         JsonObject body = buildObject() |         JsonObject body = | ||||||
|             .add("userName", userName) |                 buildObject() | ||||||
|             .add("firstName", userName) |                         .add("userName", userName) | ||||||
|             .add("lastName", userName) |                         .add("firstName", userName) | ||||||
|             .add("password", userPassword) |                         .add("lastName", userName) | ||||||
|             .add("email", userEmail) |                         .add("password", userPassword) | ||||||
|             .getJson(); |                         .add("email", userEmail) | ||||||
|  |                         .getJson(); | ||||||
|  |  | ||||||
|         final RequestSpecification spec = new RequestSpecBuilder() |         final RequestSpecification spec = | ||||||
|             .setBaseUri(client.getApiUrl()) |                 new RequestSpecBuilder() | ||||||
|             .setBasePath("/") |                         .setBaseUri(client.getApiUrl()) | ||||||
|             .setAuth(basic(adminUser.getUsername(), adminUser.getPassword())) |                         .setBasePath("/") | ||||||
|             .setContentType(ContentType.JSON) |                         .setAuth(basic(adminUser.getUsername(), adminUser.getPassword())) | ||||||
|             .setBody(body.toString()) |                         .setContentType(ContentType.JSON) | ||||||
|             .build(); |                         .setBody(body.toString()) | ||||||
|  |                         .build(); | ||||||
|  |  | ||||||
|         // create POST request to "people" endpoint |         // create POST request to "people" endpoint | ||||||
|         Response response = given() |         Response response = | ||||||
|             .spec(spec) |                 given().spec(spec).log().all().when().post("people").prettyPeek().andReturn(); | ||||||
|             .log().all() |  | ||||||
|         .when() |  | ||||||
|             .post("people") |  | ||||||
|             .prettyPeek() |  | ||||||
|             .andReturn(); |  | ||||||
|  |  | ||||||
|         return (response.getStatusCode() == OK.value()); |         return (response.getStatusCode() == OK.value()); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -49,15 +49,13 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordCategoryAPI extends RMModelRequest | public class RecordCategoryAPI extends RMModelRequest { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Constructor. |      * Constructor. | ||||||
|      * |      * | ||||||
|      * @param rmRestWrapper RM REST Wrapper |      * @param rmRestWrapper RM REST Wrapper | ||||||
|      */ |      */ | ||||||
|     public RecordCategoryAPI(RMRestWrapper rmRestWrapper) |     public RecordCategoryAPI(RMRestWrapper rmRestWrapper) { | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -66,30 +64,25 @@ public class RecordCategoryAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @param recordCategoryId The identifier of a record category |      * @param recordCategoryId The identifier of a record category | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordCategoryId} is not a valid format</li> |      *       <li>{@code recordCategoryId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to delete {@code recordCategoryId}</li> |      *       <li>current user does not have permission to delete {@code recordCategoryId} | ||||||
|      *  <li>{@code recordCategoryId} does not exist</li> |      *       <li>{@code recordCategoryId} does not exist | ||||||
|      *  <li>{@code recordCategoryId} is locked and cannot be deleted</li> |      *       <li>{@code recordCategoryId} is locked and cannot be deleted | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public void deleteRecordCategory(String recordCategoryId) |     public void deleteRecordCategory(String recordCategoryId) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( |         getRmRestWrapper() | ||||||
|                 DELETE, |                 .processEmptyModel( | ||||||
|                 "record-categories/{recordCategoryId}", |                         simpleRequest( | ||||||
|                 recordCategoryId |                                 DELETE, "record-categories/{recordCategoryId}", recordCategoryId)); | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRecordCategory(String, String)} */ | ||||||
|      * see {@link #getRecordCategory(String, String)} |     public RecordCategory getRecordCategory(String recordCategoryId) { | ||||||
|      */ |  | ||||||
|     public RecordCategory getRecordCategory(String recordCategoryId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRecordCategory(recordCategoryId, EMPTY); |         return getRecordCategory(recordCategoryId, EMPTY); | ||||||
| @@ -102,30 +95,31 @@ public class RecordCategoryAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link RecordCategory} for the given {@code recordCategoryId} |      * @return The {@link RecordCategory} for the given {@code recordCategoryId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordCategoryId} is not a valid format</li> |      *       <li>{@code recordCategoryId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code recordCategoryId}</li> |      *       <li>current user does not have permission to read {@code recordCategoryId} | ||||||
|      *  <li>{@code recordCategoryId} does not exist</li> |      *       <li>{@code recordCategoryId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordCategory getRecordCategory(String recordCategoryId, String parameters) |     public RecordCategory getRecordCategory(String recordCategoryId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordCategory.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "record-categories/{recordCategoryId}?{parameters}", |                         RecordCategory.class, | ||||||
|                 recordCategoryId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "record-categories/{recordCategoryId}?{parameters}", | ||||||
|  |                                 recordCategoryId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #updateRecordCategory(RecordCategory, String, String) |      * see {@link #updateRecordCategory(RecordCategory, String, String) | ||||||
|      */ |      */ | ||||||
|     public RecordCategory updateRecordCategory(RecordCategory recordCategoryModel, String recordCategoryId) |     public RecordCategory updateRecordCategory( | ||||||
|     { |             RecordCategory recordCategoryModel, String recordCategoryId) { | ||||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); |         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
| @@ -140,34 +134,35 @@ public class RecordCategoryAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @param returns The updated {@link RecordCategory} |      * @param returns The updated {@link RecordCategory} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code recordCategoryId} is not a valid format or {@code recordCategoryModel} is invalid</li> |      *       <li>the update request is invalid or {@code recordCategoryId} is not a valid format or | ||||||
|      *  <li>authentication fails</li> |      *           {@code recordCategoryModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code recordCategoryId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordCategoryId} does not exist</li> |      *       <li>current user does not have permission to update {@code recordCategoryId} | ||||||
|      *  <li>the updated name clashes with an existing record category in the current parent category</li> |      *       <li>{@code recordCategoryId} does not exist | ||||||
|      *  <li>model integrity exception, including file name with invalid characters</li> |      *       <li>the updated name clashes with an existing record category in the current parent | ||||||
|      * </ul> |      *           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); |         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(recordCategoryModel), |                         RecordCategory.class, | ||||||
|                 "record-categories/{recordCategoryId}?{parameters}", |                         requestWithBody( | ||||||
|                 recordCategoryId, |                                 PUT, | ||||||
|                 parameters |                                 toJson(recordCategoryModel), | ||||||
|         )); |                                 "record-categories/{recordCategoryId}?{parameters}", | ||||||
|  |                                 recordCategoryId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRecordCategoryChildren(String, String)} */ | ||||||
|      * see {@link #getRecordCategoryChildren(String, String)} |     public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId) { | ||||||
|      */ |  | ||||||
|     public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRecordCategoryChildren(recordCategoryId, EMPTY); |         return getRecordCategoryChildren(recordCategoryId, EMPTY); | ||||||
| @@ -180,29 +175,29 @@ public class RecordCategoryAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link RecordCategoryChildCollection} for the given {@code recordCategoryId} |      * @return The {@link RecordCategoryChildCollection} for the given {@code recordCategoryId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code recordCategoryId}</li> |      *       <li>current user does not have permission to read {@code recordCategoryId} | ||||||
|      *  <li>{@code recordCategoryId} does not exist</li> |      *       <li>{@code recordCategoryId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId, String parameters) |     public RecordCategoryChildCollection getRecordCategoryChildren( | ||||||
|     { |             String recordCategoryId, String parameters) { | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(RecordCategoryChildCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "record-categories/{recordCategoryId}/children?{parameters}", |                         RecordCategoryChildCollection.class, | ||||||
|             recordCategoryId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "record-categories/{recordCategoryId}/children?{parameters}", | ||||||
|  |                                 recordCategoryId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #createRecordCategoryChild(RecordCategoryChild, String, String)} */ | ||||||
|      * see {@link #createRecordCategoryChild(RecordCategoryChild, String, String)} |     public RecordCategoryChild createRecordCategoryChild( | ||||||
|      */ |             RecordCategoryChild recordCategoryChildModel, String recordCategoryId) { | ||||||
|     public RecordCategoryChild createRecordCategoryChild(RecordCategoryChild recordCategoryChildModel, String recordCategoryId) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("recordCategoryChildModel", recordCategoryChildModel); |         mandatoryObject("recordCategoryChildModel", recordCategoryChildModel); | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
| @@ -217,26 +212,31 @@ public class RecordCategoryAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The created {@link RecordCategoryChild} |      * @return The created {@link RecordCategoryChild} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordCategoryId} is not a valid format or {@code recordCategoryChildModel} is invalid</li> |      *       <li>{@code recordCategoryId} is not a valid format or {@code recordCategoryChildModel} | ||||||
|      *  <li>authentication fails</li> |      *           is invalid | ||||||
|      *  <li>current user does not have permission to add children to {@code recordCategoryId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordCategoryId} does not exist</li> |      *       <li>current user does not have permission to add children to {@code recordCategoryId} | ||||||
|      *  <li>new name clashes with an existing node in the current parent container</li> |      *       <li>{@code recordCategoryId} does not exist | ||||||
|      *  <li>model integrity exception, including node name with invalid characters</li> |      *       <li>new name clashes with an existing node in the current parent container | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("filePlanComponentProperties", recordCategoryChildModel); | ||||||
|         mandatoryString("recordCategoryId", recordCategoryId); |         mandatoryString("recordCategoryId", recordCategoryId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordCategoryChild.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel( | ||||||
|                 toJson(recordCategoryChildModel), |                         RecordCategoryChild.class, | ||||||
|                 "record-categories/{recordCategoryId}/children?{parameters}", |                         requestWithBody( | ||||||
|                 recordCategoryId, |                                 POST, | ||||||
|                 parameters |                                 toJson(recordCategoryChildModel), | ||||||
|         )); |                                 "record-categories/{recordCategoryId}/children?{parameters}", | ||||||
|  |                                 recordCategoryId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -39,12 +39,9 @@ import static org.springframework.http.HttpMethod.POST; | |||||||
| import static org.springframework.http.HttpMethod.PUT; | import static org.springframework.http.HttpMethod.PUT; | ||||||
| import static org.testng.Assert.fail; | 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.JsonNode; | ||||||
| import com.fasterxml.jackson.databind.ObjectMapper; | import com.fasterxml.jackson.databind.ObjectMapper; | ||||||
|  |  | ||||||
| import io.restassured.builder.RequestSpecBuilder; | import io.restassured.builder.RequestSpecBuilder; | ||||||
| import io.restassured.http.ContentType; | 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.requests.RMModelRequest; | ||||||
| import org.alfresco.rest.rm.community.util.FilePlanComponentMixIn; | 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 |  * Record folder REST API Wrapper | ||||||
|  * |  * | ||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordFolderAPI extends RMModelRequest | public class RecordFolderAPI extends RMModelRequest { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Constructor. |      * Constructor. | ||||||
|      * |      * | ||||||
|      * @param rmRestWrapper RM REST Wrapper |      * @param rmRestWrapper RM REST Wrapper | ||||||
|      */ |      */ | ||||||
|     public RecordFolderAPI(RMRestWrapper rmRestWrapper) |     public RecordFolderAPI(RMRestWrapper rmRestWrapper) { | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -78,30 +77,24 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @param recordFolderId The identifier of a record folder |      * @param recordFolderId The identifier of a record folder | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordFolderId} is not a valid format</li> |      *       <li>{@code recordFolderId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to delete {@code recordFolderId}</li> |      *       <li>current user does not have permission to delete {@code recordFolderId} | ||||||
|      *  <li>{@code recordFolderId} does not exist</li> |      *       <li>{@code recordFolderId} does not exist | ||||||
|      *  <li>{@code recordFolderId} is locked and cannot be deleted</li> |      *       <li>{@code recordFolderId} is locked and cannot be deleted | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public void deleteRecordFolder(String recordFolderId) |     public void deleteRecordFolder(String recordFolderId) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( |         getRmRestWrapper() | ||||||
|                 DELETE, |                 .processEmptyModel( | ||||||
|                 "record-folders/{recordFolderId}", |                         simpleRequest(DELETE, "record-folders/{recordFolderId}", recordFolderId)); | ||||||
|                 recordFolderId |  | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRecordFolder(String, String)} */ | ||||||
|      * see {@link #getRecordFolder(String, String)} |     public RecordFolder getRecordFolder(String recordFolderId) { | ||||||
|      */ |  | ||||||
|     public RecordFolder getRecordFolder(String recordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRecordFolder(recordFolderId, EMPTY); |         return getRecordFolder(recordFolderId, EMPTY); | ||||||
| @@ -114,30 +107,30 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link RecordFolder} for the given {@code recordFolderId} |      * @return The {@link RecordFolder} for the given {@code recordFolderId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordFolderId} is not a valid format</li> |      *       <li>{@code recordFolderId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code recordFolderId}</li> |      *       <li>current user does not have permission to read {@code recordFolderId} | ||||||
|      *  <li>{@code recordFolderId} does not exist</li> |      *       <li>{@code recordFolderId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordFolder getRecordFolder(String recordFolderId, String parameters) |     public RecordFolder getRecordFolder(String recordFolderId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordFolder.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "record-folders/{recordFolderId}?{parameters}", |                         RecordFolder.class, | ||||||
|                 recordFolderId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "record-folders/{recordFolderId}?{parameters}", | ||||||
|  |                                 recordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #updateRecordFolder(RecordFolder, String, String) |      * see {@link #updateRecordFolder(RecordFolder, String, String) | ||||||
|      */ |      */ | ||||||
|     public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId) |     public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId) { | ||||||
|     { |  | ||||||
|         mandatoryObject("recordFolderModel", recordFolderModel); |         mandatoryObject("recordFolderModel", recordFolderModel); | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
| @@ -152,34 +145,35 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @param returns The updated {@link RecordFolder} |      * @param returns The updated {@link RecordFolder} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code recordFolderId} is not a valid format or {@code recordFolderModel} is invalid</li> |      *       <li>the update request is invalid or {@code recordFolderId} is not a valid format or | ||||||
|      *  <li>authentication fails</li> |      *           {@code recordFolderModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code recordFolderId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordFolderId} does not exist</li> |      *       <li>current user does not have permission to update {@code recordFolderId} | ||||||
|      *  <li>the updated name clashes with an existing record folder in the current parent category</li> |      *       <li>{@code recordFolderId} does not exist | ||||||
|      *  <li>model integrity exception, including file name with invalid characters</li> |      *       <li>the updated name clashes with an existing record folder in the current parent | ||||||
|      * </ul> |      *           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); |         mandatoryObject("recordFolderModel", recordFolderModel); | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(RecordFolder.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(recordFolderModel), |                         RecordFolder.class, | ||||||
|                 "record-folders/{recordFolderId}?{parameters}", |                         requestWithBody( | ||||||
|                 recordFolderId, |                                 PUT, | ||||||
|                 parameters |                                 toJson(recordFolderModel), | ||||||
|         )); |                                 "record-folders/{recordFolderId}?{parameters}", | ||||||
|  |                                 recordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRecordFolderChildren(String, String)} */ | ||||||
|      * see {@link #getRecordFolderChildren(String, String)} |     public RecordFolderCollection getRecordFolderChildren(String recordFolderId) { | ||||||
|      */ |  | ||||||
|     public RecordFolderCollection getRecordFolderChildren(String recordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRecordFolderChildren(recordFolderId, EMPTY); |         return getRecordFolderChildren(recordFolderId, EMPTY); | ||||||
| @@ -192,29 +186,28 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link RecordFolderCollection} for the given {@code recordFolderId} |      * @return The {@link RecordFolderCollection} for the given {@code recordFolderId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code recordFolderId}</li> |      *       <li>current user does not have permission to read {@code recordFolderId} | ||||||
|      *  <li>{@code recordFolderId} does not exist</li> |      *       <li>{@code recordFolderId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public RecordFolderCollection getRecordFolderChildren(String recordFolderId, String parameters) |     public RecordFolderCollection getRecordFolderChildren( | ||||||
|     { |             String recordFolderId, String parameters) { | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(RecordFolderCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "record-folders/{recordFolderId}/records?{parameters}", |                         RecordFolderCollection.class, | ||||||
|             recordFolderId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "record-folders/{recordFolderId}/records?{parameters}", | ||||||
|  |                                 recordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #createRecord(Record, String, String)} */ | ||||||
|      * see {@link #createRecord(Record, String, String)} |     public Record createRecord(Record recordModel, String recordFolderId) { | ||||||
|      */ |  | ||||||
|     public Record createRecord(Record recordModel, String recordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("recordModel", recordModel); |         mandatoryObject("recordModel", recordModel); | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
| @@ -225,19 +218,19 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|      * Create a record from file resource |      * Create a record from file resource | ||||||
|      * |      * | ||||||
|      * @param recordModel {@link Record} for electronic record to be created |      * @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 |      * @param recordFolderId The identifier of a record folder | ||||||
|      * @return newly created {@link Record} |      * @return newly created {@link Record} | ||||||
|      * @throws RuntimeException for invalid recordModel JSON strings |      * @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); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|         mandatoryObject("recordContent", recordContent); |         mandatoryObject("recordContent", recordContent); | ||||||
|         mandatoryObject("recordModel", recordModel); |         mandatoryObject("recordModel", recordModel); | ||||||
|  |  | ||||||
|         if (!recordModel.getNodeType().equals(CONTENT_TYPE)) |         if (!recordModel.getNodeType().equals(CONTENT_TYPE)) { | ||||||
|         { |  | ||||||
|             fail("Only electronic records are supported"); |             fail("Only electronic records are supported"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -247,18 +240,20 @@ public class RecordFolderAPI extends RMModelRequest | |||||||
|          */ |          */ | ||||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); |         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||||
|         JsonNode root; |         JsonNode root; | ||||||
|         try |         try { | ||||||
|         { |             root = | ||||||
|             root = new ObjectMapper().readTree(toJson(recordModel, Record.class, FilePlanComponentMixIn.class)); |                     new ObjectMapper() | ||||||
|         } |                             .readTree( | ||||||
|         catch (IOException e) |                                     toJson( | ||||||
|         { |                                             recordModel, | ||||||
|  |                                             Record.class, | ||||||
|  |                                             FilePlanComponentMixIn.class)); | ||||||
|  |         } catch (IOException e) { | ||||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); |             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||||
|         } |         } | ||||||
|         // add request fields |         // add request fields | ||||||
|         Iterator<String> fieldNames = root.fieldNames(); |         Iterator<String> fieldNames = root.fieldNames(); | ||||||
|         while (fieldNames.hasNext()) |         while (fieldNames.hasNext()) { | ||||||
|         { |  | ||||||
|             String fieldName = fieldNames.next(); |             String fieldName = fieldNames.next(); | ||||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); |             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> |      *  <li>model integrity exception, including node name with invalid characters</li> | ||||||
|      * </ul> |      * </ul> | ||||||
|      */ |      */ | ||||||
|     public Record createRecord(Record recordModel, String recordFolderId, String parameters) |     public Record createRecord(Record recordModel, String recordFolderId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryObject("recordModel", recordModel); |         mandatoryObject("recordModel", recordModel); | ||||||
|         mandatoryString("recordFolderId", recordFolderId); |         mandatoryString("recordFolderId", recordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel( | ||||||
|                 toJson(recordModel), |                         Record.class, | ||||||
|                 "record-folders/{recordFolderId}/records?{parameters}", |                         requestWithBody( | ||||||
|                 recordFolderId, |                                 POST, | ||||||
|                 parameters |                                 toJson(recordModel), | ||||||
|         )); |                                 "record-folders/{recordFolderId}/records?{parameters}", | ||||||
|  |                                 recordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -37,27 +37,22 @@ import static org.springframework.http.HttpMethod.GET; | |||||||
| import static org.springframework.http.HttpMethod.POST; | import static org.springframework.http.HttpMethod.POST; | ||||||
| import static org.springframework.http.HttpMethod.PUT; | import static org.springframework.http.HttpMethod.PUT; | ||||||
|  |  | ||||||
|  | import io.restassured.response.ResponseBody; | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.RMRestWrapper; | import org.alfresco.rest.core.RMRestWrapper; | ||||||
| import org.alfresco.rest.rm.community.model.record.Record; | import org.alfresco.rest.rm.community.model.record.Record; | ||||||
| import org.alfresco.rest.rm.community.model.record.RecordBodyFile; | import org.alfresco.rest.rm.community.model.record.RecordBodyFile; | ||||||
| import org.alfresco.rest.rm.community.requests.RMModelRequest; | import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||||
|  |  | ||||||
| import io.restassured.response.ResponseBody; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Records REST API Wrapper |  * Records REST API Wrapper | ||||||
|  * |  * | ||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class RecordsAPI extends RMModelRequest | public class RecordsAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public RecordsAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public RecordsAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -67,42 +62,40 @@ public class RecordsAPI extends RMModelRequest | |||||||
|      * @param recordId The id of the electronic record |      * @param recordId The id of the electronic record | ||||||
|      * @return {@link ResponseBody} representing content for the given record id |      * @return {@link ResponseBody} representing content for the given record id | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      * <li>{@code recordId} has no content</li> |      *       <li>{@code recordId} has no content | ||||||
|      * <li> {@code recordId} is not a valid format, or is not a record</li> |      *       <li>{@code recordId} is not a valid format, or is not a record | ||||||
|      * <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      * <li>{@code recordId} does not exist</li> |      *       <li>{@code recordId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public ResponseBody<?> getRecordContent(String recordId) |     public ResponseBody<?> getRecordContent(String recordId) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper() |         return getRmRestWrapper() | ||||||
|             .processHtmlResponse(simpleRequest(GET,"records/{recordId}/content", recordId)) |                 .processHtmlResponse(simpleRequest(GET, "records/{recordId}/content", recordId)) | ||||||
|             .getBody(); |                 .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 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 |      * @return The {@link Record} with the given properties | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is not a record</li> |      *       <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is | ||||||
|      *  <li>authentication fails</li> |      *           not a record | ||||||
|      *  <li>current user does not have permission to file to {@code fileplanComponentId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordId} does not exist</li> |      *       <li>current user does not have permission to file to {@code fileplanComponentId} | ||||||
|      *  <li>targetParentId from recordBodyFile does not exist</li> |      *       <li>{@code recordId} does not exist | ||||||
|      *  <li>model integrity exception: the action breaks system's integrity restrictions</li> |      *       <li>targetParentId from recordBodyFile does not exist | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("recordBodyFile", recordBodyFile); | ||||||
|         mandatoryString("recordId", recordId); |         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 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 |      * @return The {@link Record} with the given properties | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is not a record</li> |      *       <li>Invalid parameter: {@code recordBodyFile} is not a valid format,{@code recordId} is | ||||||
|      *  <li>authentication fails</li> |      *           not a record | ||||||
|      *  <li>current user does not have permission to file to {@code fileplanComponentId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordId} does not exist</li> |      *       <li>current user does not have permission to file to {@code fileplanComponentId} | ||||||
|      *  <li>targetParentId from recordBodyFile does not exist</li> |      *       <li>{@code recordId} does not exist | ||||||
|      *  <li>model integrity exception: the action breaks system's integrity restrictions</li> |      *       <li>targetParentId from recordBodyFile does not exist | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("requestBodyFile", recordBodyFile); | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|             POST, |                 .processModel( | ||||||
|             toJson(recordBodyFile), |                         Record.class, | ||||||
|             "/records/{recordId}/file?{parameters}", |                         requestWithBody( | ||||||
|             recordId, |                                 POST, | ||||||
|             parameters |                                 toJson(recordBodyFile), | ||||||
|         )); |                                 "/records/{recordId}/file?{parameters}", | ||||||
|  |                                 recordId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #completeRecord(String, String) |      * see {@link #completeRecord(String, String) | ||||||
|      */ |      */ | ||||||
|     public Record completeRecord(String recordId) |     public Record completeRecord(String recordId) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return completeRecord(recordId, EMPTY); |         return completeRecord(recordId, EMPTY); | ||||||
| @@ -156,55 +150,48 @@ public class RecordsAPI extends RMModelRequest | |||||||
|      * @param recordId The id of the record to complete |      * @param recordId The id of the record to complete | ||||||
|      * @return The completed {@link Record} with the given properties |      * @return The completed {@link Record} with the given properties | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      *                   <ul> |      *     <ul> | ||||||
|      *                   <li>Invalid parameter: {@code recordId} is not a record</li> |      *       <li>Invalid parameter: {@code recordId} is not a record | ||||||
|      *                   <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *                   <li>current user does not have permission to complete {@code recordId}</li> |      *       <li>current user does not have permission to complete {@code recordId} | ||||||
|      *                   <li>{@code recordId} does not exist or is frozen</li> |      *       <li>{@code recordId} does not exist or is frozen | ||||||
|      *                   <li>model integrity exception: the record is already completed</li> |      *       <li>model integrity exception: the record is already completed | ||||||
|      *                   <li>model integrity exception: the record has missing meta-data</li> |      *       <li>model integrity exception: the record has missing meta-data | ||||||
|      *                   </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public Record completeRecord(String recordId, String parameters) |     public Record completeRecord(String recordId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             POST, |                 .processModel( | ||||||
|             "/records/{recordId}/complete?{parameters}", |                         Record.class, | ||||||
|             recordId, |                         simpleRequest( | ||||||
|             parameters |                                 POST, | ||||||
|         )); |                                 "/records/{recordId}/complete?{parameters}", | ||||||
|  |                                 recordId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Deletes a record. |      * Deletes a record. | ||||||
|      * |      * | ||||||
|      * @param recordId The identifier of a record |      * @param recordId The identifier of a record | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordId} is not a valid format</li> |      *       <li>{@code recordId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to delete {@code recordId}</li> |      *       <li>current user does not have permission to delete {@code recordId} | ||||||
|      *  <li>{@code recordId} does not exist</li> |      *       <li>{@code recordId} does not exist | ||||||
|      *  <li>{@code recordId} is locked and cannot be deleted</li> |      *       <li>{@code recordId} is locked and cannot be deleted | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public void deleteRecord(String recordId) |     public void deleteRecord(String recordId) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( |         getRmRestWrapper().processEmptyModel(simpleRequest(DELETE, "records/{recordId}", recordId)); | ||||||
|                 DELETE, |  | ||||||
|                 "records/{recordId}", |  | ||||||
|                 recordId |  | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getRecord(String, String)} */ | ||||||
|      * see {@link #getRecord(String, String)} |     public Record getRecord(String recordId) { | ||||||
|      */ |  | ||||||
|     public Record getRecord(String recordId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRecord(recordId, EMPTY); |         return getRecord(recordId, EMPTY); | ||||||
| @@ -217,30 +204,27 @@ public class RecordsAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link Record} for the given {@code recordId} |      * @return The {@link Record} for the given {@code recordId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code recordId} is not a valid format</li> |      *       <li>{@code recordId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code recordId}</li> |      *       <li>current user does not have permission to read {@code recordId} | ||||||
|      *  <li>{@code recordId} does not exist</li> |      *       <li>{@code recordId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public Record getRecord(String recordId, String parameters) |     public Record getRecord(String recordId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "records/{recordId}?{parameters}", |                         Record.class, | ||||||
|                 recordId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, "records/{recordId}?{parameters}", recordId, parameters)); | ||||||
|         )); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #updateRecord(Record, String, String) |      * see {@link #updateRecord(Record, String, String) | ||||||
|      */ |      */ | ||||||
|     public Record updateRecord(Record recordModel, String recordId) |     public Record updateRecord(Record recordModel, String recordId) { | ||||||
|     { |  | ||||||
|         mandatoryObject("recordModel", recordModel); |         mandatoryObject("recordModel", recordModel); | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
| @@ -255,26 +239,28 @@ public class RecordsAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The updated {@link Record} |      * @return The updated {@link Record} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code recordId} is not a valid format or {@code recordModel} is invalid</li> |      *       <li>the update request is invalid or {@code recordId} is not a valid format or {@code | ||||||
|      *  <li>authentication fails</li> |      *           recordModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code recordId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code recordId} does not exist</li> |      *       <li>current user does not have permission to update {@code recordId} | ||||||
|      *  <li>the updated name clashes with an existing record in the current parent folder</li> |      *       <li>{@code recordId} does not exist | ||||||
|      *  <li>model integrity exception, including file name with invalid characters</li> |      *       <li>the updated name clashes with an existing record in the current parent folder | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("recordModel", recordModel); | ||||||
|         mandatoryString("recordId", recordId); |         mandatoryString("recordId", recordId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(recordModel), |                         Record.class, | ||||||
|                 "records/{recordId}?{parameters}", |                         requestWithBody( | ||||||
|                 recordId, |                                 PUT, | ||||||
|                 parameters |                                 toJson(recordModel), | ||||||
|         )); |                                 "records/{recordId}?{parameters}", | ||||||
|  |                                 recordId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -43,21 +43,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Silviu Dinuta |  * @author Silviu Dinuta | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class TransferAPI extends RMModelRequest | public class TransferAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public TransferAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public TransferAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getTransfer(String, String)} */ | ||||||
|      * see {@link #getTransfer(String, String)} |     public Transfer getTransfer(String transferId) { | ||||||
|      */ |  | ||||||
|     public Transfer getTransfer(String transferId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("transferId", transferId); |         mandatoryString("transferId", transferId); | ||||||
|  |  | ||||||
|         return getTransfer(transferId, EMPTY); |         return getTransfer(transferId, EMPTY); | ||||||
| @@ -70,29 +63,27 @@ public class TransferAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link Transfer} for the given {@code transferId} |      * @return The {@link Transfer} for the given {@code transferId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code transferId} is not a valid format</li> |      *       <li>{@code transferId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code transferId}</li> |      *       <li>current user does not have permission to read {@code transferId} | ||||||
|      *  <li>{@code transferId} does not exist</li> |      *       <li>{@code transferId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public Transfer getTransfer(String transferId, String parameters) |     public Transfer getTransfer(String transferId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("transferId", transferId); |         mandatoryString("transferId", transferId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(Transfer.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "/transfers/{transferId}?{parameters}", |                         Transfer.class, | ||||||
|                 transferId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "/transfers/{transferId}?{parameters}", | ||||||
|  |                                 transferId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|     /** |     /** see {@link #getTransfersChildren(String, String)} */ | ||||||
|      * see {@link #getTransfersChildren(String, String)} |     public TransferChildCollection getTransfersChildren(String transferId) { | ||||||
|      */ |  | ||||||
|     public TransferChildCollection getTransfersChildren(String transferId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("transferId", transferId); |         mandatoryString("transferId", transferId); | ||||||
|  |  | ||||||
|         return getTransfersChildren(transferId, EMPTY); |         return getTransfersChildren(transferId, EMPTY); | ||||||
| @@ -105,21 +96,22 @@ public class TransferAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link TransferChildCollection} for the given {@code transferId} |      * @return The {@link TransferChildCollection} for the given {@code transferId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code transferId}</li> |      *       <li>current user does not have permission to read {@code transferId} | ||||||
|      *  <li>{@code filePlanId} does not exist</li> |      *       <li>{@code filePlanId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public TransferChildCollection getTransfersChildren(String transferId, String parameters) |     public TransferChildCollection getTransfersChildren(String transferId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("transferId", transferId); |         mandatoryString("transferId", transferId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(TransferChildCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "transfers/{filePlanId}/children?{parameters}", |                         TransferChildCollection.class, | ||||||
|             transferId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "transfers/{filePlanId}/children?{parameters}", | ||||||
|  |                                 transferId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -47,21 +47,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | |||||||
|  * @author Silviu Dinuta |  * @author Silviu Dinuta | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class TransferContainerAPI extends RMModelRequest | public class TransferContainerAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public TransferContainerAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public TransferContainerAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getTransferContainer(String, String)} */ | ||||||
|      * see {@link #getTransferContainer(String, String)} |     public TransferContainer getTransferContainer(String transferContainerId) { | ||||||
|      */ |  | ||||||
|     public TransferContainer getTransferContainer(String transferContainerId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
|         return getTransferContainer(transferContainerId, EMPTY); |         return getTransferContainer(transferContainerId, EMPTY); | ||||||
| @@ -74,30 +67,31 @@ public class TransferContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link TransferContainer} for the given {@code transferContainerId} |      * @return The {@link TransferContainer} for the given {@code transferContainerId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code transferContainerId} is not a valid format</li> |      *       <li>{@code transferContainerId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code transferContainerId}</li> |      *       <li>current user does not have permission to read {@code transferContainerId} | ||||||
|      *  <li>{@code transferContainerId} does not exist</li> |      *       <li>{@code transferContainerId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public TransferContainer getTransferContainer(String transferContainerId, String parameters) |     public TransferContainer getTransferContainer(String transferContainerId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(TransferContainer.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "/transfer-containers/{transferContainerId}?{parameters}", |                         TransferContainer.class, | ||||||
|                 transferContainerId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "/transfer-containers/{transferContainerId}?{parameters}", | ||||||
|  |                                 transferContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * see {@link #updateTransferContainer(TransferContainer, String, String) |      * see {@link #updateTransferContainer(TransferContainer, String, String) | ||||||
|      */ |      */ | ||||||
|     public TransferContainer updateTransferContainer(TransferContainer transferContainerModel, String transferContainerId) |     public TransferContainer updateTransferContainer( | ||||||
|     { |             TransferContainer transferContainerModel, String transferContainerId) { | ||||||
|         mandatoryObject("transferContainerModel", transferContainerModel); |         mandatoryObject("transferContainerModel", transferContainerModel); | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
| @@ -112,34 +106,38 @@ public class TransferContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @param returns The updated {@link TransferContainer} |      * @param returns The updated {@link TransferContainer} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code transferContainerId} is not a valid format or {@code transferContainerModel} is invalid</li> |      *       <li>the update request is invalid or {@code transferContainerId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *           or {@code transferContainerModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code transferContainerId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code transferContainerId} does not exist</li> |      *       <li>current user does not have permission to update {@code transferContainerId} | ||||||
|      *  <li>the updated name clashes with an existing transfer container in the current file plan</li> |      *       <li>{@code transferContainerId} does not exist | ||||||
|      *  <li>model integrity exception, including transfer container name with invalid characters</li> |      *       <li>the updated name clashes with an existing transfer container in the current file | ||||||
|      * </ul> |      *           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); |         mandatoryObject("transferContainerModel", transferContainerModel); | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(TransferContainer.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(transferContainerModel), |                         TransferContainer.class, | ||||||
|                 "transfer-containers/{transferContainerId}?{parameters}", |                         requestWithBody( | ||||||
|                 transferContainerId, |                                 PUT, | ||||||
|                 parameters |                                 toJson(transferContainerModel), | ||||||
|         )); |                                 "transfer-containers/{transferContainerId}?{parameters}", | ||||||
|  |                                 transferContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getTransfers(String, String)} */ | ||||||
|      * see {@link #getTransfers(String, String)} |     public TransferCollection getTransfers(String transferContainerId) { | ||||||
|      */ |  | ||||||
|     public TransferCollection getTransfers(String transferContainerId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
|         return getTransfers(transferContainerId, EMPTY); |         return getTransfers(transferContainerId, EMPTY); | ||||||
| @@ -152,21 +150,22 @@ public class TransferContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link TransferCollection} for the given {@code transferContainerId} |      * @return The {@link TransferCollection} for the given {@code transferContainerId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code transferContainerId}</li> |      *       <li>current user does not have permission to read {@code transferContainerId} | ||||||
|      *  <li>{@code filePlanId} does not exist</li> |      *       <li>{@code filePlanId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public TransferCollection getTransfers(String transferContainerId, String parameters) |     public TransferCollection getTransfers(String transferContainerId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("transferContainerId", transferContainerId); |         mandatoryString("transferContainerId", transferContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(TransferCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "transfer-containers/{filePlanId}/transfers?{parameters}", |                         TransferCollection.class, | ||||||
|             transferContainerId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "transfer-containers/{filePlanId}/transfers?{parameters}", | ||||||
|  |                                 transferContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -38,10 +38,6 @@ import static org.springframework.http.HttpMethod.POST; | |||||||
| import static org.springframework.http.HttpMethod.PUT; | import static org.springframework.http.HttpMethod.PUT; | ||||||
| import static org.testng.Assert.fail; | 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.JsonNode; | ||||||
| import com.fasterxml.jackson.databind.ObjectMapper; | 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.requests.RMModelRequest; | ||||||
| import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin; | 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 |  * Unfiled Container REST API Wrapper | ||||||
|  * |  * | ||||||
| @@ -62,21 +62,14 @@ import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin; | |||||||
|  * @author Ana Bozianu |  * @author Ana Bozianu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class UnfiledContainerAPI extends RMModelRequest | public class UnfiledContainerAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public UnfiledContainerAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public UnfiledContainerAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getUnfiledContainer(String, String)} */ | ||||||
|      * see {@link #getUnfiledContainer(String, String)} |     public UnfiledContainer getUnfiledContainer(String unfiledContainerId) { | ||||||
|      */ |  | ||||||
|     public UnfiledContainer getUnfiledContainer(String unfiledContainerId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getUnfiledContainer(unfiledContainerId, EMPTY); |         return getUnfiledContainer(unfiledContainerId, EMPTY); | ||||||
| @@ -89,30 +82,28 @@ public class UnfiledContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link UnfiledContainer} for the given {@code unfiledContainerId} |      * @return The {@link UnfiledContainer} for the given {@code unfiledContainerId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code unfiledContainerId} is not a valid format</li> |      *       <li>{@code unfiledContainerId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code unfiledContainerId}</li> |      *       <li>current user does not have permission to read {@code unfiledContainerId} | ||||||
|      *  <li>{@code unfiledContainerId} does not exist</li> |      *       <li>{@code unfiledContainerId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public UnfiledContainer getUnfiledContainer(String unfiledContainerId, String parameters) |     public UnfiledContainer getUnfiledContainer(String unfiledContainerId, String parameters) { | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledContainer.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "unfiled-containers/{unfiledContainerId}?{parameters}", |                         UnfiledContainer.class, | ||||||
|                 unfiledContainerId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||||
|  |                                 unfiledContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getUnfiledContainerChildren(String)} (String, String)} */ | ||||||
|      * see {@link #getUnfiledContainerChildren(String)} (String, String)} |     public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId) { | ||||||
|      */ |  | ||||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getUnfiledContainerChildren(unfiledContainerId, EMPTY); |         return getUnfiledContainerChildren(unfiledContainerId, EMPTY); | ||||||
| @@ -125,29 +116,29 @@ public class UnfiledContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link UnfiledContainerChildCollection} for the given {@code unfiledContainerId} |      * @return The {@link UnfiledContainerChildCollection} for the given {@code unfiledContainerId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code unfiledContainerId}</li> |      *       <li>current user does not have permission to read {@code unfiledContainerId} | ||||||
|      *  <li>{@code unfiledContainerId} does not exist</li> |      *       <li>{@code unfiledContainerId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId, String parameters) |     public UnfiledContainerChildCollection getUnfiledContainerChildren( | ||||||
|     { |             String unfiledContainerId, String parameters) { | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "unfiled-containers/{unfiledContainerId}/children?{parameters}", |                         UnfiledContainerChildCollection.class, | ||||||
|             unfiledContainerId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||||
|  |                                 unfiledContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #createUnfiledContainerChild(UnfiledContainerChild, String, String)} */ | ||||||
|      * see {@link #createUnfiledContainerChild(UnfiledContainerChild, String, String)} |     public UnfiledContainerChild createUnfiledContainerChild( | ||||||
|      */ |             UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId) { | ||||||
|     public UnfiledContainerChild createUnfiledContainerChild(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); |         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         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. |      * 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 unfiledContainerId The identifier of an unfiled container | ||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The created {@link UnfiledContainerChild} |      * @return The created {@link UnfiledContainerChild} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code unfiledContainerId} is not a valid format or {@code unfiledContainerChildModel} is invalid</li> |      *       <li>{@code unfiledContainerId} is not a valid format or {@code | ||||||
|      *  <li>authentication fails</li> |      *           unfiledContainerChildModel} is invalid | ||||||
|      *  <li>current user does not have permission to add children to {@code unfiledContainerId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code unfiledContainerId} does not exist</li> |      *       <li>current user does not have permission to add children to {@code unfiledContainerId} | ||||||
|      *  <li>new name clashes with an existing node in the current parent container</li> |      *       <li>{@code unfiledContainerId} does not exist | ||||||
|      *  <li>model integrity exception, including node name with invalid characters</li> |      *       <li>new name clashes with an existing node in the current parent container | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel( | ||||||
|                 toJson(unfiledContainerChildModel), |                         UnfiledContainerChild.class, | ||||||
|                 "unfiled-containers/{unfiledContainerId}/children?{parameters}", |                         requestWithBody( | ||||||
|                 unfiledContainerId, |                                 POST, | ||||||
|                 parameters |                                 toJson(unfiledContainerChildModel), | ||||||
|         )); |                                 "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||||
|  |                                 unfiledContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create a record from file resource |      * Create a record from file resource | ||||||
|      * |      * | ||||||
|      * @param unfiledContainerChildModel {@link UnfiledContainerChild} for electronic record to be created |      * @param unfiledContainerChildModel {@link UnfiledContainerChild} for electronic record to be | ||||||
|      * @param unfiledContainerChildContent {@link File} pointing to the content of the electronic record to be created |      *     created | ||||||
|  |      * @param unfiledContainerChildContent {@link File} pointing to the content of the electronic | ||||||
|  |      *     record to be created | ||||||
|      * @param unfiledContainerId The identifier of a unfiled container |      * @param unfiledContainerId The identifier of a unfiled container | ||||||
|      * @return newly created {@link UnfiledContainerChild} |      * @return newly created {@link UnfiledContainerChild} | ||||||
|      * @throws RuntimeException for invalid recordModel JSON strings |      * @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("unfiledContainerChildModel", unfiledContainerChildModel); | ||||||
|         mandatoryObject("unfiledContainerChildContent", unfiledContainerChildContent); |         mandatoryObject("unfiledContainerChildContent", unfiledContainerChildContent); | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE)) |         if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE)) { | ||||||
|         { |  | ||||||
|             fail("Only electronic records are supported"); |             fail("Only electronic records are supported"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -211,18 +211,20 @@ public class UnfiledContainerAPI extends RMModelRequest | |||||||
|          */ |          */ | ||||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); |         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||||
|         JsonNode root; |         JsonNode root; | ||||||
|         try |         try { | ||||||
|         { |             root = | ||||||
|             root = new ObjectMapper().readTree(toJson(unfiledContainerChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class)); |                     new ObjectMapper() | ||||||
|         } |                             .readTree( | ||||||
|         catch (IOException e) |                                     toJson( | ||||||
|         { |                                             unfiledContainerChildModel, | ||||||
|  |                                             UnfiledContainerChild.class, | ||||||
|  |                                             UnfiledContainerChildMixin.class)); | ||||||
|  |         } catch (IOException e) { | ||||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); |             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||||
|         } |         } | ||||||
|         // add request fields |         // add request fields | ||||||
|         Iterator<String> fieldNames = root.fieldNames(); |         Iterator<String> fieldNames = root.fieldNames(); | ||||||
|         while (fieldNames.hasNext()) |         while (fieldNames.hasNext()) { | ||||||
|         { |  | ||||||
|             String fieldName = fieldNames.next(); |             String fieldName = fieldNames.next(); | ||||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); |             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) |      * see {@link #updateUnfiledContainer(UnfiledContainer, String, String) | ||||||
|      */ |      */ | ||||||
|     public UnfiledContainer updateUnfiledContainer(UnfiledContainer unfiledContainerModel, String unfiledContainerId) |     public UnfiledContainer updateUnfiledContainer( | ||||||
|     { |             UnfiledContainer unfiledContainerModel, String unfiledContainerId) { | ||||||
|         mandatoryObject("unfiledContainerModel", unfiledContainerModel); |         mandatoryObject("unfiledContainerModel", unfiledContainerModel); | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
| @@ -251,27 +253,30 @@ public class UnfiledContainerAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @param returns The updated {@link UnfiledContainer} |      * @param returns The updated {@link UnfiledContainer} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code unfiledContainerId} is not a valid format or {@code unfiledContainerModel} is invalid</li> |      *       <li>the update request is invalid or {@code unfiledContainerId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *           or {@code unfiledContainerModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code unfiledContainerId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code unfiledContainerId} does not exist</li> |      *       <li>current user does not have permission to update {@code unfiledContainerId} | ||||||
|      *  <li>the updated name clashes with an existing root category of special container in the current fileplan</li> |      *       <li>{@code unfiledContainerId} does not exist | ||||||
|      *  <li>model integrity exception, including file name with invalid characters</li> |      *       <li>the updated name clashes with an existing root category of special container in the | ||||||
|      * </ul> |      *           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); |         mandatoryObject("unfiledContainerModel", unfiledContainerModel); | ||||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); |         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledContainer.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(unfiledContainerModel), |                         UnfiledContainer.class, | ||||||
|                 "unfiled-containers/{unfiledContainerId}?{parameters}", |                         requestWithBody( | ||||||
|                 unfiledContainerId, |                                 PUT, | ||||||
|                 parameters |                                 toJson(unfiledContainerModel), | ||||||
|         )); |                                 "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||||
|  |                                 unfiledContainerId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -39,12 +39,9 @@ import static org.springframework.http.HttpMethod.POST; | |||||||
| import static org.springframework.http.HttpMethod.PUT; | import static org.springframework.http.HttpMethod.PUT; | ||||||
| import static org.testng.Assert.fail; | 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.JsonNode; | ||||||
| import com.fasterxml.jackson.databind.ObjectMapper; | import com.fasterxml.jackson.databind.ObjectMapper; | ||||||
|  |  | ||||||
| import io.restassured.builder.RequestSpecBuilder; | import io.restassured.builder.RequestSpecBuilder; | ||||||
| import io.restassured.http.ContentType; | 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.requests.RMModelRequest; | ||||||
| import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin; | 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 |  * Unfiled Record Folders REST API Wrapper | ||||||
|  * |  * | ||||||
|  * @author Ramona Popa |  * @author Ramona Popa | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class UnfiledRecordFolderAPI extends RMModelRequest | public class UnfiledRecordFolderAPI extends RMModelRequest { | ||||||
| { |     /** @param rmRestWrapper RM REST Wrapper */ | ||||||
|     /** |     public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper) { | ||||||
|      * @param rmRestWrapper RM REST Wrapper |  | ||||||
|      */ |  | ||||||
|     public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper) |  | ||||||
|     { |  | ||||||
|         super(rmRestWrapper); |         super(rmRestWrapper); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getUnfiledRecordFolder(String, String)} */ | ||||||
|      * see {@link #getUnfiledRecordFolder(String, String)} |     public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId) { | ||||||
|      */ |  | ||||||
|     public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getUnfiledRecordFolder(unfiledRecordFolderId, EMPTY); |         return getUnfiledRecordFolder(unfiledRecordFolderId, EMPTY); | ||||||
| @@ -88,30 +82,30 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The {@link UnfiledRecordFolder} for the given {@code unfiledRecordFolderId} |      * @return The {@link UnfiledRecordFolder} for the given {@code unfiledRecordFolderId} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code unfiledRecordFolderId} is not a valid format</li> |      *       <li>{@code unfiledRecordFolderId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code unfiledRecordFolderId}</li> |      *       <li>current user does not have permission to read {@code unfiledRecordFolderId} | ||||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> |      *       <li>{@code unfiledRecordFolderId} does not exist | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId, String parameters) |     public UnfiledRecordFolder getUnfiledRecordFolder( | ||||||
|     { |             String unfiledRecordFolderId, String parameters) { | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledRecordFolder.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|                 GET, |                 .processModel( | ||||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", |                         UnfiledRecordFolder.class, | ||||||
|                 unfiledRecordFolderId, |                         simpleRequest( | ||||||
|                 parameters |                                 GET, | ||||||
|         )); |                                 "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", | ||||||
|  |                                 unfiledRecordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #getUnfiledRecordFolderChildren(String, String)} */ | ||||||
|      * see {@link #getUnfiledRecordFolderChildren(String, String)} |     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren( | ||||||
|      */ |             String unfiledRecordFolderId) { | ||||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getUnfiledRecordFolderChildren(unfiledRecordFolderId, EMPTY); |         return getUnfiledRecordFolderChildren(unfiledRecordFolderId, EMPTY); | ||||||
| @@ -122,85 +116,97 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | |||||||
|      * |      * | ||||||
|      * @param unfiledRecordFolderId The identifier of an unfiled records folder |      * @param unfiledRecordFolderId The identifier of an unfiled records folder | ||||||
|      * @param parameters The URL parameters to add |      * @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: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to read {@code unfiledRecordFolderId}</li> |      *       <li>current user does not have permission to read {@code unfiledRecordFolderId} | ||||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> |      *       <li>{@code unfiledRecordFolderId} does not exist | ||||||
|      *</ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId, String parameters) |     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren( | ||||||
|     { |             String unfiledRecordFolderId, String parameters) { | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest( |         return getRmRestWrapper() | ||||||
|             GET, |                 .processModels( | ||||||
|             "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", |                         UnfiledContainerChildCollection.class, | ||||||
|             unfiledRecordFolderId, |                         simpleRequest( | ||||||
|             parameters |                                 GET, | ||||||
|         )); |                                 "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||||
|  |                                 unfiledRecordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** see {@link #createUnfiledRecordFolderChild(UnfiledContainerChild, String, String)} */ | ||||||
|      * see {@link #createUnfiledRecordFolderChild(UnfiledContainerChild, String, String)} |     public UnfiledContainerChild createUnfiledRecordFolderChild( | ||||||
|      */ |             UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId) { | ||||||
|     public UnfiledContainerChild createUnfiledRecordFolderChild(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); |         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         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. |      * 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 unfiledRecordFolderId The identifier of an unfiled folder | ||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @return The created {@link UnfiledRecordFolderChild} |      * @return The created {@link UnfiledRecordFolderChild} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code unfiledRecordFolderId} is not a valid format or {@code unfiledRecordFolderChildModel} is invalid</li> |      *       <li>{@code unfiledRecordFolderId} is not a valid format or {@code | ||||||
|      *  <li>authentication fails</li> |      *           unfiledRecordFolderChildModel} is invalid | ||||||
|      *  <li>current user does not have permission to add children to {@code unfiledRecordFolderId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> |      *       <li>current user does not have permission to add children to {@code | ||||||
|      *  <li>new name clashes with an existing node in the current parent container</li> |      *           unfiledRecordFolderId} | ||||||
|      *  <li>model integrity exception, including node name with invalid characters</li> |      *       <li>{@code unfiledRecordFolderId} does not exist | ||||||
|      * </ul> |      *       <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); |         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 POST, |                 .processModel( | ||||||
|                 toJson(unfiledRecordFolderChildModel), |                         UnfiledContainerChild.class, | ||||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", |                         requestWithBody( | ||||||
|                 unfiledRecordFolderId, |                                 POST, | ||||||
|                 parameters |                                 toJson(unfiledRecordFolderChildModel), | ||||||
|         )); |                                 "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||||
|  |                                 unfiledRecordFolderId, | ||||||
|  |                                 parameters)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create a record from file resource |      * Create a record from file resource | ||||||
|      * |      * | ||||||
|      * @param unfiledRecordFolderChildModel {@link UnfiledContainerChild} for electronic record to be created |      * @param unfiledRecordFolderChildModel {@link UnfiledContainerChild} for electronic record to | ||||||
|      * @param unfiledRecordFolderChildContent {@link File} pointing to the content of the electronic record to be created |      *     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 |      * @param unfiledRecordFolderId The identifier of a unfiled record folder | ||||||
|      * @return newly created {@link UnfiledContainerChild} |      * @return newly created {@link UnfiledContainerChild} | ||||||
|      * @throws RuntimeException for invalid recordModel JSON strings |      * @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("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||||
|         mandatoryObject("unfiledRecordFolderChildContent", unfiledRecordFolderChildContent); |         mandatoryObject("unfiledRecordFolderChildContent", unfiledRecordFolderChildContent); | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE)) |         if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE)) { | ||||||
|         { |  | ||||||
|             fail("Only electronic records are supported"); |             fail("Only electronic records are supported"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -210,22 +216,25 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | |||||||
|          */ |          */ | ||||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); |         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||||
|         JsonNode root; |         JsonNode root; | ||||||
|         try |         try { | ||||||
|         { |             root = | ||||||
|             root = new ObjectMapper().readTree(toJson(unfiledRecordFolderChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class)); |                     new ObjectMapper() | ||||||
|         } |                             .readTree( | ||||||
|         catch (IOException e) |                                     toJson( | ||||||
|         { |                                             unfiledRecordFolderChildModel, | ||||||
|  |                                             UnfiledContainerChild.class, | ||||||
|  |                                             UnfiledContainerChildMixin.class)); | ||||||
|  |         } catch (IOException e) { | ||||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); |             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||||
|         } |         } | ||||||
|         // add request fields |         // add request fields | ||||||
|         Iterator<String> fieldNames = root.fieldNames(); |         Iterator<String> fieldNames = root.fieldNames(); | ||||||
|         while (fieldNames.hasNext()) |         while (fieldNames.hasNext()) { | ||||||
|         { |  | ||||||
|             String fieldName = fieldNames.next(); |             String fieldName = fieldNames.next(); | ||||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); |             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 |         // create node with given content | ||||||
|         return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId); |         return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId); | ||||||
| @@ -234,8 +243,8 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | |||||||
|     /** |     /** | ||||||
|      * see {@link #updateUnfiledRecordFolder(UnfiledRecordFolder, String, String) |      * see {@link #updateUnfiledRecordFolder(UnfiledRecordFolder, String, String) | ||||||
|      */ |      */ | ||||||
|     public UnfiledRecordFolder updateUnfiledRecordFolder(UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId) |     public UnfiledRecordFolder updateUnfiledRecordFolder( | ||||||
|     { |             UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId) { | ||||||
|         mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel); |         mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel); | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
| @@ -250,27 +259,33 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | |||||||
|      * @param parameters The URL parameters to add |      * @param parameters The URL parameters to add | ||||||
|      * @param returns The updated {@link UnfiledRecordFolder} |      * @param returns The updated {@link UnfiledRecordFolder} | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>the update request is invalid or {@code unfiledRecordFolderId} is not a valid format or {@code unfiledRecordFolderModel} is invalid</li> |      *       <li>the update request is invalid or {@code unfiledRecordFolderId} is not a valid | ||||||
|      *  <li>authentication fails</li> |      *           format or {@code unfiledRecordFolderModel} is invalid | ||||||
|      *  <li>current user does not have permission to update {@code unfiledRecordFolderId}</li> |      *       <li>authentication fails | ||||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> |      *       <li>current user does not have permission to update {@code unfiledRecordFolderId} | ||||||
|      *  <li>the updated name clashes with an existing root category of special container in the current fileplan</li> |      *       <li>{@code unfiledRecordFolderId} does not exist | ||||||
|      *  <li>model integrity exception, including file name with invalid characters</li> |      *       <li>the updated name clashes with an existing root category of special container in the | ||||||
|      * </ul> |      *           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); |         mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel); | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         return getRmRestWrapper().processModel(UnfiledRecordFolder.class, requestWithBody( |         return getRmRestWrapper() | ||||||
|                 PUT, |                 .processModel( | ||||||
|                 toJson(unfiledRecordFolderModel), |                         UnfiledRecordFolder.class, | ||||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", |                         requestWithBody( | ||||||
|                 unfiledRecordFolderId, |                                 PUT, | ||||||
|                 parameters |                                 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 |      * @param unfiledRecordFolderId The identifier of a unfiled record folder | ||||||
|      * @throws RuntimeException for the following cases: |      * @throws RuntimeException for the following cases: | ||||||
|      * <ul> |      *     <ul> | ||||||
|      *  <li>{@code unfiledRecordFolderId} is not a valid format</li> |      *       <li>{@code unfiledRecordFolderId} is not a valid format | ||||||
|      *  <li>authentication fails</li> |      *       <li>authentication fails | ||||||
|      *  <li>current user does not have permission to delete {@code unfiledRecordFolderId}</li> |      *       <li>current user does not have permission to delete {@code unfiledRecordFolderId} | ||||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> |      *       <li>{@code unfiledRecordFolderId} does not exist | ||||||
|      *  <li>{@code unfiledRecordFolderId} is locked and cannot be deleted</li> |      *       <li>{@code unfiledRecordFolderId} is locked and cannot be deleted | ||||||
|      * </ul> |      *     </ul> | ||||||
|      */ |      */ | ||||||
|     public void deleteUnfiledRecordFolder(String unfiledRecordFolderId) |     public void deleteUnfiledRecordFolder(String unfiledRecordFolderId) { | ||||||
|     { |  | ||||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); |         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||||
|  |  | ||||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( |         getRmRestWrapper() | ||||||
|                 DELETE, |                 .processEmptyModel( | ||||||
|                 "unfiled-record-folders/{recordFolderId}", |                         simpleRequest( | ||||||
|                 unfiledRecordFolderId |                                 DELETE, | ||||||
|         )); |                                 "unfiled-record-folders/{recordFolderId}", | ||||||
|  |                                 unfiledRecordFolderId)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,24 +35,20 @@ import java.util.UUID; | |||||||
|  * @author Tom Page |  * @author Tom Page | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class CommonTestUtils | public class CommonTestUtils { | ||||||
| { |     /** The default pattern used for the user full name when users are created with tas utility */ | ||||||
|     /** |  | ||||||
|      * 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"; |     public static final String USER_FULLNAME_PATTERN = "FN-%1$s LN-%1$s"; | ||||||
|  |  | ||||||
|     /** Private constructor to prevent instantiation. */ |     /** 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 |      * Generate a prefix to namespace the objects in a test class. Note that four random hex digits | ||||||
|      * collisions when running locally and should also be short enough to maintain readability. |      * 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) |     public static String generateTestPrefix(Class<?> clazz) { | ||||||
|     { |         return clazz.getSimpleName().substring(0, 7) | ||||||
|         return clazz.getSimpleName().substring(0, 7) + UUID.randomUUID().toString().substring(0, 4).toUpperCase(); |                 + UUID.randomUUID().toString().substring(0, 4).toUpperCase(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,11 +29,6 @@ package org.alfresco.rest.rm.community.util; | |||||||
|  |  | ||||||
| import static org.testng.Assert.assertTrue; | 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.DockerClient; | ||||||
| import com.github.dockerjava.api.command.LogContainerCmd; | import com.github.dockerjava.api.command.LogContainerCmd; | ||||||
| import com.github.dockerjava.api.model.Container; | import com.github.dockerjava.api.model.Container; | ||||||
| @@ -44,6 +39,7 @@ import com.github.dockerjava.netty.NettyDockerCmdExecFactory; | |||||||
|  |  | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.Setter; | import lombok.Setter; | ||||||
|  |  | ||||||
| import org.alfresco.utility.Utility; | import org.alfresco.utility.Utility; | ||||||
| import org.apache.commons.lang.SystemUtils; | import org.apache.commons.lang.SystemUtils; | ||||||
| import org.slf4j.Logger; | 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.beans.factory.annotation.Value; | ||||||
| import org.springframework.stereotype.Service; | 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 |  * Helper class for interaction with docker containers | ||||||
|  * |  * | ||||||
| @@ -59,30 +60,23 @@ import org.springframework.stereotype.Service; | |||||||
|  * @since 3.1 |  * @since 3.1 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class DockerHelper | public class DockerHelper { | ||||||
| { |  | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(DockerHelper.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(DockerHelper.class); | ||||||
|     private static final String REPO_IMAGE_NAME = "repository"; |     private static final String REPO_IMAGE_NAME = "repository"; | ||||||
|     @Getter |     @Getter @Setter private DockerClient dockerClient; | ||||||
|     @Setter |  | ||||||
|     private DockerClient dockerClient; |  | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     public DockerHelper(@Value ("${docker.host}") String dockerHost) |     public DockerHelper(@Value("${docker.host}") String dockerHost) { | ||||||
|     { |         if (SystemUtils.IS_OS_WINDOWS) { | ||||||
|         if (SystemUtils.IS_OS_WINDOWS) |             this.dockerClient = | ||||||
|         { |                     DockerClientBuilder.getInstance(dockerHost) | ||||||
|             this.dockerClient = DockerClientBuilder |                             .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||||
|                 .getInstance(dockerHost) |                             .build(); | ||||||
|                 .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) |         } else { | ||||||
|                 .build(); |             this.dockerClient = | ||||||
|         } |                     DockerClientBuilder.getInstance() | ||||||
|         else |                             .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||||
|         { |                             .build(); | ||||||
|             this.dockerClient = DockerClientBuilder |  | ||||||
|                 .getInstance() |  | ||||||
|                 .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) |  | ||||||
|                 .build(); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -93,30 +87,30 @@ public class DockerHelper | |||||||
|      * @param timeStamp - get the logs since a specific timestamp |      * @param timeStamp - get the logs since a specific timestamp | ||||||
|      * @return list of strings, where every string is log line |      * @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 List<String> logs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         final LogContainerCmd logContainerCmd = getDockerClient().logContainerCmd(containerId); |         final LogContainerCmd logContainerCmd = getDockerClient().logContainerCmd(containerId); | ||||||
|         logContainerCmd.withStdOut(true) |         logContainerCmd | ||||||
|                        .withStdErr(true) |                 .withStdOut(true) | ||||||
|                        .withSince(timeStamp) // UNIX timestamp to filter logs. Output log-entries since that timestamp. |                 .withStdErr(true) | ||||||
|                        .withTimestamps(true); //print timestamps for every log line |                 .withSince( | ||||||
|  |                         timeStamp) // UNIX timestamp to filter logs. Output log-entries since that | ||||||
|  |                 // timestamp. | ||||||
|  |                 .withTimestamps(true); // print timestamps for every log line | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |             logContainerCmd | ||||||
|             logContainerCmd.exec(new LogContainerResultCallback() |                     .exec( | ||||||
|             { |                             new LogContainerResultCallback() { | ||||||
|                 @Override |                                 @Override | ||||||
|                 public void onNext(Frame item) |                                 public void onNext(Frame item) { | ||||||
|                 { |                                     logs.add(item.toString()); | ||||||
|                     logs.add(item.toString()); |                                 } | ||||||
|                 } |                             }) | ||||||
|             }).awaitCompletion(); |                     .awaitCompletion(); | ||||||
|         } |         } catch (InterruptedException e) { | ||||||
|         catch (InterruptedException e) |             Thread.currentThread().interrupt(); // set interrupt flag | ||||||
|         { |  | ||||||
|             Thread.currentThread().interrupt();  // set interrupt flag |  | ||||||
|             LOGGER.error("Failed to retrieve logs of container " + containerId, e); |             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 |      * @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); |         final List<Container> alfrescoContainers = findContainersByImageName(REPO_IMAGE_NAME); | ||||||
|         if (alfrescoContainers.isEmpty()) |         if (alfrescoContainers.isEmpty()) { | ||||||
|         { |  | ||||||
|             return Collections.emptyList(); |             return Collections.emptyList(); | ||||||
|         } |         } else { | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             List<String> alfrescoLogs = new ArrayList<>(); |             List<String> alfrescoLogs = new ArrayList<>(); | ||||||
|             // get the logs since current time - 10 seconds |             // get the logs since current time - 10 seconds | ||||||
|             final int timeStamp = (int) (System.currentTimeMillis() / 1000) - 10; |             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; |             return alfrescoLogs; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -151,14 +144,17 @@ public class DockerHelper | |||||||
|      * @param expectedException the expected exception to be thrown |      * @param expectedException the expected exception to be thrown | ||||||
|      * @throws Exception |      * @throws Exception | ||||||
|      */ |      */ | ||||||
|     public void checkExceptionIsInAlfrescoLogs(String expectedException) throws Exception |     public void checkExceptionIsInAlfrescoLogs(String expectedException) throws Exception { | ||||||
|     { |         // Retry the operation because sometimes it takes few seconds to throw the exception | ||||||
|         //Retry the operation because sometimes it takes few seconds to throw the exception |         Utility.sleep( | ||||||
|         Utility.sleep(6000, 30000, () -> |                 6000, | ||||||
|         { |                 30000, | ||||||
|             List<String> alfrescoLogs = getAlfrescoLogs(); |                 () -> { | ||||||
|             assertTrue(alfrescoLogs.stream().anyMatch(logLine -> logLine.contains(expectedException))); |                     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 |      * @param imageName - the name of the image used by container | ||||||
|      * @return the containers |      * @return the containers | ||||||
|      */ |      */ | ||||||
|     private List<Container> findContainersByImageName(String imageName) |     private List<Container> findContainersByImageName(String imageName) { | ||||||
|     { |         final List<Container> containers = | ||||||
|         final List<Container> containers = getDockerClient().listContainersCmd().withShowAll(true).exec(); |                 getDockerClient().listContainersCmd().withShowAll(true).exec(); | ||||||
|  |  | ||||||
|         return containers.stream() |         return containers.stream() | ||||||
|                          .filter(container -> container.getImage().contains(imageName)) |                 .filter(container -> container.getImage().contains(imageName)) | ||||||
|                          .collect(Collectors.toList()); |                 .collect(Collectors.toList()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,18 +31,16 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped; | |||||||
| import org.alfresco.rest.rm.community.model.record.RecordProperties; | import org.alfresco.rest.rm.community.model.record.RecordProperties; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Mix class for Record POJO class |  * Mix class for Record POJO class Mix-in annotations are: a way to associate annotations with | ||||||
|  * Mix-in annotations are: a way to associate annotations with classes |  * classes without modifying (target) classes themselves. | ||||||
|  * without modifying (target) classes themselves. |  | ||||||
|  * |  * | ||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public abstract class FilePlanComponentMixIn | public abstract class FilePlanComponentMixIn { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Annotation used to indicate that a property should be serialized "unwrapped" |      * Annotation used to indicate that a property should be serialized "unwrapped" Its properties | ||||||
|      * Its properties are instead included as properties of its containing Object |      * are instead included as properties of its containing Object | ||||||
|      */ |      */ | ||||||
|     @JsonUnwrapped |     @JsonUnwrapped | ||||||
|     abstract RecordProperties getProperties(); |     abstract RecordProperties getProperties(); | ||||||
|   | |||||||
| @@ -34,10 +34,8 @@ import static org.apache.commons.lang3.StringUtils.isBlank; | |||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class ParameterCheck | public class ParameterCheck { | ||||||
| { |     private ParameterCheck() { | ||||||
|     private ParameterCheck() |  | ||||||
|     { |  | ||||||
|         // Intentionally blank |         // Intentionally blank | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -48,11 +46,10 @@ public class ParameterCheck | |||||||
|      * @param paramValue The value of the parameter to check |      * @param paramValue The value of the parameter to check | ||||||
|      * @throws IllegalArgumentException Throws an exception if the given value is blank |      * @throws IllegalArgumentException Throws an exception if the given value is blank | ||||||
|      */ |      */ | ||||||
|     public static void mandatoryString(final String paramName, final String paramValue) throws IllegalArgumentException |     public static void mandatoryString(final String paramName, final String paramValue) | ||||||
|     { |             throws IllegalArgumentException { | ||||||
|         if (isBlank(paramValue)) |         if (isBlank(paramValue)) { | ||||||
|         { |             throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter."); | ||||||
|             throw new IllegalArgumentException("'" + paramName  + "' is a mandatory parameter."); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -63,11 +60,10 @@ public class ParameterCheck | |||||||
|      * @param object The value of the parameter to check |      * @param object The value of the parameter to check | ||||||
|      * @throws IllegalArgumentException Throws an exception if the given value is null |      * @throws IllegalArgumentException Throws an exception if the given value is null | ||||||
|      */ |      */ | ||||||
|     public static void mandatoryObject(final String paramName, final Object object) throws IllegalArgumentException |     public static void mandatoryObject(final String paramName, final Object object) | ||||||
|     { |             throws IllegalArgumentException { | ||||||
|         if (object == null) |         if (object == null) { | ||||||
|         { |             throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter."); | ||||||
|             throw new IllegalArgumentException("'" + paramName  + "' is a mandatory parameter."); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,9 +28,6 @@ package org.alfresco.rest.rm.community.util; | |||||||
|  |  | ||||||
| import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryObject; | 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.annotation.JsonInclude.Include; | ||||||
| import com.fasterxml.jackson.core.JsonProcessingException; | import com.fasterxml.jackson.core.JsonProcessingException; | ||||||
| import com.fasterxml.jackson.databind.ObjectMapper; | import com.fasterxml.jackson.databind.ObjectMapper; | ||||||
| @@ -41,28 +38,24 @@ import org.json.JSONObject; | |||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Utility class for creating the json object |  * Utility class for creating the json object | ||||||
|  * |  * | ||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public class PojoUtility | public class PojoUtility { | ||||||
| { |     /** Logger for the class. */ | ||||||
|     /** |  | ||||||
|      * Logger for the class. |  | ||||||
|      */ |  | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(PojoUtility.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(PojoUtility.class); | ||||||
|  |  | ||||||
|     /** Private constructor to prevent instantiation. */ |     /** Private constructor to prevent instantiation. */ | ||||||
|     private PojoUtility() |     private PojoUtility() {} | ||||||
|     {} |  | ||||||
|  |  | ||||||
|     /** |     /** see {@link #toJson(Object, Class, Class)} */ | ||||||
|      * see {@link #toJson(Object, Class, Class)} |     public static String toJson(Object model) { | ||||||
|      */ |  | ||||||
|     public static String toJson(Object model) |  | ||||||
|     { |  | ||||||
|         mandatoryObject("model", model); |         mandatoryObject("model", model); | ||||||
|  |  | ||||||
|         return toJson(model, null, null); |         return toJson(model, null, null); | ||||||
| @@ -73,59 +66,53 @@ public class PojoUtility | |||||||
|      * |      * | ||||||
|      * @param model The java object model to convert |      * @param model The java object model to convert | ||||||
|      * @param target Class (or interface) whose annotations to effectively override |      * @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 |      * @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); |         mandatoryObject("model", model); | ||||||
|  |  | ||||||
|         ObjectMapper mapper = new ObjectMapper(); |         ObjectMapper mapper = new ObjectMapper(); | ||||||
|  |  | ||||||
|         if (target != null && mixinSource != null) |         if (target != null && mixinSource != null) { | ||||||
|         { |             // inject the "mix-in" annotations  from FilePlanComponentMix to | ||||||
|             //inject the "mix-in" annotations  from FilePlanComponentMix to |  | ||||||
|             // FilePlanComponent POJO class when converting to json |             // FilePlanComponent POJO class when converting to json | ||||||
|             mapper.addMixIn(target, mixinSource); |             mapper.addMixIn(target, mixinSource); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         //include only non null values |         // include only non null values | ||||||
|         mapper.setSerializationInclusion(Include.NON_NULL); |         mapper.setSerializationInclusion(Include.NON_NULL); | ||||||
|  |  | ||||||
|         //return the json object |         // return the json object | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model); |             return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model); | ||||||
|         } |         } catch (JsonProcessingException error) { | ||||||
|         catch (JsonProcessingException error) |  | ||||||
|         { |  | ||||||
|             return error.toString(); |             return error.toString(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Converting json to  java object |      * Converting json to java object | ||||||
|      * |      * | ||||||
|      * @param json   The json object to convert |      * @param json The json object to convert | ||||||
|      * @param classz Class  for the java object |      * @param classz Class for the java object | ||||||
|      * @return The converted 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("model", classz); | ||||||
|         mandatoryObject("jsonObject", json); |         mandatoryObject("jsonObject", json); | ||||||
|  |  | ||||||
|         ObjectMapper mapper = new ObjectMapper(); |         ObjectMapper mapper = new ObjectMapper(); | ||||||
|  |  | ||||||
|         T obj = null; |         T obj = null; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             obj = mapper.readValue(json.toString(), classz); |             obj = mapper.readValue(json.toString(), classz); | ||||||
|         } |         } catch (IOException e) { | ||||||
|         catch (IOException e) |  | ||||||
|         { |  | ||||||
|             LOGGER.error("Unable to convert the json into a java object.", 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 |      * Converting json array into a list of java objects | ||||||
|      * |      * | ||||||
|      * @param json   The json array to convert |      * @param json The json array to convert | ||||||
|      * @param classz Class  for the java object |      * @param classz Class for the java object | ||||||
|      * @return The list of converted java objects |      * @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("model", classz); | ||||||
|         mandatoryObject("jsonObject", json); |         mandatoryObject("jsonObject", json); | ||||||
|  |  | ||||||
|         ObjectMapper mapper = new ObjectMapper(); |         ObjectMapper mapper = new ObjectMapper(); | ||||||
|  |  | ||||||
|         CollectionType collectionType = mapper.getTypeFactory().constructCollectionType(List.class, classz); |         CollectionType collectionType = | ||||||
|  |                 mapper.getTypeFactory().constructCollectionType(List.class, classz); | ||||||
|         List<T> asList = null; |         List<T> asList = null; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             asList = mapper.readValue(json.toString(), collectionType); |             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); |             LOGGER.error("Unable to convert the json array into a java collection.", e); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         return asList; |         return asList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,8 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.rm.community.util; | package org.alfresco.rest.rm.community.util; | ||||||
|  |  | ||||||
| import java.io.IOException; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.core.JsonGenerator; | import com.fasterxml.jackson.core.JsonGenerator; | ||||||
| import com.fasterxml.jackson.core.JsonProcessingException; | import com.fasterxml.jackson.core.JsonProcessingException; | ||||||
| import com.fasterxml.jackson.databind.JsonSerializer; | 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 org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Utility class for serializing @{FilePlanComponentReviewPeriod} |  * Utility class for serializing @{FilePlanComponentReviewPeriod} | ||||||
|  * |  * | ||||||
|  * @author Rodica Sutu |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @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 value The Review Period value that is being serialized. | ||||||
|      * @param gen Jackson utility is responsible for writing JSON |      * @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 IOException | ||||||
|      * @throws JsonProcessingException |      * @throws JsonProcessingException | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public void serialize(ReviewPeriod value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException |     public void serialize(ReviewPeriod value, JsonGenerator gen, SerializerProvider serializers) | ||||||
|     { |             throws IOException, JsonProcessingException { | ||||||
|         //create the custom  string value for the Review Period type |         // create the custom  string value for the Review Period type | ||||||
|        gen.writeString(new StringBuilder().append(value.getPeriodType()).append("|").append(value.getExpression()).toString()); |         gen.writeString( | ||||||
|  |                 new StringBuilder() | ||||||
|  |                         .append(value.getPeriodType()) | ||||||
|  |                         .append("|") | ||||||
|  |                         .append(value.getExpression()) | ||||||
|  |                         .toString()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,18 +31,16 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped; | |||||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildProperties; | import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildProperties; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Mix class for Record POJO class |  * Mix class for Record POJO class Mix-in annotations are: a way to associate annotations with | ||||||
|  * Mix-in annotations are: a way to associate annotations with classes |  * classes without modifying (target) classes themselves. | ||||||
|  * without modifying (target) classes themselves. |  | ||||||
|  * |  * | ||||||
|  * @author Tuna Aksoy |  * @author Tuna Aksoy | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| public abstract class UnfiledContainerChildMixin | public abstract class UnfiledContainerChildMixin { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Annotation used to indicate that a property should be serialized "unwrapped" |      * Annotation used to indicate that a property should be serialized "unwrapped" Its properties | ||||||
|      * Its properties are instead included as properties of its containing Object |      * are instead included as properties of its containing Object | ||||||
|      */ |      */ | ||||||
|     @JsonUnwrapped |     @JsonUnwrapped | ||||||
|     abstract UnfiledContainerChildProperties getProperties(); |     abstract UnfiledContainerChildProperties getProperties(); | ||||||
|   | |||||||
| @@ -26,9 +26,6 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.v0; | package org.alfresco.rest.v0; | ||||||
|  |  | ||||||
| import java.text.MessageFormat; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | import org.alfresco.rest.core.v0.BaseAPI; | ||||||
| import org.apache.http.HttpResponse; | import org.apache.http.HttpResponse; | ||||||
| import org.json.JSONArray; | import org.json.JSONArray; | ||||||
| @@ -37,6 +34,9 @@ import org.slf4j.Logger; | |||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.stereotype.Component; | 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). |  * The v0 REST API for copy-to (which supports multi-item copy). | ||||||
|  * |  * | ||||||
| @@ -44,8 +44,7 @@ import org.springframework.stereotype.Component; | |||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class CopyToAPI extends BaseAPI | public class CopyToAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     /** Logger for the class. */ |     /** Logger for the class. */ | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(CopyToAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(CopyToAPI.class); | ||||||
|     /** The URI for the copy-to API. */ |     /** 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 user The username of the user to use. | ||||||
|      * @param password The password of the user. |      * @param password The password of the user. | ||||||
|      * @param targetContainerPath The destination to copy the nodes to. This should be in the format |      * @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}", |      *     "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}", | ||||||
|      * "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}". |      *     "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}". | ||||||
|      * @param nodeRefs The list of nodes to copy. |      * @param nodeRefs The list of nodes to copy. | ||||||
|      * @return The HTTP Response. |      * @return The HTTP Response. | ||||||
|      * @throws AssertionError If the API call didn't return a 200 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); |         return copyTo(user, password, 200, targetContainerPath, nodeRefs); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -75,18 +74,26 @@ public class CopyToAPI extends BaseAPI | |||||||
|      * @param password The password of the user. |      * @param password The password of the user. | ||||||
|      * @param expectedStatusCode The expected return status code. |      * @param expectedStatusCode The expected return status code. | ||||||
|      * @param targetContainerPath The destination to copy the nodes to. This should be in the format |      * @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}", |      *     "{site}/{container}/{path}", "{site}/{container}", "{store_type}/{store_id}/{id}/{path}", | ||||||
|      * "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}". |      *     "{store_type}/{store_id}/{id}" or "{store_type}/{store_id}". | ||||||
|      * @param nodeRefs The list of nodes to copy. |      * @param nodeRefs The list of nodes to copy. | ||||||
|      * @return The HTTP Response. |      * @return The HTTP Response. | ||||||
|      * @throws AssertionError If the API didn't return the expected status code. |      * @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(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); |         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); | ||||||
|  |  | ||||||
|         return doSlingshotPostJsonRequest(user, password, expectedStatusCode, requestParams, |         return doSlingshotPostJsonRequest( | ||||||
|                     MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath)); |                 user, | ||||||
|  |                 password, | ||||||
|  |                 expectedStatusCode, | ||||||
|  |                 requestParams, | ||||||
|  |                 MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,8 +28,6 @@ package org.alfresco.rest.v0; | |||||||
|  |  | ||||||
| import static org.testng.AssertJUnit.assertTrue; | import static org.testng.AssertJUnit.assertTrue; | ||||||
|  |  | ||||||
| import java.text.MessageFormat; |  | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | import org.alfresco.rest.core.v0.BaseAPI; | ||||||
| import org.alfresco.rest.rm.community.model.custom.CustomDefinitions; | import org.alfresco.rest.rm.community.model.custom.CustomDefinitions; | ||||||
| import org.json.JSONArray; | import org.json.JSONArray; | ||||||
| @@ -39,73 +37,67 @@ import org.slf4j.Logger; | |||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.stereotype.Component; | 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 |  * @author Rodica Sutu | ||||||
|  * @since 2.6 |  * @since 2.6 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class CustomDefinitionsAPI extends BaseAPI | public class CustomDefinitionsAPI extends BaseAPI { | ||||||
| { |     /** custom references endpoint */ | ||||||
|     /** |     private static final String CUSTOM_REFERENCE_API_ENDPOINT = | ||||||
|      * custom references endpoint |             "{0}rma/admin/customreferencedefinitions"; | ||||||
|      */ |  | ||||||
|     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"; |     private static final String CREATE_RELATIONSHIP_API_ENDPOINT = "{0}node/{1}/customreferences"; | ||||||
|  |  | ||||||
|     /** |     /** logger */ | ||||||
|      * logger |  | ||||||
|      */ |  | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(CustomDefinitionsAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(CustomDefinitionsAPI.class); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Helper method to get the reference id for a custom reference |      * Helper method to get the reference id for a custom reference | ||||||
|      * |      * | ||||||
|      * @param adminUser        user with administrative privileges |      * @param adminUser user with administrative privileges | ||||||
|      * @param adminPassword    password for adminUser |      * @param adminPassword password for adminUser | ||||||
|      * @param customDefinition custom reference definition name |      * @param customDefinition custom reference definition name | ||||||
|      * @return  <code>reference id</code>   if the customDefinition is found |      * @return <code>reference id</code> if the customDefinition is found <code> null </code> | ||||||
|      *          <code> null </code> otherwise |      *     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); |         JSONObject getResponse = | ||||||
|         if (getResponse != null) |                 doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT); | ||||||
|         { |         if (getResponse != null) { | ||||||
|             try |             try { | ||||||
|             { |                 JSONArray customDefinitions = | ||||||
|                 JSONArray customDefinitions = getResponse.getJSONObject("data").getJSONArray("customReferences"); |                         getResponse.getJSONObject("data").getJSONArray("customReferences"); | ||||||
|                 for (int i = 0; i < customDefinitions.length(); i++) |                 for (int i = 0; i < customDefinitions.length(); i++) { | ||||||
|                 { |  | ||||||
|                     JSONObject item = customDefinitions.getJSONObject(i); |                     JSONObject item = customDefinitions.getJSONObject(i); | ||||||
|                     boolean hasSource = customDefinition.equalsIgnoreCase( |                     boolean hasSource = | ||||||
|                             item.has("source") ? item.getString("source") : null |                             customDefinition.equalsIgnoreCase( | ||||||
|                                                                          ); |                                     item.has("source") ? item.getString("source") : null); | ||||||
|  |  | ||||||
|                     boolean hasTarget = customDefinition.equalsIgnoreCase( |                     boolean hasTarget = | ||||||
|                             item.has("target") ? item.getString("target") : null |                             customDefinition.equalsIgnoreCase( | ||||||
|                                                                          ); |                                     item.has("target") ? item.getString("target") : null); | ||||||
|  |  | ||||||
|                     boolean hasLabel = customDefinition.equalsIgnoreCase( |                     boolean hasLabel = | ||||||
|                             item.has("label") ? item.getString("label") : null |                             customDefinition.equalsIgnoreCase( | ||||||
|                                                                         ); |                                     item.has("label") ? item.getString("label") : null); | ||||||
|                     if ( hasSource || hasTarget || hasLabel) |                     if (hasSource || hasTarget || hasLabel) { | ||||||
|                     { |  | ||||||
|                         return item.getString("refId"); |                         return item.getString("refId"); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|             } |             } catch (JSONException error) { | ||||||
|             catch (JSONException error) |                 LOGGER.error( | ||||||
|             { |                         "Unable to get the refId for the custom reference definition {}", | ||||||
|                 LOGGER.error("Unable to get the refId for the custom reference definition {}", customDefinition); |                         customDefinition); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return null; |         return null; | ||||||
| @@ -114,11 +106,11 @@ public class CustomDefinitionsAPI extends BaseAPI | |||||||
|     /** |     /** | ||||||
|      * Helper method to add custom reference instance to the specified record node |      * 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 adminPassword password for adminUser | ||||||
|      * @param recordNodeIdFrom node ref to set a custom reference |      * @param recordNodeIdFrom node ref to set a custom reference | ||||||
|      * @param recordNodeIdTo        node ref of the to record |      * @param recordNodeIdTo node ref of the to record | ||||||
|      * @param   relationshipType    relation type to be created |      * @param relationshipType relation type to be created | ||||||
|      * @throws AssertionError if the creation fails. |      * @throws AssertionError if the creation fails. | ||||||
|      */ |      */ | ||||||
|     public void createRelationship( |     public void createRelationship( | ||||||
| @@ -126,19 +118,32 @@ public class CustomDefinitionsAPI extends BaseAPI | |||||||
|             String adminPassword, |             String adminPassword, | ||||||
|             String recordNodeIdFrom, |             String recordNodeIdFrom, | ||||||
|             String recordNodeIdTo, |             String recordNodeIdTo, | ||||||
|             CustomDefinitions relationshipType) |             CustomDefinitions relationshipType) { | ||||||
|     { |         // create the request body | ||||||
|        //create the request body |  | ||||||
|         JSONObject requestParams = new JSONObject(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo); |         requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo); | ||||||
|         requestParams.put("refId", getCustomReferenceId(adminUser, adminPassword, relationshipType |         requestParams.put( | ||||||
|                 .getDefinition())); |                 "refId", | ||||||
|         //send the API request to create the relationship |                 getCustomReferenceId(adminUser, adminPassword, relationshipType.getDefinition())); | ||||||
|         JSONObject setRelationshipStatus = doPostRequest(adminUser, adminPassword, requestParams, |         // send the API request to create the relationship | ||||||
|                 MessageFormat.format(CREATE_RELATIONSHIP_API_ENDPOINT, "{0}", NODE_PREFIX + recordNodeIdFrom)); |         JSONObject setRelationshipStatus = | ||||||
|         //check the response |                 doPostRequest( | ||||||
|         boolean success = (setRelationshipStatus != null) && setRelationshipStatus.getBoolean("success"); |                         adminUser, | ||||||
|         assertTrue("Creating relationship from " + recordNodeIdFrom + " to " + recordNodeIdTo + " failed.", success); |                         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); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,74 +26,77 @@ | |||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.v0; | package org.alfresco.rest.v0; | ||||||
|  |  | ||||||
| import java.util.Collections; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.stream.Collectors; |  | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | import org.alfresco.rest.core.v0.BaseAPI; | ||||||
| import org.apache.http.HttpResponse; | import org.apache.http.HttpResponse; | ||||||
| import org.json.JSONArray; | import org.json.JSONArray; | ||||||
| import org.json.JSONObject; | import org.json.JSONObject; | ||||||
| import org.springframework.stereotype.Component; | 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 |  * Methods to make API requests using v0 API for Exporting Items | ||||||
|  * |  * | ||||||
|  * @author Shubham Jain |  * @author Shubham Jain | ||||||
|  * @since 7.1.0 |  * @since 7.1.0 | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| @Component | @Component | ||||||
| public class ExportAPI extends BaseAPI | public class ExportAPI extends BaseAPI { | ||||||
| { |     /** The URI to export an item */ | ||||||
|     /** |  | ||||||
|      * The URI to export an item |  | ||||||
|      */ |  | ||||||
|     private static final String EXPORT_API = "{0}rma/admin/export"; |     private static final String EXPORT_API = "{0}rma/admin/export"; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Export a single Record/Record Folder/Record Category using V0 Export API |      * Export a single Record/Record Folder/Record Category using V0 Export API | ||||||
|      * |      * | ||||||
|      * @param user               User performing the export |      * @param user User performing the export | ||||||
|      * @param password           User's Password |      * @param password User's Password | ||||||
|      * @param expectedStatusCode Expected Response Code |      * @param expectedStatusCode Expected Response Code | ||||||
|      * @param nodeID             ID of the Node(Record/RecordFolder) to be exported |      * @param nodeID ID of the Node(Record/RecordFolder) to be exported | ||||||
|      * @return HTTP Response |      * @return HTTP Response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse exportRMNode(String user, String password, int expectedStatusCode, String nodeID) |     public HttpResponse exportRMNode( | ||||||
|     { |             String user, String password, int expectedStatusCode, String nodeID) { | ||||||
|         return export(user, password, expectedStatusCode, Collections.singletonList(getNodeRefSpacesStore() + nodeID)); |         return export( | ||||||
|  |                 user, | ||||||
|  |                 password, | ||||||
|  |                 expectedStatusCode, | ||||||
|  |                 Collections.singletonList(getNodeRefSpacesStore() + nodeID)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Export a list of nodes using V0 Export API |      * Export a list of nodes using V0 Export API | ||||||
|      * |      * | ||||||
|      * @param user               User performing the export |      * @param user User performing the export | ||||||
|      * @param password           User's Password |      * @param password User's Password | ||||||
|      * @param expectedStatusCode Expected Response Code |      * @param expectedStatusCode Expected Response Code | ||||||
|      * @param nodeIDList         List of the nodes to be exported |      * @param nodeIDList List of the nodes to be exported | ||||||
|      * @return HTTP Response |      * @return HTTP Response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse exportRMNodes(String user, String password, int expectedStatusCode, List<String> nodeIDList) |     public HttpResponse exportRMNodes( | ||||||
|     { |             String user, String password, int expectedStatusCode, List<String> nodeIDList) { | ||||||
|  |  | ||||||
|         List<String> nodeRefs = |         List<String> nodeRefs = | ||||||
|                 nodeIDList.stream().map(nodeID -> getNodeRefSpacesStore() + nodeID).collect(Collectors.toList()); |                 nodeIDList.stream() | ||||||
|  |                         .map(nodeID -> getNodeRefSpacesStore() + nodeID) | ||||||
|  |                         .collect(Collectors.toList()); | ||||||
|  |  | ||||||
|         return export(user, password, expectedStatusCode, nodeRefs); |         return export(user, password, expectedStatusCode, nodeRefs); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Export API function to perform Export Operation on items with given noderefs using V0 Export Rest API |      * Export API function to perform Export Operation on items with given noderefs using V0 Export | ||||||
|  |      * Rest API | ||||||
|      * |      * | ||||||
|      * @param user               User performing the export |      * @param user User performing the export | ||||||
|      * @param password           User's Password |      * @param password User's Password | ||||||
|      * @param expectedStatusCode Expected Response Code |      * @param expectedStatusCode Expected Response Code | ||||||
|      * @param nodeRefs           list of the noderefs for the items to be exported |      * @param nodeRefs list of the noderefs for the items to be exported | ||||||
|      * @return Rest API Post Request |      * @return Rest API Post Request | ||||||
|      */ |      */ | ||||||
|     public HttpResponse export(String user, String password, int expectedStatusCode, List<String> nodeRefs) |     public HttpResponse export( | ||||||
|     { |             String user, String password, int expectedStatusCode, List<String> nodeRefs) { | ||||||
|         final JSONObject requestParams = new JSONObject(); |         final JSONObject requestParams = new JSONObject(); | ||||||
|  |  | ||||||
|         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); |         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); | ||||||
|   | |||||||
| @@ -29,11 +29,6 @@ package org.alfresco.rest.v0; | |||||||
| import static org.alfresco.rest.core.v0.APIUtils.convertHTTPResponseToJSON; | import static org.alfresco.rest.core.v0.APIUtils.convertHTTPResponseToJSON; | ||||||
| import static org.apache.http.HttpStatus.SC_OK; | 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.APIUtils; | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | import org.alfresco.rest.core.v0.BaseAPI; | ||||||
| import org.alfresco.rest.rm.community.model.hold.HoldEntry; | import org.alfresco.rest.rm.community.model.hold.HoldEntry; | ||||||
| @@ -46,6 +41,11 @@ import org.json.JSONException; | |||||||
| import org.json.JSONObject; | import org.json.JSONObject; | ||||||
| import org.springframework.stereotype.Component; | 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 |  * Methods to make API requests using v0 API for generalized holds | ||||||
|  * |  * | ||||||
| @@ -53,53 +53,51 @@ import org.springframework.stereotype.Component; | |||||||
|  * @since 3.2 |  * @since 3.2 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class HoldsAPI extends BaseAPI | public class HoldsAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     public static final String HOLDS_CONTAINER = "Holds"; |     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"; |     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"; |     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}"; |     private static final String GET_RM_HOLDS = RM_HOLDS_API + "?{1}"; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Util method to create a hold |      * Util method to create a hold | ||||||
|      * |      * | ||||||
|      * @param user        the user creating the hold |      * @param user the user creating the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param holdName    the hold name |      * @param holdName the hold name | ||||||
|      * @param reason      hold reason |      * @param reason hold reason | ||||||
|      * @param description hold description |      * @param description hold description | ||||||
|      * @return The HTTP response. |      * @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); |         return createHold(user, password, holdName, reason, description, SC_OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Util method to create a hold |      * Util method to create a hold | ||||||
|      * |      * | ||||||
|      * @param user        the user creating the hold |      * @param user the user creating the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param holdName    the hold name |      * @param holdName the hold name | ||||||
|      * @param reason      hold reason |      * @param reason hold reason | ||||||
|      * @param description hold description |      * @param description hold description | ||||||
|      * @param expectedStatusCode The expected return status code. |      * @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, |     public HttpResponse createHold( | ||||||
|                                    int expectedStatusCode) |             String user, | ||||||
|     { |             String password, | ||||||
|  |             String holdName, | ||||||
|  |             String reason, | ||||||
|  |             String description, | ||||||
|  |             int expectedStatusCode) { | ||||||
|         // retrieve the Holds container nodeRef |         // retrieve the Holds container nodeRef | ||||||
|         final String parentNodeRef = getItemNodeRef(user, password, "/" + HOLDS_CONTAINER); |         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_cm_description", description); | ||||||
|         requestParams.put("prop_rma_holdReason", reason); |         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 |      * Create a hold and get the node ref of the hold from the response body | ||||||
|      * |      * | ||||||
|      * @param user        the user creating the hold |      * @param user the user creating the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param holdName    the hold name to be created |      * @param holdName the hold name to be created | ||||||
|      * @param reason      reason of the hold to be created |      * @param reason reason of the hold to be created | ||||||
|      * @param description hold description |      * @param description hold description | ||||||
|      * @return node ref of the hold created |      * @return node ref of the hold created | ||||||
|      */ |      */ | ||||||
|     public String createHoldAndGetNodeRef(String user, String password, |     public String createHoldAndGetNodeRef( | ||||||
|                                      String holdName, String reason, String description) |             String user, String password, String holdName, String reason, String description) { | ||||||
|     { |  | ||||||
|         final HttpResponse httpResponse = createHold(user, password, holdName, reason, description); |         final HttpResponse httpResponse = createHold(user, password, holdName, reason, description); | ||||||
|  |  | ||||||
|         try |         try { | ||||||
|         { |             return convertHTTPResponseToJSON(httpResponse) | ||||||
|            return convertHTTPResponseToJSON(httpResponse).getString("persistedObject") |                     .getString("persistedObject") | ||||||
|                                 .replace(NODE_REF_WORKSPACE_SPACES_STORE, ""); |                     .replace(NODE_REF_WORKSPACE_SPACES_STORE, ""); | ||||||
|         } |         } catch (JSONException error) { | ||||||
|         catch(JSONException error) |  | ||||||
|         { |  | ||||||
|             LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, 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); |             LOGGER.error("Parsing message body failed.", error); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -151,8 +145,7 @@ public class HoldsAPI extends BaseAPI | |||||||
|      * @param holdNodeRef the hold node ref |      * @param holdNodeRef the hold node ref | ||||||
|      * @return The HTTP Response or throws AssertionError if the request is not successful. |      * @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); |         return deleteHold(user.getUsername(), user.getPassword(), holdNodeRef, SC_OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -162,15 +155,17 @@ public class HoldsAPI extends BaseAPI | |||||||
|      * @param username user's username |      * @param username user's username | ||||||
|      * @param password its password |      * @param password its password | ||||||
|      * @param holdNodeRef the hold node ref |      * @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(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("name", "deleteHold"); |         requestParams.put("name", "deleteHold"); | ||||||
|         requestParams.put("nodeRef", getNodeRefSpacesStore() + holdNodeRef); |         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 |      * @param holdName the hold name | ||||||
|      * @throws AssertionError if the deletion was unsuccessful. |      * @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)); |         deleteItem(username, password, String.format("/%s/%s", HOLDS_CONTAINER, holdName)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Adds item(content/record/record folder) to the hold |      * Adds item(content/record/record folder) to the hold | ||||||
|      * |      * | ||||||
|      * @param user        the user who adds the item to the hold |      * @param user the user who adds the item to the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRef the nodeRef of the item to be added to hold |      * @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 |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse addItemToHold(String user, String password, String itemNodeRef, String holdName) |     public HttpResponse addItemToHold( | ||||||
|     { |             String user, String password, String itemNodeRef, String holdName) { | ||||||
|         return addItemsToHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(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 |      * 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 user the user who adds the items to the holds | ||||||
|      * @param password     the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRefs the list of items nodeRefs to be added to holds |      * @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 |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse addItemsToHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames) |     public HttpResponse addItemsToHolds( | ||||||
|     { |             String user, String password, List<String> itemNodeRefs, List<String> holdNames) { | ||||||
|         final List<String> holdNodeRefs = holdNames.stream() |         final List<String> holdNodeRefs = | ||||||
|                                                    .map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold))) |                 holdNames.stream() | ||||||
|                                                    .collect(Collectors.toList()); |                         .map( | ||||||
|  |                                 hold -> | ||||||
|  |                                         getItemNodeRef( | ||||||
|  |                                                 user, | ||||||
|  |                                                 password, | ||||||
|  |                                                 String.format("/%s/%s", HOLDS_CONTAINER, hold))) | ||||||
|  |                         .collect(Collectors.toList()); | ||||||
|         return addItemsToHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); |         return addItemsToHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Adds a list of items (content/record/record folder) to a list of holds |      * 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 user the user who adds the items to the holds | ||||||
|      * @param password     the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRefs the list of items nodeRefs to be added to holds |      * @param itemNodeRefs the list of items nodeRefs to be added to holds | ||||||
|      * @param holdNodeRefs the list of holds |      * @param holdNodeRefs the list of holds | ||||||
|      * @return The HTTP response |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse addItemsToHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs, |     public HttpResponse addItemsToHolds( | ||||||
|                                         List<String> holdNodeRefs) |             String user, | ||||||
|     { |             String password, | ||||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); |             int expectedStatus, | ||||||
|  |             List<String> itemNodeRefs, | ||||||
|  |             List<String> holdNodeRefs) { | ||||||
|  |         final JSONObject requestParams = | ||||||
|  |                 addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); | ||||||
|         return doPostJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API); |         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 |      * 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 user the user who adds the item to the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRef the nodeRef of the item to be added to hold |      * @param itemNodeRef the nodeRef of the item to be added to hold | ||||||
|      * @param holdNodeRef the hold node ref |      * @param holdNodeRef the hold node ref | ||||||
|      * @return The error message |      * @return The error message | ||||||
|      */ |      */ | ||||||
|     public String addToHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String |     public String addToHoldAndGetMessage( | ||||||
|             holdNodeRef) |             String user, | ||||||
|     { |             String password, | ||||||
|         final HttpResponse httpResponse = addItemsToHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef), |             int expectedStatus, | ||||||
|                 Collections.singletonList(holdNodeRef)); |             String itemNodeRef, | ||||||
|  |             String holdNodeRef) { | ||||||
|  |         final HttpResponse httpResponse = | ||||||
|  |                 addItemsToHolds( | ||||||
|  |                         user, | ||||||
|  |                         password, | ||||||
|  |                         expectedStatus, | ||||||
|  |                         Collections.singletonList(itemNodeRef), | ||||||
|  |                         Collections.singletonList(holdNodeRef)); | ||||||
|         return APIUtils.extractErrorMessageFromHttpResponse(httpResponse); |         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 |      * @param holdNodeRefs list of hold node refs for add/remove items | ||||||
|      * @return JSONObject fo |      * @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(); |         final JSONArray nodeRefs = new JSONArray(); | ||||||
|         items.forEach(itemNodeRef -> nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef)); |         items.forEach(itemNodeRef -> nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef)); | ||||||
|         final JSONArray holds = new JSONArray(); |         final JSONArray holds = new JSONArray(); | ||||||
| @@ -272,88 +289,119 @@ public class HoldsAPI extends BaseAPI | |||||||
|     /** |     /** | ||||||
|      * Remove item(content/record/record folder) from hold |      * Remove item(content/record/record folder) from hold | ||||||
|      * |      * | ||||||
|      * @param user        the user who removes the item from the hold |      * @param user the user who removes the item from the hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRef the nodeRef of the item to be removed from hold |      * @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 |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse removeItemFromHold(String user, String password, String itemNodeRef, String holdName) |     public HttpResponse removeItemFromHold( | ||||||
|     { |             String user, String password, String itemNodeRef, String holdName) { | ||||||
|         return removeItemsFromHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(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 |      * 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 user the user who removes the item from the hold | ||||||
|      * @param password       the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRefs   the list of items nodeRefs to be removed from hold |      * @param itemNodeRefs the list of items nodeRefs to be removed from hold | ||||||
|      * @param holdNames      the list of hold names |      * @param holdNames the list of hold names | ||||||
|      * @return The HTTP response |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse removeItemsFromHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames) |     public HttpResponse removeItemsFromHolds( | ||||||
|     { |             String user, String password, List<String> itemNodeRefs, List<String> holdNames) { | ||||||
|         final List<String> holdNodeRefs = holdNames.stream() |         final List<String> holdNodeRefs = | ||||||
|                                                    .map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold))) |                 holdNames.stream() | ||||||
|                                                    .collect(Collectors.toList()); |                         .map( | ||||||
|  |                                 hold -> | ||||||
|  |                                         getItemNodeRef( | ||||||
|  |                                                 user, | ||||||
|  |                                                 password, | ||||||
|  |                                                 String.format("/%s/%s", HOLDS_CONTAINER, hold))) | ||||||
|  |                         .collect(Collectors.toList()); | ||||||
|         return removeItemsFromHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); |         return removeItemsFromHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Remove a list of items (content/record/record folder) from a list of holds |      * 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 user the user who removes the item from the hold | ||||||
|      * @param password       the user's password |      * @param password the user's password | ||||||
|      * @param expectedStatus https status code expected |      * @param expectedStatus https status code expected | ||||||
|      * @param itemNodeRefs   the list of items nodeRefs to be removed from hold |      * @param itemNodeRefs the list of items nodeRefs to be removed from hold | ||||||
|      * @param holdNodeRefs   the list of hold node refs |      * @param holdNodeRefs the list of hold node refs | ||||||
|      * @return The HTTP response |      * @return The HTTP response | ||||||
|      */ |      */ | ||||||
|     public HttpResponse removeItemsFromHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs, |     public HttpResponse removeItemsFromHolds( | ||||||
|                                              List<String> holdNodeRefs) |             String user, | ||||||
|     { |             String password, | ||||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); |             int expectedStatus, | ||||||
|  |             List<String> itemNodeRefs, | ||||||
|  |             List<String> holdNodeRefs) { | ||||||
|  |         final JSONObject requestParams = | ||||||
|  |                 addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); | ||||||
|         return doPutJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API); |         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 |      * 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 user the user who removes the item from hold | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRef the nodeRef of the item to be removed from hold |      * @param itemNodeRef the nodeRef of the item to be removed from hold | ||||||
|      * @param holdNodeRef the hold node ref |      * @param holdNodeRef the hold node ref | ||||||
|      * @return The error message |      * @return The error message | ||||||
|      */ |      */ | ||||||
|     public String removeFromHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String |     public String removeFromHoldAndGetMessage( | ||||||
|             holdNodeRef) |             String user, | ||||||
|     { |             String password, | ||||||
|         final HttpResponse httpResponse = removeItemsFromHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef), |             int expectedStatus, | ||||||
|                 Collections.singletonList(holdNodeRef)); |             String itemNodeRef, | ||||||
|  |             String holdNodeRef) { | ||||||
|  |         final HttpResponse httpResponse = | ||||||
|  |                 removeItemsFromHolds( | ||||||
|  |                         user, | ||||||
|  |                         password, | ||||||
|  |                         expectedStatus, | ||||||
|  |                         Collections.singletonList(itemNodeRef), | ||||||
|  |                         Collections.singletonList(holdNodeRef)); | ||||||
|         return APIUtils.extractErrorMessageFromHttpResponse(httpResponse); |         return APIUtils.extractErrorMessageFromHttpResponse(httpResponse); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      *  Get the list of the available holds which have the item node reference if includedInHold parameter is true, |      * Get the list of the available holds which have the item node reference if includedInHold | ||||||
|      *   otherwise a list of hold node references will be retrieved which do not include the given node reference. |      * 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 password The password of the user. | ||||||
|      * @param itemNodeRef The item node reference |      * @param itemNodeRef The item node reference | ||||||
|      * @param includedInHold True to retrieve the holds which have 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 |      * @param fileOnly True if only files should be return | ||||||
|      * @return return a list of hold entries |      * @return return a list of hold entries | ||||||
|      */ |      */ | ||||||
|     public List<HoldEntry> getHolds(String user, String password, final String itemNodeRef, |     public List<HoldEntry> getHolds( | ||||||
|                                     final Boolean includedInHold, final Boolean fileOnly) |             String user, | ||||||
|     { |             String password, | ||||||
|         final String parameters = (itemNodeRef != null ? "itemNodeRef=" + NODE_REF_WORKSPACE_SPACES_STORE + itemNodeRef  : "") |             final String itemNodeRef, | ||||||
|                              + (includedInHold != null ? "&includedInHold=" + includedInHold : "") |             final Boolean includedInHold, | ||||||
|                              + (fileOnly != null ? "&fileOnly=" + fileOnly : ""); |             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, |         final JSONArray holdEntries = | ||||||
|                 MessageFormat.format(GET_RM_HOLDS, "{0}", parameters)).getJSONObject("data").getJSONArray("holds"); |                 doGetRequest(user, password, MessageFormat.format(GET_RM_HOLDS, "{0}", parameters)) | ||||||
|  |                         .getJSONObject("data") | ||||||
|  |                         .getJSONArray("holds"); | ||||||
|  |  | ||||||
|         return PojoUtility.jsonToObject(holdEntries, HoldEntry.class); |         return PojoUtility.jsonToObject(holdEntries, HoldEntry.class); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -25,7 +25,6 @@ | |||||||
|  * #L% |  * #L% | ||||||
|  */ |  */ | ||||||
| package org.alfresco.rest.v0; | package org.alfresco.rest.v0; | ||||||
| import java.text.MessageFormat; |  | ||||||
|  |  | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | import org.alfresco.dataprep.AlfrescoHttpClient; | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||||
| @@ -36,39 +35,38 @@ import org.slf4j.LoggerFactory; | |||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.MessageFormat; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * The v0 REST API for nodes |  * The v0 REST API for nodes | ||||||
|  *  |  * | ||||||
|  * @author jcule |  * @author jcule | ||||||
|  * @since 2.7EA1 |  * @since 2.7EA1 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class NodeAPI extends BaseAPI | public class NodeAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     /** Logger for the class. */ |     /** Logger for the class. */ | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(NodeAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(NodeAPI.class); | ||||||
|  |  | ||||||
|     /** The URI for the get node API. */ |     /** The URI for the get node API. */ | ||||||
|     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/doclib2/node/{1}"; |     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/doclib2/node/{1}"; | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||||
|     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 username | ||||||
|      * @param password |      * @param password | ||||||
|      * @param nodeId |      * @param nodeId | ||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     public JSONObject getNode(String username, String password, String nodeId) |     public JSONObject getNode(String username, String password, String nodeId) { | ||||||
|     { |  | ||||||
|         String requestURL; |         String requestURL; | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         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(); |         client.close(); | ||||||
|         return doGetRequest(username, password, requestURL); |         return doGetRequest(username, password, requestURL); | ||||||
|     } |     } | ||||||
|      |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,9 +27,6 @@ | |||||||
|  |  | ||||||
| package org.alfresco.rest.v0; | package org.alfresco.rest.v0; | ||||||
|  |  | ||||||
| import java.io.IOException; |  | ||||||
| import java.text.MessageFormat; |  | ||||||
|  |  | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | import org.alfresco.dataprep.AlfrescoHttpClient; | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | 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.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.text.MessageFormat; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * The v0 API to get the node properties |  * The v0 API to get the node properties | ||||||
|  * |  * | ||||||
|  * @since AGS 3.4 |  * @since AGS 3.4 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class NodePropertiesAPI extends BaseAPI | public class NodePropertiesAPI extends BaseAPI { | ||||||
| { |     /** The URI for the get node API. */ | ||||||
|     /** |  | ||||||
|      * The URI for the get node API. |  | ||||||
|      */ |  | ||||||
|     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/node/{1}"; |     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/node/{1}"; | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||||
|     private AlfrescoHttpClientFactory alfrescoHttpClientFactory; |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the node properties |      * Get the node properties | ||||||
| @@ -66,26 +62,24 @@ public class NodePropertiesAPI extends BaseAPI | |||||||
|      * @param username |      * @param username | ||||||
|      * @param password |      * @param password | ||||||
|      * @param nodeId |      * @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(); |         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 |         // JSONException | ||||||
|         // construct a get request |         // construct a get request | ||||||
|         HttpGet get = new HttpGet(requestURL); |         HttpGet get = new HttpGet(requestURL); | ||||||
|         HttpResponse response = client.execute(username, password, get); |         HttpResponse response = client.execute(username, password, get); | ||||||
|         HttpEntity entity = response.getEntity(); |         HttpEntity entity = response.getEntity(); | ||||||
|         String responseString; |         String responseString; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             responseString = EntityUtils.toString(entity, "UTF-8"); |             responseString = EntityUtils.toString(entity, "UTF-8"); | ||||||
|         } |         } catch (IOException e) { | ||||||
|         catch (IOException e) |  | ||||||
|         { |  | ||||||
|             throw new IllegalArgumentException("Failed to read the response", e); |             throw new IllegalArgumentException("Failed to read the response", e); | ||||||
|         } |         } | ||||||
|         client.close(); |         client.close(); | ||||||
| @@ -101,11 +95,9 @@ public class NodePropertiesAPI extends BaseAPI | |||||||
|      * @param nodeId |      * @param nodeId | ||||||
|      * @return Return the content url string |      * @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); |         String contentProperty = getContentProperty(userModel, nodeId); | ||||||
|         if (contentProperty != null) |         if (contentProperty != null) { | ||||||
|         { |  | ||||||
|             // get the first element before the first | |             // get the first element before the first | | ||||||
|             // e.g.  "contentUrl=s3://-system-/fc077fe8-1742-4c45-a153-8309c857996b |             // 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" |             // .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 |      * @param nodeId | ||||||
|      * @return Return the content property string |      * @return Return the content property string | ||||||
|      */ |      */ | ||||||
|     public String getContentProperty(UserModel userModel, String nodeId) |     public String getContentProperty(UserModel userModel, String nodeId) { | ||||||
|     { |         JSONArray properties = | ||||||
|         JSONArray properties = getNodeProperties(userModel.getUsername(), userModel.getPassword(), nodeId); |                 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); |             JSONObject object = (JSONObject) properties.get(i); | ||||||
|             JSONArray valuesArray = (JSONArray) object.get("values"); |             JSONArray valuesArray = (JSONArray) object.get("values"); | ||||||
|             if (valuesArray.toString().contains("contentUrl")) |             if (valuesArray.toString().contains("contentUrl")) { | ||||||
|             { |  | ||||||
|                 return ((JSONObject) valuesArray.get(0)).get("value").toString(); |                 return ((JSONObject) valuesArray.get(0)).get("value").toString(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -28,11 +28,6 @@ package org.alfresco.rest.v0; | |||||||
|  |  | ||||||
| import static org.testng.Assert.assertTrue; | 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.core.v0.BaseAPI; | ||||||
| import org.alfresco.rest.rm.community.model.audit.AuditEntry; | import org.alfresco.rest.rm.community.model.audit.AuditEntry; | ||||||
| import org.alfresco.rest.rm.community.util.PojoUtility; | import org.alfresco.rest.rm.community.util.PojoUtility; | ||||||
| @@ -42,6 +37,11 @@ import org.slf4j.Logger; | |||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.stereotype.Component; | 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 |  * The v0 REST API for rm audit logs | ||||||
|  * |  * | ||||||
| @@ -49,37 +49,42 @@ import org.springframework.stereotype.Component; | |||||||
|  * @since 2.7 |  * @since 2.7 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class RMAuditAPI extends BaseAPI | public class RMAuditAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     /** Logger for the class. */ |     /** Logger for the class. */ | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RMAuditAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(RMAuditAPI.class); | ||||||
|  |  | ||||||
|     /** The URI for the audit API. */ |     /** The URI for the audit API. */ | ||||||
|     private static final String RM_AUDIT_API = "{0}rma/admin/rmauditlog"; |     private static final String RM_AUDIT_API = "{0}rma/admin/rmauditlog"; | ||||||
|  |  | ||||||
|     private static final String RM_AUDIT_LOG_API = RM_AUDIT_API + "?{1}"; |     private static final String RM_AUDIT_LOG_API = RM_AUDIT_API + "?{1}"; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns a list of rm audit entries . |      * 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 password The password of the user. | ||||||
|      * @param size     Maximum number of log entries to return |      * @param size Maximum number of log entries to return | ||||||
|      * @param event    The name of audit event to be retrieved |      * @param event The name of audit event to be retrieved | ||||||
|      * @return return Only return log entries matching this event |      * @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; |         String parameters = null; | ||||||
|         try |         try { | ||||||
|         { |             parameters = | ||||||
|             parameters = "size=" + size + (event != null ? "&event=" + URLEncoder.encode(event, "UTF-8"):""); |                     "size=" | ||||||
|         } |                             + size | ||||||
|         catch (UnsupportedEncodingException e) |                             + (event != null ? "&event=" + URLEncoder.encode(event, "UTF-8") : ""); | ||||||
|         { |         } catch (UnsupportedEncodingException e) { | ||||||
|             LOGGER.error("Unable to encode the event name {}", e.getMessage()); |             LOGGER.error("Unable to encode the event name {}", e.getMessage()); | ||||||
|         } |         } | ||||||
|         JSONArray auditEntries =  doGetRequest(user, password, |         JSONArray auditEntries = | ||||||
|                 MessageFormat.format(RM_AUDIT_LOG_API,"{0}", parameters)).getJSONObject("data").getJSONArray("entries"); |                 doGetRequest( | ||||||
|  |                                 user, | ||||||
|  |                                 password, | ||||||
|  |                                 MessageFormat.format(RM_AUDIT_LOG_API, "{0}", parameters)) | ||||||
|  |                         .getJSONObject("data") | ||||||
|  |                         .getJSONArray("entries"); | ||||||
|  |  | ||||||
|         return PojoUtility.jsonToObject(auditEntries, AuditEntry.class); |         return PojoUtility.jsonToObject(auditEntries, AuditEntry.class); | ||||||
|     } |     } | ||||||
| @@ -91,14 +96,12 @@ public class RMAuditAPI extends BaseAPI | |||||||
|      * @param password The password of the user. |      * @param password The password of the user. | ||||||
|      * @throws AssertionError If the API call didn't clear the audit log. |      * @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); |         JSONObject deleteStatus = doDeleteRequest(username, password, RM_AUDIT_API); | ||||||
|  |  | ||||||
|         assertTrue(deleteStatus != null |         assertTrue( | ||||||
|                 //audit clear and login events are returned |                 deleteStatus != null | ||||||
|                 && getRMAuditLog(username, password, 100, null).size() == 2); |                         // audit clear and login events are returned | ||||||
|  |                         && getRMAuditLog(username, password, 100, null).size() == 2); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -34,14 +34,6 @@ import static org.testng.AssertJUnit.assertFalse; | |||||||
| import static org.testng.AssertJUnit.assertTrue; | import static org.testng.AssertJUnit.assertTrue; | ||||||
| import static org.testng.AssertJUnit.fail; | 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.AlfrescoHttpClient; | ||||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||||
| import org.alfresco.dataprep.UserService; | import org.alfresco.dataprep.UserService; | ||||||
| @@ -64,47 +56,54 @@ import org.slf4j.LoggerFactory; | |||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Component; | 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 |  * @author Oana Nechiforescu | ||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class RMRolesAndActionsAPI extends BaseAPI | public class RMRolesAndActionsAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     /** The URI to view the configured roles and capabilities. */ |     /** The URI to view the configured roles and capabilities. */ | ||||||
|     private static final String RM_ROLES = "{0}rma/admin/rmroles"; |     private static final String RM_ROLES = "{0}rma/admin/rmroles"; | ||||||
|     /** The URI for REST requests about a particular configured role. */ |     /** 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_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 |     // logger | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RMRolesAndActionsAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(RMRolesAndActionsAPI.class); | ||||||
|     private static final String MOVE_ACTIONS_API = "action/rm-move-to/site/rm/documentLibrary/{0}"; |     private static final String MOVE_ACTIONS_API = "action/rm-move-to/site/rm/documentLibrary/{0}"; | ||||||
|  |  | ||||||
|     /** http client factory */ |     /** http client factory */ | ||||||
|     @Autowired |     @Autowired private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||||
|     private AlfrescoHttpClientFactory alfrescoHttpClientFactory; |  | ||||||
|  |  | ||||||
|     /** user service */ |     /** user service */ | ||||||
|     @Autowired |     @Autowired private UserService userService; | ||||||
|     private UserService userService; |  | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired private DataUserAIS dataUser; | ||||||
|     private DataUserAIS dataUser; |  | ||||||
|     /** |     /** | ||||||
|      * Get all the configured RM roles. |      * Get all the configured RM roles. | ||||||
|      * |      * | ||||||
|      * @param adminUser The RM admin user. |      * @param adminUser The RM admin user. | ||||||
|      * @param adminPassword The password of the 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. |         // Using "is=true" includes the in-place readers and writers. | ||||||
|         final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject( |         final JSONObject jsonObject = | ||||||
|                 "data"); |                 doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject("data"); | ||||||
|         return jsonObject.toMap().keySet(); |         return jsonObject.toMap().keySet(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -116,24 +115,25 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|      * @param role The role to get capabilities for. |      * @param role The role to get capabilities for. | ||||||
|      * @return The set of system names for the capabilities. |      * @return The set of system names for the capabilities. | ||||||
|      */ |      */ | ||||||
|     public Set<String> getCapabilitiesForRole(String adminUser, String adminPassword, String role) |     public Set<String> getCapabilitiesForRole(String adminUser, String adminPassword, String role) { | ||||||
|     { |         final JSONObject jsonObject = | ||||||
|         final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject( |                 doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject("data"); | ||||||
|                 "data"); |         assertTrue( | ||||||
|         assertTrue("Could not find role '" + role + "' in " + jsonObject.keySet(), jsonObject.has(role)); |                 "Could not find role '" + role + "' in " + jsonObject.keySet(), | ||||||
|  |                 jsonObject.has(role)); | ||||||
|         return jsonObject.getJSONObject(role).getJSONObject("capabilities").keySet(); |         return jsonObject.getJSONObject(role).getJSONObject("capabilities").keySet(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates the body for PUT/POST Roles API requests |      * 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 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 |      * @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(); |         final JSONObject requestBody = new JSONObject(); | ||||||
|         requestBody.put("name", roleName); |         requestBody.put("name", roleName); | ||||||
|         requestBody.put("displayLabel", roleDisplayLabel); |         requestBody.put("displayLabel", roleDisplayLabel); | ||||||
| @@ -152,9 +152,17 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|      * @param roleDisplayLabel A human-readable label for the role. |      * @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. | ||||||
|      */ |      */ | ||||||
|     public void createRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities) |     public void createRole( | ||||||
|     { |             String adminUser, | ||||||
|         doPostJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities), |             String adminPassword, | ||||||
|  |             String roleName, | ||||||
|  |             String roleDisplayLabel, | ||||||
|  |             Set<String> capabilities) { | ||||||
|  |         doPostJsonRequest( | ||||||
|  |                 adminUser, | ||||||
|  |                 adminPassword, | ||||||
|  |                 HttpStatus.SC_OK, | ||||||
|  |                 roleRequestBody(roleName, roleDisplayLabel, capabilities), | ||||||
|                 RM_ROLES); |                 RM_ROLES); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -167,10 +175,19 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|      * @param roleDisplayLabel A human-readable label for the role. |      * @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. | ||||||
|      */ |      */ | ||||||
|     public void updateRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities) |     public void updateRole( | ||||||
|     { |             String adminUser, | ||||||
|         doPutJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities), |             String adminPassword, | ||||||
|                 RM_ROLES_ROLE, roleName); |             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 adminPassword The password for the admin user. | ||||||
|      * @param roleName The name of the role to be deleted. |      * @param roleName The name of the role to be deleted. | ||||||
|      */ |      */ | ||||||
|     public void deleteRole(String adminUser, String adminPassword, String roleName) |     public void deleteRole(String adminUser, String adminPassword, String roleName) { | ||||||
|     { |         doDeleteRequest( | ||||||
|         doDeleteRequest(adminUser, adminPassword, MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName)); |                 adminUser, adminPassword, MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName)); | ||||||
|         assertFalse("Failed to delete role " + roleName + " with " + adminUser, |         assertFalse( | ||||||
|  |                 "Failed to delete role " + roleName + " with " + adminUser, | ||||||
|                 getConfiguredRoles(adminUser, adminPassword).contains(roleName)); |                 getConfiguredRoles(adminUser, adminPassword).contains(roleName)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** create user and assign to records management role */ | ||||||
|      * create user and assign to records management role |  | ||||||
|      */ |  | ||||||
|     public void createUserAndAssignToRole( |     public void createUserAndAssignToRole( | ||||||
|             String adminUser, |             String adminUser, String adminPassword, String userName, String password, String role) { | ||||||
|             String adminPassword, |         if (!userService.userExists(adminUser, adminPassword, userName)) { | ||||||
|             String userName, |  | ||||||
|             String password, |  | ||||||
|             String role) |  | ||||||
|     { |  | ||||||
|         if (!userService.userExists(adminUser, adminPassword, userName)) |  | ||||||
|         { |  | ||||||
|             dataUser.createUser(userName, password); |             dataUser.createUser(userName, password); | ||||||
|  |  | ||||||
|         } |         } | ||||||
|         assignRoleToUser(adminUser, adminPassword, userName, role); |         assignRoleToUser(adminUser, adminPassword, userName, role); | ||||||
|     } |     } | ||||||
| @@ -210,54 +219,55 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|      * |      * | ||||||
|      * @throws AssertionError if the assignation is unsuccessful. |      * @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 AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||||
|         final String reqURL = MessageFormat.format( |         final String reqURL = | ||||||
|                 RM_ROLES_AUTHORITIES, |                 MessageFormat.format( | ||||||
|                 client.getApiUrl(), |                         RM_ROLES_AUTHORITIES, | ||||||
|                 role, |                         client.getApiUrl(), | ||||||
|                 userName, |                         role, | ||||||
|                 client.getAlfTicket(adminUser, adminPassword)); |                         userName, | ||||||
|  |                         client.getAlfTicket(adminUser, adminPassword)); | ||||||
|  |  | ||||||
|         HttpPost request = null; |         HttpPost request = null; | ||||||
|         HttpResponse response; |         HttpResponse response; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             request = new HttpPost(reqURL); |             request = new HttpPost(reqURL); | ||||||
|             response = client.execute(adminUser, adminPassword, request); |             response = client.execute(adminUser, adminPassword, request); | ||||||
|         } |         } finally { | ||||||
|         finally |             if (request != null) { | ||||||
|         { |  | ||||||
|             if (request != null) |  | ||||||
|             { |  | ||||||
|                 request.releaseConnection(); |                 request.releaseConnection(); | ||||||
|             } |             } | ||||||
|             client.close(); |             client.close(); | ||||||
|         } |         } | ||||||
|         assertEquals("Assigning role " + role + " to user " + userName + " failed.", SC_OK, |         assertEquals( | ||||||
|                     response.getStatusLine().getStatusCode()); |                 "Assigning role " + role + " to user " + userName + " failed.", | ||||||
|  |                 SC_OK, | ||||||
|  |                 response.getStatusLine().getStatusCode()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Move action |      * Move action | ||||||
|      * |      * | ||||||
|      * @param user            the user to move the contentPath |      * @param user the user to move the contentPath | ||||||
|      * @param password        the user's password |      * @param password the user's password | ||||||
|      * @param contentPath     path to the content to be moved |      * @param contentPath path to the content to be moved | ||||||
|      * @param destinationPath destination path |      * @param destinationPath destination path | ||||||
|      * @throws AssertionError if the move was unsuccessful. |      * @throws AssertionError if the move was unsuccessful. | ||||||
|      */ |      */ | ||||||
|     public void moveTo(String user, String password, String contentPath, String destinationPath) |     public void moveTo(String user, String password, String contentPath, String destinationPath) { | ||||||
|     { |         String contentNodeRef = | ||||||
|         String contentNodeRef = getNodeRefSpacesStore() + getItemNodeRef(user, password, contentPath); |                 getNodeRefSpacesStore() + getItemNodeRef(user, password, contentPath); | ||||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); |         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); |         HttpPost request = new HttpPost(url); | ||||||
|  |  | ||||||
|         boolean success = false; |         boolean success = false; | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             JSONObject body = new JSONObject(); |             JSONObject body = new JSONObject(); | ||||||
|             body.put("nodeRefs", new JSONArray(Arrays.asList(contentNodeRef))); |             body.put("nodeRefs", new JSONArray(Arrays.asList(contentNodeRef))); | ||||||
|             StringEntity se = new StringEntity(body.toString(), AlfrescoHttpClient.UTF_8_ENCODING); |             StringEntity se = new StringEntity(body.toString(), AlfrescoHttpClient.UTF_8_ENCODING); | ||||||
| @@ -265,8 +275,7 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|             request.setEntity(se); |             request.setEntity(se); | ||||||
|  |  | ||||||
|             HttpResponse response = client.execute(user, password, request); |             HttpResponse response = client.execute(user, password, request); | ||||||
|             switch (response.getStatusLine().getStatusCode()) |             switch (response.getStatusLine().getStatusCode()) { | ||||||
|             { |  | ||||||
|                 case HttpStatus.SC_OK: |                 case HttpStatus.SC_OK: | ||||||
|                     JSONObject json = new JSONObject(EntityUtils.toString(response.getEntity())); |                     JSONObject json = new JSONObject(EntityUtils.toString(response.getEntity())); | ||||||
|                     success = (Boolean) json.get("overallSuccess"); |                     success = (Boolean) json.get("overallSuccess"); | ||||||
| @@ -278,15 +287,10 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|                     LOGGER.error("Unable to move: " + response.toString()); |                     LOGGER.error("Unable to move: " + response.toString()); | ||||||
|                     break; |                     break; | ||||||
|             } |             } | ||||||
|         } |         } catch (JSONException | IOException e) { | ||||||
|         catch (JSONException | IOException e) |  | ||||||
|         { |  | ||||||
|             LOGGER.error(e.toString()); |             LOGGER.error(e.toString()); | ||||||
|         } |         } finally { | ||||||
|         finally |             if (request != null) { | ||||||
|         { |  | ||||||
|             if (request != null) |  | ||||||
|             { |  | ||||||
|                 request.releaseConnection(); |                 request.releaseConnection(); | ||||||
|             } |             } | ||||||
|             client.close(); |             client.close(); | ||||||
| @@ -298,20 +302,17 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|     /** |     /** | ||||||
|      * Move action |      * Move action | ||||||
|      * |      * | ||||||
|      * @param user            the user to move the contentPath |      * @param user the user to move the contentPath | ||||||
|      * @param password        the user's password |      * @param password the user's password | ||||||
|      * @param contentPath     path to the content to be moved |      * @param contentPath path to the content to be moved | ||||||
|      * @param destinationPath destination path |      * @param destinationPath destination path | ||||||
|      * @throws AssertionError if the move was unexpectedly successful. |      * @throws AssertionError if the move was unexpectedly successful. | ||||||
|      */ |      */ | ||||||
|     public void moveToAndExpectFailure(String user, String password, String contentPath, String destinationPath) |     public void moveToAndExpectFailure( | ||||||
|     { |             String user, String password, String contentPath, String destinationPath) { | ||||||
|         try |         try { | ||||||
|         { |  | ||||||
|             moveTo(user, password, contentPath, destinationPath); |             moveTo(user, password, contentPath, destinationPath); | ||||||
|         } |         } catch (AssertionError e) { | ||||||
|         catch(AssertionError e) |  | ||||||
|         { |  | ||||||
|             // We are expecting the move to fail. |             // We are expecting the move to fail. | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @@ -321,62 +322,68 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|     /** |     /** | ||||||
|      * Perform an action on the given content |      * Perform an action on the given content | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param contentName the content name |      * @param contentName the content name | ||||||
|      * @return The HTTP response. |      * @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); |         return executeAction(user, password, contentName, action, null, SC_OK); | ||||||
|     } |     } | ||||||
|     /** |     /** | ||||||
|      * Perform an action on the given content |      * Perform an action on the given content | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param contentName the content name |      * @param contentName the content name | ||||||
|      * @return The HTTP response. |      * @return The HTTP response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse executeActionAndExpectResponseCode(String user, String password, String contentName, RM_ACTIONS action, |     public HttpResponse executeActionAndExpectResponseCode( | ||||||
|                                                            int status) |             String user, String password, String contentName, RM_ACTIONS action, int status) { | ||||||
|     { |  | ||||||
|         return executeAction(user, password, contentName, action, null, status); |         return executeAction(user, password, contentName, action, null, status); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Perform an action on the given content |      * Perform an action on the given content | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param contentName the content name |      * @param contentName the content name | ||||||
|      * @return The HTTP response. |      * @return The HTTP response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action, |     public HttpResponse executeAction( | ||||||
|                                       ZonedDateTime date) |             String user, | ||||||
|     { |             String password, | ||||||
|  |             String contentName, | ||||||
|  |             RM_ACTIONS action, | ||||||
|  |             ZonedDateTime date) { | ||||||
|         return executeAction(user, password, contentName, action, date, SC_OK); |         return executeAction(user, password, contentName, action, date, SC_OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates the body for Actions API requests |      * Creates the body for Actions API requests | ||||||
|      * |      * | ||||||
|      * @param user          the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password      the user's password |      * @param password the user's password | ||||||
|      * @param contentName   the content on which the action is executed |      * @param contentName the content on which the action is executed | ||||||
|      * @param action        the action executed |      * @param action the action executed | ||||||
|      * @param actionsParams the request parameters |      * @param actionsParams the request parameters | ||||||
|      * @return the JSONObject created |      * @return the JSONObject created | ||||||
|      */ |      */ | ||||||
|     private JSONObject actionsRequestBody(String user, String password, String contentName, RM_ACTIONS action, |     private JSONObject actionsRequestBody( | ||||||
|                                           JSONObject actionsParams) |             String user, | ||||||
|     { |             String password, | ||||||
|         final String recNodeRef = getNodeRefSpacesStore() + contentService.getNodeRef(user, password, RM_SITE_ID, contentName); |             String contentName, | ||||||
|  |             RM_ACTIONS action, | ||||||
|  |             JSONObject actionsParams) { | ||||||
|  |         final String recNodeRef = | ||||||
|  |                 getNodeRefSpacesStore() | ||||||
|  |                         + contentService.getNodeRef(user, password, RM_SITE_ID, contentName); | ||||||
|         final JSONObject requestParams = new JSONObject(); |         final JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("name", action.getAction()); |         requestParams.put("name", action.getAction()); | ||||||
|         requestParams.put("nodeRef", recNodeRef); |         requestParams.put("nodeRef", recNodeRef); | ||||||
|         if (actionsParams != null) |         if (actionsParams != null) { | ||||||
|         { |  | ||||||
|             requestParams.put("params", actionsParams); |             requestParams.put("params", actionsParams); | ||||||
|         } |         } | ||||||
|         return requestParams; |         return requestParams; | ||||||
| @@ -385,102 +392,143 @@ public class RMRolesAndActionsAPI extends BaseAPI | |||||||
|     /** |     /** | ||||||
|      * Perform an action on the record folder |      * Perform an action on the record folder | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param contentName the content name |      * @param contentName the content name | ||||||
|      * @param date        the date to be updated |      * @param date the date to be updated | ||||||
|      * @return The HTTP response. |      * @return The HTTP response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action, |     public HttpResponse executeAction( | ||||||
|                                       ZonedDateTime date, int status) |             String user, | ||||||
|     { |             String password, | ||||||
|  |             String contentName, | ||||||
|  |             RM_ACTIONS action, | ||||||
|  |             ZonedDateTime date, | ||||||
|  |             int status) { | ||||||
|         final JSONObject actionParams = new JSONObject(); |         final JSONObject actionParams = new JSONObject(); | ||||||
|         if (date != null) |         if (date != null) { | ||||||
|         { |             actionParams.put( | ||||||
|             actionParams.put("asOfDate", new JSONObject().put("iso8601", ISO_INSTANT_FORMATTER.format(date))); |                     "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); |         return doPostJsonRequest(user, password, status, requestParams, RM_ACTIONS_API); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Complete an event on the record/record folder |      * Complete an event on the record/record folder | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param nodeName    the node name |      * @param nodeName the node name | ||||||
|      * @param event       the event to be completed |      * @param event the event to be completed | ||||||
|      * @param date        the date to be updated |      * @param date the date to be updated | ||||||
|      * @return The HTTP response. |      * @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(); |         date = (date != null) ? date : Instant.now(); | ||||||
|         final JSONObject actionParams = new JSONObject().put("eventName", event.getEventName()) |         final JSONObject actionParams = | ||||||
|                                                         .put("eventCompletedBy", user) |                 new JSONObject() | ||||||
|                                                         .put("eventCompletedAt", new JSONObject() |                         .put("eventName", event.getEventName()) | ||||||
|                                                                 .put("iso8601", ISO_INSTANT_FORMATTER.format(date)) |                         .put("eventCompletedBy", user) | ||||||
|                                                             ); |                         .put( | ||||||
|         final JSONObject requestParams = actionsRequestBody(user, password, nodeName, RM_ACTIONS.COMPLETE_EVENT, |                                 "eventCompletedAt", | ||||||
|                 actionParams); |                                 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); |         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Undo an event on the record/record folder |      * Undo an event on the record/record folder | ||||||
|      * |      * | ||||||
|      * @param user        the user executing the action |      * @param user the user executing the action | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param contentName the content name |      * @param contentName the content name | ||||||
|      * @param event       the event to be undone |      * @param event the event to be undone | ||||||
|      * @return The HTTP response. |      * @return The HTTP response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse undoEvent(String user, String password, String contentName, RMEvents event) |     public HttpResponse undoEvent( | ||||||
|     { |             String user, String password, String contentName, RMEvents event) { | ||||||
|         final JSONObject requestParams = actionsRequestBody(user, password, contentName, RM_ACTIONS.UNDO_EVENT, |         final JSONObject requestParams = | ||||||
|                 new JSONObject().put("eventName", event.getEventName())); |                 actionsRequestBody( | ||||||
|  |                         user, | ||||||
|  |                         password, | ||||||
|  |                         contentName, | ||||||
|  |                         RM_ACTIONS.UNDO_EVENT, | ||||||
|  |                         new JSONObject().put("eventName", event.getEventName())); | ||||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); |         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Deletes every item in the given container |      * Deletes every item in the given container | ||||||
|      * |      * | ||||||
|      * @param username      the user's username |      * @param username the user's username | ||||||
|      * @param password      its password |      * @param password its password | ||||||
|      * @param siteId        the site id in which the container is located |      * @param siteId the site id in which the container is located | ||||||
|      * @param containerName the container to look for items into |      * @param containerName the container to look for items into | ||||||
|      * @throws AssertionError if not all items could be deleted. |      * @throws AssertionError if not all items could be deleted. | ||||||
|      */ |      */ | ||||||
|     public void deleteAllItemsInContainer(String username, String password, String siteId, String containerName) |     public void deleteAllItemsInContainer( | ||||||
|     { |             String username, String password, String siteId, String containerName) { | ||||||
|         for (CmisObject item : contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren()) |         for (CmisObject item : | ||||||
|         { |                 contentService | ||||||
|  |                         .getFolderObject( | ||||||
|  |                                 contentService.getCMISSession(username, password), | ||||||
|  |                                 siteId, | ||||||
|  |                                 containerName) | ||||||
|  |                         .getChildren()) { | ||||||
|             item.delete(); |             item.delete(); | ||||||
|         } |         } | ||||||
|         assertFalse("Not all items were deleted from " + containerName, |         assertFalse( | ||||||
|                 contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren().getHasMoreItems()); |                 "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 |      * Updates metadata, can be used on records, folders and categories | ||||||
|      * |      * | ||||||
|      * @param username    the user updating the item |      * @param username the user updating the item | ||||||
|      * @param password    the user's password |      * @param password the user's password | ||||||
|      * @param itemNodeRef the item noderef |      * @param itemNodeRef the item noderef | ||||||
|      * @return The HTTP response. |      * @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(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         addPropertyToRequest(requestParams, "prop_cm_name", properties, RMProperty.NAME); |         addPropertyToRequest(requestParams, "prop_cm_name", properties, RMProperty.NAME); | ||||||
|         addPropertyToRequest(requestParams, "prop_cm_title", properties, RMProperty.TITLE); |         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_cm_author", properties, RMProperty.AUTHOR); | ||||||
|         addPropertyToRequest(requestParams, "prop_dod_originator", properties, RMProperty.ORIGINATOR); |         addPropertyToRequest( | ||||||
|         addPropertyToRequest(requestParams, "prop_dod_originatingOrganization", properties, RMProperty |                 requestParams, "prop_dod_originator", properties, RMProperty.ORIGINATOR); | ||||||
|                 .ORIGINATING_ORGANIZATION); |         addPropertyToRequest( | ||||||
|         addPropertyToRequest(requestParams, "prop_dod_publicationDate", properties, RMProperty.PUBLICATION_DATE); |                 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)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,10 +28,6 @@ package org.alfresco.rest.v0; | |||||||
|  |  | ||||||
| import static org.apache.http.HttpStatus.SC_OK; | import static org.apache.http.HttpStatus.SC_OK; | ||||||
|  |  | ||||||
| import java.text.MessageFormat; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
|  |  | ||||||
| import org.alfresco.rest.core.v0.BaseAPI; | import org.alfresco.rest.core.v0.BaseAPI; | ||||||
| import org.apache.http.HttpResponse; | import org.apache.http.HttpResponse; | ||||||
| import org.json.JSONObject; | import org.json.JSONObject; | ||||||
| @@ -39,6 +35,10 @@ import org.slf4j.Logger; | |||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import java.text.MessageFormat; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Methods to make API requests using v0 API on record categories |  * Methods to make API requests using v0 API on record categories | ||||||
|  * |  * | ||||||
| @@ -46,25 +46,24 @@ import org.springframework.stereotype.Component; | |||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| @Component | @Component | ||||||
| public class RecordCategoriesAPI extends BaseAPI | public class RecordCategoriesAPI extends BaseAPI { | ||||||
| { |  | ||||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RecordCategoriesAPI.class); |     private static final Logger LOGGER = LoggerFactory.getLogger(RecordCategoriesAPI.class); | ||||||
|     private static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue"; |     private static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue"; | ||||||
|     private static final String DISPOSITION_ACTIONS_API = "{0}node/{1}/dispositionschedule/dispositionactiondefinitions"; |     private static final String DISPOSITION_ACTIONS_API = | ||||||
|  |             "{0}node/{1}/dispositionschedule/dispositionactiondefinitions"; | ||||||
|     private static final String DISPOSITION_SCHEDULE_API = "{0}node/{1}/dispositionschedule"; |     private static final String DISPOSITION_SCHEDULE_API = "{0}node/{1}/dispositionschedule"; | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates a retention schedule for the category given as parameter |      * Creates a retention schedule for the category given as parameter | ||||||
|      * |      * | ||||||
|      * @param user         the user creating the disposition schedule |      * @param user the user creating the disposition schedule | ||||||
|      * @param password     the user's password |      * @param password the user's password | ||||||
|      * @param categoryName the category name to create the retention schedule for |      * @param categoryName the category name to create the retention schedule for | ||||||
|      * @return The HTTP Response. |      * @return The HTTP Response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse createRetentionSchedule(String user, String password, String categoryName) |     public HttpResponse createRetentionSchedule(String user, String password, String categoryName) { | ||||||
|     { |         String catNodeRef = | ||||||
|         String catNodeRef = getNodeRefSpacesStore() + getItemNodeRef(user, password, "/" + categoryName); |                 getNodeRefSpacesStore() + getItemNodeRef(user, password, "/" + categoryName); | ||||||
|  |  | ||||||
|         JSONObject requestParams = new JSONObject(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("name", "createDispositionSchedule"); |         requestParams.put("name", "createDispositionSchedule"); | ||||||
| @@ -81,111 +80,153 @@ public class RecordCategoriesAPI extends BaseAPI | |||||||
|      * @param categoryName |      * @param categoryName | ||||||
|      * @return the disposition schedule nodeRef |      * @return the disposition schedule nodeRef | ||||||
|      */ |      */ | ||||||
|     public String getDispositionScheduleNodeRef(String user, String password, String categoryName) |     public String getDispositionScheduleNodeRef(String user, String password, String categoryName) { | ||||||
|     { |  | ||||||
|         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); |         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||||
|         JSONObject dispositionSchedule = doGetRequest(user, password, MessageFormat.format(DISPOSITION_SCHEDULE_API, "{0}", catNodeRef)); |         JSONObject dispositionSchedule = | ||||||
|         return dispositionSchedule.getJSONObject("data").getString("nodeRef").replace(getNodeRefSpacesStore(), ""); |                 doGetRequest( | ||||||
|  |                         user, | ||||||
|  |                         password, | ||||||
|  |                         MessageFormat.format(DISPOSITION_SCHEDULE_API, "{0}", catNodeRef)); | ||||||
|  |         return dispositionSchedule | ||||||
|  |                 .getJSONObject("data") | ||||||
|  |                 .getString("nodeRef") | ||||||
|  |                 .replace(getNodeRefSpacesStore(), ""); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Sets retention schedule authority and instructions, also if it is applied to records or folders |      * Sets retention schedule authority and instructions, also if it is applied to records or | ||||||
|  |      * folders | ||||||
|      * |      * | ||||||
|      * @param user             the user creating the disposition schedule |      * @param user the user creating the disposition schedule | ||||||
|      * @param password         the user's password |      * @param password the user's password | ||||||
|      * @param retentionNodeRef the retention nodeRef |      * @param retentionNodeRef the retention nodeRef | ||||||
|      * @return The HTTP Response. |      * @return The HTTP Response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse setRetentionScheduleGeneralFields(String user, String password, String retentionNodeRef, Map<RETENTION_SCHEDULE, String> retentionProperties, Boolean appliedToRecords) |     public HttpResponse setRetentionScheduleGeneralFields( | ||||||
|     { |             String user, | ||||||
|  |             String password, | ||||||
|  |             String retentionNodeRef, | ||||||
|  |             Map<RETENTION_SCHEDULE, String> retentionProperties, | ||||||
|  |             Boolean appliedToRecords) { | ||||||
|         String dispRetentionNodeRef = NODE_PREFIX + retentionNodeRef; |         String dispRetentionNodeRef = NODE_PREFIX + retentionNodeRef; | ||||||
|  |  | ||||||
|         JSONObject requestParams = new JSONObject(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         requestParams.put("prop_rma_dispositionAuthority", getPropertyValue(retentionProperties, RETENTION_SCHEDULE.RETENTION_AUTHORITY)); |         requestParams.put( | ||||||
|         requestParams.put("prop_rma_dispositionInstructions", getPropertyValue(retentionProperties, RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS)); |                 "prop_rma_dispositionAuthority", | ||||||
|  |                 getPropertyValue(retentionProperties, RETENTION_SCHEDULE.RETENTION_AUTHORITY)); | ||||||
|  |         requestParams.put( | ||||||
|  |                 "prop_rma_dispositionInstructions", | ||||||
|  |                 getPropertyValue(retentionProperties, RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS)); | ||||||
|         requestParams.put("prop_rma_recordLevelDisposition", appliedToRecords.toString()); |         requestParams.put("prop_rma_recordLevelDisposition", appliedToRecords.toString()); | ||||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, MessageFormat.format(UPDATE_METADATA_API, "{0}", dispRetentionNodeRef)); |         return doPostJsonRequest( | ||||||
|  |                 user, | ||||||
|  |                 password, | ||||||
|  |                 SC_OK, | ||||||
|  |                 requestParams, | ||||||
|  |                 MessageFormat.format(UPDATE_METADATA_API, "{0}", dispRetentionNodeRef)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Creates a retention schedule steps for the category given as parameter |      * Creates a retention schedule steps for the category given as parameter | ||||||
|      * |      * | ||||||
|      * @param user         the user creating the disposition schedule |      * @param user the user creating the disposition schedule | ||||||
|      * @param password     the user's password |      * @param password the user's password | ||||||
|      * @param categoryName the category name to create the retention schedule for |      * @param categoryName the category name to create the retention schedule for | ||||||
|      * @return The HTTP Response. |      * @return The HTTP Response. | ||||||
|      */ |      */ | ||||||
|     public HttpResponse addDispositionScheduleSteps(String user, String password, String categoryName, Map<RETENTION_SCHEDULE, String> properties) |     public HttpResponse addDispositionScheduleSteps( | ||||||
|     { |             String user, | ||||||
|  |             String password, | ||||||
|  |             String categoryName, | ||||||
|  |             Map<RETENTION_SCHEDULE, String> properties) { | ||||||
|         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); |         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||||
|  |  | ||||||
|         JSONObject requestParams = new JSONObject(); |         JSONObject requestParams = new JSONObject(); | ||||||
|         addPropertyToRequest(requestParams, "name", properties, RETENTION_SCHEDULE.NAME); |         addPropertyToRequest(requestParams, "name", properties, RETENTION_SCHEDULE.NAME); | ||||||
|         addPropertyToRequest(requestParams, "description", properties, RETENTION_SCHEDULE.DESCRIPTION); |         addPropertyToRequest( | ||||||
|         addPropertyToRequest(requestParams, "period", properties, RETENTION_SCHEDULE.RETENTION_PERIOD); |                 requestParams, "description", properties, RETENTION_SCHEDULE.DESCRIPTION); | ||||||
|         addPropertyToRequest(requestParams, "ghostOnDestroy", properties, RETENTION_SCHEDULE.RETENTION_GHOST); |         addPropertyToRequest( | ||||||
|         addPropertyToRequest(requestParams, "periodProperty", properties, RETENTION_SCHEDULE.RETENTION_PERIOD_PROPERTY); |                 requestParams, "period", properties, RETENTION_SCHEDULE.RETENTION_PERIOD); | ||||||
|         addPropertyToRequest(requestParams, "location", properties, RETENTION_SCHEDULE.RETENTION_LOCATION); |         addPropertyToRequest( | ||||||
|  |                 requestParams, "ghostOnDestroy", properties, RETENTION_SCHEDULE.RETENTION_GHOST); | ||||||
|  |         addPropertyToRequest( | ||||||
|  |                 requestParams, | ||||||
|  |                 "periodProperty", | ||||||
|  |                 properties, | ||||||
|  |                 RETENTION_SCHEDULE.RETENTION_PERIOD_PROPERTY); | ||||||
|  |         addPropertyToRequest( | ||||||
|  |                 requestParams, "location", properties, RETENTION_SCHEDULE.RETENTION_LOCATION); | ||||||
|         String events = getPropertyValue(properties, RETENTION_SCHEDULE.RETENTION_EVENTS); |         String events = getPropertyValue(properties, RETENTION_SCHEDULE.RETENTION_EVENTS); | ||||||
|         if(!events.equals("")) |         if (!events.equals("")) { | ||||||
|         { |  | ||||||
|             requestParams.append("events", events); |             requestParams.append("events", events); | ||||||
|         } |         } | ||||||
|         addPropertyToRequest(requestParams, "combineDispositionStepConditions", properties, RETENTION_SCHEDULE.COMBINE_DISPOSITION_STEP_CONDITIONS); |         addPropertyToRequest( | ||||||
|         addPropertyToRequest(requestParams, "eligibleOnFirstCompleteEvent", properties, RETENTION_SCHEDULE.RETENTION_ELIGIBLE_FIRST_EVENT); |                 requestParams, | ||||||
|  |                 "combineDispositionStepConditions", | ||||||
|  |                 properties, | ||||||
|  |                 RETENTION_SCHEDULE.COMBINE_DISPOSITION_STEP_CONDITIONS); | ||||||
|  |         addPropertyToRequest( | ||||||
|  |                 requestParams, | ||||||
|  |                 "eligibleOnFirstCompleteEvent", | ||||||
|  |                 properties, | ||||||
|  |                 RETENTION_SCHEDULE.RETENTION_ELIGIBLE_FIRST_EVENT); | ||||||
|  |  | ||||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, MessageFormat.format(DISPOSITION_ACTIONS_API, "{0}", catNodeRef)); |         return doPostJsonRequest( | ||||||
|  |                 user, | ||||||
|  |                 password, | ||||||
|  |                 SC_OK, | ||||||
|  |                 requestParams, | ||||||
|  |                 MessageFormat.format(DISPOSITION_ACTIONS_API, "{0}", catNodeRef)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Delete a category |      * Delete a category | ||||||
|      * |      * | ||||||
|      * @param username     user's username |      * @param username user's username | ||||||
|      * @param password     its password |      * @param password its password | ||||||
|      * @param categoryName the name of the category |      * @param categoryName the name of the category | ||||||
|      * @throws AssertionError if the delete was unsuccessful. |      * @throws AssertionError if the delete was unsuccessful. | ||||||
|      */ |      */ | ||||||
|     public void deleteCategory(String username, String password, String categoryName) |     public void deleteCategory(String username, String password, String categoryName) { | ||||||
|     { |  | ||||||
|         deleteItem(username, password, "/" + categoryName); |         deleteItem(username, password, "/" + categoryName); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Delete a sub-category |      * Delete a sub-category | ||||||
|      * |      * | ||||||
|      * @param username     user's username |      * @param username user's username | ||||||
|      * @param password     its password |      * @param password its password | ||||||
|      * @param categoryName the name of the sub-category |      * @param categoryName the name of the sub-category | ||||||
|      * @throws AssertionError if the deletion was unsuccessful. |      * @throws AssertionError if the deletion was unsuccessful. | ||||||
|      */ |      */ | ||||||
|     public void deleteSubCategory(String username, String password, String categoryName, String subCategoryName) |     public void deleteSubCategory( | ||||||
|     { |             String username, String password, String categoryName, String subCategoryName) { | ||||||
|         deleteItem(username, password, "/" + categoryName + "/" + subCategoryName); |         deleteItem(username, password, "/" + categoryName + "/" + subCategoryName); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Delete a folder inside a container in RM site |      * Delete a folder inside a container in RM site | ||||||
|      * |      * | ||||||
|      * @param username      user's username |      * @param username user's username | ||||||
|      * @param password      its password |      * @param password its password | ||||||
|      * @param folderName    folder name |      * @param folderName folder name | ||||||
|      * @param containerName the name of the category or container sin which the folder is |      * @param containerName the name of the category or container sin which the folder is | ||||||
|      * @throws AssertionError if the deletion was unsuccessful. |      * @throws AssertionError if the deletion was unsuccessful. | ||||||
|      */ |      */ | ||||||
|     public void deleteFolderInContainer(String username, String password, String folderName, String containerName) |     public void deleteFolderInContainer( | ||||||
|     { |             String username, String password, String folderName, String containerName) { | ||||||
|         deleteItem(username, password, "/" + containerName + "/" + folderName); |         deleteItem(username, password, "/" + containerName + "/" + folderName); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns a map of retention properties |      * Returns a map of retention properties | ||||||
|      * |      * | ||||||
|      * @param authority    retention authority |      * @param authority retention authority | ||||||
|      * @param instructions retention authority |      * @param instructions retention authority | ||||||
|      * @return the map |      * @return the map | ||||||
|      */ |      */ | ||||||
|     public Map<RETENTION_SCHEDULE, String> getRetentionProperties(String authority, String instructions) |     public Map<RETENTION_SCHEDULE, String> getRetentionProperties( | ||||||
|     { |             String authority, String instructions) { | ||||||
|         Map<RETENTION_SCHEDULE, String> retentionProperties = new HashMap<>(); |         Map<RETENTION_SCHEDULE, String> retentionProperties = new HashMap<>(); | ||||||
|         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_AUTHORITY, authority); |         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_AUTHORITY, authority); | ||||||
|         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS, instructions); |         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS, instructions); | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user