mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			66 Commits
		
	
	
		
			12.2
			...
			autoformat
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 4a3def2c7f | ||
|  | 45eb22e67d | ||
|  | 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 | ||
|  | 52e71719d1 | ||
|  | 507161a1d0 | 
							
								
								
									
										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 | ||||
							
								
								
									
										9
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| repos: | ||||
|   - repo: https://github.com/pre-commit/mirrors-prettier | ||||
|     rev: v2.4.1 | ||||
|     hooks: | ||||
|       - id: prettier | ||||
|         types: [java] | ||||
|         additional_dependencies: | ||||
|           - prettier@2.4.1 | ||||
|           - prettier-plugin-java@1.4.0 | ||||
							
								
								
									
										55
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,4 +1,7 @@ | ||||
| --- | ||||
| import: | ||||
|   - source: Alfresco/alfresco-build-tools:.travis.pre-commit.yml@v1.1.5 | ||||
|  | ||||
| dist: focal | ||||
| language: java | ||||
| jdk: openjdk11 | ||||
| @@ -31,6 +34,7 @@ env: | ||||
|     - LOG_WARN="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" | ||||
|  | ||||
| stages: | ||||
|   - name: lint | ||||
|   - name: test | ||||
|     if: commit_message !~ /\[skip tests\]/ | ||||
|   - name: release | ||||
| @@ -45,12 +49,14 @@ jobs: | ||||
|   include: | ||||
|  | ||||
|     - name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       script: | ||||
|         - travis_retry mvn -B test -pl core,data-model | ||||
|         - travis_retry mvn -B test -pl repository -Dtest=AllUnitTestsSuite | ||||
|  | ||||
|     - name: "Repository - AppContext01TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -59,6 +65,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - AppContext02TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -66,6 +73,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - AppContext03TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -74,6 +82,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - AppContext04TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -82,6 +91,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - AppContext05TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -101,6 +111,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext06TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - AppContextExtraTestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -109,6 +120,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - MiscContextTestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -117,6 +129,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=MiscContextTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - SearchTestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -124,6 +137,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=SearchTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco -Dindex.subsystem.name=solr6 | ||||
|  | ||||
|     - name: "Repository - MariaDB 10.2.18 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.2.18 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||
| @@ -131,6 +145,7 @@ 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 | ||||
|  | ||||
|     - name: "Repository - MariaDB 10.4 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.4 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||
| @@ -138,6 +153,7 @@ 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 | ||||
|  | ||||
|     - name: "Repository - MariaDB 10.5 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.5 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||
| @@ -145,13 +161,16 @@ 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 | ||||
|  | ||||
|     - 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\]/ | ||||
|       stage: test | ||||
|       # We run tests on the latest version of MariaDB on pull requests plus the normal master and release branches - ignored on feature branches | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mariadb:10.6 --transaction-isolation=READ-COMMITTED --max-connections=300 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci | ||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.name=alfresco -Ddb.url=jdbc:mariadb://localhost:3307/alfresco?useUnicode=yes\&characterEncoding=UTF-8 -Ddb.username=alfresco -Ddb.password=alfresco -Ddb.driver=org.mariadb.jdbc.Driver | ||||
|  | ||||
|     - name: "Repository - MySQL 5.7.23 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:5.7.23 --transaction-isolation='READ-COMMITTED' | ||||
| @@ -159,13 +178,16 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - MySQL 8 tests" | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ | ||||
|       stage: test | ||||
|       # We run tests on the latest version of MySQL on pull requests plus the normal master and release branches - ignored on feature branches | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/                         ) OR commit_message =~ /\[db\]/ OR commit_message =~ /\[latest db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco  mysql:8 --transaction-isolation='READ-COMMITTED' | ||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||
|       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 - PostgreSQL 10.9 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:10.9 postgres -c 'max_connections=300' | ||||
| @@ -173,6 +195,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 11.7 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.7 postgres -c 'max_connections=300' | ||||
| @@ -180,6 +203,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 11.12 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:11.12 postgres -c 'max_connections=300' | ||||
| @@ -187,6 +211,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 12.4 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.4 postgres -c 'max_connections=300' | ||||
| @@ -194,6 +219,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 12.7 tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:12.7 postgres -c 'max_connections=300' | ||||
| @@ -201,6 +227,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 13.1 tests" | ||||
|       stage: test | ||||
|       # We only run DB tests on the latest version of PostgreSQL on feature branches | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip db\]/ AND type != pull_request) OR commit_message =~ /\[db\]/ | ||||
|       before_script: | ||||
| @@ -209,6 +236,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - PostgreSQL 13.3 tests" | ||||
|       stage: test | ||||
|       # We only run DB tests on the latest version of PostgreSQL on feature branches | ||||
|       if: commit_message !~ /\[skip db\]/ OR commit_message =~ /\[latest db\]/ | ||||
|       before_script: | ||||
| @@ -217,12 +245,14 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Repository - Messaging tests" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 | ||||
|       script: travis_wait 20 mvn -B test -pl repository -Dtest=CamelRoutesTest,CamelComponentsTest | ||||
|  | ||||
|     - name: "Remote-api - AppContext01TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -230,6 +260,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Remote-api - AppContext02TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -238,6 +269,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Remote-api - AppContext03TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -246,6 +278,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Remote-api - AppContext04TestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -254,6 +287,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "Remote-api - AppContextExtraTestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
| @@ -261,6 +295,7 @@ jobs: | ||||
|       script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "REST API TAS tests part1" | ||||
|       stage: test | ||||
|       # TAS tests are generally skipped on feature branches as they will be repeated on the enterprise repo or community packaging builds | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
| @@ -269,6 +304,7 @@ jobs: | ||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part1 -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "REST API TAS tests part2" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
| @@ -276,6 +312,7 @@ jobs: | ||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part2 -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "REST API TAS tests part3" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
| @@ -283,6 +320,7 @@ jobs: | ||||
|       script: travis_wait 60 mvn -B install -f packaging/tests/tas-restapi/pom.xml -Pall-tas-tests,run-restapi-part3 -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "CMIS TAS tests - BROWSER binding" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
| @@ -290,6 +328,7 @@ jobs: | ||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-browser -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "CMIS TAS tests - ATOM binding" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
| @@ -297,6 +336,7 @@ jobs: | ||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-atom -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "CMIS TAS tests - WEBSERVICES binding" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal+transforms.yml | ||||
| @@ -304,6 +344,7 @@ jobs: | ||||
|       script: travis_wait 40 mvn -B install -f packaging/tests/tas-cmis/pom.xml -Pall-tas-tests,run-cmis-webservices -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "Email TAS tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
| @@ -311,6 +352,7 @@ jobs: | ||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-email/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "WebDAV TAS tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
| @@ -318,6 +360,7 @@ jobs: | ||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-webdav/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "Integration TAS tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip tas\]/) OR commit_message =~ /\[tas\]/ | ||||
|       before_script: | ||||
|         - ${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/docker-compose-minimal.yml | ||||
| @@ -325,36 +368,44 @@ jobs: | ||||
|       script: travis_wait 30 mvn -B install -f packaging/tests/tas-integration/pom.xml -Pall-tas-tests -Denvironment=default -DrunBugs=false | ||||
|  | ||||
|     - name: "Share Services - ShareServicesTestSuite" | ||||
|       stage: test | ||||
|       if: commit_message !~ /\[skip repo\]/ | ||||
|       before_script: | ||||
|         - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300' | ||||
|       script: travis_wait 20 mvn -B test -pl :alfresco-share-services -Dtest=ShareServicesTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco | ||||
|  | ||||
|     - name: "AGS Unit & Integration Tests 01 (PostgreSQL)" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 02 (PostgreSQL)" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 03 (PostgreSQL)" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-postgres -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS Unit & Integration Tests 01 (MySQL) " | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt1 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 02 (MySQL) " | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt2 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS        Integration Tests 03 (MySQL) " | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags on MySQL\]/ | ||||
|       script: travis_retry travis_wait 80 mvn -B verify -Dmaven.javadoc.skip=true -Dmaven.source.skip=true -Pags -Pstart-mysql    -PagsAllTestSuitePt3 -f amps/ags/pom.xml ${LOG_WARN} | ||||
|  | ||||
|     - name: "AGS Community Rest API Tests" | ||||
|       stage: test | ||||
|       if: (branch =~ /(release\/.*$|master)/ AND commit_message !~ /\[skip ags\]/) OR commit_message =~ /\[ags\]/ | ||||
|       addons: | ||||
|         artifacts: | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-community-repo-amps</artifactId> | ||||
|       <version>12.2</version> | ||||
|       <version>14.15-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <modules> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-community-parent</artifactId> | ||||
|       <version>12.2</version> | ||||
|       <version>14.15-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|    <modules> | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|    <parent> | ||||
|       <groupId>org.alfresco</groupId> | ||||
|       <artifactId>alfresco-governance-services-automation-community-repo</artifactId> | ||||
|       <version>12.2</version> | ||||
|       <version>14.15-SNAPSHOT</version> | ||||
|    </parent> | ||||
|  | ||||
|  | ||||
| @@ -40,7 +40,7 @@ | ||||
|       <dependency> | ||||
|          <groupId>org.slf4j</groupId> | ||||
|          <artifactId>slf4j-log4j12</artifactId> | ||||
|          <version>1.7.26</version> | ||||
|          <version>1.7.32</version> | ||||
|          <scope>test</scope> | ||||
|       </dependency> | ||||
|       <dependency> | ||||
| @@ -82,7 +82,7 @@ | ||||
|       <dependency> | ||||
|          <groupId>com.github.docker-java</groupId> | ||||
|          <artifactId>docker-java</artifactId> | ||||
|          <version>3.2.11</version> | ||||
|          <version>3.2.12</version> | ||||
|       </dependency> | ||||
|    </dependencies> | ||||
| </project> | ||||
|   | ||||
| @@ -26,12 +26,11 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.core; | ||||
|  | ||||
| import lombok.Getter; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.PropertySource; | ||||
|  | ||||
| import lombok.Getter; | ||||
|  | ||||
| /** | ||||
|  * Extends {@link RestProperties} to be able to change/add properties | ||||
|  * | ||||
| @@ -40,23 +39,31 @@ import lombok.Getter; | ||||
|  */ | ||||
| @Getter | ||||
| @Configuration | ||||
| @PropertySource(value = {"classpath:default.properties", "classpath:config.properties"}) | ||||
| @PropertySource(value = "classpath:module.properties", ignoreResourceNotFound = true) | ||||
| @PropertySource(value = "classpath:local.properties", ignoreResourceNotFound = true) | ||||
| public class RMRestProperties extends RestProperties | ||||
| { | ||||
|     @Value ("${alfresco.scheme}") | ||||
| @PropertySource( | ||||
|     value = { "classpath:default.properties", "classpath:config.properties" } | ||||
| ) | ||||
| @PropertySource( | ||||
|     value = "classpath:module.properties", | ||||
|     ignoreResourceNotFound = true | ||||
| ) | ||||
| @PropertySource( | ||||
|     value = "classpath:local.properties", | ||||
|     ignoreResourceNotFound = true | ||||
| ) | ||||
| public class RMRestProperties extends RestProperties { | ||||
|  | ||||
|     @Value("${alfresco.scheme}") | ||||
|     private String scheme; | ||||
|  | ||||
|     @Value ("${alfresco.server}") | ||||
|     @Value("${alfresco.server}") | ||||
|     private String server; | ||||
|  | ||||
|     @Value ("${alfresco.port}") | ||||
|     @Value("${alfresco.port}") | ||||
|     private String port; | ||||
|  | ||||
|     @Value ("${rest.rmPath}") | ||||
|     @Value("${rest.rmPath}") | ||||
|     private String restRmPath; | ||||
|  | ||||
|     @Value ("${docker.host}") | ||||
|     @Value("${docker.host}") | ||||
|     private String dockerHost; | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,7 @@ | ||||
| package org.alfresco.rest.core; | ||||
|  | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
|  | ||||
| import lombok.Getter; | ||||
| import org.alfresco.rest.exception.EmptyJsonResponseException; | ||||
| import org.alfresco.rest.model.RestErrorModel; | ||||
| import org.alfresco.rest.model.RestHtmlResponse; | ||||
| @@ -43,8 +43,6 @@ import org.springframework.context.annotation.Scope; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import lombok.Getter; | ||||
|  | ||||
| /** | ||||
|  * Extends {@link RestWrapper} in order to call GS APIs with our own properties | ||||
|  * | ||||
| @@ -53,8 +51,8 @@ import lombok.Getter; | ||||
|  */ | ||||
| @Service | ||||
| @Scope(value = "prototype") | ||||
| public class RMRestWrapper | ||||
| { | ||||
| public class RMRestWrapper { | ||||
|  | ||||
|     /** The class that wraps the ReST APIs from core. */ | ||||
|     @Autowired | ||||
|     private RestWrapper restWrapper; | ||||
| @@ -63,92 +61,77 @@ public class RMRestWrapper | ||||
|     @Getter | ||||
|     private RMRestProperties rmRestProperties; | ||||
|  | ||||
|     public GSCoreAPI withGSCoreAPI() | ||||
|     { | ||||
|     public GSCoreAPI withGSCoreAPI() { | ||||
|         return new GSCoreAPI(this, getRmRestProperties()); | ||||
|     } | ||||
|  | ||||
|     /** Get the core class that wraps the ReST APIs. */ | ||||
|     public RestWrapper getRestWrapper() | ||||
|     { | ||||
|     public RestWrapper getRestWrapper() { | ||||
|         return restWrapper; | ||||
|     } | ||||
|  | ||||
|     /** Authenticate specific user to Alfresco REST API */ | ||||
|     public void authenticateUser(UserModel userModel) | ||||
|     { | ||||
|     public void authenticateUser(UserModel userModel) { | ||||
|         restWrapper.authenticateUser(userModel); | ||||
|     } | ||||
|  | ||||
|     /** Get the last error thrown (if any). */ | ||||
|     public RestErrorModel assertLastError() | ||||
|     { | ||||
|     public RestErrorModel assertLastError() { | ||||
|         return restWrapper.assertLastError(); | ||||
|     } | ||||
|  | ||||
|     /** Process responses for a collection of models as {@link RestSiteModelsCollection}. */ | ||||
|     public <T> T processModels(Class<T> classz, RestRequest simpleRequest) | ||||
|     { | ||||
|     public <T> T processModels(Class<T> classz, RestRequest simpleRequest) { | ||||
|         return restWrapper.processModels(classz, simpleRequest); | ||||
|     } | ||||
|  | ||||
|     /** Process responses for a single model as {@link RestSiteModel}. */ | ||||
|     public <T> T processModel(Class<T> classz, RestRequest restRequest) | ||||
|     { | ||||
|     public <T> T processModel(Class<T> classz, RestRequest restRequest) { | ||||
|         return restWrapper.processModel(classz, restRequest); | ||||
|     } | ||||
|  | ||||
|     /** Process a response that has no body - basically will need only the status code from it. */ | ||||
|     public void processEmptyModel(RestRequest simpleRequest) | ||||
|     { | ||||
|     public void processEmptyModel(RestRequest simpleRequest) { | ||||
|         restWrapper.processEmptyModel(simpleRequest); | ||||
|     } | ||||
|  | ||||
|     /** Get the most recently returned status object. */ | ||||
|     public StatusModel getLastStatus() | ||||
|     { | ||||
|     public StatusModel getLastStatus() { | ||||
|         return restWrapper.getLastStatus(); | ||||
|     } | ||||
|  | ||||
|     /** Get the most recently returned status code. */ | ||||
|     public String getStatusCode() | ||||
|     { | ||||
|     public String getStatusCode() { | ||||
|         return restWrapper.getStatusCode(); | ||||
|     } | ||||
|  | ||||
|     /** Set the status code. This should only be needed when calling APIs without using the TAS framework. */ | ||||
|     public void setStatusCode(String statusCode) | ||||
|     { | ||||
|     public void setStatusCode(String statusCode) { | ||||
|         restWrapper.setStatusCode(statusCode); | ||||
|     } | ||||
|  | ||||
|     /** Assert that a specific status code is returned. */ | ||||
|     public void assertStatusCodeIs(HttpStatus statusCode) | ||||
|     { | ||||
|     public void assertStatusCodeIs(HttpStatus statusCode) { | ||||
|         restWrapper.assertStatusCodeIs(statusCode); | ||||
|     } | ||||
|  | ||||
|     /** @return A parameters string that you could pass on the request ?param=value */ | ||||
|     public String getParameters() | ||||
|     { | ||||
|     public String getParameters() { | ||||
|         return restWrapper.getParameters(); | ||||
|     } | ||||
|  | ||||
|     /** Create a {@link UserModel} for a new test user. */ | ||||
|     public UserModel getTestUser() | ||||
|     { | ||||
|     public UserModel getTestUser() { | ||||
|         return restWrapper.getTestUser(); | ||||
|     } | ||||
|  | ||||
|     /** Get the Alfresco Core API. */ | ||||
|     public RestCoreAPI withCoreAPI() | ||||
|     { | ||||
|     public RestCoreAPI withCoreAPI() { | ||||
|         return restWrapper.withCoreAPI(); | ||||
|     } | ||||
|  | ||||
|     /** Get the Alfresco Search API. */ | ||||
|     public SearchAPI withSearchAPI() | ||||
|     { | ||||
|     public SearchAPI withSearchAPI() { | ||||
|         return restWrapper.withSearchAPI(); | ||||
|     } | ||||
|  | ||||
| @@ -163,8 +146,7 @@ public class RMRestWrapper | ||||
|      * restClient.withCoreAPI().usingNode(ContentModel.my()).createNode(); | ||||
|      * </pre> This will create the node using the multipart data defined. | ||||
|      */ | ||||
|     public RequestSpecBuilder configureRequestSpec() | ||||
|     { | ||||
|     public RequestSpecBuilder configureRequestSpec() { | ||||
|         return restWrapper.configureRequestSpec(); | ||||
|     } | ||||
|  | ||||
| @@ -173,8 +155,7 @@ public class RMRestWrapper | ||||
|      * | ||||
|      * @throws EmptyJsonResponseException If there is no response from the server. | ||||
|      */ | ||||
|     public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) | ||||
|     { | ||||
|     public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) { | ||||
|         return restWrapper.processHtmlResponse(simpleRequest); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ package org.alfresco.rest.core; | ||||
| import static lombok.AccessLevel.PROTECTED; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| import lombok.Getter; | ||||
| import lombok.Setter; | ||||
| import org.alfresco.rest.requests.Node; | ||||
| @@ -63,10 +62,10 @@ import org.springframework.stereotype.Service; | ||||
|  */ | ||||
| @Service | ||||
| @Scope(value = "prototype") | ||||
| public class RestAPIFactory | ||||
| { | ||||
| public class RestAPIFactory { | ||||
|  | ||||
|     @Autowired | ||||
|     @Getter (value = PROTECTED) | ||||
|     @Getter(value = PROTECTED) | ||||
|     private DataUserAIS dataUser; | ||||
|  | ||||
|     @Resource(name = "RMRestWrapper") | ||||
| @@ -74,173 +73,149 @@ public class RestAPIFactory | ||||
|     @Setter | ||||
|     private RMRestWrapper rmRestWrapper; | ||||
|  | ||||
|     private GSCoreAPI getGSCoreAPI(UserModel userModel) | ||||
|     { | ||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||
|     private GSCoreAPI getGSCoreAPI(UserModel userModel) { | ||||
|         getRmRestWrapper() | ||||
|             .authenticateUser( | ||||
|                 userModel != null ? userModel : getDataUser().getAdminUser() | ||||
|             ); | ||||
|         return getRmRestWrapper().withGSCoreAPI(); | ||||
|     } | ||||
|  | ||||
|     private RestCoreAPI getCoreAPI(UserModel userModel) | ||||
|     { | ||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||
|     private RestCoreAPI getCoreAPI(UserModel userModel) { | ||||
|         getRmRestWrapper() | ||||
|             .authenticateUser( | ||||
|                 userModel != null ? userModel : getDataUser().getAdminUser() | ||||
|             ); | ||||
|         return getRmRestWrapper().withCoreAPI(); | ||||
|     } | ||||
|  | ||||
|     public SearchAPI getSearchAPI(UserModel userModel) | ||||
|     { | ||||
|         getRmRestWrapper().authenticateUser(userModel != null ? userModel : getDataUser().getAdminUser()); | ||||
|     public SearchAPI getSearchAPI(UserModel userModel) { | ||||
|         getRmRestWrapper() | ||||
|             .authenticateUser( | ||||
|                 userModel != null ? userModel : getDataUser().getAdminUser() | ||||
|             ); | ||||
|         return getRmRestWrapper().withSearchAPI(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * When no user is given the default is set to admin | ||||
|      */ | ||||
|     public SearchAPI getSearchAPI() | ||||
|     { | ||||
|     public SearchAPI getSearchAPI() { | ||||
|         return getSearchAPI(null); | ||||
|     } | ||||
|  | ||||
|     public Node getNodeAPI(RepoTestModel model) throws RuntimeException | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|     public Node getNodeAPI(RepoTestModel model) throws RuntimeException { | ||||
|         try { | ||||
|             return getCoreAPI(null).usingNode(model); | ||||
|         } | ||||
|         catch (Exception e) | ||||
|         { | ||||
|         } catch (Exception e) { | ||||
|             throw new RuntimeException("Failed to load nodeAPI.", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public Node getNodeAPI(UserModel userModel, RepoTestModel model) throws RuntimeException | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|     public Node getNodeAPI(UserModel userModel, RepoTestModel model) | ||||
|         throws RuntimeException { | ||||
|         try { | ||||
|             return getCoreAPI(userModel).usingNode(model); | ||||
|         } | ||||
|         catch (Exception e) | ||||
|         { | ||||
|         } catch (Exception e) { | ||||
|             throw new RuntimeException("Failed to load nodeAPI.", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public RMSiteAPI getRMSiteAPI() | ||||
|     { | ||||
|     public RMSiteAPI getRMSiteAPI() { | ||||
|         return getGSCoreAPI(null).usingRMSite(); | ||||
|     } | ||||
|  | ||||
|     public RMSiteAPI getRMSiteAPI(UserModel userModel) | ||||
|     { | ||||
|     public RMSiteAPI getRMSiteAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingRMSite(); | ||||
|     } | ||||
|  | ||||
|     public FilePlanAPI getFilePlansAPI() | ||||
|     { | ||||
|     public FilePlanAPI getFilePlansAPI() { | ||||
|         return getGSCoreAPI(null).usingFilePlans(); | ||||
|     } | ||||
|  | ||||
|     public FilePlanAPI getFilePlansAPI(UserModel userModel) | ||||
|     { | ||||
|     public FilePlanAPI getFilePlansAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingFilePlans(); | ||||
|     } | ||||
|  | ||||
|     public RecordCategoryAPI getRecordCategoryAPI() | ||||
|     { | ||||
|     public RecordCategoryAPI getRecordCategoryAPI() { | ||||
|         return getGSCoreAPI(null).usingRecordCategory(); | ||||
|     } | ||||
|  | ||||
|     public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel) | ||||
|     { | ||||
|     public RecordCategoryAPI getRecordCategoryAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingRecordCategory(); | ||||
|     } | ||||
|  | ||||
|     public RecordFolderAPI getRecordFolderAPI() | ||||
|     { | ||||
|     public RecordFolderAPI getRecordFolderAPI() { | ||||
|         return getGSCoreAPI(null).usingRecordFolder(); | ||||
|     } | ||||
|  | ||||
|     public RecordFolderAPI getRecordFolderAPI(UserModel userModel) | ||||
|     { | ||||
|     public RecordFolderAPI getRecordFolderAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingRecordFolder(); | ||||
|     } | ||||
|  | ||||
|     public RecordsAPI getRecordsAPI() | ||||
|     { | ||||
|     public RecordsAPI getRecordsAPI() { | ||||
|         return getGSCoreAPI(null).usingRecords(); | ||||
|     } | ||||
|  | ||||
|     public RecordsAPI getRecordsAPI(UserModel userModel) | ||||
|     { | ||||
|     public RecordsAPI getRecordsAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingRecords(); | ||||
|     } | ||||
|  | ||||
|     public FilesAPI getFilesAPI() | ||||
|     { | ||||
|     public FilesAPI getFilesAPI() { | ||||
|         return getGSCoreAPI(null).usingFiles(); | ||||
|     } | ||||
|  | ||||
|     public FilesAPI getFilesAPI(UserModel userModel) | ||||
|     { | ||||
|     public FilesAPI getFilesAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingFiles(); | ||||
|     } | ||||
|  | ||||
|     public TransferContainerAPI getTransferContainerAPI() | ||||
|     { | ||||
|     public TransferContainerAPI getTransferContainerAPI() { | ||||
|         return getGSCoreAPI(null).usingTransferContainer(); | ||||
|     } | ||||
|  | ||||
|     public TransferContainerAPI getTransferContainerAPI(UserModel userModel) | ||||
|     { | ||||
|     public TransferContainerAPI getTransferContainerAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingTransferContainer(); | ||||
|     } | ||||
|  | ||||
|     public TransferAPI getTransferAPI() | ||||
|     { | ||||
|     public TransferAPI getTransferAPI() { | ||||
|         return getGSCoreAPI(null).usingTransfer(); | ||||
|     } | ||||
|  | ||||
|     public TransferAPI getTransferAPI(UserModel userModel) | ||||
|     { | ||||
|     public TransferAPI getTransferAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingTransfer(); | ||||
|     } | ||||
|  | ||||
|     public RMUserAPI getRMUserAPI() | ||||
|     { | ||||
|     public RMUserAPI getRMUserAPI() { | ||||
|         return getGSCoreAPI(null).usingRMUser(); | ||||
|     } | ||||
|  | ||||
|     public RMUserAPI getRMUserAPI(UserModel userModel) | ||||
|     { | ||||
|     public RMUserAPI getRMUserAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingRMUser(); | ||||
|     } | ||||
|  | ||||
|     public UnfiledContainerAPI getUnfiledContainersAPI() | ||||
|     { | ||||
|     public UnfiledContainerAPI getUnfiledContainersAPI() { | ||||
|         return getGSCoreAPI(null).usingUnfiledContainers(); | ||||
|     } | ||||
|  | ||||
|     public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel) | ||||
|     { | ||||
|     public UnfiledContainerAPI getUnfiledContainersAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingUnfiledContainers(); | ||||
|     } | ||||
|  | ||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI() | ||||
|     { | ||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI() { | ||||
|         return getGSCoreAPI(null).usingUnfiledRecordFolder(); | ||||
|     } | ||||
|  | ||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI(UserModel userModel) | ||||
|     { | ||||
|     public UnfiledRecordFolderAPI getUnfiledRecordFoldersAPI( | ||||
|         UserModel userModel | ||||
|     ) { | ||||
|         return getGSCoreAPI(userModel).usingUnfiledRecordFolder(); | ||||
|     } | ||||
|  | ||||
|     public ActionsExecutionAPI getActionsAPI(UserModel userModel) | ||||
|     { | ||||
|     public ActionsExecutionAPI getActionsAPI(UserModel userModel) { | ||||
|         return getGSCoreAPI(userModel).usingActionsExecutionsAPI(); | ||||
|     } | ||||
|  | ||||
|     public ActionsExecutionAPI getActionsAPI() | ||||
|     { | ||||
|     public ActionsExecutionAPI getActionsAPI() { | ||||
|         return getGSCoreAPI(null).usingActionsExecutionsAPI(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.core.search; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import org.alfresco.rest.search.Pagination; | ||||
| import org.alfresco.rest.search.RestRequestQueryModel; | ||||
| import org.alfresco.rest.search.SearchRequest; | ||||
| @@ -35,23 +34,22 @@ import org.alfresco.rest.search.SearchRequest; | ||||
| /** | ||||
|  * 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() | ||||
|     { | ||||
|     public SearchRequestBuilder() { | ||||
|         new SearchRequest(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the sql statement for the SearchRequest | ||||
|      * | ||||
|      * @param query sql statement | ||||
|      * @return search  request | ||||
|      */ | ||||
|     public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query) | ||||
|     { | ||||
|     public SearchRequestBuilder setQueryBuilder(RestRequestQueryModel query) { | ||||
|         super.setQuery(query); | ||||
|         return this; | ||||
|     } | ||||
| @@ -62,8 +60,7 @@ public class SearchRequestBuilder extends SearchRequest | ||||
|      * @param paging pagination requested | ||||
|      * @return search request | ||||
|      */ | ||||
|     public SearchRequestBuilder setPagingBuilder(Pagination paging) | ||||
|     { | ||||
|     public SearchRequestBuilder setPagingBuilder(Pagination paging) { | ||||
|         super.setPaging(paging); | ||||
|         return this; | ||||
|     } | ||||
| @@ -71,8 +68,7 @@ public class SearchRequestBuilder extends SearchRequest | ||||
|     /** | ||||
|      * Set the pagination properties | ||||
|      */ | ||||
|     public Pagination setPagination(Integer maxItems, Integer skipCount) | ||||
|     { | ||||
|     public Pagination setPagination(Integer maxItems, Integer skipCount) { | ||||
|         Pagination pagination = new Pagination(); | ||||
|         pagination.setMaxItems(maxItems); | ||||
|         pagination.setSkipCount(skipCount); | ||||
| @@ -85,10 +81,8 @@ public class SearchRequestBuilder extends SearchRequest | ||||
|      * @param fields requested fields | ||||
|      * @return search request | ||||
|      */ | ||||
|     public SearchRequestBuilder setFieldsBuilder(List<String> fields) | ||||
|     { | ||||
|     public SearchRequestBuilder setFieldsBuilder(List<String> fields) { | ||||
|         super.setFields(fields); | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -26,13 +26,12 @@ | ||||
|  */ | ||||
| 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 javax.json.Json; | ||||
| import javax.json.JsonReader; | ||||
| import org.apache.commons.io.IOUtils; | ||||
| import org.apache.http.HttpEntity; | ||||
| import org.apache.http.HttpResponse; | ||||
| @@ -48,19 +47,20 @@ import org.slf4j.LoggerFactory; | ||||
|  * @author Tom Page | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class APIUtils | ||||
| { | ||||
| public class APIUtils { | ||||
|  | ||||
|     /** Logger for this class. */ | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(APIUtils.class); | ||||
|     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*/ | ||||
|     public static final DateTimeFormatter ISO_INSTANT_FORMATTER = | ||||
|             new DateTimeFormatterBuilder().appendInstant(3).toFormatter(); | ||||
|     public static final DateTimeFormatter ISO_INSTANT_FORMATTER = new DateTimeFormatterBuilder() | ||||
|         .appendInstant(3) | ||||
|         .toFormatter(); | ||||
|  | ||||
|     /** Private constructor for helper class. */ | ||||
|     private APIUtils() | ||||
|     { | ||||
|     } | ||||
|     private APIUtils() {} | ||||
|  | ||||
|     /** | ||||
|      * Extract the body of a HTTP response as a JSON object. | ||||
| @@ -68,16 +68,21 @@ public class APIUtils | ||||
|      * @param httpResponse The HTTP response. | ||||
|      * @return A JSON representation of the object. | ||||
|      */ | ||||
|     public static JSONObject convertHTTPResponseToJSON(HttpResponse httpResponse) | ||||
|     { | ||||
|     public static JSONObject convertHTTPResponseToJSON( | ||||
|         HttpResponse httpResponse | ||||
|     ) { | ||||
|         String source = null; | ||||
|         try | ||||
|         { | ||||
|             source = IOUtils.toString(httpResponse.getEntity().getContent(), "UTF-8"); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|             throw new IllegalArgumentException("Could not extract JSON from HTTP response.", e); | ||||
|         try { | ||||
|             source = | ||||
|                 IOUtils.toString( | ||||
|                     httpResponse.getEntity().getContent(), | ||||
|                     "UTF-8" | ||||
|                 ); | ||||
|         } catch (IOException e) { | ||||
|             throw new IllegalArgumentException( | ||||
|                 "Could not extract JSON from HTTP response.", | ||||
|                 e | ||||
|             ); | ||||
|         } | ||||
|         LOGGER.info("Response body:\n{}", source); | ||||
|         return new JSONObject(source); | ||||
| @@ -89,30 +94,25 @@ public class APIUtils | ||||
|      * @param httpResponse http response | ||||
|      * @return error message from the http response | ||||
|      */ | ||||
|     public static String extractErrorMessageFromHttpResponse(HttpResponse httpResponse) | ||||
|     { | ||||
|     public static String extractErrorMessageFromHttpResponse( | ||||
|         HttpResponse httpResponse | ||||
|     ) { | ||||
|         final HttpEntity entity = httpResponse.getEntity(); | ||||
|         JsonReader reader = null; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             final InputStream responseStream = entity.getContent(); | ||||
|             reader = Json.createReader(responseStream); | ||||
|             return reader.readObject().getString("message"); | ||||
|         } | ||||
|         catch (JSONException error) | ||||
|         { | ||||
|  | ||||
|             LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, error); | ||||
|         } | ||||
|         catch (ParseException | IOException error) | ||||
|         { | ||||
|  | ||||
|         } catch (JSONException error) { | ||||
|             LOGGER.error( | ||||
|                 "Converting message body to JSON failed. Body: {}", | ||||
|                 httpResponse, | ||||
|                 error | ||||
|             ); | ||||
|         } catch (ParseException | IOException error) { | ||||
|             LOGGER.error("Parsing message body failed.", error); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             if (reader != null) | ||||
|             { | ||||
|         } finally { | ||||
|             if (reader != null) { | ||||
|                 reader.close(); | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -38,7 +38,6 @@ import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||
| import org.alfresco.dataprep.ContentService; | ||||
| @@ -70,20 +69,25 @@ import org.springframework.beans.factory.annotation.Autowired; | ||||
|  * @author Kristijan Conkas | ||||
|  * @since 2.5 | ||||
|  */ | ||||
| public abstract class BaseAPI | ||||
| { | ||||
| public abstract class BaseAPI { | ||||
|  | ||||
|     // 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 */ | ||||
|     private static final String EXCEPTION_KEY = "exception"; | ||||
|     private static final String MESSAGE_KEY = "message"; | ||||
|     public static final String NODE_PREFIX = "workspace/SpacesStore/"; | ||||
|     protected static final String UPDATE_METADATA_API = "{0}node/{1}/formprocessor"; | ||||
|     protected static final String UPDATE_METADATA_API = | ||||
|         "{0}node/{1}/formprocessor"; | ||||
|     protected static final String ACTIONS_API = "{0}actionQueue"; | ||||
|     protected static final String RM_ACTIONS_API = "{0}rma/actions/ExecutionQueue"; | ||||
|     protected static final String RM_ACTIONS_API = | ||||
|         "{0}rma/actions/ExecutionQueue"; | ||||
|     public static final String RM_SITE_ID = "rm"; | ||||
|     protected static final String SHARE_ACTION_API = "{0}internal/shared/share/workspace/SpacesStore/{1}"; | ||||
|     protected static final String SHARE_ACTION_API = | ||||
|         "{0}internal/shared/share/workspace/SpacesStore/{1}"; | ||||
|     private static final String SLINGSHOT_PREFIX = "alfresco/s/slingshot/"; | ||||
|  | ||||
|     @Autowired | ||||
| @@ -92,7 +96,8 @@ public abstract class BaseAPI | ||||
|     @Autowired | ||||
|     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"; | ||||
|  | ||||
|     /** | ||||
| @@ -102,20 +107,18 @@ public abstract class BaseAPI | ||||
|      * @return list of specified property values in result | ||||
|      * @throws RuntimeException for malformed response | ||||
|      */ | ||||
|     protected List<String> getPropertyValues(JSONObject result, String propertyName) | ||||
|     { | ||||
|     protected List<String> getPropertyValues( | ||||
|         JSONObject result, | ||||
|         String propertyName | ||||
|     ) { | ||||
|         ArrayList<String> results = new ArrayList<>(); | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             JSONArray items = result.getJSONArray("items"); | ||||
|  | ||||
|             for (int i = 0; i < items.length(); i++) | ||||
|             { | ||||
|             for (int i = 0; i < items.length(); i++) { | ||||
|                 results.add(items.getJSONObject(i).getString(propertyName)); | ||||
|             } | ||||
|         } | ||||
|         catch (JSONException error) | ||||
|         { | ||||
|         } catch (JSONException error) { | ||||
|             throw new RuntimeException("Unable to parse result", error); | ||||
|         } | ||||
|  | ||||
| @@ -124,35 +127,36 @@ public abstract class BaseAPI | ||||
|  | ||||
|     /** | ||||
|      * Helper method to extract the property value for the given nodeRef and property name | ||||
|      *  | ||||
|      * | ||||
|      * @param result | ||||
|      * @param nodeRef | ||||
|      * @param propertyName | ||||
|      * @return | ||||
|      */ | ||||
|     protected String getPropertyValue(JSONObject result, String nodeRef, String propertyName) | ||||
|     { | ||||
|     protected String getPropertyValue( | ||||
|         JSONObject result, | ||||
|         String nodeRef, | ||||
|         String propertyName | ||||
|     ) { | ||||
|         String propertyValue = ""; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             JSONArray items = result.getJSONArray("items"); | ||||
|             for (int i = 0; i < items.length(); i++) | ||||
|             { | ||||
|             for (int i = 0; i < items.length(); i++) { | ||||
|                 JSONObject item = items.getJSONObject(i); | ||||
|                 if(nodeRef.equals(item.getString("nodeRef"))) | ||||
|                 { | ||||
|                     propertyValue = item.getJSONObject("properties").getString(propertyName); | ||||
|                 if (nodeRef.equals(item.getString("nodeRef"))) { | ||||
|                     propertyValue = | ||||
|                         item | ||||
|                             .getJSONObject("properties") | ||||
|                             .getString(propertyName); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         catch (JSONException error) | ||||
|         { | ||||
|         } catch (JSONException error) { | ||||
|             throw new RuntimeException("Unable to parse result", error); | ||||
|         } | ||||
|  | ||||
|         return propertyValue; | ||||
|     } | ||||
|      | ||||
|  | ||||
|     /** | ||||
|      * Helper method to extract property values from request result and put them in map as a list that corresponds to a unique property value. | ||||
|      * | ||||
| @@ -160,26 +164,32 @@ public abstract class BaseAPI | ||||
|      * @return a map containing information about multiple properties values that correspond to a unique one | ||||
|      * @throws RuntimeException for malformed response | ||||
|      */ | ||||
|     protected Map<String, List<String>> getPropertyValuesByUniquePropertyValue(JSONObject requestResult, String uniqueProperty, List<String> otherProperties) | ||||
|     { | ||||
|     protected Map<String, List<String>> getPropertyValuesByUniquePropertyValue( | ||||
|         JSONObject requestResult, | ||||
|         String uniqueProperty, | ||||
|         List<String> otherProperties | ||||
|     ) { | ||||
|         Map<String, List<String>> valuesByUniqueProperty = new HashMap<>(); | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             JSONArray items = requestResult.getJSONArray("items"); | ||||
|  | ||||
|             for (int i = 0; i < items.length(); i++) | ||||
|             { | ||||
|             for (int i = 0; i < items.length(); i++) { | ||||
|                 List<String> otherPropertiesValues = new ArrayList<>(); | ||||
|  | ||||
|                 for (int j = 0; j < otherProperties.size(); j++) | ||||
|                 { | ||||
|                     otherPropertiesValues.add(items.getJSONObject(i).get(otherProperties.get(j)).toString()); | ||||
|                 for (int j = 0; j < otherProperties.size(); j++) { | ||||
|                     otherPropertiesValues.add( | ||||
|                         items | ||||
|                             .getJSONObject(i) | ||||
|                             .get(otherProperties.get(j)) | ||||
|                             .toString() | ||||
|                     ); | ||||
|                 } | ||||
|                 valuesByUniqueProperty.put(items.getJSONObject(i).getString(uniqueProperty), otherPropertiesValues); | ||||
|                 valuesByUniqueProperty.put( | ||||
|                     items.getJSONObject(i).getString(uniqueProperty), | ||||
|                     otherPropertiesValues | ||||
|                 ); | ||||
|             } | ||||
|         } | ||||
|         catch (JSONException error) | ||||
|         { | ||||
|         } catch (JSONException error) { | ||||
|             throw new RuntimeException("Unable to parse result", error); | ||||
|         } | ||||
|  | ||||
| @@ -196,9 +206,16 @@ public abstract class BaseAPI | ||||
|      *                 when trying to get File Plan, the path would be "" | ||||
|      * @return the container nodeRef | ||||
|      */ | ||||
|     public String getItemNodeRef(String username, String password, String path) | ||||
|     { | ||||
|         return contentService.getNodeRefByPath(username, password, FILE_PLAN_PATH + path); | ||||
|     public String getItemNodeRef( | ||||
|         String username, | ||||
|         String password, | ||||
|         String path | ||||
|     ) { | ||||
|         return contentService.getNodeRefByPath( | ||||
|             username, | ||||
|             password, | ||||
|             FILE_PLAN_PATH + path | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -209,14 +226,18 @@ public abstract class BaseAPI | ||||
|      * @param path     the object path | ||||
|      * @return the object in case it exists, null if its does not exist | ||||
|      */ | ||||
|     protected CmisObject getObjectByPath(String username, String password, String path) | ||||
|     { | ||||
|     protected CmisObject getObjectByPath( | ||||
|         String username, | ||||
|         String password, | ||||
|         String path | ||||
|     ) { | ||||
|         CmisObject object; | ||||
|         try | ||||
|         { | ||||
|             object = contentService.getCMISSession(username, password).getObjectByPath(path); | ||||
|         } catch (CmisObjectNotFoundException notFoundError) | ||||
|         { | ||||
|         try { | ||||
|             object = | ||||
|                 contentService | ||||
|                     .getCMISSession(username, password) | ||||
|                     .getObjectByPath(path); | ||||
|         } catch (CmisObjectNotFoundException notFoundError) { | ||||
|             return null; | ||||
|         } | ||||
|         return object; | ||||
| @@ -230,23 +251,25 @@ public abstract class BaseAPI | ||||
|      * @param parameters if the request has parameters | ||||
|      * @return result object (see API reference for more details), null for any errors | ||||
|      */ | ||||
|     protected JSONObject facetedRequest(String username, String password, List<NameValuePair> parameters, String requestURI) | ||||
|     { | ||||
|     protected JSONObject facetedRequest( | ||||
|         String username, | ||||
|         String password, | ||||
|         List<NameValuePair> parameters, | ||||
|         String requestURI | ||||
|     ) { | ||||
|         String requestURL; | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|  | ||||
|         if (parameters == null || parameters.isEmpty()) | ||||
|         { | ||||
|              requestURL = MessageFormat.format( | ||||
|                     requestURI, | ||||
|                     client.getAlfrescoUrl()); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|              requestURL = MessageFormat.format( | ||||
|         if (parameters == null || parameters.isEmpty()) { | ||||
|             requestURL = | ||||
|                 MessageFormat.format(requestURI, client.getAlfrescoUrl()); | ||||
|         } else { | ||||
|             requestURL = | ||||
|                 MessageFormat.format( | ||||
|                     requestURI, | ||||
|                     client.getAlfrescoUrl(), | ||||
|                     URLEncodedUtils.format(parameters, "UTF-8")); | ||||
|                     URLEncodedUtils.format(parameters, "UTF-8") | ||||
|                 ); | ||||
|         } | ||||
|         LOGGER.info("On GET {}, received following response: ", requestURL); | ||||
|         client.close(); | ||||
| @@ -260,24 +283,29 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected JSONObject doGetRequest(String adminUser, | ||||
|     protected JSONObject doGetRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String urlTemplate, | ||||
|         String ... urlTemplateParams) | ||||
|     { | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String requestUrl = MessageFormat.format( | ||||
|             urlTemplate, | ||||
|             client.getApiUrl(), | ||||
|             urlTemplateParams); | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|         client.close(); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             return doRequest(HttpGet.class, requestUrl, adminUser, adminPassword, null); | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         try { | ||||
|             return doRequest( | ||||
|                 HttpGet.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 null | ||||
|             ); | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doGetRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -289,24 +317,29 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected JSONObject doDeleteRequest(String adminUser, | ||||
|     protected JSONObject doDeleteRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String urlTemplate, | ||||
|         String ... urlTemplateParams) | ||||
|     { | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String requestUrl = MessageFormat.format( | ||||
|             urlTemplate, | ||||
|             client.getApiUrl(), | ||||
|             urlTemplateParams); | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|         client.close(); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             return doRequest(HttpDelete.class, requestUrl, adminUser, adminPassword, null); | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         try { | ||||
|             return doRequest( | ||||
|                 HttpDelete.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 null | ||||
|             ); | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doDeleteRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -319,25 +352,30 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected JSONObject doPutRequest(String adminUser, | ||||
|     protected JSONObject doPutRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String ... urlTemplateParams) | ||||
|     { | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String requestUrl = MessageFormat.format( | ||||
|             urlTemplate, | ||||
|             client.getApiUrl(), | ||||
|             urlTemplateParams); | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|         client.close(); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             return doRequest(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         try { | ||||
|             return doRequest( | ||||
|                 HttpPut.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 requestParams | ||||
|             ); | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doPutRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -352,15 +390,24 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected HttpResponse doPutJsonRequest(String adminUser, | ||||
|                 String adminPassword, | ||||
|                 int expectedStatusCode, | ||||
|                 JSONObject requestParams, | ||||
|                 String urlTemplate, | ||||
|                 String... urlTemplateParams) | ||||
|     { | ||||
|     protected HttpResponse doPutJsonRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         int expectedStatusCode, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         return doPutJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getApiUrl(), requestParams, urlTemplate, urlTemplateParams); | ||||
|         return doPutJsonRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             expectedStatusCode, | ||||
|             client.getApiUrl(), | ||||
|             requestParams, | ||||
|             urlTemplate, | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -375,23 +422,35 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      * @throws AssertionError if the returned status code is not as expected. | ||||
|      */ | ||||
|     private HttpResponse doPutJsonRequest(String adminUser, | ||||
|                 String adminPassword, | ||||
|                 int expectedStatusCode, | ||||
|                 String urlStart, | ||||
|                 JSONObject requestParams, | ||||
|                 String urlTemplate, | ||||
|                 String... urlTemplateParams) | ||||
|     { | ||||
|         String requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); | ||||
|         try | ||||
|         { | ||||
|             HttpResponse httpResponse = doRequestJson(HttpPut.class, requestUrl, adminUser, adminPassword, requestParams); | ||||
|             assertEquals("PUT request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode()); | ||||
|     private HttpResponse doPutJsonRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         int expectedStatusCode, | ||||
|         String urlStart, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         String requestUrl = formatRequestUrl( | ||||
|             urlStart, | ||||
|             urlTemplate, | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|         try { | ||||
|             HttpResponse httpResponse = doRequestJson( | ||||
|                 HttpPut.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 requestParams | ||||
|             ); | ||||
|             assertEquals( | ||||
|                 "PUT request to " + requestUrl + " was not successful.", | ||||
|                 expectedStatusCode, | ||||
|                 httpResponse.getStatusLine().getStatusCode() | ||||
|             ); | ||||
|             return httpResponse; | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doPutRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -404,12 +463,18 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplateParams Any parameters that need to be filled into the URL template. | ||||
|      * @return The resultant URL. | ||||
|      */ | ||||
|     private String formatRequestUrl(String urlStart, String urlTemplate, String[] urlTemplateParams) | ||||
|     { | ||||
|         if (urlTemplateParams.length == 1) | ||||
|         { | ||||
|     private String formatRequestUrl( | ||||
|         String urlStart, | ||||
|         String urlTemplate, | ||||
|         String[] urlTemplateParams | ||||
|     ) { | ||||
|         if (urlTemplateParams.length == 1) { | ||||
|             // The format method needs some help to know not to use the whole array object. | ||||
|             return MessageFormat.format(urlTemplate, urlStart, urlTemplateParams[0]); | ||||
|             return MessageFormat.format( | ||||
|                 urlTemplate, | ||||
|                 urlStart, | ||||
|                 urlTemplateParams[0] | ||||
|             ); | ||||
|         } | ||||
|         return MessageFormat.format(urlTemplate, urlStart, urlTemplateParams); | ||||
|     } | ||||
| @@ -422,25 +487,30 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected JSONObject doPostRequest(String adminUser, | ||||
|     protected JSONObject doPostRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String ... urlTemplateParams) | ||||
|     { | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String requestUrl = MessageFormat.format( | ||||
|             urlTemplate, | ||||
|             client.getApiUrl(), | ||||
|             urlTemplateParams); | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|         client.close(); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             return doRequest(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         try { | ||||
|             return doRequest( | ||||
|                 HttpPost.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 requestParams | ||||
|             ); | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doPostRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -455,15 +525,24 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected HttpResponse doPostJsonRequest(String adminUser, | ||||
|                                     String adminPassword, | ||||
|                                     int expectedStatusCode, | ||||
|                                     JSONObject requestParams, | ||||
|                                     String urlTemplate, | ||||
|                                     String... urlTemplateParams) | ||||
|     { | ||||
|     protected HttpResponse doPostJsonRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         int expectedStatusCode, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         return doPostJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getApiUrl(), requestParams, urlTemplate, urlTemplateParams); | ||||
|         return doPostJsonRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             expectedStatusCode, | ||||
|             client.getApiUrl(), | ||||
|             requestParams, | ||||
|             urlTemplate, | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -476,15 +555,24 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplate request URL template | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      */ | ||||
|     protected HttpResponse doSlingshotPostJsonRequest(String adminUser, | ||||
|                 String adminPassword, | ||||
|                 int expectedStatusCode, | ||||
|                 JSONObject requestParams, | ||||
|                 String urlTemplate, | ||||
|                 String... urlTemplateParams) | ||||
|     { | ||||
|     protected HttpResponse doSlingshotPostJsonRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         int expectedStatusCode, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         return doPostJsonRequest(adminUser, adminPassword, expectedStatusCode, client.getAlfrescoUrl() + SLINGSHOT_PREFIX, requestParams, urlTemplate, urlTemplateParams); | ||||
|         return doPostJsonRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             expectedStatusCode, | ||||
|             client.getAlfrescoUrl() + SLINGSHOT_PREFIX, | ||||
|             requestParams, | ||||
|             urlTemplate, | ||||
|             urlTemplateParams | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -499,24 +587,32 @@ public abstract class BaseAPI | ||||
|      * @param urlTemplateParams zero or more parameters used with <i>urlTemplate</i> | ||||
|      * @throws AssertionError if the returned status code is not as expected. | ||||
|      */ | ||||
|     private HttpResponse doPostJsonRequest(String adminUser, | ||||
|                 String adminPassword, | ||||
|                 int expectedStatusCode, | ||||
|                 String urlStart, | ||||
|                 JSONObject requestParams, | ||||
|                 String urlTemplate, | ||||
|                 String... urlTemplateParams) | ||||
|     { | ||||
|     private HttpResponse doPostJsonRequest( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         int expectedStatusCode, | ||||
|         String urlStart, | ||||
|         JSONObject requestParams, | ||||
|         String urlTemplate, | ||||
|         String... urlTemplateParams | ||||
|     ) { | ||||
|         String requestUrl; | ||||
|         requestUrl = formatRequestUrl(urlStart, urlTemplate, urlTemplateParams); | ||||
|         try | ||||
|         { | ||||
|             HttpResponse httpResponse = doRequestJson(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams); | ||||
|             assertEquals("POST request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode()); | ||||
|         try { | ||||
|             HttpResponse httpResponse = doRequestJson( | ||||
|                 HttpPost.class, | ||||
|                 requestUrl, | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 requestParams | ||||
|             ); | ||||
|             assertEquals( | ||||
|                 "POST request to " + requestUrl + " was not successful.", | ||||
|                 expectedStatusCode, | ||||
|                 httpResponse.getStatusLine().getStatusCode() | ||||
|             ); | ||||
|             return httpResponse; | ||||
|         } | ||||
|         catch (InstantiationException | IllegalAccessException error) | ||||
|         { | ||||
|         } catch (InstantiationException | IllegalAccessException error) { | ||||
|             throw new IllegalArgumentException("doPostRequest failed", error); | ||||
|         } | ||||
|     } | ||||
| @@ -537,84 +633,95 @@ public abstract class BaseAPI | ||||
|         String requestUrl, | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         JSONObject requestParams) throws InstantiationException, IllegalAccessException | ||||
|     { | ||||
|         JSONObject requestParams | ||||
|     ) throws InstantiationException, IllegalAccessException { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         T request = requestType.newInstance(); | ||||
|  | ||||
|         JSONObject responseBody = null; | ||||
|         JSONObject returnValues = null; | ||||
|  | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             request.setURI(new URI(requestUrl)); | ||||
|  | ||||
|             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) | ||||
|             { | ||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString())); | ||||
|             if ( | ||||
|                 requestParams != null && | ||||
|                 request instanceof HttpEntityEnclosingRequestBase | ||||
|             ) { | ||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity( | ||||
|                         new StringEntity(requestParams.toString()) | ||||
|                     ); | ||||
|             } | ||||
|             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); | ||||
|             LOGGER.info( | ||||
|                 "Sending {} request to {}", | ||||
|                 requestType.getSimpleName(), | ||||
|                 requestUrl | ||||
|             ); | ||||
|             LOGGER.info("Request body: {}", requestParams); | ||||
|             HttpResponse response = client.execute(adminUser, adminPassword, request); | ||||
|             HttpResponse response = client.execute( | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 request | ||||
|             ); | ||||
|             LOGGER.info("Response: {}", response.getStatusLine()); | ||||
|  | ||||
|             try | ||||
|             { | ||||
|                 responseBody = new JSONObject(EntityUtils.toString(response.getEntity())); | ||||
|             } | ||||
|             catch (JSONException error) | ||||
|             { | ||||
|                 LOGGER.error("Converting message body to JSON failed. Body: {}", responseBody, error); | ||||
|             } | ||||
|             catch (ParseException | IOException error) | ||||
|             { | ||||
|             try { | ||||
|                 responseBody = | ||||
|                     new JSONObject(EntityUtils.toString(response.getEntity())); | ||||
|             } catch (JSONException error) { | ||||
|                 LOGGER.error( | ||||
|                     "Converting message body to JSON failed. Body: {}", | ||||
|                     responseBody, | ||||
|                     error | ||||
|                 ); | ||||
|             } catch (ParseException | IOException error) { | ||||
|                 LOGGER.error("Parsing message body failed.", error); | ||||
|             } | ||||
|  | ||||
|             switch (response.getStatusLine().getStatusCode()) | ||||
|             { | ||||
|             switch (response.getStatusLine().getStatusCode()) { | ||||
|                 case HttpStatus.SC_OK: | ||||
|                 case HttpStatus.SC_CREATED: | ||||
|                     // request successful | ||||
|                     if (responseBody != null) | ||||
|                     { | ||||
|                     if (responseBody != null) { | ||||
|                         returnValues = responseBody; | ||||
|                     } | ||||
|                     break; | ||||
|  | ||||
|                 case HttpStatus.SC_INTERNAL_SERVER_ERROR: | ||||
| 					if (responseBody != null  && responseBody.has(EXCEPTION_KEY)) | ||||
|                     { | ||||
|                         LOGGER.error("Request failed with error message: {}", responseBody.getString(MESSAGE_KEY)); | ||||
|                     if ( | ||||
|                         responseBody != null && responseBody.has(EXCEPTION_KEY) | ||||
|                     ) { | ||||
|                         LOGGER.error( | ||||
|                             "Request failed with error message: {}", | ||||
|                             responseBody.getString(MESSAGE_KEY) | ||||
|                         ); | ||||
|                         returnValues = responseBody; | ||||
|                     } | ||||
|                     break; | ||||
|                 case HttpStatus.SC_BAD_REQUEST: | ||||
|                 case HttpStatus.SC_UNPROCESSABLE_ENTITY: | ||||
|                     if (responseBody != null  && responseBody.has(EXCEPTION_KEY)) | ||||
|                     { | ||||
|                         LOGGER.error("Request failed: {}", responseBody.getString(EXCEPTION_KEY)); | ||||
|                     if ( | ||||
|                         responseBody != null && responseBody.has(EXCEPTION_KEY) | ||||
|                     ) { | ||||
|                         LOGGER.error( | ||||
|                             "Request failed: {}", | ||||
|                             responseBody.getString(EXCEPTION_KEY) | ||||
|                         ); | ||||
|                         returnValues = responseBody; | ||||
|                     } | ||||
|                     break; | ||||
|  | ||||
|                 default: | ||||
|                     LOGGER.error("Request returned unexpected HTTP status {}", response.getStatusLine().getStatusCode()); | ||||
|                     LOGGER.error( | ||||
|                         "Request returned unexpected HTTP status {}", | ||||
|                         response.getStatusLine().getStatusCode() | ||||
|                     ); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|         catch (JSONException error) | ||||
|         { | ||||
|         } catch (JSONException error) { | ||||
|             LOGGER.error("Unable to extract response parameter", error); | ||||
|         } | ||||
|         catch (UnsupportedEncodingException | URISyntaxException error1) | ||||
|         { | ||||
|         } catch (UnsupportedEncodingException | URISyntaxException error1) { | ||||
|             LOGGER.error("Unable to construct request", error1); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             if (request != null) | ||||
|             { | ||||
|         } finally { | ||||
|             if (request != null) { | ||||
|                 request.releaseConnection(); | ||||
|             } | ||||
|             client.close(); | ||||
| @@ -624,39 +731,45 @@ public abstract class BaseAPI | ||||
|     } | ||||
|  | ||||
|     private <T extends HttpRequestBase> HttpResponse doRequestJson( | ||||
|             Class<T> requestType, | ||||
|             String requestUrl, | ||||
|             String adminUser, | ||||
|             String adminPassword, | ||||
|             JSONObject requestParams) throws InstantiationException, IllegalAccessException | ||||
|     { | ||||
|         Class<T> requestType, | ||||
|         String requestUrl, | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         JSONObject requestParams | ||||
|     ) throws InstantiationException, IllegalAccessException { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         T request = requestType.newInstance(); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             request.setURI(new URI(requestUrl)); | ||||
|             request.setHeader("Content-Type", "application/json"); | ||||
|  | ||||
|             if (requestParams != null && request instanceof HttpEntityEnclosingRequestBase) | ||||
|             { | ||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity(new StringEntity(requestParams.toString())); | ||||
|             if ( | ||||
|                 requestParams != null && | ||||
|                 request instanceof HttpEntityEnclosingRequestBase | ||||
|             ) { | ||||
|                 ((HttpEntityEnclosingRequestBase) request).setEntity( | ||||
|                         new StringEntity(requestParams.toString()) | ||||
|                     ); | ||||
|             } | ||||
|  | ||||
|             LOGGER.info("Sending {} request to {}", requestType.getSimpleName(), requestUrl); | ||||
|             LOGGER.info( | ||||
|                 "Sending {} request to {}", | ||||
|                 requestType.getSimpleName(), | ||||
|                 requestUrl | ||||
|             ); | ||||
|             LOGGER.info("Request body: {}", requestParams); | ||||
|             HttpResponse httpResponse = client.execute(adminUser, adminPassword, request); | ||||
|             HttpResponse httpResponse = client.execute( | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 request | ||||
|             ); | ||||
|             LOGGER.info("Response: {}", httpResponse.getStatusLine()); | ||||
|             return httpResponse; | ||||
|         } | ||||
|         catch (UnsupportedEncodingException | URISyntaxException error1) | ||||
|         { | ||||
|         } catch (UnsupportedEncodingException | URISyntaxException error1) { | ||||
|             LOGGER.error("Unable to construct request", error1); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             if (request != null) | ||||
|             { | ||||
|         } finally { | ||||
|             if (request != null) { | ||||
|                 request.releaseConnection(); | ||||
|             } | ||||
|             client.close(); | ||||
| @@ -669,8 +782,7 @@ public abstract class BaseAPI | ||||
|      * Used to set RM items properties | ||||
|      * including records, categories and folders | ||||
|      */ | ||||
|     public enum RMProperty | ||||
|     { | ||||
|     public enum RMProperty { | ||||
|         NAME, | ||||
|         TITLE, | ||||
|         CONTENT, | ||||
| @@ -684,11 +796,10 @@ public abstract class BaseAPI | ||||
|         FILE, | ||||
|         ORIGINATOR, | ||||
|         ORIGINATING_ORGANIZATION, | ||||
|         PUBLICATION_DATE | ||||
|         PUBLICATION_DATE, | ||||
|     } | ||||
|  | ||||
|     public enum RETENTION_SCHEDULE | ||||
|     { | ||||
|     public enum RETENTION_SCHEDULE { | ||||
|         NAME, | ||||
|         DESCRIPTION, | ||||
|         RETENTION_AUTHORITY, | ||||
| @@ -699,14 +810,13 @@ public abstract class BaseAPI | ||||
|         RETENTION_GHOST, | ||||
|         RETENTION_ELIGIBLE_FIRST_EVENT, | ||||
|         RETENTION_EVENTS, | ||||
|         COMBINE_DISPOSITION_STEP_CONDITIONS | ||||
|         COMBINE_DISPOSITION_STEP_CONDITIONS, | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Used to execute rm actions on a node | ||||
|      */ | ||||
|     public enum RM_ACTIONS | ||||
|     { | ||||
|     public enum RM_ACTIONS { | ||||
|         EDIT_DISPOSITION_DATE("editDispositionActionAsOfDate"), | ||||
|         END_RETENTION("retain"), | ||||
|         CUT_OFF("cutoff"), | ||||
| @@ -715,21 +825,19 @@ public abstract class BaseAPI | ||||
|         COMPLETE_EVENT("completeEvent"), | ||||
|         UNDO_EVENT("undoEvent"), | ||||
|         DESTROY("destroy"); | ||||
|  | ||||
|         String action; | ||||
|  | ||||
|         private RM_ACTIONS(String action) | ||||
|         { | ||||
|         private RM_ACTIONS(String action) { | ||||
|             this.action = action; | ||||
|         } | ||||
|  | ||||
|         public String getAction() | ||||
|         { | ||||
|         public String getAction() { | ||||
|             return action; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public enum PermissionType | ||||
|     { | ||||
|     public enum PermissionType { | ||||
|         SET_READ, | ||||
|         REMOVE_READ, | ||||
|         SET_READ_AND_FILE, | ||||
| @@ -743,11 +851,12 @@ public abstract class BaseAPI | ||||
|      * @param property   to get value for | ||||
|      * @return the property value | ||||
|      */ | ||||
|     public <K extends Enum<?>> String getPropertyValue(Map<K, String> properties, Enum<?> property) | ||||
|     { | ||||
|     public <K extends Enum<?>> String getPropertyValue( | ||||
|         Map<K, String> properties, | ||||
|         Enum<?> property | ||||
|     ) { | ||||
|         String value = properties.get(property); | ||||
|         if (value == null) | ||||
|         { | ||||
|         if (value == null) { | ||||
|             return ""; | ||||
|         } | ||||
|         return value; | ||||
| @@ -762,12 +871,15 @@ public abstract class BaseAPI | ||||
|      * @param property             the property in the property map to check value for | ||||
|      * @return the json object used in request with the property with its value added if that is not null or empty | ||||
|      */ | ||||
|     protected <K extends Enum<?>> JSONObject addPropertyToRequest(JSONObject requestParams, String propertyRequestValue, Map<K, String> itemProperties, Enum<?> property) throws JSONException | ||||
|     { | ||||
|     protected <K extends Enum<?>> JSONObject addPropertyToRequest( | ||||
|         JSONObject requestParams, | ||||
|         String propertyRequestValue, | ||||
|         Map<K, String> itemProperties, | ||||
|         Enum<?> property | ||||
|     ) throws JSONException { | ||||
|         String propertyValue = getPropertyValue(itemProperties, property); | ||||
|  | ||||
|         if (!propertyValue.equals("")) | ||||
|         { | ||||
|         if (!propertyValue.equals("")) { | ||||
|             requestParams.put(propertyRequestValue, propertyValue); | ||||
|         } | ||||
|         return requestParams; | ||||
| @@ -783,14 +895,23 @@ public abstract class BaseAPI | ||||
|      *                 in case of a record /categoryName/folderName/recordName | ||||
|      * @throws AssertionError if the delete was not successful. | ||||
|      */ | ||||
|     protected void deleteItem(String username, String password, String itemPath) | ||||
|     { | ||||
|         CmisObject container = getObjectByPath(username, password, FILE_PLAN_PATH + itemPath); | ||||
|         if (container != null) | ||||
|         { | ||||
|     protected void deleteItem( | ||||
|         String username, | ||||
|         String password, | ||||
|         String itemPath | ||||
|     ) { | ||||
|         CmisObject container = getObjectByPath( | ||||
|             username, | ||||
|             password, | ||||
|             FILE_PLAN_PATH + itemPath | ||||
|         ); | ||||
|         if (container != null) { | ||||
|             container.delete(); | ||||
|         } | ||||
|         assertNull("Could not delete " + itemPath, getObjectByPath(username, password, itemPath)); | ||||
|         assertNull( | ||||
|             "Could not delete " + itemPath, | ||||
|             getObjectByPath(username, password, itemPath) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -798,8 +919,7 @@ public abstract class BaseAPI | ||||
|      * | ||||
|      * @return node ref spaces store | ||||
|      */ | ||||
|     public static String getNodeRefSpacesStore() | ||||
|     { | ||||
|     public static String getNodeRefSpacesStore() { | ||||
|         return NODE_REF_WORKSPACE_SPACES_STORE; | ||||
|     } | ||||
|  | ||||
| @@ -808,8 +928,7 @@ public abstract class BaseAPI | ||||
|      * | ||||
|      * @return the File Plan path | ||||
|      */ | ||||
|     public static String getFilePlanPath() | ||||
|     { | ||||
|     public static String getFilePlanPath() { | ||||
|         return FILE_PLAN_PATH; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,24 +26,24 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.core.v0; | ||||
|  | ||||
| public enum RMEvents | ||||
| { | ||||
| public enum RMEvents { | ||||
|     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"), | ||||
|     DECLASSIFICATION_REVIEW("declassification_review"), | ||||
|     OBSOLETE("obsolete"), | ||||
|     NO_LONGER_NEEDED("no_longer_needed"), | ||||
|     STUDY_COMPLETE("study_complete"); | ||||
|  | ||||
|     private String eventName; | ||||
|  | ||||
|     RMEvents(String eventName) | ||||
|     { | ||||
|     RMEvents(String eventName) { | ||||
|         this.eventName = eventName; | ||||
|     } | ||||
|  | ||||
|     public String getEventName() | ||||
|     { | ||||
|     public String getEventName() { | ||||
|         return eventName; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,11 +26,9 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.audit; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| @@ -47,43 +45,42 @@ import org.alfresco.utility.model.TestModel; | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class AuditEntry extends TestModel | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class AuditEntry extends TestModel { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeName; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<Object> changedValues; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String path; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeRef; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String fullName; | ||||
|  | ||||
|     @JsonProperty | ||||
|     private String createPerson; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String userName; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String userRole; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String event; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String timestamp; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -33,8 +33,7 @@ package org.alfresco.rest.rm.community.model.audit; | ||||
|  * @since 2.7 | ||||
|  * | ||||
|  */ | ||||
| public enum AuditEvents | ||||
| { | ||||
| public enum AuditEvents { | ||||
|     CREATE_PERSON("Create Person", "Create User"), | ||||
|     DELETE_PERSON("Delete Person", "Delete User"), | ||||
|     CREATE_USER_GROUP("Create User Group", "Create User Group"), | ||||
| @@ -54,8 +53,7 @@ public enum AuditEvents | ||||
|     /** display name for the event audited */ | ||||
|     public final String eventDisplayName; | ||||
|  | ||||
|     AuditEvents(String event, String displayName) | ||||
|     { | ||||
|     AuditEvents(String event, String displayName) { | ||||
|         this.event = event; | ||||
|         this.eventDisplayName = displayName; | ||||
|     } | ||||
|   | ||||
| @@ -26,10 +26,8 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.common; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| @@ -45,17 +43,17 @@ import lombok.NoArgsConstructor; | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class IdNamePair | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| public class IdNamePair { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.rm.community.model.common; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
|  | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| @@ -44,8 +43,5 @@ import org.alfresco.utility.model.TestModel; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| //@NoArgsConstructor | ||||
| //@AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class Owner extends TestModel | ||||
| { | ||||
|  | ||||
| } | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class Owner extends TestModel {} | ||||
|   | ||||
| @@ -26,17 +26,14 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.common; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for path parameter | ||||
| @@ -49,14 +46,14 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class Path extends TestModel | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| public class Path extends TestModel { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private Boolean isComplete; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<IdNamePair> elements; | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.rm.community.model.common; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| @@ -43,11 +42,11 @@ import lombok.NoArgsConstructor; | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class ReviewPeriod | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| public class ReviewPeriod { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String periodType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String expression; | ||||
| } | ||||
|   | ||||
| @@ -32,12 +32,12 @@ package org.alfresco.rest.rm.community.model.custom; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public enum CustomDefinitions | ||||
| { | ||||
| public enum CustomDefinitions { | ||||
|     ATTACHMENT("Attachment"), | ||||
|     MESSAGE("Message"), | ||||
|     NEXT_VERSION("Next Version"), | ||||
|     RENDITION("Rendition"); | ||||
|  | ||||
|     /** | ||||
|      * The name of custom reference. | ||||
|      */ | ||||
| @@ -46,8 +46,7 @@ public enum CustomDefinitions | ||||
|     /** | ||||
|      * Private constructor. | ||||
|      */ | ||||
|     CustomDefinitions(String definition) | ||||
|     { | ||||
|     CustomDefinitions(String definition) { | ||||
|         this.definition = definition; | ||||
|     } | ||||
|  | ||||
| @@ -56,8 +55,7 @@ public enum CustomDefinitions | ||||
|      * | ||||
|      * @return The value of custom reference. | ||||
|      */ | ||||
|     public String getDefinition() | ||||
|     { | ||||
|     public String getDefinition() { | ||||
|         return definition; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,19 +26,16 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.fileplan; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for file plan | ||||
| @@ -52,40 +49,40 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class FilePlan extends TestModel | ||||
| { | ||||
| public class FilePlan extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private FilePlanProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -34,14 +34,12 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for file plan properties | ||||
| @@ -54,29 +52,29 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class FilePlanProperties extends TestModel | ||||
| { | ||||
| public class FilePlanProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_COMPONENT_ID) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_COMPONENT_ID) | ||||
|     private String componentd; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     /************************/ | ||||
|     /** Optional parameters */ | ||||
|     /************************/ | ||||
|     @JsonProperty (PROPERTIES_COUNT) | ||||
|     @JsonProperty(PROPERTIES_COUNT) | ||||
|     private Integer count; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_TITLE) | ||||
|     @JsonProperty(PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
| } | ||||
|   | ||||
| @@ -32,8 +32,8 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilePlanComponentAlias | ||||
| { | ||||
| public class FilePlanComponentAlias { | ||||
|  | ||||
|     public static final String FILE_PLAN_ALIAS = "-filePlan-"; | ||||
|     public static final String TRANSFERS_ALIAS = "-transfers-"; | ||||
|     public static final String UNFILED_RECORDS_CONTAINER_ALIAS = "-unfiled-"; | ||||
|   | ||||
| @@ -32,20 +32,19 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | ||||
|  * @author Kristijan Conkas | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilePlanComponentAspects | ||||
| { | ||||
| public class FilePlanComponentAspects { | ||||
|  | ||||
|     /** Private constructor to prevent instantiation. */ | ||||
|     private FilePlanComponentAspects() | ||||
|     { | ||||
|     } | ||||
|     private FilePlanComponentAspects() {} | ||||
|  | ||||
|     // aspect present on completed records | ||||
|     public static final String ASPECTS_COMPLETED_RECORD = "rma:declaredRecord"; | ||||
|  | ||||
| 	// aspect present on record folders/categories with vital records | ||||
|     public static final String ASPECTS_VITAL_RECORD_DEFINITION= "rma:vitalRecordDefinition"; | ||||
|     // aspect present on record folders/categories with vital records | ||||
|     public static final String ASPECTS_VITAL_RECORD_DEFINITION = | ||||
|         "rma:vitalRecordDefinition"; | ||||
|  | ||||
| 	// aspect present on vital records | ||||
|     // aspect present on vital records | ||||
|     public static final String ASPECTS_VITAL_RECORD = "rma:vitalRecord"; | ||||
|  | ||||
|     // Frozen aspect | ||||
|   | ||||
| @@ -32,8 +32,8 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilePlanComponentFields | ||||
| { | ||||
| public class FilePlanComponentFields { | ||||
|  | ||||
|     /** Common properties for file plans, record categories, record folders and records */ | ||||
|     public static final String PROPERTIES_ROOT_NODE_REF = "rma:rootNodeRef"; | ||||
|     public static final String PROPERTIES_IDENTIFIER = "rma:identifier"; | ||||
| @@ -44,24 +44,35 @@ public class FilePlanComponentFields | ||||
|     public static final String PROPERTIES_DESCRIPTION = "cm:description"; | ||||
|  | ||||
|     /** 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_OWNER = "cm:owner"; | ||||
|     public static final String PROPERTIES_AUTHOR="cm:author"; | ||||
|     public static final String PROPERTIES_AUTHOR = "cm:author"; | ||||
|  | ||||
|     /** Common properties for record folders and records */ | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE = "rma:recordSearchHasDispositionSchedule"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION = "rma:recordSearchDispositionPeriodExpression"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY = "rma:recordSearchDispositionAuthority"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF = "rma:recordSearchDispositionActionAsOf"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD = "rma:recordSearchDispositionPeriod"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME = "rma:recordSearchDispositionActionName"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE = "rma:recordSearchDispositionEventsEligible"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS = "rma:recordSearchDispositionInstructions"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS = "rma:recordSearchDispositionEvents"; | ||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_BY = "rma:declassificationReviewCompletedBy"; | ||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_AT = "rma:declassificationReviewCompletedAt"; | ||||
|      | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE = | ||||
|         "rma:recordSearchHasDispositionSchedule"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION = | ||||
|         "rma:recordSearchDispositionPeriodExpression"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY = | ||||
|         "rma:recordSearchDispositionAuthority"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF = | ||||
|         "rma:recordSearchDispositionActionAsOf"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD = | ||||
|         "rma:recordSearchDispositionPeriod"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME = | ||||
|         "rma:recordSearchDispositionActionName"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE = | ||||
|         "rma:recordSearchDispositionEventsEligible"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS = | ||||
|         "rma:recordSearchDispositionInstructions"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS = | ||||
|         "rma:recordSearchDispositionEvents"; | ||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_BY = | ||||
|         "rma:declassificationReviewCompletedBy"; | ||||
|     public static final String PROPERTIES_DECLASSIFICATION_REVIEW_COMPLETED_AT = | ||||
|         "rma:declassificationReviewCompletedAt"; | ||||
|  | ||||
|     /** File plan properties */ | ||||
|     public static final String PROPERTIES_COMPONENT_ID = "st:componentId"; | ||||
| @@ -72,10 +83,13 @@ public class FilePlanComponentFields | ||||
|  | ||||
|     /** Record folder properties */ | ||||
|     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_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD = "rma:recordSearchVitalRecordReviewPeriod"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION = "rma:recordSearchVitalRecordReviewPeriodExpression"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD = | ||||
|         "rma:recordSearchVitalRecordReviewPeriod"; | ||||
|     public static final String PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION = | ||||
|         "rma:recordSearchVitalRecordReviewPeriodExpression"; | ||||
|  | ||||
|     /** | ||||
|      * Record properties | ||||
| @@ -88,39 +102,53 @@ public class FilePlanComponentFields | ||||
|     /** Electronic record properties */ | ||||
|     public static final String PROPERTIES_VERSION_TYPE = "cm:versionType"; | ||||
|     public static final String PROPERTIES_VERSION_LABEL = "cm:versionLabel"; | ||||
|     public static final String PROPERTIES_VERSIONED_NODEREF = "rmv:versionedNodeRef"; | ||||
|     public static final String PROPERTIES_VERSIONED_NODEREF = | ||||
|         "rmv:versionedNodeRef"; | ||||
|     public static final String PROPERTIES_RMV_VERSIONED = "rmv:versionLabel"; | ||||
|     public static final String PROPERTIES_DATE_TIME_ORIGINAL = "exif:dateTimeOriginal"; | ||||
|     public static final String PROPERTIES_DATE_TIME_ORIGINAL = | ||||
|         "exif:dateTimeOriginal"; | ||||
|     public static final String PROPERTIES_EXPOSURE_TIME = "exif:exposureTime"; | ||||
|     public static final String PROPERTIES_FLASH = "exif:flash"; | ||||
|     public static final String PROPERTIES_F_NUMBER = "exif:fNumber"; | ||||
|     public static final String PROPERTIES_FOCAL_LENGTH = "exif:focalLength"; | ||||
|     public static final String PROPERTIES_ISO_SPEED_RATINGS = "exif:isoSpeedRatings"; | ||||
|     public static final String PROPERTIES_ISO_SPEED_RATINGS = | ||||
|         "exif:isoSpeedRatings"; | ||||
|     public static final String PROPERTIES_MANUFACTURER = "exif:manufacturer"; | ||||
|     public static final String PROPERTIES_MODEL = "exif:model"; | ||||
|     public static final String PROPERTIES_ORIENTATION = "exif:orientation"; | ||||
|     public static final String PROPERTIES_PIXEL_X_DIMENSION = "exif:pixelXDimension"; | ||||
|     public static final String PROPERTIES_PIXEL_Y_DIMENSION = "exif:pixelYDimension"; | ||||
|     public static final String PROPERTIES_RESOLUTION_UNIT = "exif:resolutionUnit"; | ||||
|     public static final String PROPERTIES_PIXEL_X_DIMENSION = | ||||
|         "exif:pixelXDimension"; | ||||
|     public static final String PROPERTIES_PIXEL_Y_DIMENSION = | ||||
|         "exif:pixelYDimension"; | ||||
|     public static final String PROPERTIES_RESOLUTION_UNIT = | ||||
|         "exif:resolutionUnit"; | ||||
|     public static final String PROPERTIES_SOFTWARE = "exif:software"; | ||||
|     public static final String PROPERTIES_X_RESOLUTION = "exif:xResolution"; | ||||
|     public static final String PROPERTIES_Y_RESOLUTION = "exif:yResolution"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_LOCATION = "rma:recordOriginatingLocation"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_USER_ID = "rma:recordOriginatingUserId"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_CREATION_DATE = "rma:recordOriginatingCreationDate"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_LOCATION = | ||||
|         "rma:recordOriginatingLocation"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_USER_ID = | ||||
|         "rma:recordOriginatingUserId"; | ||||
|     public static final String PROPERTIES_RECORD_ORIGINATING_CREATION_DATE = | ||||
|         "rma:recordOriginatingCreationDate"; | ||||
|  | ||||
|     /** Non-electronic record properties */ | ||||
|     public static final String PROPERTIES_SHELF = "rma:shelf"; | ||||
|     public static final String PROPERTIES_STORAGE_LOCATION = "rma:storageLocation"; | ||||
|     public static final String PROPERTIES_STORAGE_LOCATION = | ||||
|         "rma:storageLocation"; | ||||
|     public static final String PROPERTIES_FILE = "rma:file"; | ||||
|     public static final String PROPERTIES_BOX = "rma:box"; | ||||
|     public static final String PROPERTIES_NUMBER_OF_COPIES = "rma:numberOfCopies"; | ||||
|     public static final String PROPERTIES_NUMBER_OF_COPIES = | ||||
|         "rma:numberOfCopies"; | ||||
|     public static final String PROPERTIES_PHYSICAL_SIZE = "rma:physicalSize"; | ||||
|  | ||||
|     /** Transfer properties */ | ||||
|     public static final String PROPERTIES_PDF_INDICATOR = "rma:transferPDFIndicator"; | ||||
|     public static final String PROPERTIES_TRANSFER_LOCATION = "rma:transferLocation"; | ||||
|     public static final String PROPERTIES_ACCESSION_INDICATOR = "rma:transferAccessionIndicator"; | ||||
|     public static final String PROPERTIES_PDF_INDICATOR = | ||||
|         "rma:transferPDFIndicator"; | ||||
|     public static final String PROPERTIES_TRANSFER_LOCATION = | ||||
|         "rma:transferLocation"; | ||||
|     public static final String PROPERTIES_ACCESSION_INDICATOR = | ||||
|         "rma:transferAccessionIndicator"; | ||||
|  | ||||
|     /** Parameters */ | ||||
|     public static final String RELATIVE_PATH = "relativePath"; | ||||
| @@ -135,5 +163,6 @@ public class FilePlanComponentFields | ||||
|     /** CONTENT STORE property */ | ||||
|     public static final String PROPERTIES_STORE = "cm:storeName"; | ||||
|     /** WORM Unlock Date */ | ||||
|     public static final String PROPERTIES_WORM_UNLOCK_DATE = "rme:wormUnlockDate"; | ||||
|     public static final String PROPERTIES_WORM_UNLOCK_DATE = | ||||
|         "rme:wormUnlockDate"; | ||||
| } | ||||
|   | ||||
| @@ -32,17 +32,21 @@ package org.alfresco.rest.rm.community.model.fileplancomponents; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilePlanComponentType | ||||
| { | ||||
| public class FilePlanComponentType { | ||||
|  | ||||
|     public static final String FILE_PLAN_TYPE = "rma:filePlan"; | ||||
|     public static final String RECORD_CATEGORY_TYPE = "rma:recordCategory"; | ||||
|     public static final String RECORD_FOLDER_TYPE = "rma:recordFolder"; | ||||
|     public static final String RECORD_TYPE = "rma:record"; // generic record type | ||||
|     public static final String UNFILED_RECORD_FOLDER_TYPE = "rma:unfiledRecordFolder"; | ||||
|     public static final String UNFILED_RECORD_FOLDER_TYPE = | ||||
|         "rma:unfiledRecordFolder"; | ||||
|     public static final String TRANSFER_TYPE = "rma:transfer"; | ||||
|     public static final String TRANSFER_CONTAINER_TYPE = "rma:transferContainer"; | ||||
|     public static final String UNFILED_CONTAINER_TYPE = "rma:unfiledRecordContainer"; | ||||
|     public static final String TRANSFER_CONTAINER_TYPE = | ||||
|         "rma:transferContainer"; | ||||
|     public static final String UNFILED_CONTAINER_TYPE = | ||||
|         "rma:unfiledRecordContainer"; | ||||
|     public static final String FOLDER_TYPE = "cm:folder"; | ||||
|     public static final String CONTENT_TYPE = "cm:content"; | ||||
|     public static final String NON_ELECTRONIC_RECORD_TYPE = "rma:nonElectronicDocument"; | ||||
|     public static final String NON_ELECTRONIC_RECORD_TYPE = | ||||
|         "rma:nonElectronicDocument"; | ||||
| } | ||||
|   | ||||
| @@ -28,7 +28,6 @@ package org.alfresco.rest.rm.community.model.hold; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| @@ -45,12 +44,12 @@ import org.alfresco.utility.model.TestModel; | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class HoldEntry extends TestModel | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class HoldEntry extends TestModel { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeRef; | ||||
| } | ||||
|   | ||||
| @@ -26,10 +26,13 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.record; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.core.IRestModel; | ||||
| import org.alfresco.rest.core.assertion.ModelAssertion; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| @@ -37,12 +40,6 @@ import org.alfresco.rest.model.RestNodeModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| /** | ||||
|  * POJO for record | ||||
|  * | ||||
| @@ -54,35 +51,35 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class Record extends TestModel implements IRestModel<RestNodeModel> | ||||
| { | ||||
|     public final static String CONTENT_NODE_TYPE = "cm:content"; | ||||
| public class Record extends TestModel implements IRestModel<RestNodeModel> { | ||||
|  | ||||
|     public static final String CONTENT_NODE_TYPE = "cm:content"; | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     /************************/ | ||||
| @@ -107,23 +104,20 @@ public class Record extends TestModel implements IRestModel<RestNodeModel> | ||||
|     private Path path; | ||||
|  | ||||
|     @Override | ||||
|     public ModelAssertion<RestNodeModel> assertThat() | ||||
|     { | ||||
|     public ModelAssertion<RestNodeModel> assertThat() { | ||||
|         return new ModelAssertion<>(this); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ModelAssertion<RestNodeModel> and() | ||||
|     { | ||||
|     public ModelAssertion<RestNodeModel> and() { | ||||
|         return assertThat(); | ||||
|     } | ||||
|  | ||||
|     @JsonProperty (value = "entry") | ||||
|     @JsonProperty(value = "entry") | ||||
|     RestNodeModel model; | ||||
|  | ||||
|     @Override | ||||
|     public RestNodeModel onModel() | ||||
|     { | ||||
|     public RestNodeModel onModel() { | ||||
|         return model; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,14 +27,12 @@ | ||||
| package org.alfresco.rest.rm.community.model.record; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for File records | ||||
| @@ -47,8 +45,8 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordBodyFile extends TestModel | ||||
| { | ||||
| public class RecordBodyFile extends TestModel { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private String targetParentId; | ||||
| } | ||||
|   | ||||
| @@ -27,14 +27,12 @@ | ||||
| package org.alfresco.rest.rm.community.model.record; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record content field | ||||
| @@ -48,17 +46,17 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordContent extends TestModel | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| public class RecordContent extends TestModel { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private String mimeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String mimeTypeName; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private Integer sizeInBytes; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String encoding; | ||||
| } | ||||
|   | ||||
| @@ -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_EXPRESSION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RESOLUTION_UNIT; | ||||
|  | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_REVIEW_AS_OF; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RMV_VERSIONED; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF; | ||||
| @@ -80,12 +79,10 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_X_RESOLUTION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_RESOLUTION; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| @@ -106,165 +103,170 @@ import org.alfresco.utility.model.TestModel; | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class RecordProperties extends TestModel | ||||
| { | ||||
| public class RecordProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_DATE_FILED) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_DATE_FILED) | ||||
|     private String dateField; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     @JsonProperty( | ||||
|         required = true, | ||||
|         value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE | ||||
|     ) | ||||
|     private Boolean recordSearchHasDispositionSchedule; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ORIGINAL_NAME) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ORIGINAL_NAME) | ||||
|     private String originalName; | ||||
|      | ||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||
|     private List<String> classification; | ||||
|  | ||||
|     /*********************************/ | ||||
|     /** Electronic record parameters */ | ||||
|     /*********************************/ | ||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) | ||||
|     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||
|     private String versionType; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) | ||||
|     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||
|     private String versionLabel; | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) | ||||
|     private String versionedNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RMV_VERSIONED) | ||||
|     @JsonProperty(PROPERTIES_RMV_VERSIONED) | ||||
|     private String recordVersionLabel; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     private String dateTimeOriginal; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) | ||||
|     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||
|     private Double exposureTime; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FLASH) | ||||
|     @JsonProperty(PROPERTIES_FLASH) | ||||
|     private Boolean flash; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_F_NUMBER) | ||||
|     @JsonProperty(PROPERTIES_F_NUMBER) | ||||
|     private Double fNumber; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) | ||||
|     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||
|     private Double focalLength; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     private Integer isoSpeedRatings; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) | ||||
|     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||
|     private String manufacturer; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MODEL) | ||||
|     @JsonProperty(PROPERTIES_MODEL) | ||||
|     private String model; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ORIENTATION) | ||||
|     @JsonProperty(PROPERTIES_ORIENTATION) | ||||
|     private Integer orientation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     private Integer pixelXDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     private Integer pixelYDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) | ||||
|     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||
|     private String resolutionUnit; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SOFTWARE) | ||||
|     @JsonProperty(PROPERTIES_SOFTWARE) | ||||
|     private String software; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||
|     private Double xResolution; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||
|     private Double yResolution; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_LOCATION) | ||||
|     private String originatingLocation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_USER_ID) | ||||
|     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_USER_ID) | ||||
|     private String originatingUserId; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_ORIGINATING_CREATION_DATE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_ORIGINATING_CREATION_DATE) | ||||
|     private String originatingCreationDate; | ||||
|  | ||||
|     /*************************************/ | ||||
|     /** Non-electronic record parameters */ | ||||
|     /*************************************/ | ||||
|     @JsonProperty (PROPERTIES_TITLE) | ||||
|     @JsonProperty(PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SHELF) | ||||
|     @JsonProperty(PROPERTIES_SHELF) | ||||
|     private String shelf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||
|     private String storageLocation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FILE) | ||||
|     @JsonProperty(PROPERTIES_FILE) | ||||
|     private String file; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_BOX) | ||||
|     @JsonProperty(PROPERTIES_BOX) | ||||
|     private String box; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) | ||||
|     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||
|     private Integer numberOfCopies; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) | ||||
|     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||
|     private Integer physicalSize; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_AUTHOR) | ||||
|     private String author; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||
|     private String recordSearchDispositionPeriodExpression; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|     private String recordSearchDispositionAuthority; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||
|     private Date recordSearchDispositionActionAsOf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||
|     private String recordSearchDispositionPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||
|     private String recordSearchDispositionActionName; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||
|     private Boolean recordSearchDispositionEventsEligible; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||
|     private List<String> recordSearchDispositionEvents; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     private String recordSearchDispositionInstructions; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||
|     private String recordSearchVitalRecordReviewPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) | ||||
|     @JsonProperty( | ||||
|         PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION | ||||
|     ) | ||||
|     private String recordSearchVitalRecordReviewPeriodExpression; | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_REVIEW_AS_OF) | ||||
|     private Date reviewAsOf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_STORE) | ||||
|     @JsonProperty(PROPERTIES_STORE) | ||||
|     private String store; | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_WORM_UNLOCK_DATE) | ||||
|   | ||||
| @@ -26,19 +26,16 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.recordcategory; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category | ||||
| @@ -51,42 +48,42 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordCategory extends TestModel | ||||
| { | ||||
| public class RecordCategory extends TestModel { | ||||
|  | ||||
|     public static final String DEFAULT_FILE_PLAN_ALIAS = "-filePlan-"; | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RecordCategoryProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -26,19 +26,16 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.recordcategory; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child | ||||
| @@ -51,35 +48,35 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordCategoryChild extends TestModel | ||||
| { | ||||
| public class RecordCategoryChild extends TestModel { | ||||
|  | ||||
|     public static final String RECORD_FOLDER_NODE_TYPE = "rma:recordFolder"; | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordCategoryChildCollection extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class RecordCategoryChildCollection | ||||
|     extends RestModels<RecordCategoryChildEntry, RecordCategoryChildCollection> {} | ||||
|   | ||||
| @@ -27,11 +27,9 @@ | ||||
| package org.alfresco.rest.rm.community.model.recordcategory; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
|  | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import org.alfresco.rest.core.RestModels; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child entry | ||||
| @@ -41,8 +39,9 @@ import lombok.EqualsAndHashCode; | ||||
|  */ | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| public class RecordCategoryChildEntry extends RestModels<RecordCategory, RecordCategoryChildEntry> | ||||
| { | ||||
| public class RecordCategoryChildEntry | ||||
|     extends RestModels<RecordCategory, RecordCategoryChildEntry> { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private RecordCategoryChild entry; | ||||
| } | ||||
|   | ||||
| @@ -32,36 +32,33 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IS_CLOSED; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_LOCATION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_REVIEW_PERIOD; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child properties | ||||
| @@ -74,70 +71,69 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordCategoryChildProperties extends TestModel | ||||
| { | ||||
| public class RecordCategoryChildProperties extends TestModel { | ||||
|  | ||||
|     /**************************************************************************/ | ||||
|     /** Mandatory parameters - Shared by record categories and record folders */ | ||||
|     /**************************************************************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_TITLE) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     private Boolean vitalRecordIndicator; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||
|     private ReviewPeriod reviewPeriod; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     /*********************************************************/ | ||||
|     /** Optional parameters - Applies only to record folders */ | ||||
|     /*********************************************************/ | ||||
|     @JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     @JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     private Integer heldChildrenCount; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_LOCATION) | ||||
|     private String location; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_IS_CLOSED) | ||||
|     @JsonProperty(PROPERTIES_IS_CLOSED) | ||||
|     private Boolean isClosed; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     private Boolean recordSearchHasDispositionSchedule; | ||||
|      | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD_EXPRESSION) | ||||
|     private String recordSearchDispositionPeriodExpression; | ||||
|      | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|     private String recordSearchDispositionAuthority; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF) | ||||
|     private Date recordSearchDispositionActionAsOf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD) | ||||
|     private String recordSearchDispositionPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME) | ||||
|     private String recordSearchDispositionActionName; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE) | ||||
|     private Boolean recordSearchDispositionEventsEligible; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     private String recordSearchDispositionInstructions; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS) | ||||
|     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 | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordCategoryCollection extends RestModels<RecordCategoryEntry, RecordCategoryCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class RecordCategoryCollection | ||||
|     extends RestModels<RecordCategoryEntry, RecordCategoryCollection> {} | ||||
|   | ||||
| @@ -27,12 +27,10 @@ | ||||
| package org.alfresco.rest.rm.community.model.recordcategory; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.fileplan.FilePlan; | ||||
|  | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.fileplan.FilePlan; | ||||
|  | ||||
| /** | ||||
|  * POJO for file plan entry | ||||
| @@ -43,8 +41,9 @@ import lombok.EqualsAndHashCode; | ||||
|  */ | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| public class RecordCategoryEntry extends RestModels<FilePlan, RecordCategoryEntry> | ||||
| { | ||||
| public class RecordCategoryEntry | ||||
|     extends RestModels<FilePlan, RecordCategoryEntry> { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private RecordCategory entry; | ||||
| } | ||||
|   | ||||
| @@ -35,23 +35,19 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | ||||
|  | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category properties | ||||
| @@ -64,37 +60,37 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class RecordCategoryProperties extends TestModel | ||||
| { | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class RecordCategoryProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||
|     private ReviewPeriod reviewPeriod; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     private Boolean vitalRecordIndicator; | ||||
|  | ||||
|     /************************/ | ||||
|     /** Optional parameters */ | ||||
|     /************************/ | ||||
|     @JsonProperty (PROPERTIES_TITLE) | ||||
|     @JsonProperty(PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) | ||||
|     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||
|     private List<String> classification; | ||||
| } | ||||
|   | ||||
| @@ -29,8 +29,7 @@ package org.alfresco.rest.rm.community.model.recordcategory; | ||||
| /** | ||||
|  * The property of the dispositioned item that is used to calculate the "as of" period. | ||||
|  */ | ||||
| public enum RetentionPeriodProperty | ||||
| { | ||||
| public enum RetentionPeriodProperty { | ||||
|     /** Item created date. */ | ||||
|     CREATED_DATE("cm:created"), | ||||
|     /** Record filed date. */ | ||||
| @@ -40,13 +39,11 @@ public enum RetentionPeriodProperty | ||||
|  | ||||
|     String periodProperty; | ||||
|  | ||||
|     RetentionPeriodProperty(String periodProperty) | ||||
|     { | ||||
|     RetentionPeriodProperty(String periodProperty) { | ||||
|         this.periodProperty = periodProperty; | ||||
|     } | ||||
|  | ||||
|     public String getPeriodProperty() | ||||
|     { | ||||
|     public String getPeriodProperty() { | ||||
|         return periodProperty; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,19 +26,16 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.recordfolder; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record folder | ||||
| @@ -51,39 +48,39 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordFolder extends TestModel | ||||
| { | ||||
| public class RecordFolder extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RecordFolderProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordFolderCollection extends RestModels<RecordFolderEntry, RecordFolderCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class RecordFolderCollection | ||||
|     extends RestModels<RecordFolderEntry, RecordFolderCollection> {} | ||||
|   | ||||
| @@ -27,15 +27,13 @@ | ||||
| package org.alfresco.rest.rm.community.model.recordfolder; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.record.Record; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.record.Record; | ||||
|  | ||||
| /** | ||||
|  * POJO for record folder entry | ||||
| @@ -48,8 +46,9 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RecordFolderEntry extends RestModels<RecordFolder, RecordFolderEntry> | ||||
| { | ||||
| public class RecordFolderEntry | ||||
|     extends RestModels<RecordFolder, RecordFolderEntry> { | ||||
|  | ||||
|     @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_LOCATION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields | ||||
|         .PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields | ||||
|         .PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION; | ||||
| @@ -45,22 +43,19 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record folder properties | ||||
| @@ -73,62 +68,63 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class RecordFolderProperties extends TestModel | ||||
| { | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class RecordFolderProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IS_CLOSED) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IS_CLOSED) | ||||
|     private Boolean isClosed; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     private Integer heldChildrenCount; | ||||
|  | ||||
|     /************************/ | ||||
|     /** Optional parameters */ | ||||
|     /************************/ | ||||
|     @JsonProperty (PROPERTIES_TITLE) | ||||
|     @JsonProperty(PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     @JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     private Boolean vitalRecordIndicator; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_LOCATION) | ||||
|     private String location; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     private Boolean recordSearchHasDispositionSchedule; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) | ||||
|     @JsonProperty(PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||
|     private ReviewPeriod reviewPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_CLASSIFICATION) | ||||
|     @JsonProperty(PROPERTIES_CLASSIFICATION) | ||||
|     private List<String> classification; | ||||
|      | ||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
|   | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD) | ||||
|     private String recordSearchVitalRecordReviewPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION) | ||||
|     @JsonProperty( | ||||
|         PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION | ||||
|     ) | ||||
|     private String recordSearchVitalRecordReviewPeriodExpression; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY) | ||||
|     private String recordSearchDispositionAuthority; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS) | ||||
|     private String recordSearchDispositionInstructions; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -29,8 +29,7 @@ package org.alfresco.rest.rm.community.model.rules; | ||||
| /** | ||||
|  * Action values. | ||||
|  */ | ||||
| public enum ActionsOnRule | ||||
| { | ||||
| public enum ActionsOnRule { | ||||
|     COMPLETE_RECORD("declareRecord"), | ||||
|     REOPEN_RECORD("undeclareRecord"), | ||||
|     OPEN_RECORD_FOLDER("openRecordFolder"), | ||||
| @@ -54,13 +53,11 @@ public enum ActionsOnRule | ||||
|  | ||||
|     private String actionValue; | ||||
|  | ||||
|     ActionsOnRule(String value) | ||||
|     { | ||||
|     ActionsOnRule(String value) { | ||||
|         this.actionValue = value; | ||||
|     } | ||||
|  | ||||
|     public String getActionValue() | ||||
|     { | ||||
|     public String getActionValue() { | ||||
|         return actionValue; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -29,20 +29,18 @@ package org.alfresco.rest.rm.community.model.rules; | ||||
| /** | ||||
|  * enum used to find the when condition names options by their value | ||||
|  */ | ||||
| public enum ConditionsOnRule | ||||
| { | ||||
| public enum ConditionsOnRule { | ||||
|     UPDATE("update"), | ||||
|     ADDED("inbound"), | ||||
|     REMOVED("outbound"); | ||||
|  | ||||
|     private String whenConditionValue; | ||||
|  | ||||
|     ConditionsOnRule(String value) | ||||
|     { | ||||
|             this.whenConditionValue = value; | ||||
|     ConditionsOnRule(String value) { | ||||
|         this.whenConditionValue = value; | ||||
|     } | ||||
|  | ||||
|     public String getWhenConditionValue() | ||||
|     { | ||||
|             return whenConditionValue; | ||||
|     public String getWhenConditionValue() { | ||||
|         return whenConditionValue; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -31,8 +31,8 @@ import java.util.List; | ||||
| /** | ||||
|  * A class describing the rule | ||||
|  */ | ||||
| public class RuleDefinition | ||||
| { | ||||
| public class RuleDefinition { | ||||
|  | ||||
|     private String id = ""; | ||||
|     private String title; | ||||
|     private String description = ""; | ||||
| @@ -52,152 +52,124 @@ public class RuleDefinition | ||||
|      * | ||||
|      * @return the object | ||||
|      */ | ||||
|     public static RuleDefinition createNewRule() | ||||
|     { | ||||
|     public static RuleDefinition createNewRule() { | ||||
|         return new RuleDefinition(); | ||||
|     } | ||||
|  | ||||
|     public String getId() | ||||
|     { | ||||
|     public String getId() { | ||||
|         return id; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition id(String id) | ||||
|     { | ||||
|     public RuleDefinition id(String id) { | ||||
|         this.id = id; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getTitle() | ||||
|     { | ||||
|     public String getTitle() { | ||||
|         return title; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition title(String title) | ||||
|     { | ||||
|     public RuleDefinition title(String title) { | ||||
|         this.title = title; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getDescription() | ||||
|     { | ||||
|     public String getDescription() { | ||||
|         return description; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition description(String description) | ||||
|     { | ||||
|     public RuleDefinition description(String description) { | ||||
|         this.description = description; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public boolean isDisabled() | ||||
|     { | ||||
|     public boolean isDisabled() { | ||||
|         return disabled; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition disabled(boolean disabled) | ||||
|     { | ||||
|     public RuleDefinition disabled(boolean disabled) { | ||||
|         this.disabled = disabled; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public boolean isApplyToChildren() | ||||
|     { | ||||
|     public boolean isApplyToChildren() { | ||||
|         return applyToChildren; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition applyToChildren(boolean applyToChildren) | ||||
|     { | ||||
|     public RuleDefinition applyToChildren(boolean applyToChildren) { | ||||
|         this.applyToChildren = applyToChildren; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public boolean getRunInBackground() | ||||
|     { | ||||
|     public boolean getRunInBackground() { | ||||
|         return runInBackground; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition runInBackground(boolean runInBackground) | ||||
|     { | ||||
|     public RuleDefinition runInBackground(boolean runInBackground) { | ||||
|         this.runInBackground = runInBackground; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getRuleType() | ||||
|     { | ||||
|     public String getRuleType() { | ||||
|         return ruleType; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition ruleType(String ruleType) | ||||
|     { | ||||
|     public RuleDefinition ruleType(String ruleType) { | ||||
|         this.ruleType = ruleType; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getPath() | ||||
|     { | ||||
|     public String getPath() { | ||||
|         return path; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition path(String path) | ||||
|     { | ||||
|     public RuleDefinition path(String path) { | ||||
|         this.path = path; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public Boolean getCreateRecordPath() | ||||
|     { | ||||
|     public Boolean getCreateRecordPath() { | ||||
|         return createRecordPath; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition createRecordPath(boolean createRecordPath) | ||||
|     { | ||||
|     public RuleDefinition createRecordPath(boolean createRecordPath) { | ||||
|         this.createRecordPath = createRecordPath; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getContentTitle() | ||||
|     { | ||||
|     public String getContentTitle() { | ||||
|         return contentTitle; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition contentTitle(String contentTitle) | ||||
|     { | ||||
|     public RuleDefinition contentTitle(String contentTitle) { | ||||
|         this.contentTitle = contentTitle; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getContentDescription() | ||||
|     { | ||||
|     public String getContentDescription() { | ||||
|         return contentDescription; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition contentDescription(String contentDescription) | ||||
|     { | ||||
|     public RuleDefinition contentDescription(String contentDescription) { | ||||
|         this.contentDescription = contentDescription; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public String getRejectReason() | ||||
|     { | ||||
|     public String getRejectReason() { | ||||
|         return rejectReason; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition rejectReason(String rejectReason) | ||||
|     { | ||||
|     public RuleDefinition rejectReason(String rejectReason) { | ||||
|         this.rejectReason = rejectReason; | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public List<String> getActions() | ||||
|     { | ||||
|     public List<String> getActions() { | ||||
|         return actions; | ||||
|     } | ||||
|  | ||||
|     public RuleDefinition actions(List<String> actions) | ||||
|     { | ||||
|     public RuleDefinition actions(List<String> actions) { | ||||
|         this.actions = actions; | ||||
|         return this; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -27,14 +27,12 @@ | ||||
| package org.alfresco.rest.rm.community.model.site; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestSiteModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestSiteModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for RM Site component | ||||
| @@ -46,15 +44,18 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class RMSite extends RestSiteModel | ||||
| { | ||||
|     @JsonProperty (required = true) | ||||
| public class RMSite extends RestSiteModel { | ||||
|  | ||||
|     @JsonProperty(required = true) | ||||
|     private RMSiteCompliance compliance; | ||||
|  | ||||
|     /** Private constructor allowing Lombok to include superclass fields in the builder. */ | ||||
|     @Builder | ||||
|     private RMSite(String title, String description, RMSiteCompliance compliance) | ||||
|     { | ||||
|     private RMSite( | ||||
|         String title, | ||||
|         String description, | ||||
|         RMSiteCompliance compliance | ||||
|     ) { | ||||
|         this.setTitle(title); | ||||
|         this.setDescription(description); | ||||
|         this.compliance = compliance; | ||||
|   | ||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.site; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public enum RMSiteCompliance | ||||
| { | ||||
| public enum RMSiteCompliance { | ||||
|     STANDARD, | ||||
|     DOD5015 | ||||
|     DOD5015, | ||||
| } | ||||
|   | ||||
| @@ -41,12 +41,12 @@ package org.alfresco.rest.rm.community.model.site; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RMSiteFields | ||||
| { | ||||
| public class RMSiteFields { | ||||
|  | ||||
|     public static final String ID = "id"; | ||||
|     public static final String COMPLIANCE = "compliance"; | ||||
|     public static final String TITLE = "title"; | ||||
|     public static final String DESCRIPTION = "description"; | ||||
|     public static final String VISIBILITY ="visibility"; | ||||
|     public static final String VISIBILITY = "visibility"; | ||||
|     public static final String ROLE = "role"; | ||||
| } | ||||
|   | ||||
| @@ -27,18 +27,15 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfer; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for Transfer | ||||
| @@ -51,33 +48,33 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class Transfer extends TestModel | ||||
| { | ||||
| public class Transfer extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private TransferProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -27,19 +27,16 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfer; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for transfer child | ||||
| @@ -52,33 +49,33 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferChild extends TestModel | ||||
| { | ||||
| public class TransferChild extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -34,7 +34,5 @@ import org.alfresco.rest.core.RestModels; | ||||
|  * @author Silviu Dinuta | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class TransferChildCollection extends RestModels<TransferChildEntry, TransferChildCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class TransferChildCollection | ||||
|     extends RestModels<TransferChildEntry, TransferChildCollection> {} | ||||
|   | ||||
| @@ -27,15 +27,13 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfer; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
|  | ||||
| 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.RestModels; | ||||
|  | ||||
| /** | ||||
|  * POJO for transfer child entry | ||||
| @@ -48,8 +46,9 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry> | ||||
| { | ||||
| public class TransferChildEntry | ||||
|     extends RestModels<Transfer, TransferChildEntry> { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private TransferChild entry; | ||||
| } | ||||
|   | ||||
| @@ -64,19 +64,17 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_X_RESOLUTION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_Y_RESOLUTION; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
| import org.alfresco.rest.rm.community.util.ReviewPeriodSerializer; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for transfer child properties | ||||
| @@ -89,131 +87,130 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferChildProperties extends TestModel | ||||
| { | ||||
| public class TransferChildProperties extends TestModel { | ||||
|  | ||||
|     /**************************************************************************/ | ||||
|     /** Mandatory parameters - Shared by record folders and records*/ | ||||
|     /**************************************************************************/ | ||||
|     @JsonProperty (PROPERTIES_TITLE) | ||||
|     @JsonProperty(PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     /*********************************************************/ | ||||
|     /** Optional parameters - Applies only to record folders */ | ||||
|     /*********************************************************/ | ||||
|     @JsonProperty (PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     @JsonProperty(PROPERTIES_VITAL_RECORD_INDICATOR) | ||||
|     private Boolean vitalRecordIndicator; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize (using = ReviewPeriodSerializer.class) | ||||
|     @JsonProperty(PROPERTIES_REVIEW_PERIOD) | ||||
|     @JsonSerialize(using = ReviewPeriodSerializer.class) | ||||
|     private ReviewPeriod reviewPeriod; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     @JsonProperty(PROPERTIES_HELD_CHILDREN_COUNT) | ||||
|     private Integer heldChildrenCount; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_LOCATION) | ||||
|     private String location; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_IS_CLOSED) | ||||
|     @JsonProperty(PROPERTIES_IS_CLOSED) | ||||
|     private Boolean isClosed; | ||||
|  | ||||
|     /*********************************************************/ | ||||
|     /** Optional parameters - Applies only to records */ | ||||
|     /*********************************************************/ | ||||
|     @JsonProperty (PROPERTIES_DATE_FILED) | ||||
|     @JsonProperty(PROPERTIES_DATE_FILED) | ||||
|     private String dateField; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     @JsonProperty(PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     private Boolean recordSearchHasDispositionSchedule; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ORIGINAL_NAME) | ||||
|     @JsonProperty(PROPERTIES_ORIGINAL_NAME) | ||||
|     private String originalName; | ||||
|  | ||||
|  | ||||
|     /*********************************/ | ||||
|     /** Electronic record parameters */ | ||||
|     /*********************************/ | ||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) | ||||
|     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||
|     private String versionType; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) | ||||
|     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||
|     private String versionLabel; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     private String dateTimeOriginal; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) | ||||
|     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||
|     private Double exposureTime; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FLASH) | ||||
|     @JsonProperty(PROPERTIES_FLASH) | ||||
|     private Boolean flash; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_F_NUMBER) | ||||
|     @JsonProperty(PROPERTIES_F_NUMBER) | ||||
|     private Double fNumber; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) | ||||
|     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||
|     private Double focalLength; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     private Integer isoSpeedRatings; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) | ||||
|     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||
|     private String manufacturer; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MODEL) | ||||
|     @JsonProperty(PROPERTIES_MODEL) | ||||
|     private String model; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ORIENTATION) | ||||
|     @JsonProperty(PROPERTIES_ORIENTATION) | ||||
|     private Integer orientation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     private Integer pixelXDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     private Integer pixelYDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) | ||||
|     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||
|     private String resolutionUnit; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SOFTWARE) | ||||
|     @JsonProperty(PROPERTIES_SOFTWARE) | ||||
|     private String software; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||
|     private Double xResolution; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||
|     private Double yResolution; | ||||
|  | ||||
|     /*************************************/ | ||||
|     /** Non-electronic record parameters */ | ||||
|     /*************************************/ | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SHELF) | ||||
|     @JsonProperty(PROPERTIES_SHELF) | ||||
|     private String shelf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||
|     private String storageLocation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FILE) | ||||
|     @JsonProperty(PROPERTIES_FILE) | ||||
|     private String file; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_BOX) | ||||
|     @JsonProperty(PROPERTIES_BOX) | ||||
|     private String box; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) | ||||
|     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||
|     private Integer numberOfCopies; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) | ||||
|     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||
|     private Integer physicalSize; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
| } | ||||
|   | ||||
| @@ -34,7 +34,5 @@ import org.alfresco.rest.core.RestModels; | ||||
|  * @author Silviu Dinuta | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class TransferCollection extends RestModels<TransferEntry, TransferCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class TransferCollection | ||||
|     extends RestModels<TransferEntry, TransferCollection> {} | ||||
|   | ||||
| @@ -27,16 +27,14 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfer; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.core.RestModels; | ||||
| import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer; | ||||
|  | ||||
| /** | ||||
|  * POJO for transfer entry | ||||
| @@ -49,8 +47,9 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferEntry extends RestModels<TransferContainer, TransferEntry> | ||||
| { | ||||
| public class TransferEntry | ||||
|     extends RestModels<TransferContainer, TransferEntry> { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private Transfer entry; | ||||
| } | ||||
|   | ||||
| @@ -27,23 +27,21 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfer; | ||||
|  | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ACCESSION_INDICATOR; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IDENTIFIER; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_OWNER; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_PDF_INDICATOR; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_TRANSFER_LOCATION; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ACCESSION_INDICATOR; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for Transfer properties | ||||
| @@ -56,29 +54,29 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferProperties extends TestModel | ||||
| { | ||||
| public class TransferProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     /************************/ | ||||
|     /** Optional parameters */ | ||||
|     /************************/ | ||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PDF_INDICATOR) | ||||
|     @JsonProperty(PROPERTIES_PDF_INDICATOR) | ||||
|     private Boolean pdfIndicator; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_TRANSFER_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_TRANSFER_LOCATION) | ||||
|     private String transferLocation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ACCESSION_INDICATOR) | ||||
|     @JsonProperty(PROPERTIES_ACCESSION_INDICATOR) | ||||
|     private Boolean accessionIndicator; | ||||
| } | ||||
|   | ||||
| @@ -27,18 +27,15 @@ | ||||
|  | ||||
| package org.alfresco.rest.rm.community.model.transfercontainer; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for Transfer Container | ||||
| @@ -51,39 +48,39 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferContainer extends TestModel | ||||
| { | ||||
| public class TransferContainer extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private TransferContainerProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -31,15 +31,13 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_IDENTIFIER; | ||||
| import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for Transfer Container properties | ||||
| @@ -52,21 +50,20 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class TransferContainerProperties extends TestModel | ||||
| { | ||||
| public class TransferContainerProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     /************************/ | ||||
|     /** Optional parameters */ | ||||
|     /************************/ | ||||
|     @JsonProperty (PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_COUNT) | ||||
|     @JsonProperty(PROPERTIES_COUNT) | ||||
|     private Integer count; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -26,19 +26,16 @@ | ||||
|  */ | ||||
| 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 java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for unfiled container | ||||
| @@ -51,39 +48,39 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class UnfiledContainer extends TestModel | ||||
| { | ||||
| public class UnfiledContainer extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private List<String> aspectNames; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private UnfiledContainerProperties properties; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -26,21 +26,18 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.model.unfiledcontainer; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.rest.rm.community.model.record.RecordContent; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.rest.rm.community.model.record.RecordContent; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child | ||||
| @@ -53,40 +50,40 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class UnfiledContainerChild extends TestModel | ||||
| { | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class UnfiledContainerChild extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private Boolean isUnfiledRecordFolder; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private Boolean isRecord; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -35,7 +35,5 @@ import org.alfresco.rest.core.RestModels; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class UnfiledContainerChildCollection extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection> | ||||
| { | ||||
|  | ||||
| } | ||||
| public class UnfiledContainerChildCollection | ||||
|     extends RestModels<UnfiledContainerChildEntry, UnfiledContainerChildCollection> {} | ||||
|   | ||||
| @@ -27,11 +27,9 @@ | ||||
| package org.alfresco.rest.rm.community.model.unfiledcontainer; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.core.RestModels; | ||||
|  | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import org.alfresco.rest.core.RestModels; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child entry | ||||
| @@ -41,8 +39,9 @@ import lombok.EqualsAndHashCode; | ||||
|  */ | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| public class UnfiledContainerChildEntry extends RestModels<UnfiledContainer, UnfiledContainerChildEntry> | ||||
| { | ||||
| public class UnfiledContainerChildEntry | ||||
|     extends RestModels<UnfiledContainer, UnfiledContainerChildEntry> { | ||||
|  | ||||
|     @JsonProperty | ||||
|     private UnfiledContainerChild entry; | ||||
| } | ||||
|   | ||||
| @@ -61,15 +61,13 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.rm.community.model.common.Owner; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for record category child properties | ||||
| @@ -83,112 +81,112 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class UnfiledContainerChildProperties extends TestModel | ||||
| { | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class UnfiledContainerChildProperties extends TestModel { | ||||
|  | ||||
|     /**************************************************************************/ | ||||
|     /** Mandatory parameters - Shared by unfiled record folder and records */ | ||||
|     /**************************************************************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_TITLE) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_TITLE) | ||||
|     private String title; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_DESCRIPTION) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_DESCRIPTION) | ||||
|     private String description; | ||||
|  | ||||
|     @JsonProperty (value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     @JsonProperty(value = PROPERTIES_RECORD_SEARCH_HAS_DISPOSITION_SCHEDULE) | ||||
|     private Boolean recordSearchHasDispositionSchedule; | ||||
|  | ||||
|     /*********************************/ | ||||
|     /** Electronic record parameters */ | ||||
|     /*********************************/ | ||||
|     @JsonProperty (PROPERTIES_VERSION_TYPE) | ||||
|     @JsonProperty(PROPERTIES_VERSION_TYPE) | ||||
|     private String versionType; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_VERSION_LABEL) | ||||
|     @JsonProperty(PROPERTIES_VERSION_LABEL) | ||||
|     private String versionLabel; | ||||
|  | ||||
|     @JsonProperty(PROPERTIES_VERSIONED_NODEREF) | ||||
|     private String versionedNodeRef; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RMV_VERSIONED) | ||||
|     @JsonProperty(PROPERTIES_RMV_VERSIONED) | ||||
|     private String recordVersionLabel; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     @JsonProperty(PROPERTIES_DATE_TIME_ORIGINAL) | ||||
|     private String dateTimeOriginal; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_EXPOSURE_TIME) | ||||
|     @JsonProperty(PROPERTIES_EXPOSURE_TIME) | ||||
|     private Double exposureTime; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FLASH) | ||||
|     @JsonProperty(PROPERTIES_FLASH) | ||||
|     private Boolean flash; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_F_NUMBER) | ||||
|     @JsonProperty(PROPERTIES_F_NUMBER) | ||||
|     private Double fNumber; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FOCAL_LENGTH) | ||||
|     @JsonProperty(PROPERTIES_FOCAL_LENGTH) | ||||
|     private Double focalLength; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     @JsonProperty(PROPERTIES_ISO_SPEED_RATINGS) | ||||
|     private Integer isoSpeedRatings; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MANUFACTURER) | ||||
|     @JsonProperty(PROPERTIES_MANUFACTURER) | ||||
|     private String manufacturer; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_MODEL) | ||||
|     @JsonProperty(PROPERTIES_MODEL) | ||||
|     private String model; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ORIENTATION) | ||||
|     @JsonProperty(PROPERTIES_ORIENTATION) | ||||
|     private Integer orientation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_X_DIMENSION) | ||||
|     private Integer pixelXDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     @JsonProperty(PROPERTIES_PIXEL_Y_DIMENSION) | ||||
|     private Integer pixelYDimension; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_RESOLUTION_UNIT) | ||||
|     @JsonProperty(PROPERTIES_RESOLUTION_UNIT) | ||||
|     private String resolutionUnit; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SOFTWARE) | ||||
|     @JsonProperty(PROPERTIES_SOFTWARE) | ||||
|     private String software; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_X_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_X_RESOLUTION) | ||||
|     private Double xResolution; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_Y_RESOLUTION) | ||||
|     @JsonProperty(PROPERTIES_Y_RESOLUTION) | ||||
|     private Double yResolution; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_ORIGINAL_NAME) | ||||
|     @JsonProperty(PROPERTIES_ORIGINAL_NAME) | ||||
|     private String originalName; | ||||
|  | ||||
|     /*************************************/ | ||||
|     /** Non-electronic record parameters */ | ||||
|     /*************************************/ | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_SHELF) | ||||
|     @JsonProperty(PROPERTIES_SHELF) | ||||
|     private String shelf; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_STORAGE_LOCATION) | ||||
|     @JsonProperty(PROPERTIES_STORAGE_LOCATION) | ||||
|     private String storageLocation; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_FILE) | ||||
|     @JsonProperty(PROPERTIES_FILE) | ||||
|     private String file; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_BOX) | ||||
|     @JsonProperty(PROPERTIES_BOX) | ||||
|     private String box; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_NUMBER_OF_COPIES) | ||||
|     @JsonProperty(PROPERTIES_NUMBER_OF_COPIES) | ||||
|     private Integer numberOfCopies; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_PHYSICAL_SIZE) | ||||
|     @JsonProperty(PROPERTIES_PHYSICAL_SIZE) | ||||
|     private Integer physicalSize; | ||||
|  | ||||
|     @JsonProperty (PROPERTIES_OWNER) | ||||
|     @JsonProperty(PROPERTIES_OWNER) | ||||
|     private Owner owner; | ||||
| } | ||||
|   | ||||
| @@ -31,14 +31,12 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||||
|  | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for file plan properties | ||||
| @@ -51,15 +49,15 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @JsonIgnoreProperties (ignoreUnknown = true) | ||||
| public class UnfiledContainerProperties extends TestModel | ||||
| { | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | ||||
| public class UnfiledContainerProperties extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_IDENTIFIER) | ||||
|     private String identifier; | ||||
|  | ||||
|     @JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     @JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF) | ||||
|     private String rootNodeRef; | ||||
| } | ||||
|   | ||||
| @@ -26,20 +26,17 @@ | ||||
|  */ | ||||
| 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 java.util.List; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.NoArgsConstructor; | ||||
| import org.alfresco.rest.model.RestByUserModel; | ||||
| import org.alfresco.rest.rm.community.model.common.Path; | ||||
| import org.alfresco.rest.rm.community.model.record.RecordContent; | ||||
| import org.alfresco.utility.model.TestModel; | ||||
|  | ||||
| /** | ||||
|  * POJO for unfiled container | ||||
| @@ -52,33 +49,33 @@ import lombok.NoArgsConstructor; | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| public class UnfiledRecordFolder extends TestModel | ||||
| { | ||||
| public class UnfiledRecordFolder extends TestModel { | ||||
|  | ||||
|     /*************************/ | ||||
|     /** Mandatory parameters */ | ||||
|     /*************************/ | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String createdAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel createdByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String modifiedAt; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private RestByUserModel modifiedByUser; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String name; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String id; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String nodeType; | ||||
|  | ||||
|     @JsonProperty (required = true) | ||||
|     @JsonProperty(required = true) | ||||
|     private String parentId; | ||||
|  | ||||
|     /************************/ | ||||
|   | ||||
| @@ -32,8 +32,7 @@ package org.alfresco.rest.rm.community.model.user; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.7 | ||||
|  */ | ||||
| public class UserCapabilities | ||||
| { | ||||
| public class UserCapabilities { | ||||
|  | ||||
|     /** The id of the view records capability. */ | ||||
|     public static final String VIEW_RECORDS_CAP = "ViewRecords"; | ||||
|   | ||||
| @@ -28,20 +28,18 @@ package org.alfresco.rest.rm.community.model.user; | ||||
|  | ||||
| /** | ||||
|  * Constants for RM user capabilities | ||||
|  *  | ||||
|  * | ||||
|  * @author Kristijan Conkas | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public enum UserPermissions | ||||
| { | ||||
| public enum UserPermissions { | ||||
|     PERMISSION_FILING("Filing"), | ||||
|     PERMISSION_READ_RECORDS("ReadRecords"), | ||||
|     PERMISSION_FILE_RECORDS("FileRecords"); | ||||
|  | ||||
|     public final String permissionId; | ||||
|  | ||||
|     UserPermissions(String permissionId) | ||||
|     { | ||||
|     UserPermissions(String permissionId) { | ||||
|         this.permissionId = permissionId; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -33,23 +33,22 @@ package org.alfresco.rest.rm.community.model.user; | ||||
|  * @author Kristijan Conkas | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public enum UserRoles | ||||
| { | ||||
| public enum UserRoles { | ||||
|     IN_PLACE_WRITERS("ExtendedWriters", "In-Place Writers"), | ||||
|     ROLE_RM_ADMIN("Administrator", "Records Management Administrator"), | ||||
|     ROLE_RM_MANAGER("RecordsManager", "Records Management Manager"), | ||||
|     ROLE_RM_POWER_USER("PowerUser", "Records Management Power User"), | ||||
|     ROLE_RM_SECURITY_OFFICER("SecurityOfficer", "Records Management Security Officer"), | ||||
|     ROLE_RM_SECURITY_OFFICER( | ||||
|         "SecurityOfficer", | ||||
|         "Records Management Security Officer" | ||||
|     ), | ||||
|     ROLE_RM_USER("User", "Records Management User"); | ||||
|  | ||||
|     public final String roleId; | ||||
|     public final String displayName; | ||||
|  | ||||
|     UserRoles(String roleId, String displayName) | ||||
|     { | ||||
|     UserRoles(String roleId, String displayName) { | ||||
|         this.roleId = roleId; | ||||
|         this.displayName = displayName; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -29,11 +29,10 @@ package org.alfresco.rest.rm.community.requests; | ||||
| import static lombok.AccessLevel.PRIVATE; | ||||
| import static lombok.AccessLevel.PROTECTED; | ||||
|  | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.requests.ModelRequest; | ||||
|  | ||||
| import lombok.Getter; | ||||
| import lombok.Setter; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.requests.ModelRequest; | ||||
|  | ||||
| /** | ||||
|  * Extends {@link ModelRequest} to set {@link RMRestWrapper} | ||||
| @@ -41,17 +40,16 @@ import lombok.Setter; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public abstract class RMModelRequest<Request> extends ModelRequest<Request> | ||||
| { | ||||
|     @Getter (value = PROTECTED) | ||||
|     @Setter (value = PRIVATE) | ||||
| public abstract class RMModelRequest<Request> extends ModelRequest<Request> { | ||||
|  | ||||
|     @Getter(value = PROTECTED) | ||||
|     @Setter(value = PRIVATE) | ||||
|     private RMRestWrapper rmRestWrapper; | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper | ||||
|      */ | ||||
|     public RMModelRequest(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RMModelRequest(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper.getRestWrapper()); | ||||
|         setRmRestWrapper(rmRestWrapper); | ||||
|     } | ||||
|   | ||||
| @@ -30,11 +30,10 @@ import static java.lang.Integer.parseInt; | ||||
| import static java.lang.String.format; | ||||
|  | ||||
| import io.restassured.RestAssured; | ||||
|  | ||||
| import org.alfresco.rest.core.RMRestProperties; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.requests.gscore.api.ActionsExecutionAPI; | ||||
| import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
| import org.alfresco.rest.rm.community.requests.gscore.api.ActionsExecutionAPI; | ||||
| import org.alfresco.rest.rm.community.requests.gscore.api.FilePlanAPI; | ||||
| import org.alfresco.rest.rm.community.requests.gscore.api.FilesAPI; | ||||
| import org.alfresco.rest.rm.community.requests.gscore.api.RMSiteAPI; | ||||
| @@ -54,18 +53,25 @@ import org.alfresco.rest.rm.community.requests.gscore.api.UnfiledRecordFolderAPI | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class GSCoreAPI extends RMModelRequest | ||||
| { | ||||
| public class GSCoreAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      * @param rmRestProperties RM REST Properties | ||||
|      */ | ||||
|     public GSCoreAPI(RMRestWrapper rmRestWrapper, RMRestProperties rmRestProperties) | ||||
|     { | ||||
|     public GSCoreAPI( | ||||
|         RMRestWrapper rmRestWrapper, | ||||
|         RMRestProperties rmRestProperties | ||||
|     ) { | ||||
|         super(rmRestWrapper); | ||||
|         RestAssured.baseURI = format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer()); | ||||
|         RestAssured.baseURI = | ||||
|             format( | ||||
|                 "%s://%s", | ||||
|                 rmRestProperties.getScheme(), | ||||
|                 rmRestProperties.getServer() | ||||
|             ); | ||||
|         RestAssured.port = parseInt(rmRestProperties.getPort()); | ||||
|         RestAssured.basePath = rmRestProperties.getRestRmPath(); | ||||
|         restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath); | ||||
| @@ -76,9 +82,8 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link RMSiteAPI} | ||||
|      */ | ||||
|     public RMSiteAPI usingRMSite() | ||||
|     { | ||||
|       return new RMSiteAPI(getRmRestWrapper()); | ||||
|     public RMSiteAPI usingRMSite() { | ||||
|         return new RMSiteAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -86,8 +91,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link FilePlanAPI} | ||||
|      */ | ||||
|     public FilePlanAPI usingFilePlans() | ||||
|     { | ||||
|     public FilePlanAPI usingFilePlans() { | ||||
|         return new FilePlanAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -96,8 +100,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link RecordCategoryAPI} | ||||
|      */ | ||||
|     public RecordCategoryAPI usingRecordCategory() | ||||
|     { | ||||
|     public RecordCategoryAPI usingRecordCategory() { | ||||
|         return new RecordCategoryAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -106,8 +109,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link RecordFolderAPI} | ||||
|      */ | ||||
|     public RecordFolderAPI usingRecordFolder() | ||||
|     { | ||||
|     public RecordFolderAPI usingRecordFolder() { | ||||
|         return new RecordFolderAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -116,8 +118,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link RecordsAPI} | ||||
|      */ | ||||
|     public RecordsAPI usingRecords() | ||||
|     { | ||||
|     public RecordsAPI usingRecords() { | ||||
|         return new RecordsAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -126,8 +127,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link FilesAPI} | ||||
|      */ | ||||
|     public FilesAPI usingFiles() | ||||
|     { | ||||
|     public FilesAPI usingFiles() { | ||||
|         return new FilesAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -136,8 +136,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link TransferContainerAPI} | ||||
|      */ | ||||
|     public TransferContainerAPI usingTransferContainer() | ||||
|     { | ||||
|     public TransferContainerAPI usingTransferContainer() { | ||||
|         return new TransferContainerAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -146,8 +145,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link TransferAPI} | ||||
|      */ | ||||
|     public TransferAPI usingTransfer() | ||||
|     { | ||||
|     public TransferAPI usingTransfer() { | ||||
|         return new TransferAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -156,8 +154,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link UnfiledContainerAPI} | ||||
|      */ | ||||
|     public UnfiledContainerAPI usingUnfiledContainers() | ||||
|     { | ||||
|     public UnfiledContainerAPI usingUnfiledContainers() { | ||||
|         return new UnfiledContainerAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -166,8 +163,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link UnfiledRecordFolderAPI} | ||||
|      */ | ||||
|     public UnfiledRecordFolderAPI usingUnfiledRecordFolder() | ||||
|     { | ||||
|     public UnfiledRecordFolderAPI usingUnfiledRecordFolder() { | ||||
|         return new UnfiledRecordFolderAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -176,8 +172,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link RMUserAPI} | ||||
|      */ | ||||
|     public RMUserAPI usingRMUser() | ||||
|     { | ||||
|     public RMUserAPI usingRMUser() { | ||||
|         return new RMUserAPI(getRmRestWrapper()); | ||||
|     } | ||||
|  | ||||
| @@ -186,8 +181,7 @@ public class GSCoreAPI extends RMModelRequest | ||||
|      * | ||||
|      * @return {@link ActionsExecutionAPI} | ||||
|      */ | ||||
|     public ActionsExecutionAPI usingActionsExecutionsAPI() | ||||
|     { | ||||
|     public ActionsExecutionAPI usingActionsExecutionsAPI() { | ||||
|         return new ActionsExecutionAPI(getRmRestWrapper()); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.rm.community.requests.gscore.api; | ||||
|  | ||||
| import com.google.common.collect.ImmutableMap; | ||||
|  | ||||
| import lombok.SneakyThrows; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.model.rules.ActionsOnRule; | ||||
| @@ -41,13 +40,12 @@ import org.json.JSONObject; | ||||
|  * @author Claudia Agache | ||||
|  * @since 3.1 | ||||
|  */ | ||||
| public class ActionsExecutionAPI extends RMModelRequest | ||||
| { | ||||
| public class ActionsExecutionAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public ActionsExecutionAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public ActionsExecutionAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -58,11 +56,18 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @param destinationPath the path to the record folder | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     public JSONObject declareAndFile(RepoTestModel targetNode, String destinationPath) throws Exception | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode, | ||||
|                                          ImmutableMap.of("path", destinationPath)); | ||||
|     public JSONObject declareAndFile( | ||||
|         RepoTestModel targetNode, | ||||
|         String destinationPath | ||||
|     ) throws Exception { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), | ||||
|                 targetNode, | ||||
|                 ImmutableMap.of("path", destinationPath) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -71,13 +76,17 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @param targetNode the node on which the action is executed | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     public JSONObject declareAsRecord(RepoTestModel targetNode) throws Exception | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), targetNode); | ||||
|     public JSONObject declareAsRecord(RepoTestModel targetNode) | ||||
|         throws Exception { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.DECLARE_AS_RECORD.getActionValue(), | ||||
|                 targetNode | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Declares and file a document version as record to a record folder using v1 actions api | ||||
|      * | ||||
| @@ -85,11 +94,18 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @param destinationPath the path to the record folder | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     public JSONObject declareAndFileVersionAsRecord(RepoTestModel targetNode, String destinationPath) throws Exception | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode, | ||||
|                                          ImmutableMap.of("path", destinationPath)); | ||||
|     public JSONObject declareAndFileVersionAsRecord( | ||||
|         RepoTestModel targetNode, | ||||
|         String destinationPath | ||||
|     ) throws Exception { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), | ||||
|                 targetNode, | ||||
|                 ImmutableMap.of("path", destinationPath) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -98,10 +114,15 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @param targetNode the node on which the action is executed | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     public JSONObject declareVersionAsRecord(RepoTestModel targetNode) throws Exception | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), targetNode); | ||||
|     public JSONObject declareVersionAsRecord(RepoTestModel targetNode) | ||||
|         throws Exception { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.DECLARE_VERSION_AS_RECORD.getActionValue(), | ||||
|                 targetNode | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -111,10 +132,14 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     @SneakyThrows | ||||
|     public JSONObject addWORMLock(RepoTestModel targetNode) | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode); | ||||
|     public JSONObject addWORMLock(RepoTestModel targetNode) { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.WORM_LOCK.getActionValue(), | ||||
|                 targetNode | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -125,10 +150,20 @@ public class ActionsExecutionAPI extends RMModelRequest | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     @SneakyThrows | ||||
|     public JSONObject addWORMLock(RepoTestModel targetNode, int retentionPeriod) | ||||
|     { | ||||
|         return getRmRestWrapper().withCoreAPI().usingActions() | ||||
|                                  .executeAction(ActionsOnRule.WORM_LOCK.getActionValue(), targetNode, | ||||
|                                          ImmutableMap.of("retentionPeriod", String.valueOf(retentionPeriod))); | ||||
|     public JSONObject addWORMLock( | ||||
|         RepoTestModel targetNode, | ||||
|         int retentionPeriod | ||||
|     ) { | ||||
|         return getRmRestWrapper() | ||||
|             .withCoreAPI() | ||||
|             .usingActions() | ||||
|             .executeAction( | ||||
|                 ActionsOnRule.WORM_LOCK.getActionValue(), | ||||
|                 targetNode, | ||||
|                 ImmutableMap.of( | ||||
|                     "retentionPeriod", | ||||
|                     String.valueOf(retentionPeriod) | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -49,23 +49,21 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilePlanAPI extends RMModelRequest | ||||
| { | ||||
| public class FilePlanAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public FilePlanAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public FilePlanAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getFilePlan(String, String)} | ||||
|      */ | ||||
|     public FilePlan getFilePlan(String filePlanId) | ||||
|     { | ||||
|     public FilePlan getFilePlan(String filePlanId) { | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getFilePlan(filePlanId, EMPTY); | ||||
| @@ -85,23 +83,25 @@ public class FilePlanAPI extends RMModelRequest | ||||
|      *  <li>{@code filePlanId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public FilePlan getFilePlan(String filePlanId, String parameters) | ||||
|     { | ||||
|     public FilePlan getFilePlan(String filePlanId, String parameters) { | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(FilePlan.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "/file-plans/{filePlanId}?{parameters}", | ||||
|                 filePlanId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 FilePlan.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "/file-plans/{filePlanId}?{parameters}", | ||||
|                     filePlanId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRootRecordCategories(String, String)} | ||||
|      */ | ||||
|     public RecordCategoryCollection getRootRecordCategories(String filePlanId) | ||||
|     { | ||||
|     public RecordCategoryCollection getRootRecordCategories(String filePlanId) { | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getRootRecordCategories(filePlanId, EMPTY); | ||||
| @@ -120,23 +120,31 @@ public class FilePlanAPI extends RMModelRequest | ||||
|      *  <li>{@code filePlanId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public RecordCategoryCollection getRootRecordCategories(String filePlanId, String parameters) | ||||
|     { | ||||
|     public RecordCategoryCollection getRootRecordCategories( | ||||
|         String filePlanId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(RecordCategoryCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "file-plans/{filePlanId}/categories?{parameters}", | ||||
|             filePlanId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 RecordCategoryCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "file-plans/{filePlanId}/categories?{parameters}", | ||||
|                     filePlanId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #createRootRecordCategory(RecordCategory, String, String)} | ||||
|      */ | ||||
|     public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId) | ||||
|     { | ||||
|     public RecordCategory createRootRecordCategory( | ||||
|         RecordCategory recordCategoryModel, | ||||
|         String filePlanId | ||||
|     ) { | ||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
| @@ -160,25 +168,31 @@ public class FilePlanAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including node name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordCategory createRootRecordCategory(RecordCategory recordCategoryModel, String filePlanId, String parameters) | ||||
|     { | ||||
|     public RecordCategory createRootRecordCategory( | ||||
|         RecordCategory recordCategoryModel, | ||||
|         String filePlanId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(recordCategoryModel), | ||||
|                 "file-plans/{filePlanId}/categories?{parameters}", | ||||
|                 filePlanId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordCategory.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(recordCategoryModel), | ||||
|                     "file-plans/{filePlanId}/categories?{parameters}", | ||||
|                     filePlanId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateFilePlan(FilePlan, String, String) | ||||
|      */ | ||||
|     public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId) | ||||
|     { | ||||
|     public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId) { | ||||
|         mandatoryObject("filePlanModel", filePlanModel); | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
| @@ -200,17 +214,24 @@ public class FilePlanAPI extends RMModelRequest | ||||
|      *                   <li>model integrity exception, including file name with invalid characters</li> | ||||
|      *                   </ul> | ||||
|      */ | ||||
|     public FilePlan updateFilePlan(FilePlan filePlanModel, String filePlanId, String parameters) | ||||
|     { | ||||
|     public FilePlan updateFilePlan( | ||||
|         FilePlan filePlanModel, | ||||
|         String filePlanId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("filePlanModel", filePlanModel); | ||||
|         mandatoryString("filePlanId", filePlanId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(FilePlan.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(filePlanModel), | ||||
|                 "file-plans/{filePlanId}?{parameters}", | ||||
|                 filePlanId, | ||||
|                 parameters)); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 FilePlan.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(filePlanModel), | ||||
|                     "file-plans/{filePlanId}?{parameters}", | ||||
|                     filePlanId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -40,15 +40,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Kristijan Conkas | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class FilesAPI extends RMModelRequest<FilesAPI> | ||||
| { | ||||
| public class FilesAPI extends RMModelRequest<FilesAPI> { | ||||
|  | ||||
|     public static final String PARENT_ID_PARAM = "parentId"; | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public FilesAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public FilesAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -59,16 +58,18 @@ public class FilesAPI extends RMModelRequest<FilesAPI> | ||||
|      * @return The {@link Record} for created record | ||||
|      * @throws RuntimeException for malformed JSON responses | ||||
|      */ | ||||
|     public Record declareAsRecord(String fileId) | ||||
|     { | ||||
|     public Record declareAsRecord(String fileId) { | ||||
|         mandatoryString("fileId", fileId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( | ||||
|             POST, | ||||
|             "/files/{fileId}/declare?{parameters}", | ||||
|             fileId, | ||||
|             getRmRestWrapper().getParameters() | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 simpleRequest( | ||||
|                     POST, | ||||
|                     "/files/{fileId}/declare?{parameters}", | ||||
|                     fileId, | ||||
|                     getRmRestWrapper().getParameters() | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -46,15 +46,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RMSiteAPI extends RMModelRequest | ||||
| { | ||||
| public class RMSiteAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * Constructor | ||||
|      * | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public RMSiteAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RMSiteAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -70,12 +69,9 @@ public class RMSiteAPI extends RMModelRequest | ||||
|      *  <li>Api Response code default Unexpected error</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RMSite getSite() | ||||
|     { | ||||
|         return getRmRestWrapper().processModel(RMSite.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "gs-sites/rm" | ||||
|         )); | ||||
|     public RMSite getSite() { | ||||
|         return getRmRestWrapper() | ||||
|             .processModel(RMSite.class, simpleRequest(GET, "gs-sites/rm")); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -91,15 +87,14 @@ public class RMSiteAPI extends RMModelRequest | ||||
|      *  <li>Api Response code default Unexpected error</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RMSite createRMSite(RMSite rmSiteModel) | ||||
|     { | ||||
|     public RMSite createRMSite(RMSite rmSiteModel) { | ||||
|         mandatoryObject("rmSiteModel", rmSiteModel); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RMSite.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(rmSiteModel), | ||||
|                 "gs-sites" | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RMSite.class, | ||||
|                 requestWithBody(POST, toJson(rmSiteModel), "gs-sites") | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -113,12 +108,9 @@ public class RMSiteAPI extends RMModelRequest | ||||
|      *  <li>Api Response code default Unexpected error</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public void deleteRMSite() | ||||
|     { | ||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( | ||||
|                 DELETE, | ||||
|                 "gs-sites/rm" | ||||
|         )); | ||||
|     public void deleteRMSite() { | ||||
|         getRmRestWrapper() | ||||
|             .processEmptyModel(simpleRequest(DELETE, "gs-sites/rm")); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -135,15 +127,14 @@ public class RMSiteAPI extends RMModelRequest | ||||
|      *  <li>Api Response code default Unexpected error,model integrity exception</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RMSite updateRMSite(RMSite rmSiteModel) | ||||
|     { | ||||
|     public RMSite updateRMSite(RMSite rmSiteModel) { | ||||
|         mandatoryObject("rmSiteProperties", rmSiteModel); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RMSite.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(rmSiteModel), | ||||
|                 "gs-sites/rm" | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RMSite.class, | ||||
|                 requestWithBody(PUT, toJson(rmSiteModel), "gs-sites/rm") | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -158,9 +149,10 @@ public class RMSiteAPI extends RMModelRequest | ||||
|      *  <li>Api Response code default Unexpected error</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public boolean existsRMSite() | ||||
|     { | ||||
|     public boolean existsRMSite() { | ||||
|         getSite(); | ||||
|         return getRmRestWrapper().getStatusCode().equals(String.valueOf(OK.value())); | ||||
|         return getRmRestWrapper() | ||||
|             .getStatusCode() | ||||
|             .equals(String.valueOf(OK.value())); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,18 +26,16 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.requests.gscore.api; | ||||
|  | ||||
| import static io.restassured.RestAssured.basic; | ||||
| import static io.restassured.RestAssured.given; | ||||
| import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; | ||||
| import static org.springframework.http.HttpStatus.OK; | ||||
|  | ||||
| import com.google.gson.JsonObject; | ||||
|  | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
| import io.restassured.http.ContentType; | ||||
| import io.restassured.response.Response; | ||||
| import io.restassured.specification.RequestSpecification; | ||||
| import static io.restassured.RestAssured.basic; | ||||
| import static io.restassured.RestAssured.given; | ||||
|  | ||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||
| import org.alfresco.rest.core.RMRestProperties; | ||||
| @@ -56,13 +54,12 @@ import org.alfresco.utility.model.UserModel; | ||||
| // 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 | ||||
| // "old-style" API calls. | ||||
| public class RMUserAPI extends RMModelRequest | ||||
| { | ||||
| public class RMUserAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public RMUserAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RMUserAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -70,8 +67,7 @@ public class RMUserAPI extends RMModelRequest | ||||
|      * Helper method to obtain {@link AlfrescoHttpClient} | ||||
|      * @return Initialized {@link AlfrescoHttpClient} instance | ||||
|      */ | ||||
|     private AlfrescoHttpClient getAlfrescoHttpClient() | ||||
|     { | ||||
|     private AlfrescoHttpClient getAlfrescoHttpClient() { | ||||
|         RMRestProperties properties = getRmRestWrapper().getRmRestProperties(); | ||||
|  | ||||
|         AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory(); | ||||
| @@ -89,8 +85,7 @@ public class RMUserAPI extends RMModelRequest | ||||
|      * @param userRole User's RM role, one of {@link UserRoles} roles | ||||
|      * @throws RuntimeException for failed requests | ||||
|      */ | ||||
|     public void assignRoleToUser(String userName, String userRole) | ||||
|     { | ||||
|     public void assignRoleToUser(String userName, String userRole) { | ||||
|         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||
|  | ||||
|         // get an "old-style" REST API client | ||||
| @@ -98,22 +93,29 @@ public class RMUserAPI extends RMModelRequest | ||||
|  | ||||
|         // override v1 baseURI and basePath | ||||
|         RequestSpecification spec = new RequestSpecBuilder() | ||||
|                 .setBaseUri(client.getApiUrl()) | ||||
|                 .setBasePath("/") | ||||
|                 .build(); | ||||
|             .setBaseUri(client.getApiUrl()) | ||||
|             .setBasePath("/") | ||||
|             .build(); | ||||
|  | ||||
|         Response response = given() | ||||
|                 .spec(spec) | ||||
|                 .log().all() | ||||
|                 .pathParam("role", userRole) | ||||
|                 .pathParam("authority", userName) | ||||
|                 .param("alf_ticket", client.getAlfTicket(adminUser.getUsername(), | ||||
|                         adminUser.getPassword())) | ||||
|                 .when() | ||||
|                 .post("/rm/roles/{role}/authorities/{authority}") | ||||
|                 .prettyPeek() | ||||
|                 .andReturn(); | ||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|             .spec(spec) | ||||
|             .log() | ||||
|             .all() | ||||
|             .pathParam("role", userRole) | ||||
|             .pathParam("authority", userName) | ||||
|             .param( | ||||
|                 "alf_ticket", | ||||
|                 client.getAlfTicket( | ||||
|                     adminUser.getUsername(), | ||||
|                     adminUser.getPassword() | ||||
|                 ) | ||||
|             ) | ||||
|             .when() | ||||
|             .post("/rm/roles/{role}/authorities/{authority}") | ||||
|             .prettyPeek() | ||||
|             .andReturn(); | ||||
|         getRmRestWrapper() | ||||
|             .setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -122,40 +124,46 @@ public class RMUserAPI extends RMModelRequest | ||||
|      * @param user {@link UserModel} for a user to be granted permission | ||||
|      * @param permission {@link UserPermissions} to be granted | ||||
|      */ | ||||
|     public void addUserPermission(String filePlanComponentId, UserModel user, UserPermissions permission) | ||||
|     { | ||||
|     public void addUserPermission( | ||||
|         String filePlanComponentId, | ||||
|         UserModel user, | ||||
|         UserPermissions permission | ||||
|     ) { | ||||
|         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||
|  | ||||
|         // get an "old-style" REST API client | ||||
|         AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||
|  | ||||
|         JsonObject bodyJson = buildObject() | ||||
|                 .addArray("permissions") | ||||
|                 .addObject() | ||||
|                 .add("authority", user.getUsername()) | ||||
|                 .add("role", permission.permissionId) | ||||
|                 .end() | ||||
|                 .getJson(); | ||||
|             .addArray("permissions") | ||||
|             .addObject() | ||||
|             .add("authority", user.getUsername()) | ||||
|             .add("role", permission.permissionId) | ||||
|             .end() | ||||
|             .getJson(); | ||||
|  | ||||
|         // override v1 baseURI and basePath | ||||
|         RequestSpecification spec = new RequestSpecBuilder() | ||||
|                 .setBaseUri(client.getApiUrl()) | ||||
|                 .setBasePath("/") | ||||
|                 .build(); | ||||
|             .setBaseUri(client.getApiUrl()) | ||||
|             .setBasePath("/") | ||||
|             .build(); | ||||
|  | ||||
|         // execute an "old-style" API call | ||||
|         Response response = given() | ||||
|                 .spec(spec) | ||||
|                 .auth().basic(adminUser.getUsername(), adminUser.getPassword()) | ||||
|                 .contentType(ContentType.JSON) | ||||
|                 .body(bodyJson.toString()) | ||||
|                 .pathParam("nodeId", filePlanComponentId) | ||||
|                 .log().all() | ||||
|                 .when() | ||||
|                 .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||
|                 .prettyPeek() | ||||
|                 .andReturn(); | ||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|             .spec(spec) | ||||
|             .auth() | ||||
|             .basic(adminUser.getUsername(), adminUser.getPassword()) | ||||
|             .contentType(ContentType.JSON) | ||||
|             .body(bodyJson.toString()) | ||||
|             .pathParam("nodeId", filePlanComponentId) | ||||
|             .log() | ||||
|             .all() | ||||
|             .when() | ||||
|             .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||
|             .prettyPeek() | ||||
|             .andReturn(); | ||||
|         getRmRestWrapper() | ||||
|             .setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -165,41 +173,45 @@ public class RMUserAPI extends RMModelRequest | ||||
|      * @param isInherited          true if the permission is inherited | ||||
|      *                             false if the permission inheritance is disabled | ||||
|      */ | ||||
|     public void setUserPermissionInheritance(String filePlanComponentId, Boolean isInherited) | ||||
|     { | ||||
|     public void setUserPermissionInheritance( | ||||
|         String filePlanComponentId, | ||||
|         Boolean isInherited | ||||
|     ) { | ||||
|         final UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||
|  | ||||
|         // get an "old-style" REST API client | ||||
|         final AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||
|  | ||||
|         final JsonObject bodyJson = buildObject() | ||||
|                 .addArray("permissions") | ||||
|                 .end() | ||||
|                 .add("isInherited", isInherited) | ||||
|                 .getJson(); | ||||
|             .addArray("permissions") | ||||
|             .end() | ||||
|             .add("isInherited", isInherited) | ||||
|             .getJson(); | ||||
|  | ||||
|         // override v1 baseURI and basePath | ||||
|         RequestSpecification spec = new RequestSpecBuilder() | ||||
|                 .setBaseUri(client.getApiUrl()) | ||||
|                 .setBasePath("/") | ||||
|                 .build(); | ||||
|             .setBaseUri(client.getApiUrl()) | ||||
|             .setBasePath("/") | ||||
|             .build(); | ||||
|  | ||||
|         // execute an "old-style" API call | ||||
|         final Response response = given() | ||||
|                 .spec(spec) | ||||
|                 .auth().basic(adminUser.getUsername(), adminUser.getPassword()) | ||||
|                 .contentType(ContentType.JSON) | ||||
|                 .body(bodyJson.toString()) | ||||
|                 .pathParam("nodeId", filePlanComponentId) | ||||
|                 .log().all() | ||||
|                 .when() | ||||
|                 .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||
|                 .prettyPeek() | ||||
|                 .andReturn(); | ||||
|         getRmRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|             .spec(spec) | ||||
|             .auth() | ||||
|             .basic(adminUser.getUsername(), adminUser.getPassword()) | ||||
|             .contentType(ContentType.JSON) | ||||
|             .body(bodyJson.toString()) | ||||
|             .pathParam("nodeId", filePlanComponentId) | ||||
|             .log() | ||||
|             .all() | ||||
|             .when() | ||||
|             .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") | ||||
|             .prettyPeek() | ||||
|             .andReturn(); | ||||
|         getRmRestWrapper() | ||||
|             .setStatusCode(Integer.toString(response.getStatusCode())); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Creates a user with the given name using the old APIs | ||||
|      * | ||||
| @@ -208,8 +220,11 @@ public class RMUserAPI extends RMModelRequest | ||||
|      * @param userEmail The user's e-mail address | ||||
|      * @return <code>true</code> if the user was created successfully, <code>false</code> otherwise. | ||||
|      */ | ||||
|     public boolean createUser(String userName, String userPassword, String userEmail) | ||||
|     { | ||||
|     public boolean createUser( | ||||
|         String userName, | ||||
|         String userPassword, | ||||
|         String userEmail | ||||
|     ) { | ||||
|         UserModel adminUser = getRmRestWrapper().getTestUser(); | ||||
|         final AlfrescoHttpClient client = getAlfrescoHttpClient(); | ||||
|  | ||||
| @@ -232,8 +247,9 @@ public class RMUserAPI extends RMModelRequest | ||||
|         // create POST request to "people" endpoint | ||||
|         Response response = given() | ||||
|             .spec(spec) | ||||
|             .log().all() | ||||
|         .when() | ||||
|             .log() | ||||
|             .all() | ||||
|             .when() | ||||
|             .post("people") | ||||
|             .prettyPeek() | ||||
|             .andReturn(); | ||||
|   | ||||
| @@ -49,15 +49,14 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordCategoryAPI extends RMModelRequest | ||||
| { | ||||
| public class RecordCategoryAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public RecordCategoryAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RecordCategoryAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -74,22 +73,23 @@ public class RecordCategoryAPI extends RMModelRequest | ||||
|      *  <li>{@code recordCategoryId} is locked and cannot be deleted</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public void deleteRecordCategory(String recordCategoryId) | ||||
|     { | ||||
|     public void deleteRecordCategory(String recordCategoryId) { | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( | ||||
|                 DELETE, | ||||
|                 "record-categories/{recordCategoryId}", | ||||
|                 recordCategoryId | ||||
|         )); | ||||
|         getRmRestWrapper() | ||||
|             .processEmptyModel( | ||||
|                 simpleRequest( | ||||
|                     DELETE, | ||||
|                     "record-categories/{recordCategoryId}", | ||||
|                     recordCategoryId | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRecordCategory(String, String)} | ||||
|      */ | ||||
|     public RecordCategory getRecordCategory(String recordCategoryId) | ||||
|     { | ||||
|     public RecordCategory getRecordCategory(String recordCategoryId) { | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRecordCategory(recordCategoryId, EMPTY); | ||||
| @@ -109,27 +109,39 @@ public class RecordCategoryAPI extends RMModelRequest | ||||
|      *  <li>{@code recordCategoryId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordCategory getRecordCategory(String recordCategoryId, String parameters) | ||||
|     { | ||||
|     public RecordCategory getRecordCategory( | ||||
|         String recordCategoryId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordCategory.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "record-categories/{recordCategoryId}?{parameters}", | ||||
|                 recordCategoryId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordCategory.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "record-categories/{recordCategoryId}?{parameters}", | ||||
|                     recordCategoryId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateRecordCategory(RecordCategory, String, String) | ||||
|      */ | ||||
|     public RecordCategory updateRecordCategory(RecordCategory recordCategoryModel, String recordCategoryId) | ||||
|     { | ||||
|     public RecordCategory updateRecordCategory( | ||||
|         RecordCategory recordCategoryModel, | ||||
|         String recordCategoryId | ||||
|     ) { | ||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return updateRecordCategory(recordCategoryModel, recordCategoryId, EMPTY); | ||||
|         return updateRecordCategory( | ||||
|             recordCategoryModel, | ||||
|             recordCategoryId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -149,25 +161,33 @@ public class RecordCategoryAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including file name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordCategory updateRecordCategory(RecordCategory recordCategoryModel, String recordCategoryId, String parameters) | ||||
|     { | ||||
|     public RecordCategory updateRecordCategory( | ||||
|         RecordCategory recordCategoryModel, | ||||
|         String recordCategoryId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("recordCategoryModel", recordCategoryModel); | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordCategory.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(recordCategoryModel), | ||||
|                 "record-categories/{recordCategoryId}?{parameters}", | ||||
|                 recordCategoryId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordCategory.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(recordCategoryModel), | ||||
|                     "record-categories/{recordCategoryId}?{parameters}", | ||||
|                     recordCategoryId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRecordCategoryChildren(String, String)} | ||||
|      */ | ||||
|     public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId) | ||||
|     { | ||||
|     public RecordCategoryChildCollection getRecordCategoryChildren( | ||||
|         String recordCategoryId | ||||
|     ) { | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRecordCategoryChildren(recordCategoryId, EMPTY); | ||||
| @@ -186,27 +206,39 @@ public class RecordCategoryAPI extends RMModelRequest | ||||
|      *  <li>{@code recordCategoryId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public RecordCategoryChildCollection getRecordCategoryChildren(String recordCategoryId, String parameters) | ||||
|     { | ||||
|     public RecordCategoryChildCollection getRecordCategoryChildren( | ||||
|         String recordCategoryId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(RecordCategoryChildCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "record-categories/{recordCategoryId}/children?{parameters}", | ||||
|             recordCategoryId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 RecordCategoryChildCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "record-categories/{recordCategoryId}/children?{parameters}", | ||||
|                     recordCategoryId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #createRecordCategoryChild(RecordCategoryChild, String, String)} | ||||
|      */ | ||||
|     public RecordCategoryChild createRecordCategoryChild(RecordCategoryChild recordCategoryChildModel, String recordCategoryId) | ||||
|     { | ||||
|     public RecordCategoryChild createRecordCategoryChild( | ||||
|         RecordCategoryChild recordCategoryChildModel, | ||||
|         String recordCategoryId | ||||
|     ) { | ||||
|         mandatoryObject("recordCategoryChildModel", recordCategoryChildModel); | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return createRecordCategoryChild(recordCategoryChildModel, recordCategoryId, EMPTY); | ||||
|         return createRecordCategoryChild( | ||||
|             recordCategoryChildModel, | ||||
|             recordCategoryId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -226,17 +258,27 @@ public class RecordCategoryAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including node name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordCategoryChild createRecordCategoryChild(RecordCategoryChild recordCategoryChildModel, String recordCategoryId, String parameters) | ||||
|     { | ||||
|         mandatoryObject("filePlanComponentProperties", recordCategoryChildModel); | ||||
|     public RecordCategoryChild createRecordCategoryChild( | ||||
|         RecordCategoryChild recordCategoryChildModel, | ||||
|         String recordCategoryId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "filePlanComponentProperties", | ||||
|             recordCategoryChildModel | ||||
|         ); | ||||
|         mandatoryString("recordCategoryId", recordCategoryId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordCategoryChild.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(recordCategoryChildModel), | ||||
|                 "record-categories/{recordCategoryId}/children?{parameters}", | ||||
|                 recordCategoryId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordCategoryChild.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(recordCategoryChildModel), | ||||
|                     "record-categories/{recordCategoryId}/children?{parameters}", | ||||
|                     recordCategoryId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -39,15 +39,13 @@ import static org.springframework.http.HttpMethod.POST; | ||||
| import static org.springframework.http.HttpMethod.PUT; | ||||
| import static org.testng.Assert.fail; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
|  | ||||
| import com.fasterxml.jackson.databind.JsonNode; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
| import io.restassured.http.ContentType; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.model.record.Record; | ||||
| import org.alfresco.rest.rm.community.model.recordfolder.RecordFolder; | ||||
| @@ -61,15 +59,14 @@ import org.alfresco.rest.rm.community.util.FilePlanComponentMixIn; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordFolderAPI extends RMModelRequest | ||||
| { | ||||
| public class RecordFolderAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public RecordFolderAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RecordFolderAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -86,22 +83,23 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code recordFolderId} is locked and cannot be deleted</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public void deleteRecordFolder(String recordFolderId) | ||||
|     { | ||||
|     public void deleteRecordFolder(String recordFolderId) { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( | ||||
|                 DELETE, | ||||
|                 "record-folders/{recordFolderId}", | ||||
|                 recordFolderId | ||||
|         )); | ||||
|         getRmRestWrapper() | ||||
|             .processEmptyModel( | ||||
|                 simpleRequest( | ||||
|                     DELETE, | ||||
|                     "record-folders/{recordFolderId}", | ||||
|                     recordFolderId | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRecordFolder(String, String)} | ||||
|      */ | ||||
|     public RecordFolder getRecordFolder(String recordFolderId) | ||||
|     { | ||||
|     public RecordFolder getRecordFolder(String recordFolderId) { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRecordFolder(recordFolderId, EMPTY); | ||||
| @@ -121,23 +119,31 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code recordFolderId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordFolder getRecordFolder(String recordFolderId, String parameters) | ||||
|     { | ||||
|     public RecordFolder getRecordFolder( | ||||
|         String recordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordFolder.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "record-folders/{recordFolderId}?{parameters}", | ||||
|                 recordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordFolder.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "record-folders/{recordFolderId}?{parameters}", | ||||
|                     recordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateRecordFolder(RecordFolder, String, String) | ||||
|      */ | ||||
|     public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId) | ||||
|     { | ||||
|     public RecordFolder updateRecordFolder( | ||||
|         RecordFolder recordFolderModel, | ||||
|         String recordFolderId | ||||
|     ) { | ||||
|         mandatoryObject("recordFolderModel", recordFolderModel); | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
| @@ -161,25 +167,33 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including file name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public RecordFolder updateRecordFolder(RecordFolder recordFolderModel, String recordFolderId, String parameters) | ||||
|     { | ||||
|     public RecordFolder updateRecordFolder( | ||||
|         RecordFolder recordFolderModel, | ||||
|         String recordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("recordFolderModel", recordFolderModel); | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(RecordFolder.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(recordFolderModel), | ||||
|                 "record-folders/{recordFolderId}?{parameters}", | ||||
|                 recordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 RecordFolder.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(recordFolderModel), | ||||
|                     "record-folders/{recordFolderId}?{parameters}", | ||||
|                     recordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRecordFolderChildren(String, String)} | ||||
|      */ | ||||
|     public RecordFolderCollection getRecordFolderChildren(String recordFolderId) | ||||
|     { | ||||
|     public RecordFolderCollection getRecordFolderChildren( | ||||
|         String recordFolderId | ||||
|     ) { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRecordFolderChildren(recordFolderId, EMPTY); | ||||
| @@ -198,23 +212,28 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code recordFolderId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public RecordFolderCollection getRecordFolderChildren(String recordFolderId, String parameters) | ||||
|     { | ||||
|     public RecordFolderCollection getRecordFolderChildren( | ||||
|         String recordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(RecordFolderCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "record-folders/{recordFolderId}/records?{parameters}", | ||||
|             recordFolderId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 RecordFolderCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "record-folders/{recordFolderId}/records?{parameters}", | ||||
|                     recordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #createRecord(Record, String, String)} | ||||
|      */ | ||||
|     public Record createRecord(Record recordModel, String recordFolderId) | ||||
|     { | ||||
|     public Record createRecord(Record recordModel, String recordFolderId) { | ||||
|         mandatoryObject("recordModel", recordModel); | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
| @@ -230,14 +249,16 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      * @return newly created {@link Record} | ||||
|      * @throws RuntimeException for invalid recordModel JSON strings | ||||
|      */ | ||||
|     public Record createRecord(Record recordModel, String recordFolderId, File recordContent) throws RuntimeException | ||||
|     { | ||||
|     public Record createRecord( | ||||
|         Record recordModel, | ||||
|         String recordFolderId, | ||||
|         File recordContent | ||||
|     ) throws RuntimeException { | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|         mandatoryObject("recordContent", recordContent); | ||||
|         mandatoryObject("recordModel", recordModel); | ||||
|  | ||||
|         if (!recordModel.getNodeType().equals(CONTENT_TYPE)) | ||||
|         { | ||||
|         if (!recordModel.getNodeType().equals(CONTENT_TYPE)) { | ||||
|             fail("Only electronic records are supported"); | ||||
|         } | ||||
|  | ||||
| @@ -247,22 +268,34 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|          */ | ||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||
|         JsonNode root; | ||||
|         try | ||||
|         { | ||||
|             root = new ObjectMapper().readTree(toJson(recordModel, Record.class, FilePlanComponentMixIn.class)); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|         try { | ||||
|             root = | ||||
|                 new ObjectMapper() | ||||
|                     .readTree( | ||||
|                         toJson( | ||||
|                             recordModel, | ||||
|                             Record.class, | ||||
|                             FilePlanComponentMixIn.class | ||||
|                         ) | ||||
|                     ); | ||||
|         } catch (IOException e) { | ||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||
|         } | ||||
|         // add request fields | ||||
|         Iterator<String> fieldNames = root.fieldNames(); | ||||
|         while (fieldNames.hasNext()) | ||||
|         { | ||||
|         while (fieldNames.hasNext()) { | ||||
|             String fieldName = fieldNames.next(); | ||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); | ||||
|             builder.addMultiPart( | ||||
|                 fieldName, | ||||
|                 root.get(fieldName).asText(), | ||||
|                 ContentType.JSON.name() | ||||
|             ); | ||||
|         } | ||||
|         builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name()); | ||||
|         builder.addMultiPart( | ||||
|             "filedata", | ||||
|             recordContent, | ||||
|             ContentType.BINARY.name() | ||||
|         ); | ||||
|  | ||||
|         // create node with given content | ||||
|         return createRecord(recordModel, recordFolderId); | ||||
| @@ -284,17 +317,24 @@ public class RecordFolderAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including node name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public Record createRecord(Record recordModel, String recordFolderId, String parameters) | ||||
|     { | ||||
|     public Record createRecord( | ||||
|         Record recordModel, | ||||
|         String recordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("recordModel", recordModel); | ||||
|         mandatoryString("recordFolderId", recordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(recordModel), | ||||
|                 "record-folders/{recordFolderId}/records?{parameters}", | ||||
|                 recordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(recordModel), | ||||
|                     "record-folders/{recordFolderId}/records?{parameters}", | ||||
|                     recordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -37,27 +37,24 @@ import static org.springframework.http.HttpMethod.GET; | ||||
| import static org.springframework.http.HttpMethod.POST; | ||||
| import static org.springframework.http.HttpMethod.PUT; | ||||
|  | ||||
|  | ||||
| import io.restassured.response.ResponseBody; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.model.record.Record; | ||||
| import org.alfresco.rest.rm.community.model.record.RecordBodyFile; | ||||
| import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  | ||||
| import io.restassured.response.ResponseBody; | ||||
|  | ||||
| /** | ||||
|  * Records REST API Wrapper | ||||
|  * | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class RecordsAPI extends RMModelRequest | ||||
| { | ||||
| public class RecordsAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public RecordsAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public RecordsAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
| @@ -74,14 +71,14 @@ public class RecordsAPI extends RMModelRequest | ||||
|      * <li>{@code recordId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public ResponseBody<?> getRecordContent(String recordId) | ||||
|     { | ||||
|     public ResponseBody<?> getRecordContent(String recordId) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRmRestWrapper() | ||||
|             .processHtmlResponse(simpleRequest(GET,"records/{recordId}/content", recordId)) | ||||
|             .processHtmlResponse( | ||||
|                 simpleRequest(GET, "records/{recordId}/content", recordId) | ||||
|             ) | ||||
|             .getBody(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -101,8 +98,7 @@ public class RecordsAPI extends RMModelRequest | ||||
|      * </ul> | ||||
|      * | ||||
|      */ | ||||
|     public Record fileRecord(RecordBodyFile recordBodyFile, String recordId) | ||||
|     { | ||||
|     public Record fileRecord(RecordBodyFile recordBodyFile, String recordId) { | ||||
|         mandatoryObject("recordBodyFile", recordBodyFile); | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
| @@ -126,25 +122,31 @@ public class RecordsAPI extends RMModelRequest | ||||
|      * </ul> | ||||
|      * | ||||
|      */ | ||||
|     public Record fileRecord(RecordBodyFile recordBodyFile, String recordId, String parameters) | ||||
|     { | ||||
|     public Record fileRecord( | ||||
|         RecordBodyFile recordBodyFile, | ||||
|         String recordId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("requestBodyFile", recordBodyFile); | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( | ||||
|             POST, | ||||
|             toJson(recordBodyFile), | ||||
|             "/records/{recordId}/file?{parameters}", | ||||
|             recordId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(recordBodyFile), | ||||
|                     "/records/{recordId}/file?{parameters}", | ||||
|                     recordId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #completeRecord(String, String) | ||||
|      */ | ||||
|     public Record completeRecord(String recordId) | ||||
|     { | ||||
|     public Record completeRecord(String recordId) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return completeRecord(recordId, EMPTY); | ||||
| @@ -165,17 +167,21 @@ public class RecordsAPI extends RMModelRequest | ||||
|      *                   <li>model integrity exception: the record has missing meta-data</li> | ||||
|      *                   </ul> | ||||
|      */ | ||||
|     public Record completeRecord(String recordId, String parameters) | ||||
|     { | ||||
|     public Record completeRecord(String recordId, String parameters) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( | ||||
|             POST, | ||||
|             "/records/{recordId}/complete?{parameters}", | ||||
|             recordId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 simpleRequest( | ||||
|                     POST, | ||||
|                     "/records/{recordId}/complete?{parameters}", | ||||
|                     recordId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Deletes a record. | ||||
|      * | ||||
| @@ -189,22 +195,19 @@ public class RecordsAPI extends RMModelRequest | ||||
|      *  <li>{@code recordId} is locked and cannot be deleted</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public void deleteRecord(String recordId) | ||||
|     { | ||||
|     public void deleteRecord(String recordId) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( | ||||
|                 DELETE, | ||||
|                 "records/{recordId}", | ||||
|                 recordId | ||||
|         )); | ||||
|         getRmRestWrapper() | ||||
|             .processEmptyModel( | ||||
|                 simpleRequest(DELETE, "records/{recordId}", recordId) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getRecord(String, String)} | ||||
|      */ | ||||
|     public Record getRecord(String recordId) | ||||
|     { | ||||
|     public Record getRecord(String recordId) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRecord(recordId, EMPTY); | ||||
| @@ -224,23 +227,25 @@ public class RecordsAPI extends RMModelRequest | ||||
|      *  <li>{@code recordId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public Record getRecord(String recordId, String parameters) | ||||
|     { | ||||
|     public Record getRecord(String recordId, String parameters) { | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "records/{recordId}?{parameters}", | ||||
|                 recordId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "records/{recordId}?{parameters}", | ||||
|                     recordId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateRecord(Record, String, String) | ||||
|      */ | ||||
|     public Record updateRecord(Record recordModel, String recordId) | ||||
|     { | ||||
|     public Record updateRecord(Record recordModel, String recordId) { | ||||
|         mandatoryObject("recordModel", recordModel); | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
| @@ -264,17 +269,24 @@ public class RecordsAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including file name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public Record updateRecord(Record recordModel, String recordId, String parameters) | ||||
|     { | ||||
|     public Record updateRecord( | ||||
|         Record recordModel, | ||||
|         String recordId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("recordModel", recordModel); | ||||
|         mandatoryString("recordId", recordId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Record.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(recordModel), | ||||
|                 "records/{recordId}?{parameters}", | ||||
|                 recordId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Record.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(recordModel), | ||||
|                     "records/{recordId}?{parameters}", | ||||
|                     recordId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -43,21 +43,19 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Silviu Dinuta | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class TransferAPI extends RMModelRequest | ||||
| { | ||||
| public class TransferAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public TransferAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public TransferAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getTransfer(String, String)} | ||||
|      */ | ||||
|     public Transfer getTransfer(String transferId) | ||||
|     { | ||||
|     public Transfer getTransfer(String transferId) { | ||||
|         mandatoryString("transferId", transferId); | ||||
|  | ||||
|         return getTransfer(transferId, EMPTY); | ||||
| @@ -77,22 +75,25 @@ public class TransferAPI extends RMModelRequest | ||||
|      *  <li>{@code transferId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public Transfer getTransfer(String transferId, String parameters) | ||||
|     { | ||||
|     public Transfer getTransfer(String transferId, String parameters) { | ||||
|         mandatoryString("transferId", transferId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(Transfer.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "/transfers/{transferId}?{parameters}", | ||||
|                 transferId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 Transfer.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "/transfers/{transferId}?{parameters}", | ||||
|                     transferId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getTransfersChildren(String, String)} | ||||
|      */ | ||||
|     public TransferChildCollection getTransfersChildren(String transferId) | ||||
|     { | ||||
|     public TransferChildCollection getTransfersChildren(String transferId) { | ||||
|         mandatoryString("transferId", transferId); | ||||
|  | ||||
|         return getTransfersChildren(transferId, EMPTY); | ||||
| @@ -111,15 +112,21 @@ public class TransferAPI extends RMModelRequest | ||||
|      *  <li>{@code filePlanId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public TransferChildCollection getTransfersChildren(String transferId, String parameters) | ||||
|     { | ||||
|     public TransferChildCollection getTransfersChildren( | ||||
|         String transferId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("transferId", transferId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(TransferChildCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "transfers/{filePlanId}/children?{parameters}", | ||||
|             transferId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 TransferChildCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "transfers/{filePlanId}/children?{parameters}", | ||||
|                     transferId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -47,21 +47,19 @@ import org.alfresco.rest.rm.community.requests.RMModelRequest; | ||||
|  * @author Silviu Dinuta | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class TransferContainerAPI extends RMModelRequest | ||||
| { | ||||
| public class TransferContainerAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public TransferContainerAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public TransferContainerAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getTransferContainer(String, String)} | ||||
|      */ | ||||
|     public TransferContainer getTransferContainer(String transferContainerId) | ||||
|     { | ||||
|     public TransferContainer getTransferContainer(String transferContainerId) { | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return getTransferContainer(transferContainerId, EMPTY); | ||||
| @@ -81,27 +79,39 @@ public class TransferContainerAPI extends RMModelRequest | ||||
|      *  <li>{@code transferContainerId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public TransferContainer getTransferContainer(String transferContainerId, String parameters) | ||||
|     { | ||||
|     public TransferContainer getTransferContainer( | ||||
|         String transferContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(TransferContainer.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "/transfer-containers/{transferContainerId}?{parameters}", | ||||
|                 transferContainerId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 TransferContainer.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "/transfer-containers/{transferContainerId}?{parameters}", | ||||
|                     transferContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateTransferContainer(TransferContainer, String, String) | ||||
|      */ | ||||
|     public TransferContainer updateTransferContainer(TransferContainer transferContainerModel, String transferContainerId) | ||||
|     { | ||||
|     public TransferContainer updateTransferContainer( | ||||
|         TransferContainer transferContainerModel, | ||||
|         String transferContainerId | ||||
|     ) { | ||||
|         mandatoryObject("transferContainerModel", transferContainerModel); | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return updateTransferContainer(transferContainerModel, transferContainerId, EMPTY); | ||||
|         return updateTransferContainer( | ||||
|             transferContainerModel, | ||||
|             transferContainerId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -121,25 +131,31 @@ public class TransferContainerAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including transfer container name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public TransferContainer updateTransferContainer(TransferContainer transferContainerModel, String transferContainerId, String parameters) | ||||
|     { | ||||
|     public TransferContainer updateTransferContainer( | ||||
|         TransferContainer transferContainerModel, | ||||
|         String transferContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("transferContainerModel", transferContainerModel); | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(TransferContainer.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(transferContainerModel), | ||||
|                 "transfer-containers/{transferContainerId}?{parameters}", | ||||
|                 transferContainerId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 TransferContainer.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(transferContainerModel), | ||||
|                     "transfer-containers/{transferContainerId}?{parameters}", | ||||
|                     transferContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getTransfers(String, String)} | ||||
|      */ | ||||
|     public TransferCollection getTransfers(String transferContainerId) | ||||
|     { | ||||
|     public TransferCollection getTransfers(String transferContainerId) { | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return getTransfers(transferContainerId, EMPTY); | ||||
| @@ -158,15 +174,21 @@ public class TransferContainerAPI extends RMModelRequest | ||||
|      *  <li>{@code filePlanId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public TransferCollection getTransfers(String transferContainerId, String parameters) | ||||
|     { | ||||
|     public TransferCollection getTransfers( | ||||
|         String transferContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("transferContainerId", transferContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(TransferCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "transfer-containers/{filePlanId}/transfers?{parameters}", | ||||
|             transferContainerId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 TransferCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "transfer-containers/{filePlanId}/transfers?{parameters}", | ||||
|                     transferContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -38,16 +38,13 @@ import static org.springframework.http.HttpMethod.POST; | ||||
| import static org.springframework.http.HttpMethod.PUT; | ||||
| import static org.testng.Assert.fail; | ||||
|  | ||||
| import com.fasterxml.jackson.databind.JsonNode; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
| import io.restassured.http.ContentType; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
|  | ||||
| import com.fasterxml.jackson.databind.JsonNode; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
|  | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
| import io.restassured.http.ContentType; | ||||
|  | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainer; | ||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChild; | ||||
| @@ -62,21 +59,19 @@ import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin; | ||||
|  * @author Ana Bozianu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class UnfiledContainerAPI extends RMModelRequest | ||||
| { | ||||
| public class UnfiledContainerAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public UnfiledContainerAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public UnfiledContainerAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getUnfiledContainer(String, String)} | ||||
|      */ | ||||
|     public UnfiledContainer getUnfiledContainer(String unfiledContainerId) | ||||
|     { | ||||
|     public UnfiledContainer getUnfiledContainer(String unfiledContainerId) { | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getUnfiledContainer(unfiledContainerId, EMPTY); | ||||
| @@ -96,23 +91,30 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|      *  <li>{@code unfiledContainerId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledContainer getUnfiledContainer(String unfiledContainerId, String parameters) | ||||
|     { | ||||
|     public UnfiledContainer getUnfiledContainer( | ||||
|         String unfiledContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledContainer.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||
|                 unfiledContainerId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledContainer.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||
|                     unfiledContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getUnfiledContainerChildren(String)} (String, String)} | ||||
|      */ | ||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId) | ||||
|     { | ||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren( | ||||
|         String unfiledContainerId | ||||
|     ) { | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getUnfiledContainerChildren(unfiledContainerId, EMPTY); | ||||
| @@ -131,27 +133,42 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|      *  <li>{@code unfiledContainerId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren(String unfiledContainerId, String parameters) | ||||
|     { | ||||
|     public UnfiledContainerChildCollection getUnfiledContainerChildren( | ||||
|         String unfiledContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||
|             unfiledContainerId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 UnfiledContainerChildCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||
|                     unfiledContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #createUnfiledContainerChild(UnfiledContainerChild, String, String)} | ||||
|      */ | ||||
|     public UnfiledContainerChild createUnfiledContainerChild(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId) | ||||
|     { | ||||
|         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); | ||||
|     public UnfiledContainerChild createUnfiledContainerChild( | ||||
|         UnfiledContainerChild unfiledContainerChildModel, | ||||
|         String unfiledContainerId | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledContainerChildModel", | ||||
|             unfiledContainerChildModel | ||||
|         ); | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return createUnfiledContainerChild(unfiledContainerChildModel, unfiledContainerId, EMPTY); | ||||
|         return createUnfiledContainerChild( | ||||
|             unfiledContainerChildModel, | ||||
|             unfiledContainerId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -171,18 +188,28 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including node name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledContainerChild createUnfiledContainerChild(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId, String parameters) | ||||
|     { | ||||
|         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); | ||||
|     public UnfiledContainerChild createUnfiledContainerChild( | ||||
|         UnfiledContainerChild unfiledContainerChildModel, | ||||
|         String unfiledContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledContainerChildModel", | ||||
|             unfiledContainerChildModel | ||||
|         ); | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(unfiledContainerChildModel), | ||||
|                 "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||
|                 unfiledContainerId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledContainerChild.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(unfiledContainerChildModel), | ||||
|                     "unfiled-containers/{unfiledContainerId}/children?{parameters}", | ||||
|                     unfiledContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -194,14 +221,22 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|      * @return newly created {@link UnfiledContainerChild} | ||||
|      * @throws RuntimeException for invalid recordModel JSON strings | ||||
|      */ | ||||
|     public UnfiledContainerChild uploadRecord(UnfiledContainerChild unfiledContainerChildModel, String unfiledContainerId, File unfiledContainerChildContent) | ||||
|     { | ||||
|         mandatoryObject("unfiledContainerChildModel", unfiledContainerChildModel); | ||||
|         mandatoryObject("unfiledContainerChildContent", unfiledContainerChildContent); | ||||
|     public UnfiledContainerChild uploadRecord( | ||||
|         UnfiledContainerChild unfiledContainerChildModel, | ||||
|         String unfiledContainerId, | ||||
|         File unfiledContainerChildContent | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledContainerChildModel", | ||||
|             unfiledContainerChildModel | ||||
|         ); | ||||
|         mandatoryObject( | ||||
|             "unfiledContainerChildContent", | ||||
|             unfiledContainerChildContent | ||||
|         ); | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE)) | ||||
|         { | ||||
|         if (!unfiledContainerChildModel.getNodeType().equals(CONTENT_TYPE)) { | ||||
|             fail("Only electronic records are supported"); | ||||
|         } | ||||
|  | ||||
| @@ -211,36 +246,57 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|          */ | ||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||
|         JsonNode root; | ||||
|         try | ||||
|         { | ||||
|             root = new ObjectMapper().readTree(toJson(unfiledContainerChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class)); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|         try { | ||||
|             root = | ||||
|                 new ObjectMapper() | ||||
|                     .readTree( | ||||
|                         toJson( | ||||
|                             unfiledContainerChildModel, | ||||
|                             UnfiledContainerChild.class, | ||||
|                             UnfiledContainerChildMixin.class | ||||
|                         ) | ||||
|                     ); | ||||
|         } catch (IOException e) { | ||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||
|         } | ||||
|         // add request fields | ||||
|         Iterator<String> fieldNames = root.fieldNames(); | ||||
|         while (fieldNames.hasNext()) | ||||
|         { | ||||
|         while (fieldNames.hasNext()) { | ||||
|             String fieldName = fieldNames.next(); | ||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); | ||||
|             builder.addMultiPart( | ||||
|                 fieldName, | ||||
|                 root.get(fieldName).asText(), | ||||
|                 ContentType.JSON.name() | ||||
|             ); | ||||
|         } | ||||
|         builder.addMultiPart("filedata", unfiledContainerChildContent, ContentType.BINARY.name()); | ||||
|         builder.addMultiPart( | ||||
|             "filedata", | ||||
|             unfiledContainerChildContent, | ||||
|             ContentType.BINARY.name() | ||||
|         ); | ||||
|  | ||||
|         // create node with given content | ||||
|         return createUnfiledContainerChild(unfiledContainerChildModel, unfiledContainerId); | ||||
|         return createUnfiledContainerChild( | ||||
|             unfiledContainerChildModel, | ||||
|             unfiledContainerId | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateUnfiledContainer(UnfiledContainer, String, String) | ||||
|      */ | ||||
|     public UnfiledContainer updateUnfiledContainer(UnfiledContainer unfiledContainerModel, String unfiledContainerId) | ||||
|     { | ||||
|     public UnfiledContainer updateUnfiledContainer( | ||||
|         UnfiledContainer unfiledContainerModel, | ||||
|         String unfiledContainerId | ||||
|     ) { | ||||
|         mandatoryObject("unfiledContainerModel", unfiledContainerModel); | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return updateUnfiledContainer(unfiledContainerModel, unfiledContainerId, EMPTY); | ||||
|         return updateUnfiledContainer( | ||||
|             unfiledContainerModel, | ||||
|             unfiledContainerId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -260,18 +316,24 @@ public class UnfiledContainerAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including file name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledContainer updateUnfiledContainer(UnfiledContainer unfiledContainerModel, String unfiledContainerId, String parameters) | ||||
|     { | ||||
|     public UnfiledContainer updateUnfiledContainer( | ||||
|         UnfiledContainer unfiledContainerModel, | ||||
|         String unfiledContainerId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("unfiledContainerModel", unfiledContainerModel); | ||||
|         mandatoryString("unfiledContainerId", unfiledContainerId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledContainer.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(unfiledContainerModel), | ||||
|                 "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||
|                 unfiledContainerId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledContainer.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(unfiledContainerModel), | ||||
|                     "unfiled-containers/{unfiledContainerId}?{parameters}", | ||||
|                     unfiledContainerId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -39,15 +39,13 @@ import static org.springframework.http.HttpMethod.POST; | ||||
| import static org.springframework.http.HttpMethod.PUT; | ||||
| import static org.testng.Assert.fail; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
|  | ||||
| import com.fasterxml.jackson.databind.JsonNode; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import io.restassured.builder.RequestSpecBuilder; | ||||
| import io.restassured.http.ContentType; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
| import org.alfresco.rest.core.RMRestWrapper; | ||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChild; | ||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildCollection; | ||||
| @@ -61,21 +59,21 @@ import org.alfresco.rest.rm.community.util.UnfiledContainerChildMixin; | ||||
|  * @author Ramona Popa | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
| { | ||||
| public class UnfiledRecordFolderAPI extends RMModelRequest { | ||||
|  | ||||
|     /** | ||||
|      * @param rmRestWrapper RM REST Wrapper | ||||
|      */ | ||||
|     public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper) | ||||
|     { | ||||
|     public UnfiledRecordFolderAPI(RMRestWrapper rmRestWrapper) { | ||||
|         super(rmRestWrapper); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getUnfiledRecordFolder(String, String)} | ||||
|      */ | ||||
|     public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId) | ||||
|     { | ||||
|     public UnfiledRecordFolder getUnfiledRecordFolder( | ||||
|         String unfiledRecordFolderId | ||||
|     ) { | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getUnfiledRecordFolder(unfiledRecordFolderId, EMPTY); | ||||
| @@ -95,23 +93,30 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledRecordFolder getUnfiledRecordFolder(String unfiledRecordFolderId, String parameters) | ||||
|     { | ||||
|     public UnfiledRecordFolder getUnfiledRecordFolder( | ||||
|         String unfiledRecordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledRecordFolder.class, simpleRequest( | ||||
|                 GET, | ||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", | ||||
|                 unfiledRecordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledRecordFolder.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", | ||||
|                     unfiledRecordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #getUnfiledRecordFolderChildren(String, String)} | ||||
|      */ | ||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId) | ||||
|     { | ||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren( | ||||
|         String unfiledRecordFolderId | ||||
|     ) { | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getUnfiledRecordFolderChildren(unfiledRecordFolderId, EMPTY); | ||||
| @@ -130,27 +135,42 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code unfiledRecordFolderId} does not exist</li> | ||||
|      *</ul> | ||||
|      */ | ||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren(String unfiledRecordFolderId, String parameters) | ||||
|     { | ||||
|     public UnfiledContainerChildCollection getUnfiledRecordFolderChildren( | ||||
|         String unfiledRecordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModels(UnfiledContainerChildCollection.class, simpleRequest( | ||||
|             GET, | ||||
|             "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||
|             unfiledRecordFolderId, | ||||
|             parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModels( | ||||
|                 UnfiledContainerChildCollection.class, | ||||
|                 simpleRequest( | ||||
|                     GET, | ||||
|                     "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||
|                     unfiledRecordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #createUnfiledRecordFolderChild(UnfiledContainerChild, String, String)} | ||||
|      */ | ||||
|     public UnfiledContainerChild createUnfiledRecordFolderChild(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId) | ||||
|     { | ||||
|         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||
|     public UnfiledContainerChild createUnfiledRecordFolderChild( | ||||
|         UnfiledContainerChild unfiledRecordFolderChildModel, | ||||
|         String unfiledRecordFolderId | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledRecordFolderChildModel", | ||||
|             unfiledRecordFolderChildModel | ||||
|         ); | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId, EMPTY); | ||||
|         return createUnfiledRecordFolderChild( | ||||
|             unfiledRecordFolderChildModel, | ||||
|             unfiledRecordFolderId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -170,18 +190,28 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including node name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledContainerChild createUnfiledRecordFolderChild(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId, String parameters) | ||||
|     { | ||||
|         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||
|     public UnfiledContainerChild createUnfiledRecordFolderChild( | ||||
|         UnfiledContainerChild unfiledRecordFolderChildModel, | ||||
|         String unfiledRecordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledRecordFolderChildModel", | ||||
|             unfiledRecordFolderChildModel | ||||
|         ); | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledContainerChild.class, requestWithBody( | ||||
|                 POST, | ||||
|                 toJson(unfiledRecordFolderChildModel), | ||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||
|                 unfiledRecordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledContainerChild.class, | ||||
|                 requestWithBody( | ||||
|                     POST, | ||||
|                     toJson(unfiledRecordFolderChildModel), | ||||
|                     "unfiled-record-folders/{unfiledRecordFolderId}/children?{parameters}", | ||||
|                     unfiledRecordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -193,14 +223,22 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      * @return newly created {@link UnfiledContainerChild} | ||||
|      * @throws RuntimeException for invalid recordModel JSON strings | ||||
|      */ | ||||
|     public UnfiledContainerChild uploadRecord(UnfiledContainerChild unfiledRecordFolderChildModel, String unfiledRecordFolderId, File unfiledRecordFolderChildContent) | ||||
|     { | ||||
|         mandatoryObject("unfiledRecordFolderChildModel", unfiledRecordFolderChildModel); | ||||
|         mandatoryObject("unfiledRecordFolderChildContent", unfiledRecordFolderChildContent); | ||||
|     public UnfiledContainerChild uploadRecord( | ||||
|         UnfiledContainerChild unfiledRecordFolderChildModel, | ||||
|         String unfiledRecordFolderId, | ||||
|         File unfiledRecordFolderChildContent | ||||
|     ) { | ||||
|         mandatoryObject( | ||||
|             "unfiledRecordFolderChildModel", | ||||
|             unfiledRecordFolderChildModel | ||||
|         ); | ||||
|         mandatoryObject( | ||||
|             "unfiledRecordFolderChildContent", | ||||
|             unfiledRecordFolderChildContent | ||||
|         ); | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE)) | ||||
|         { | ||||
|         if (!unfiledRecordFolderChildModel.getNodeType().equals(CONTENT_TYPE)) { | ||||
|             fail("Only electronic records are supported"); | ||||
|         } | ||||
|  | ||||
| @@ -210,36 +248,57 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|          */ | ||||
|         RequestSpecBuilder builder = getRmRestWrapper().configureRequestSpec(); | ||||
|         JsonNode root; | ||||
|         try | ||||
|         { | ||||
|             root = new ObjectMapper().readTree(toJson(unfiledRecordFolderChildModel, UnfiledContainerChild.class, UnfiledContainerChildMixin.class)); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|         try { | ||||
|             root = | ||||
|                 new ObjectMapper() | ||||
|                     .readTree( | ||||
|                         toJson( | ||||
|                             unfiledRecordFolderChildModel, | ||||
|                             UnfiledContainerChild.class, | ||||
|                             UnfiledContainerChildMixin.class | ||||
|                         ) | ||||
|                     ); | ||||
|         } catch (IOException e) { | ||||
|             throw new RuntimeException("Failed to convert model to JSON.", e); | ||||
|         } | ||||
|         // add request fields | ||||
|         Iterator<String> fieldNames = root.fieldNames(); | ||||
|         while (fieldNames.hasNext()) | ||||
|         { | ||||
|         while (fieldNames.hasNext()) { | ||||
|             String fieldName = fieldNames.next(); | ||||
|             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); | ||||
|             builder.addMultiPart( | ||||
|                 fieldName, | ||||
|                 root.get(fieldName).asText(), | ||||
|                 ContentType.JSON.name() | ||||
|             ); | ||||
|         } | ||||
|         builder.addMultiPart("filedata", unfiledRecordFolderChildContent, ContentType.BINARY.name()); | ||||
|         builder.addMultiPart( | ||||
|             "filedata", | ||||
|             unfiledRecordFolderChildContent, | ||||
|             ContentType.BINARY.name() | ||||
|         ); | ||||
|  | ||||
|         // create node with given content | ||||
|         return createUnfiledRecordFolderChild(unfiledRecordFolderChildModel, unfiledRecordFolderId); | ||||
|         return createUnfiledRecordFolderChild( | ||||
|             unfiledRecordFolderChildModel, | ||||
|             unfiledRecordFolderId | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * see {@link #updateUnfiledRecordFolder(UnfiledRecordFolder, String, String) | ||||
|      */ | ||||
|     public UnfiledRecordFolder updateUnfiledRecordFolder(UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId) | ||||
|     { | ||||
|     public UnfiledRecordFolder updateUnfiledRecordFolder( | ||||
|         UnfiledRecordFolder unfiledRecordFolderModel, | ||||
|         String unfiledRecordFolderId | ||||
|     ) { | ||||
|         mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel); | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return updateUnfiledRecordFolder(unfiledRecordFolderModel, unfiledRecordFolderId, EMPTY); | ||||
|         return updateUnfiledRecordFolder( | ||||
|             unfiledRecordFolderModel, | ||||
|             unfiledRecordFolderId, | ||||
|             EMPTY | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -259,18 +318,25 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      *  <li>model integrity exception, including file name with invalid characters</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public UnfiledRecordFolder updateUnfiledRecordFolder(UnfiledRecordFolder unfiledRecordFolderModel, String unfiledRecordFolderId, String parameters) | ||||
|     { | ||||
|     public UnfiledRecordFolder updateUnfiledRecordFolder( | ||||
|         UnfiledRecordFolder unfiledRecordFolderModel, | ||||
|         String unfiledRecordFolderId, | ||||
|         String parameters | ||||
|     ) { | ||||
|         mandatoryObject("unfiledRecordFolderModel", unfiledRecordFolderModel); | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         return getRmRestWrapper().processModel(UnfiledRecordFolder.class, requestWithBody( | ||||
|                 PUT, | ||||
|                 toJson(unfiledRecordFolderModel), | ||||
|                 "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", | ||||
|                 unfiledRecordFolderId, | ||||
|                 parameters | ||||
|         )); | ||||
|         return getRmRestWrapper() | ||||
|             .processModel( | ||||
|                 UnfiledRecordFolder.class, | ||||
|                 requestWithBody( | ||||
|                     PUT, | ||||
|                     toJson(unfiledRecordFolderModel), | ||||
|                     "unfiled-record-folders/{unfiledRecordFolderId}?{parameters}", | ||||
|                     unfiledRecordFolderId, | ||||
|                     parameters | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -286,15 +352,16 @@ public class UnfiledRecordFolderAPI extends RMModelRequest | ||||
|      *  <li>{@code unfiledRecordFolderId} is locked and cannot be deleted</li> | ||||
|      * </ul> | ||||
|      */ | ||||
|     public void deleteUnfiledRecordFolder(String unfiledRecordFolderId) | ||||
|     { | ||||
|     public void deleteUnfiledRecordFolder(String unfiledRecordFolderId) { | ||||
|         mandatoryString("unfiledRecordFolderId", unfiledRecordFolderId); | ||||
|  | ||||
|         getRmRestWrapper().processEmptyModel(simpleRequest( | ||||
|                 DELETE, | ||||
|                 "unfiled-record-folders/{recordFolderId}", | ||||
|                 unfiledRecordFolderId | ||||
|         )); | ||||
|         getRmRestWrapper() | ||||
|             .processEmptyModel( | ||||
|                 simpleRequest( | ||||
|                     DELETE, | ||||
|                     "unfiled-record-folders/{recordFolderId}", | ||||
|                     unfiledRecordFolderId | ||||
|                 ) | ||||
|             ); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -35,24 +35,24 @@ import java.util.UUID; | ||||
|  * @author Tom Page | ||||
|  * @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 | ||||
|      */ | ||||
|     public static final String USER_FULLNAME_PATTERN = "FN-%1$s LN-%1$s"; | ||||
|  | ||||
|     /** Private constructor to prevent instantiation. */ | ||||
|     private CommonTestUtils() | ||||
|     { | ||||
|     } | ||||
|     private CommonTestUtils() {} | ||||
|  | ||||
|     /** | ||||
|      * Generate a prefix to namespace the objects in a test class. Note that four random hex digits should be good enough to avoid | ||||
|      * collisions when running locally and should also be short enough to maintain readability. | ||||
|      */ | ||||
|     public static String generateTestPrefix(Class<?> clazz) | ||||
|     { | ||||
|         return clazz.getSimpleName().substring(0, 7) + UUID.randomUUID().toString().substring(0, 4).toUpperCase(); | ||||
|     public static String generateTestPrefix(Class<?> clazz) { | ||||
|         return ( | ||||
|             clazz.getSimpleName().substring(0, 7) + | ||||
|             UUID.randomUUID().toString().substring(0, 4).toUpperCase() | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -29,11 +29,6 @@ package org.alfresco.rest.rm.community.util; | ||||
|  | ||||
| import static org.testng.Assert.assertTrue; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import com.github.dockerjava.api.DockerClient; | ||||
| import com.github.dockerjava.api.command.LogContainerCmd; | ||||
| import com.github.dockerjava.api.model.Container; | ||||
| @@ -41,7 +36,10 @@ import com.github.dockerjava.api.model.Frame; | ||||
| import com.github.dockerjava.core.DockerClientBuilder; | ||||
| import com.github.dockerjava.core.command.LogContainerResultCallback; | ||||
| import com.github.dockerjava.netty.NettyDockerCmdExecFactory; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.stream.Collectors; | ||||
| import lombok.Getter; | ||||
| import lombok.Setter; | ||||
| import org.alfresco.utility.Utility; | ||||
| @@ -59,30 +57,31 @@ import org.springframework.stereotype.Service; | ||||
|  * @since 3.1 | ||||
|  */ | ||||
| @Service | ||||
| public class DockerHelper | ||||
| { | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(DockerHelper.class); | ||||
| public class DockerHelper { | ||||
|  | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger( | ||||
|         DockerHelper.class | ||||
|     ); | ||||
|     private static final String REPO_IMAGE_NAME = "repository"; | ||||
|  | ||||
|     @Getter | ||||
|     @Setter | ||||
|     private DockerClient dockerClient; | ||||
|  | ||||
|     @Autowired | ||||
|     public DockerHelper(@Value ("${docker.host}") String dockerHost) | ||||
|     { | ||||
|         if (SystemUtils.IS_OS_WINDOWS) | ||||
|         { | ||||
|             this.dockerClient = DockerClientBuilder | ||||
|                 .getInstance(dockerHost) | ||||
|                 .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||
|                 .build(); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             this.dockerClient = DockerClientBuilder | ||||
|                 .getInstance() | ||||
|                 .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||
|                 .build(); | ||||
|     public DockerHelper(@Value("${docker.host}") String dockerHost) { | ||||
|         if (SystemUtils.IS_OS_WINDOWS) { | ||||
|             this.dockerClient = | ||||
|                 DockerClientBuilder | ||||
|                     .getInstance(dockerHost) | ||||
|                     .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||
|                     .build(); | ||||
|         } else { | ||||
|             this.dockerClient = | ||||
|                 DockerClientBuilder | ||||
|                     .getInstance() | ||||
|                     .withDockerCmdExecFactory(new NettyDockerCmdExecFactory()) | ||||
|                     .build(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -93,31 +92,34 @@ public class DockerHelper | ||||
|      * @param timeStamp - get the logs since a specific timestamp | ||||
|      * @return list of strings, where every string is log line | ||||
|      */ | ||||
|     private List<String> getDockerLogs(String containerId, int timeStamp) | ||||
|     { | ||||
|     private List<String> getDockerLogs(String containerId, int timeStamp) { | ||||
|         final List<String> logs = new ArrayList<>(); | ||||
|  | ||||
|         final LogContainerCmd logContainerCmd = getDockerClient().logContainerCmd(containerId); | ||||
|         logContainerCmd.withStdOut(true) | ||||
|                        .withStdErr(true) | ||||
|                        .withSince(timeStamp) // UNIX timestamp to filter logs. Output log-entries since that timestamp. | ||||
|                        .withTimestamps(true); //print timestamps for every log line | ||||
|         final LogContainerCmd logContainerCmd = getDockerClient() | ||||
|             .logContainerCmd(containerId); | ||||
|         logContainerCmd | ||||
|             .withStdOut(true) | ||||
|             .withStdErr(true) | ||||
|             .withSince(timeStamp) // UNIX timestamp to filter logs. Output log-entries since that timestamp. | ||||
|             .withTimestamps(true); //print timestamps for every log line | ||||
|  | ||||
|         try | ||||
|         { | ||||
|             logContainerCmd.exec(new LogContainerResultCallback() | ||||
|             { | ||||
|                 @Override | ||||
|                 public void onNext(Frame item) | ||||
|                 { | ||||
|                     logs.add(item.toString()); | ||||
|                 } | ||||
|             }).awaitCompletion(); | ||||
|         } | ||||
|         catch (InterruptedException e) | ||||
|         { | ||||
|             Thread.currentThread().interrupt();  // set interrupt flag | ||||
|             LOGGER.error("Failed to retrieve logs of container " + containerId, e); | ||||
|         try { | ||||
|             logContainerCmd | ||||
|                 .exec( | ||||
|                     new LogContainerResultCallback() { | ||||
|                         @Override | ||||
|                         public void onNext(Frame item) { | ||||
|                             logs.add(item.toString()); | ||||
|                         } | ||||
|                     } | ||||
|                 ) | ||||
|                 .awaitCompletion(); | ||||
|         } catch (InterruptedException e) { | ||||
|             Thread.currentThread().interrupt(); // set interrupt flag | ||||
|             LOGGER.error( | ||||
|                 "Failed to retrieve logs of container " + containerId, | ||||
|                 e | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         return logs; | ||||
| @@ -128,19 +130,22 @@ public class DockerHelper | ||||
|      * | ||||
|      * @return list of strings, where every string is log line | ||||
|      */ | ||||
|     public List<String> getAlfrescoLogs() | ||||
|     { | ||||
|         final List<Container> alfrescoContainers = findContainersByImageName(REPO_IMAGE_NAME); | ||||
|         if (alfrescoContainers.isEmpty()) | ||||
|         { | ||||
|     public List<String> getAlfrescoLogs() { | ||||
|         final List<Container> alfrescoContainers = findContainersByImageName( | ||||
|             REPO_IMAGE_NAME | ||||
|         ); | ||||
|         if (alfrescoContainers.isEmpty()) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|         } else { | ||||
|             List<String> alfrescoLogs = new ArrayList<>(); | ||||
|             // get the logs since current time - 10 seconds | ||||
|             final int timeStamp = (int) (System.currentTimeMillis() / 1000) - 10; | ||||
|             alfrescoContainers.forEach(alfrescoContainer -> alfrescoLogs.addAll(getDockerLogs(alfrescoContainer.getId(), timeStamp))); | ||||
|             final int timeStamp = (int) (System.currentTimeMillis() / 1000) - | ||||
|             10; | ||||
|             alfrescoContainers.forEach(alfrescoContainer -> | ||||
|                 alfrescoLogs.addAll( | ||||
|                     getDockerLogs(alfrescoContainer.getId(), timeStamp) | ||||
|                 ) | ||||
|             ); | ||||
|             return alfrescoLogs; | ||||
|         } | ||||
|     } | ||||
| @@ -151,14 +156,22 @@ public class DockerHelper | ||||
|      * @param expectedException the expected exception to be thrown | ||||
|      * @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 | ||||
|         Utility.sleep(6000, 30000, () -> | ||||
|         { | ||||
|             List<String> alfrescoLogs = getAlfrescoLogs(); | ||||
|             assertTrue(alfrescoLogs.stream().anyMatch(logLine -> logLine.contains(expectedException))); | ||||
|         }); | ||||
|         Utility.sleep( | ||||
|             6000, | ||||
|             30000, | ||||
|             () -> { | ||||
|                 List<String> alfrescoLogs = getAlfrescoLogs(); | ||||
|                 assertTrue( | ||||
|                     alfrescoLogs | ||||
|                         .stream() | ||||
|                         .anyMatch(logLine -> logLine.contains(expectedException) | ||||
|                         ) | ||||
|                 ); | ||||
|             } | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -167,12 +180,15 @@ public class DockerHelper | ||||
|      * @param imageName - the name of the image used by container | ||||
|      * @return the containers | ||||
|      */ | ||||
|     private List<Container> findContainersByImageName(String imageName) | ||||
|     { | ||||
|         final List<Container> containers = getDockerClient().listContainersCmd().withShowAll(true).exec(); | ||||
|     private List<Container> findContainersByImageName(String imageName) { | ||||
|         final List<Container> containers = getDockerClient() | ||||
|             .listContainersCmd() | ||||
|             .withShowAll(true) | ||||
|             .exec(); | ||||
|  | ||||
|         return containers.stream() | ||||
|                          .filter(container -> container.getImage().contains(imageName)) | ||||
|                          .collect(Collectors.toList()); | ||||
|         return containers | ||||
|             .stream() | ||||
|             .filter(container -> container.getImage().contains(imageName)) | ||||
|             .collect(Collectors.toList()); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.rm.community.util; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonUnwrapped; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.record.RecordProperties; | ||||
|  | ||||
| /** | ||||
| @@ -38,8 +37,8 @@ import org.alfresco.rest.rm.community.model.record.RecordProperties; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public abstract class FilePlanComponentMixIn | ||||
| { | ||||
| public abstract class FilePlanComponentMixIn { | ||||
|  | ||||
|     /** | ||||
|      * Annotation used to indicate that a property should be serialized "unwrapped" | ||||
|      * Its properties are instead included as properties of its containing Object | ||||
|   | ||||
| @@ -34,10 +34,9 @@ import static org.apache.commons.lang3.StringUtils.isBlank; | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class ParameterCheck | ||||
| { | ||||
|     private ParameterCheck() | ||||
|     { | ||||
| public class ParameterCheck { | ||||
|  | ||||
|     private ParameterCheck() { | ||||
|         // Intentionally blank | ||||
|     } | ||||
|  | ||||
| @@ -48,11 +47,14 @@ public class ParameterCheck | ||||
|      * @param paramValue The value of the parameter to check | ||||
|      * @throws IllegalArgumentException Throws an exception if the given value is blank | ||||
|      */ | ||||
|     public static void mandatoryString(final String paramName, final String paramValue) throws IllegalArgumentException | ||||
|     { | ||||
|         if (isBlank(paramValue)) | ||||
|         { | ||||
|             throw new IllegalArgumentException("'" + paramName  + "' is a mandatory parameter."); | ||||
|     public static void mandatoryString( | ||||
|         final String paramName, | ||||
|         final String paramValue | ||||
|     ) throws IllegalArgumentException { | ||||
|         if (isBlank(paramValue)) { | ||||
|             throw new IllegalArgumentException( | ||||
|                 "'" + paramName + "' is a mandatory parameter." | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -63,11 +65,14 @@ public class ParameterCheck | ||||
|      * @param object The value of the parameter to check | ||||
|      * @throws IllegalArgumentException Throws an exception if the given value is null | ||||
|      */ | ||||
|     public static void mandatoryObject(final String paramName, final Object object) throws IllegalArgumentException | ||||
|     { | ||||
|         if (object == null) | ||||
|         { | ||||
|             throw new IllegalArgumentException("'" + paramName  + "' is a mandatory parameter."); | ||||
|     public static void mandatoryObject( | ||||
|         final String paramName, | ||||
|         final Object object | ||||
|     ) throws IllegalArgumentException { | ||||
|         if (object == null) { | ||||
|             throw new IllegalArgumentException( | ||||
|                 "'" + paramName + "' is a mandatory parameter." | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -28,14 +28,12 @@ package org.alfresco.rest.rm.community.util; | ||||
|  | ||||
| import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryObject; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonInclude.Include; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import com.fasterxml.jackson.databind.type.CollectionType; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.util.List; | ||||
| import org.json.JSONArray; | ||||
| import org.json.JSONObject; | ||||
| import org.slf4j.Logger; | ||||
| @@ -47,22 +45,22 @@ import org.slf4j.LoggerFactory; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class PojoUtility | ||||
| { | ||||
| public class PojoUtility { | ||||
|  | ||||
|     /** | ||||
|      * 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 PojoUtility() | ||||
|     {} | ||||
|     private PojoUtility() {} | ||||
|  | ||||
|     /** | ||||
|      * see {@link #toJson(Object, Class, Class)} | ||||
|      */ | ||||
|     public static String toJson(Object model) | ||||
|     { | ||||
|     public static String toJson(Object model) { | ||||
|         mandatoryObject("model", model); | ||||
|  | ||||
|         return toJson(model, null, null); | ||||
| @@ -77,14 +75,16 @@ public class PojoUtility | ||||
|      * @return The converted java object as JSON string | ||||
|      * @throws JsonProcessingException  Throws exceptions if the given object doesn't match to the POJO class model | ||||
|      */ | ||||
|     public static String toJson(Object model, Class<?> target, Class<?> mixinSource) | ||||
|     { | ||||
|     public static String toJson( | ||||
|         Object model, | ||||
|         Class<?> target, | ||||
|         Class<?> mixinSource | ||||
|     ) { | ||||
|         mandatoryObject("model", model); | ||||
|  | ||||
|         ObjectMapper mapper = new ObjectMapper(); | ||||
|  | ||||
|         if (target != null && mixinSource != null) | ||||
|         { | ||||
|         if (target != null && mixinSource != null) { | ||||
|             //inject the "mix-in" annotations  from FilePlanComponentMix to | ||||
|             // FilePlanComponent POJO class when converting to json | ||||
|             mapper.addMixIn(target, mixinSource); | ||||
| @@ -94,12 +94,11 @@ public class PojoUtility | ||||
|         mapper.setSerializationInclusion(Include.NON_NULL); | ||||
|  | ||||
|         //return the json object | ||||
|         try | ||||
|         { | ||||
|             return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model); | ||||
|         } | ||||
|         catch (JsonProcessingException error) | ||||
|         { | ||||
|         try { | ||||
|             return mapper | ||||
|                 .writerWithDefaultPrettyPrinter() | ||||
|                 .writeValueAsString(model); | ||||
|         } catch (JsonProcessingException error) { | ||||
|             return error.toString(); | ||||
|         } | ||||
|     } | ||||
| @@ -112,20 +111,16 @@ public class PojoUtility | ||||
|      * @return The converted java object | ||||
|      * @throws JsonProcessingException Throws exceptions if the given object doesn't match to the POJO class model | ||||
|      */ | ||||
|     public static <T> T jsonToObject(JSONObject json, Class<T> classz) | ||||
|     { | ||||
|     public static <T> T jsonToObject(JSONObject json, Class<T> classz) { | ||||
|         mandatoryObject("model", classz); | ||||
|         mandatoryObject("jsonObject", json); | ||||
|  | ||||
|         ObjectMapper mapper = new ObjectMapper(); | ||||
|  | ||||
|         T obj = null; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             obj = mapper.readValue(json.toString(), classz); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|         } catch (IOException e) { | ||||
|             LOGGER.error("Unable to convert the json into a java object.", e); | ||||
|         } | ||||
|  | ||||
| @@ -140,27 +135,25 @@ public class PojoUtility | ||||
|      * @return The list of converted java objects | ||||
|      * @throws JsonProcessingException Throws exceptions if the given object doesn't match to the POJO class model | ||||
|      */ | ||||
|     public static <T> List<T> jsonToObject(JSONArray json, Class<T> classz) | ||||
|     { | ||||
|  | ||||
|     public static <T> List<T> jsonToObject(JSONArray json, Class<T> classz) { | ||||
|         mandatoryObject("model", classz); | ||||
|         mandatoryObject("jsonObject", json); | ||||
|  | ||||
|         ObjectMapper mapper = new ObjectMapper(); | ||||
|  | ||||
|         CollectionType collectionType = mapper.getTypeFactory().constructCollectionType(List.class, classz); | ||||
|         CollectionType collectionType = mapper | ||||
|             .getTypeFactory() | ||||
|             .constructCollectionType(List.class, classz); | ||||
|         List<T> asList = null; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             asList = mapper.readValue(json.toString(), collectionType); | ||||
|         } catch (IOException e) { | ||||
|             LOGGER.error( | ||||
|                 "Unable to convert the json array into a java collection.", | ||||
|                 e | ||||
|             ); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|             LOGGER.error("Unable to convert the json array into a java collection.", e); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         return asList; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -26,13 +26,11 @@ | ||||
|  */ | ||||
| package org.alfresco.rest.rm.community.util; | ||||
|  | ||||
| import java.io.IOException; | ||||
|  | ||||
| import com.fasterxml.jackson.core.JsonGenerator; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.JsonSerializer; | ||||
| import com.fasterxml.jackson.databind.SerializerProvider; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
|  | ||||
| /** | ||||
| @@ -41,8 +39,8 @@ import org.alfresco.rest.rm.community.model.common.ReviewPeriod; | ||||
|  * @author Rodica Sutu | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public class ReviewPeriodSerializer extends JsonSerializer<ReviewPeriod> | ||||
| { | ||||
| public class ReviewPeriodSerializer extends JsonSerializer<ReviewPeriod> { | ||||
|  | ||||
|     /** | ||||
|      * @param value The Review Period value that is being serialized. | ||||
|      * @param gen Jackson utility is responsible for writing JSON | ||||
| @@ -51,9 +49,18 @@ public class ReviewPeriodSerializer extends JsonSerializer<ReviewPeriod> | ||||
|      * @throws JsonProcessingException | ||||
|      */ | ||||
|     @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 | ||||
|        gen.writeString(new StringBuilder().append(value.getPeriodType()).append("|").append(value.getExpression()).toString()); | ||||
|         gen.writeString( | ||||
|             new StringBuilder() | ||||
|                 .append(value.getPeriodType()) | ||||
|                 .append("|") | ||||
|                 .append(value.getExpression()) | ||||
|                 .toString() | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ | ||||
| package org.alfresco.rest.rm.community.util; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonUnwrapped; | ||||
|  | ||||
| import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildProperties; | ||||
|  | ||||
| /** | ||||
| @@ -38,8 +37,8 @@ import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChi | ||||
|  * @author Tuna Aksoy | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| public abstract class UnfiledContainerChildMixin | ||||
| { | ||||
| public abstract class UnfiledContainerChildMixin { | ||||
|  | ||||
|     /** | ||||
|      * Annotation used to indicate that a property should be serialized "unwrapped" | ||||
|      * Its properties are instead included as properties of its containing Object | ||||
|   | ||||
| @@ -28,7 +28,6 @@ package org.alfresco.rest.v0; | ||||
|  | ||||
| import java.text.MessageFormat; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| import org.apache.http.HttpResponse; | ||||
| import org.json.JSONArray; | ||||
| @@ -44,12 +43,15 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| @Component | ||||
| public class CopyToAPI extends BaseAPI | ||||
| { | ||||
| public class CopyToAPI extends BaseAPI { | ||||
|  | ||||
|     /** Logger for the class. */ | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(CopyToAPI.class); | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger( | ||||
|         CopyToAPI.class | ||||
|     ); | ||||
|     /** The URI for the copy-to API. */ | ||||
|     private static final String COPY_TO_API = "{0}doclib/action/copy-to/node/{1}"; | ||||
|     private static final String COPY_TO_API = | ||||
|         "{0}doclib/action/copy-to/node/{1}"; | ||||
|  | ||||
|     /** | ||||
|      * Copy a list of nodes to the target container. | ||||
| @@ -63,8 +65,12 @@ public class CopyToAPI extends BaseAPI | ||||
|      * @return The HTTP Response. | ||||
|      * @throws AssertionError If the API call didn't return a 200 response. | ||||
|      */ | ||||
|     public HttpResponse copyTo(String user, String password, String targetContainerPath, List<String> nodeRefs) | ||||
|     { | ||||
|     public HttpResponse copyTo( | ||||
|         String user, | ||||
|         String password, | ||||
|         String targetContainerPath, | ||||
|         List<String> nodeRefs | ||||
|     ) { | ||||
|         return copyTo(user, password, 200, targetContainerPath, nodeRefs); | ||||
|     } | ||||
|  | ||||
| @@ -81,12 +87,22 @@ public class CopyToAPI extends BaseAPI | ||||
|      * @return The HTTP Response. | ||||
|      * @throws AssertionError If the API didn't return the expected status code. | ||||
|      */ | ||||
|     public HttpResponse copyTo(String user, String password, int expectedStatusCode, String targetContainerPath, List<String> nodeRefs) | ||||
|     { | ||||
|     public HttpResponse copyTo( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatusCode, | ||||
|         String targetContainerPath, | ||||
|         List<String> nodeRefs | ||||
|     ) { | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); | ||||
|  | ||||
|         return doSlingshotPostJsonRequest(user, password, expectedStatusCode, requestParams, | ||||
|                     MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath)); | ||||
|         return doSlingshotPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatusCode, | ||||
|             requestParams, | ||||
|             MessageFormat.format(COPY_TO_API, "{0}", targetContainerPath) | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ package org.alfresco.rest.v0; | ||||
| import static org.testng.AssertJUnit.assertTrue; | ||||
|  | ||||
| import java.text.MessageFormat; | ||||
|  | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| import org.alfresco.rest.rm.community.model.custom.CustomDefinitions; | ||||
| import org.json.JSONArray; | ||||
| @@ -46,22 +45,26 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 2.6 | ||||
|  */ | ||||
| @Component | ||||
| public class CustomDefinitionsAPI extends BaseAPI | ||||
| { | ||||
| public class CustomDefinitionsAPI extends BaseAPI { | ||||
|  | ||||
|     /** | ||||
|      * custom references endpoint | ||||
|      */ | ||||
|     private static final String CUSTOM_REFERENCE_API_ENDPOINT = "{0}rma/admin/customreferencedefinitions"; | ||||
|     private static final String CUSTOM_REFERENCE_API_ENDPOINT = | ||||
|         "{0}rma/admin/customreferencedefinitions"; | ||||
|  | ||||
|     /** | ||||
|      * 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 | ||||
|      */ | ||||
|     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 | ||||
| @@ -73,39 +76,43 @@ public class CustomDefinitionsAPI extends BaseAPI | ||||
|      *          <code> null </code> otherwise | ||||
|      * | ||||
|      */ | ||||
|     public String getCustomReferenceId(String adminUser, String adminPassword, String customDefinition) | ||||
|     { | ||||
|  | ||||
|         JSONObject getResponse = doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT); | ||||
|         if (getResponse != null) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 JSONArray customDefinitions = getResponse.getJSONObject("data").getJSONArray("customReferences"); | ||||
|                 for (int i = 0; i < customDefinitions.length(); i++) | ||||
|                 { | ||||
|     public String getCustomReferenceId( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String customDefinition | ||||
|     ) { | ||||
|         JSONObject getResponse = doGetRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             CUSTOM_REFERENCE_API_ENDPOINT | ||||
|         ); | ||||
|         if (getResponse != null) { | ||||
|             try { | ||||
|                 JSONArray customDefinitions = getResponse | ||||
|                     .getJSONObject("data") | ||||
|                     .getJSONArray("customReferences"); | ||||
|                 for (int i = 0; i < customDefinitions.length(); i++) { | ||||
|                     JSONObject item = customDefinitions.getJSONObject(i); | ||||
|                     boolean hasSource = customDefinition.equalsIgnoreCase( | ||||
|                             item.has("source") ? item.getString("source") : null | ||||
|                                                                          ); | ||||
|                         item.has("source") ? item.getString("source") : null | ||||
|                     ); | ||||
|  | ||||
|                     boolean hasTarget = customDefinition.equalsIgnoreCase( | ||||
|                             item.has("target") ? item.getString("target") : null | ||||
|                                                                          ); | ||||
|                         item.has("target") ? item.getString("target") : null | ||||
|                     ); | ||||
|  | ||||
|                     boolean hasLabel = customDefinition.equalsIgnoreCase( | ||||
|                             item.has("label") ? item.getString("label") : null | ||||
|                                                                         ); | ||||
|                     if ( hasSource || hasTarget || hasLabel) | ||||
|                     { | ||||
|                         item.has("label") ? item.getString("label") : null | ||||
|                     ); | ||||
|                     if (hasSource || hasTarget || hasLabel) { | ||||
|                         return item.getString("refId"); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|             catch (JSONException error) | ||||
|             { | ||||
|                 LOGGER.error("Unable to get the refId for the custom reference definition {}", customDefinition); | ||||
|             } catch (JSONException error) { | ||||
|                 LOGGER.error( | ||||
|                     "Unable to get the refId for the custom reference definition {}", | ||||
|                     customDefinition | ||||
|                 ); | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
| @@ -122,23 +129,48 @@ public class CustomDefinitionsAPI extends BaseAPI | ||||
|      * @throws AssertionError if the creation fails. | ||||
|      */ | ||||
|     public void createRelationship( | ||||
|             String adminUser, | ||||
|             String adminPassword, | ||||
|             String recordNodeIdFrom, | ||||
|             String recordNodeIdTo, | ||||
|             CustomDefinitions relationshipType) | ||||
|     { | ||||
|        //create the request body | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String recordNodeIdFrom, | ||||
|         String recordNodeIdTo, | ||||
|         CustomDefinitions relationshipType | ||||
|     ) { | ||||
|         //create the request body | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo); | ||||
|         requestParams.put("refId", getCustomReferenceId(adminUser, adminPassword, relationshipType | ||||
|                 .getDefinition())); | ||||
|         requestParams.put( | ||||
|             "toNode", | ||||
|             NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo | ||||
|         ); | ||||
|         requestParams.put( | ||||
|             "refId", | ||||
|             getCustomReferenceId( | ||||
|                 adminUser, | ||||
|                 adminPassword, | ||||
|                 relationshipType.getDefinition() | ||||
|             ) | ||||
|         ); | ||||
|         //send the API request to create the relationship | ||||
|         JSONObject setRelationshipStatus = doPostRequest(adminUser, adminPassword, requestParams, | ||||
|                 MessageFormat.format(CREATE_RELATIONSHIP_API_ENDPOINT, "{0}", NODE_PREFIX + recordNodeIdFrom)); | ||||
|         JSONObject setRelationshipStatus = doPostRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             requestParams, | ||||
|             MessageFormat.format( | ||||
|                 CREATE_RELATIONSHIP_API_ENDPOINT, | ||||
|                 "{0}", | ||||
|                 NODE_PREFIX + recordNodeIdFrom | ||||
|             ) | ||||
|         ); | ||||
|         //check the response | ||||
|         boolean success = (setRelationshipStatus != null) && setRelationshipStatus.getBoolean("success"); | ||||
|         assertTrue("Creating relationship from " + recordNodeIdFrom + " to " + recordNodeIdTo + " failed.", success); | ||||
|         boolean success = | ||||
|             (setRelationshipStatus != null) && | ||||
|             setRelationshipStatus.getBoolean("success"); | ||||
|         assertTrue( | ||||
|             "Creating relationship from " + | ||||
|             recordNodeIdFrom + | ||||
|             " to " + | ||||
|             recordNodeIdTo + | ||||
|             " failed.", | ||||
|             success | ||||
|         ); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ 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.apache.http.HttpResponse; | ||||
| import org.json.JSONArray; | ||||
| @@ -44,8 +43,8 @@ import org.springframework.stereotype.Component; | ||||
|  */ | ||||
|  | ||||
| @Component | ||||
| public class ExportAPI extends BaseAPI | ||||
| { | ||||
| public class ExportAPI extends BaseAPI { | ||||
|  | ||||
|     /** | ||||
|      * The URI to export an item | ||||
|      */ | ||||
| @@ -60,9 +59,18 @@ public class ExportAPI extends BaseAPI | ||||
|      * @param nodeID             ID of the Node(Record/RecordFolder) to be exported | ||||
|      * @return HTTP Response | ||||
|      */ | ||||
|     public HttpResponse exportRMNode(String user, String password, int expectedStatusCode, String nodeID) | ||||
|     { | ||||
|         return export(user, password, expectedStatusCode, Collections.singletonList(getNodeRefSpacesStore() + nodeID)); | ||||
|     public HttpResponse exportRMNode( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatusCode, | ||||
|         String nodeID | ||||
|     ) { | ||||
|         return export( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatusCode, | ||||
|             Collections.singletonList(getNodeRefSpacesStore() + nodeID) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -74,11 +82,16 @@ public class ExportAPI extends BaseAPI | ||||
|      * @param nodeIDList         List of the nodes to be exported | ||||
|      * @return HTTP Response | ||||
|      */ | ||||
|     public HttpResponse exportRMNodes(String user, String password, int expectedStatusCode, List<String> nodeIDList) | ||||
|     { | ||||
|  | ||||
|         List<String> nodeRefs = | ||||
|                 nodeIDList.stream().map(nodeID -> getNodeRefSpacesStore() + nodeID).collect(Collectors.toList()); | ||||
|     public HttpResponse exportRMNodes( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatusCode, | ||||
|         List<String> nodeIDList | ||||
|     ) { | ||||
|         List<String> nodeRefs = nodeIDList | ||||
|             .stream() | ||||
|             .map(nodeID -> getNodeRefSpacesStore() + nodeID) | ||||
|             .collect(Collectors.toList()); | ||||
|  | ||||
|         return export(user, password, expectedStatusCode, nodeRefs); | ||||
|     } | ||||
| @@ -92,12 +105,22 @@ public class ExportAPI extends BaseAPI | ||||
|      * @param nodeRefs           list of the noderefs for the items to be exported | ||||
|      * @return Rest API Post Request | ||||
|      */ | ||||
|     public HttpResponse export(String user, String password, int expectedStatusCode, List<String> nodeRefs) | ||||
|     { | ||||
|     public HttpResponse export( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatusCode, | ||||
|         List<String> nodeRefs | ||||
|     ) { | ||||
|         final JSONObject requestParams = new JSONObject(); | ||||
|  | ||||
|         requestParams.put("nodeRefs", new JSONArray(nodeRefs)); | ||||
|  | ||||
|         return doPostJsonRequest(user, password, expectedStatusCode, requestParams, EXPORT_API); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatusCode, | ||||
|             requestParams, | ||||
|             EXPORT_API | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -33,7 +33,6 @@ import java.text.MessageFormat; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import org.alfresco.rest.core.v0.APIUtils; | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| import org.alfresco.rest.rm.community.model.hold.HoldEntry; | ||||
| @@ -53,13 +52,14 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 3.2 | ||||
|  */ | ||||
| @Component | ||||
| public class HoldsAPI extends BaseAPI | ||||
| { | ||||
| public class HoldsAPI extends BaseAPI { | ||||
|  | ||||
|     public static final String HOLDS_CONTAINER = "Holds"; | ||||
|     /** | ||||
|      * The URI to create a hold | ||||
|      */ | ||||
|     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 | ||||
| @@ -81,8 +81,13 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param description hold description | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse createHold(String user, String password, String holdName, String reason, String description) | ||||
|     { | ||||
|     public HttpResponse createHold( | ||||
|         String user, | ||||
|         String password, | ||||
|         String holdName, | ||||
|         String reason, | ||||
|         String description | ||||
|     ) { | ||||
|         return createHold(user, password, holdName, reason, description, SC_OK); | ||||
|     } | ||||
|  | ||||
| @@ -97,19 +102,37 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param expectedStatusCode The expected return status code. | ||||
|      * @return The HTTP response or throws AssertionError if the returned status code is not as expected. | ||||
|      */ | ||||
|     public HttpResponse createHold(String user, String password, String holdName, String reason, String description, | ||||
|                                    int expectedStatusCode) | ||||
|     { | ||||
|     public HttpResponse createHold( | ||||
|         String user, | ||||
|         String password, | ||||
|         String holdName, | ||||
|         String reason, | ||||
|         String description, | ||||
|         int expectedStatusCode | ||||
|     ) { | ||||
|         // retrieve the Holds container nodeRef | ||||
|         final String parentNodeRef = getItemNodeRef(user, password, "/" + HOLDS_CONTAINER); | ||||
|         final String parentNodeRef = getItemNodeRef( | ||||
|             user, | ||||
|             password, | ||||
|             "/" + HOLDS_CONTAINER | ||||
|         ); | ||||
|  | ||||
|         final JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("alf_destination", getNodeRefSpacesStore() + parentNodeRef); | ||||
|         requestParams.put( | ||||
|             "alf_destination", | ||||
|             getNodeRefSpacesStore() + parentNodeRef | ||||
|         ); | ||||
|         requestParams.put("prop_cm_name", holdName); | ||||
|         requestParams.put("prop_cm_description", description); | ||||
|         requestParams.put("prop_rma_holdReason", reason); | ||||
|  | ||||
|         return doPostJsonRequest(user, password, expectedStatusCode, requestParams, CREATE_HOLDS_API); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatusCode, | ||||
|             requestParams, | ||||
|             CREATE_HOLDS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -122,22 +145,32 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param description hold description | ||||
|      * @return node ref of the hold created | ||||
|      */ | ||||
|     public String createHoldAndGetNodeRef(String user, String password, | ||||
|                                      String holdName, String reason, String description) | ||||
|     { | ||||
|         final HttpResponse httpResponse = createHold(user, password, holdName, reason, description); | ||||
|     public String createHoldAndGetNodeRef( | ||||
|         String user, | ||||
|         String password, | ||||
|         String holdName, | ||||
|         String reason, | ||||
|         String description | ||||
|     ) { | ||||
|         final HttpResponse httpResponse = createHold( | ||||
|             user, | ||||
|             password, | ||||
|             holdName, | ||||
|             reason, | ||||
|             description | ||||
|         ); | ||||
|  | ||||
|         try | ||||
|         { | ||||
|            return convertHTTPResponseToJSON(httpResponse).getString("persistedObject") | ||||
|                                 .replace(NODE_REF_WORKSPACE_SPACES_STORE, ""); | ||||
|         } | ||||
|         catch(JSONException error) | ||||
|         { | ||||
|             LOGGER.error("Converting message body to JSON failed. Body: {}", httpResponse, error); | ||||
|         } | ||||
|         catch(ParseException error) | ||||
|         { | ||||
|         try { | ||||
|             return convertHTTPResponseToJSON(httpResponse) | ||||
|                 .getString("persistedObject") | ||||
|                 .replace(NODE_REF_WORKSPACE_SPACES_STORE, ""); | ||||
|         } catch (JSONException error) { | ||||
|             LOGGER.error( | ||||
|                 "Converting message body to JSON failed. Body: {}", | ||||
|                 httpResponse, | ||||
|                 error | ||||
|             ); | ||||
|         } catch (ParseException error) { | ||||
|             LOGGER.error("Parsing message body failed.", error); | ||||
|         } | ||||
|  | ||||
| @@ -151,9 +184,13 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRef the hold node ref | ||||
|      * @return The HTTP Response or throws AssertionError if the request is not successful. | ||||
|      */ | ||||
|     public HttpResponse deleteHold(UserModel user, String holdNodeRef) | ||||
|     { | ||||
|         return deleteHold(user.getUsername(), user.getPassword(), holdNodeRef, SC_OK); | ||||
|     public HttpResponse deleteHold(UserModel user, String holdNodeRef) { | ||||
|         return deleteHold( | ||||
|             user.getUsername(), | ||||
|             user.getPassword(), | ||||
|             holdNodeRef, | ||||
|             SC_OK | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -164,13 +201,23 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRef the hold node ref | ||||
|      * @return The HTTP Response or throws AssertionError if the returned status code is not as expected. | ||||
|      */ | ||||
|     public HttpResponse deleteHold(String username, String password, String holdNodeRef, int expectedStatusCode) | ||||
|     { | ||||
|     public HttpResponse deleteHold( | ||||
|         String username, | ||||
|         String password, | ||||
|         String holdNodeRef, | ||||
|         int expectedStatusCode | ||||
|     ) { | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("name", "deleteHold"); | ||||
|         requestParams.put("nodeRef", getNodeRefSpacesStore() + holdNodeRef); | ||||
|  | ||||
|         return doPostJsonRequest(username, password, expectedStatusCode, requestParams, RM_ACTIONS_API); | ||||
|         return doPostJsonRequest( | ||||
|             username, | ||||
|             password, | ||||
|             expectedStatusCode, | ||||
|             requestParams, | ||||
|             RM_ACTIONS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -181,9 +228,12 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdName the hold name | ||||
|      * @throws AssertionError if the deletion was unsuccessful. | ||||
|      */ | ||||
|     public void deleteHold( String username, String password, String holdName) | ||||
|     { | ||||
|         deleteItem(username, password, String.format("/%s/%s", HOLDS_CONTAINER, holdName)); | ||||
|     public void deleteHold(String username, String password, String holdName) { | ||||
|         deleteItem( | ||||
|             username, | ||||
|             password, | ||||
|             String.format("/%s/%s", HOLDS_CONTAINER, holdName) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -195,9 +245,18 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdName    the hold name | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse addItemToHold(String user, String password, String itemNodeRef, String holdName) | ||||
|     { | ||||
|         return addItemsToHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName)); | ||||
|     public HttpResponse addItemToHold( | ||||
|         String user, | ||||
|         String password, | ||||
|         String itemNodeRef, | ||||
|         String holdName | ||||
|     ) { | ||||
|         return addItemsToHolds( | ||||
|             user, | ||||
|             password, | ||||
|             Collections.singletonList(itemNodeRef), | ||||
|             Collections.singletonList(holdName) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -209,12 +268,29 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNames    the list of holds | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse addItemsToHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames) | ||||
|     { | ||||
|         final List<String> holdNodeRefs = holdNames.stream() | ||||
|                                                    .map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold))) | ||||
|                                                    .collect(Collectors.toList()); | ||||
|         return addItemsToHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); | ||||
|     public HttpResponse addItemsToHolds( | ||||
|         String user, | ||||
|         String password, | ||||
|         List<String> itemNodeRefs, | ||||
|         List<String> holdNames | ||||
|     ) { | ||||
|         final List<String> holdNodeRefs = holdNames | ||||
|             .stream() | ||||
|             .map(hold -> | ||||
|                 getItemNodeRef( | ||||
|                     user, | ||||
|                     password, | ||||
|                     String.format("/%s/%s", HOLDS_CONTAINER, hold) | ||||
|                 ) | ||||
|             ) | ||||
|             .collect(Collectors.toList()); | ||||
|         return addItemsToHolds( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             itemNodeRefs, | ||||
|             holdNodeRefs | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -226,11 +302,24 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRefs the list of holds | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse addItemsToHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs, | ||||
|                                         List<String> holdNodeRefs) | ||||
|     { | ||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); | ||||
|         return doPostJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API); | ||||
|     public HttpResponse addItemsToHolds( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatus, | ||||
|         List<String> itemNodeRefs, | ||||
|         List<String> holdNodeRefs | ||||
|     ) { | ||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject( | ||||
|             itemNodeRefs, | ||||
|             holdNodeRefs | ||||
|         ); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatus, | ||||
|             requestParams, | ||||
|             RM_HOLDS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -242,11 +331,20 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRef the hold node ref | ||||
|      * @return The error message | ||||
|      */ | ||||
|     public String addToHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String | ||||
|             holdNodeRef) | ||||
|     { | ||||
|         final HttpResponse httpResponse = addItemsToHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef), | ||||
|                 Collections.singletonList(holdNodeRef)); | ||||
|     public String addToHoldAndGetMessage( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatus, | ||||
|         String itemNodeRef, | ||||
|         String holdNodeRef | ||||
|     ) { | ||||
|         final HttpResponse httpResponse = addItemsToHolds( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatus, | ||||
|             Collections.singletonList(itemNodeRef), | ||||
|             Collections.singletonList(holdNodeRef) | ||||
|         ); | ||||
|         return APIUtils.extractErrorMessageFromHttpResponse(httpResponse); | ||||
|     } | ||||
|  | ||||
| @@ -257,12 +355,18 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRefs list of hold node refs for add/remove items | ||||
|      * @return JSONObject fo | ||||
|      */ | ||||
|     private JSONObject addOrRemoveToFromHoldJsonObject(List<String> items, List<String> holdNodeRefs) | ||||
|     { | ||||
|     private JSONObject addOrRemoveToFromHoldJsonObject( | ||||
|         List<String> items, | ||||
|         List<String> holdNodeRefs | ||||
|     ) { | ||||
|         final JSONArray nodeRefs = new JSONArray(); | ||||
|         items.forEach(itemNodeRef -> nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef)); | ||||
|         items.forEach(itemNodeRef -> | ||||
|             nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef) | ||||
|         ); | ||||
|         final JSONArray holds = new JSONArray(); | ||||
|         holdNodeRefs.forEach(holdNodeRef -> holds.put(getNodeRefSpacesStore() + holdNodeRef)); | ||||
|         holdNodeRefs.forEach(holdNodeRef -> | ||||
|             holds.put(getNodeRefSpacesStore() + holdNodeRef) | ||||
|         ); | ||||
|         final JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("nodeRefs", nodeRefs); | ||||
|         requestParams.put("holds", holds); | ||||
| @@ -278,9 +382,18 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdName    the hold name | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse removeItemFromHold(String user, String password, String itemNodeRef, String holdName) | ||||
|     { | ||||
|         return removeItemsFromHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName)); | ||||
|     public HttpResponse removeItemFromHold( | ||||
|         String user, | ||||
|         String password, | ||||
|         String itemNodeRef, | ||||
|         String holdName | ||||
|     ) { | ||||
|         return removeItemsFromHolds( | ||||
|             user, | ||||
|             password, | ||||
|             Collections.singletonList(itemNodeRef), | ||||
|             Collections.singletonList(holdName) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -292,12 +405,29 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNames      the list of hold names | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse removeItemsFromHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames) | ||||
|     { | ||||
|         final List<String> holdNodeRefs = holdNames.stream() | ||||
|                                                    .map(hold -> getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold))) | ||||
|                                                    .collect(Collectors.toList()); | ||||
|         return removeItemsFromHolds(user, password, SC_OK, itemNodeRefs, holdNodeRefs); | ||||
|     public HttpResponse removeItemsFromHolds( | ||||
|         String user, | ||||
|         String password, | ||||
|         List<String> itemNodeRefs, | ||||
|         List<String> holdNames | ||||
|     ) { | ||||
|         final List<String> holdNodeRefs = holdNames | ||||
|             .stream() | ||||
|             .map(hold -> | ||||
|                 getItemNodeRef( | ||||
|                     user, | ||||
|                     password, | ||||
|                     String.format("/%s/%s", HOLDS_CONTAINER, hold) | ||||
|                 ) | ||||
|             ) | ||||
|             .collect(Collectors.toList()); | ||||
|         return removeItemsFromHolds( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             itemNodeRefs, | ||||
|             holdNodeRefs | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -310,11 +440,24 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRefs   the list of hold node refs | ||||
|      * @return The HTTP response | ||||
|      */ | ||||
|     public HttpResponse removeItemsFromHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs, | ||||
|                                              List<String> holdNodeRefs) | ||||
|     { | ||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(itemNodeRefs, holdNodeRefs); | ||||
|         return doPutJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API); | ||||
|     public HttpResponse removeItemsFromHolds( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatus, | ||||
|         List<String> itemNodeRefs, | ||||
|         List<String> holdNodeRefs | ||||
|     ) { | ||||
|         final JSONObject requestParams = addOrRemoveToFromHoldJsonObject( | ||||
|             itemNodeRefs, | ||||
|             holdNodeRefs | ||||
|         ); | ||||
|         return doPutJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatus, | ||||
|             requestParams, | ||||
|             RM_HOLDS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -326,11 +469,20 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param holdNodeRef the hold node ref | ||||
|      * @return The error message | ||||
|      */ | ||||
|     public String removeFromHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String | ||||
|             holdNodeRef) | ||||
|     { | ||||
|         final HttpResponse httpResponse = removeItemsFromHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef), | ||||
|                 Collections.singletonList(holdNodeRef)); | ||||
|     public String removeFromHoldAndGetMessage( | ||||
|         String user, | ||||
|         String password, | ||||
|         int expectedStatus, | ||||
|         String itemNodeRef, | ||||
|         String holdNodeRef | ||||
|     ) { | ||||
|         final HttpResponse httpResponse = removeItemsFromHolds( | ||||
|             user, | ||||
|             password, | ||||
|             expectedStatus, | ||||
|             Collections.singletonList(itemNodeRef), | ||||
|             Collections.singletonList(holdNodeRef) | ||||
|         ); | ||||
|         return APIUtils.extractErrorMessageFromHttpResponse(httpResponse); | ||||
|     } | ||||
|  | ||||
| @@ -345,15 +497,35 @@ public class HoldsAPI extends BaseAPI | ||||
|      * @param fileOnly True if only files should be return | ||||
|      * @return return a list of hold entries | ||||
|      */ | ||||
|     public List<HoldEntry> getHolds(String user, String password, final String itemNodeRef, | ||||
|                                     final Boolean includedInHold, final Boolean fileOnly) | ||||
|     { | ||||
|         final String parameters = (itemNodeRef != null ? "itemNodeRef=" + NODE_REF_WORKSPACE_SPACES_STORE + itemNodeRef  : "") | ||||
|                              + (includedInHold != null ? "&includedInHold=" + includedInHold : "") | ||||
|                              + (fileOnly != null ? "&fileOnly=" + fileOnly : ""); | ||||
|     public List<HoldEntry> getHolds( | ||||
|         String user, | ||||
|         String password, | ||||
|         final String itemNodeRef, | ||||
|         final Boolean includedInHold, | ||||
|         final Boolean fileOnly | ||||
|     ) { | ||||
|         final String parameters = | ||||
|             ( | ||||
|                 itemNodeRef != null | ||||
|                     ? "itemNodeRef=" + | ||||
|                     NODE_REF_WORKSPACE_SPACES_STORE + | ||||
|                     itemNodeRef | ||||
|                     : "" | ||||
|             ) + | ||||
|             ( | ||||
|                 includedInHold != null | ||||
|                     ? "&includedInHold=" + includedInHold | ||||
|                     : "" | ||||
|             ) + | ||||
|             (fileOnly != null ? "&fileOnly=" + fileOnly : ""); | ||||
|  | ||||
|         final JSONArray holdEntries = doGetRequest(user, password, | ||||
|                 MessageFormat.format(GET_RM_HOLDS, "{0}", parameters)).getJSONObject("data").getJSONArray("holds"); | ||||
|         final JSONArray holdEntries = doGetRequest( | ||||
|             user, | ||||
|             password, | ||||
|             MessageFormat.format(GET_RM_HOLDS, "{0}", parameters) | ||||
|         ) | ||||
|             .getJSONObject("data") | ||||
|             .getJSONArray("holds"); | ||||
|  | ||||
|         return PojoUtility.jsonToObject(holdEntries, HoldEntry.class); | ||||
|     } | ||||
|   | ||||
| @@ -25,8 +25,8 @@ | ||||
|  * #L% | ||||
|  */ | ||||
| package org.alfresco.rest.v0; | ||||
| import java.text.MessageFormat; | ||||
|  | ||||
| import java.text.MessageFormat; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| @@ -38,37 +38,41 @@ import org.springframework.stereotype.Component; | ||||
|  | ||||
| /** | ||||
|  * The v0 REST API for nodes | ||||
|  *  | ||||
|  * | ||||
|  * @author jcule | ||||
|  * @since 2.7EA1 | ||||
|  */ | ||||
| @Component | ||||
| public class NodeAPI extends BaseAPI | ||||
| { | ||||
| public class NodeAPI extends BaseAPI { | ||||
|  | ||||
|     /** Logger for the class. */ | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(NodeAPI.class); | ||||
|  | ||||
|     /** The URI for the get node API. */ | ||||
|     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/doclib2/node/{1}"; | ||||
|     private static final String GET_NODE_API = | ||||
|         "{0}alfresco/s/slingshot/doclib2/node/{1}"; | ||||
|  | ||||
|     @Autowired | ||||
|     private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||
|  | ||||
|     /** | ||||
|      * Get the node metadata using the using the node data webscript:  Document List v2 Component | ||||
|      *  | ||||
|      * | ||||
|      * @param username | ||||
|      * @param password | ||||
|      * @param nodeId | ||||
|      * @return | ||||
|      */ | ||||
|     public JSONObject getNode(String username, String password, String nodeId) | ||||
|     { | ||||
|     public JSONObject getNode(String username, String password, String nodeId) { | ||||
|         String requestURL; | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         requestURL = MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId); | ||||
|         requestURL = | ||||
|             MessageFormat.format( | ||||
|                 GET_NODE_API, | ||||
|                 client.getAlfrescoUrl(), | ||||
|                 NODE_PREFIX + nodeId | ||||
|             ); | ||||
|         client.close(); | ||||
|         return doGetRequest(username, password, requestURL); | ||||
|     } | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ package org.alfresco.rest.v0; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.text.MessageFormat; | ||||
|  | ||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| @@ -50,12 +49,13 @@ import org.springframework.stereotype.Component; | ||||
|  * @since AGS 3.4 | ||||
|  */ | ||||
| @Component | ||||
| public class NodePropertiesAPI extends BaseAPI | ||||
| { | ||||
| public class NodePropertiesAPI extends BaseAPI { | ||||
|  | ||||
|     /** | ||||
|      * The URI for the get node API. | ||||
|      */ | ||||
|     private static final String GET_NODE_API = "{0}alfresco/s/slingshot/node/{1}"; | ||||
|     private static final String GET_NODE_API = | ||||
|         "{0}alfresco/s/slingshot/node/{1}"; | ||||
|  | ||||
|     @Autowired | ||||
|     private AlfrescoHttpClientFactory alfrescoHttpClientFactory; | ||||
| @@ -68,10 +68,17 @@ public class NodePropertiesAPI extends BaseAPI | ||||
|      * @param nodeId | ||||
|      * @return JSONArray  object | ||||
|      */ | ||||
|     protected JSONArray getNodeProperties(String username, String password, String nodeId) | ||||
|     { | ||||
|     protected JSONArray getNodeProperties( | ||||
|         String username, | ||||
|         String password, | ||||
|         String nodeId | ||||
|     ) { | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String requestURL = MessageFormat.format(GET_NODE_API, client.getAlfrescoUrl(), NODE_PREFIX + nodeId); | ||||
|         String requestURL = MessageFormat.format( | ||||
|             GET_NODE_API, | ||||
|             client.getAlfrescoUrl(), | ||||
|             NODE_PREFIX + nodeId | ||||
|         ); | ||||
|  | ||||
|         // doRequest from BaseAPI cannot be used as  parsing the  response body to org.json.JSONObject is throwing an | ||||
|         // JSONException | ||||
| @@ -80,13 +87,13 @@ public class NodePropertiesAPI extends BaseAPI | ||||
|         HttpResponse response = client.execute(username, password, get); | ||||
|         HttpEntity entity = response.getEntity(); | ||||
|         String responseString; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             responseString = EntityUtils.toString(entity, "UTF-8"); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|             throw new IllegalArgumentException("Failed to read the response", e); | ||||
|         } catch (IOException e) { | ||||
|             throw new IllegalArgumentException( | ||||
|                 "Failed to read the response", | ||||
|                 e | ||||
|             ); | ||||
|         } | ||||
|         client.close(); | ||||
|         Object obj = JSONValue.parse(responseString); | ||||
| @@ -101,11 +108,9 @@ public class NodePropertiesAPI extends BaseAPI | ||||
|      * @param nodeId | ||||
|      * @return Return the content url string | ||||
|      */ | ||||
|     public String getContentUrl(UserModel userModel, String nodeId) | ||||
|     { | ||||
|     public String getContentUrl(UserModel userModel, String nodeId) { | ||||
|         String contentProperty = getContentProperty(userModel, nodeId); | ||||
|         if (contentProperty != null) | ||||
|         { | ||||
|         if (contentProperty != null) { | ||||
|             // get the first element before the first | | ||||
|             // e.g.  "contentUrl=s3://-system-/fc077fe8-1742-4c45-a153-8309c857996b | ||||
|             // .bin|mimetype=text/plain|size=19|encoding=ISO-8859-2|locale=en_US_|id=508" | ||||
| @@ -122,17 +127,19 @@ public class NodePropertiesAPI extends BaseAPI | ||||
|      * @param nodeId | ||||
|      * @return Return the content property string | ||||
|      */ | ||||
|     public String getContentProperty(UserModel userModel, String nodeId) | ||||
|     { | ||||
|         JSONArray properties = getNodeProperties(userModel.getUsername(), userModel.getPassword(), nodeId); | ||||
|     public String getContentProperty(UserModel userModel, String nodeId) { | ||||
|         JSONArray properties = getNodeProperties( | ||||
|             userModel.getUsername(), | ||||
|             userModel.getPassword(), | ||||
|             nodeId | ||||
|         ); | ||||
|  | ||||
|         for (int i = 0; i < properties.size(); i++) | ||||
|         { | ||||
|         for (int i = 0; i < properties.size(); i++) { | ||||
|             JSONObject object = (JSONObject) properties.get(i); | ||||
|             JSONArray valuesArray = (JSONArray) object.get("values"); | ||||
|             if (valuesArray.toString().contains("contentUrl")) | ||||
|             { | ||||
|                 return ((JSONObject) valuesArray.get(0)).get("value").toString(); | ||||
|             if (valuesArray.toString().contains("contentUrl")) { | ||||
|                 return ((JSONObject) valuesArray.get(0)).get("value") | ||||
|                     .toString(); | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|   | ||||
| @@ -32,7 +32,6 @@ import java.io.UnsupportedEncodingException; | ||||
| import java.net.URLEncoder; | ||||
| import java.text.MessageFormat; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.alfresco.rest.core.v0.BaseAPI; | ||||
| import org.alfresco.rest.rm.community.model.audit.AuditEntry; | ||||
| import org.alfresco.rest.rm.community.util.PojoUtility; | ||||
| @@ -49,10 +48,12 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 2.7 | ||||
|  */ | ||||
| @Component | ||||
| public class RMAuditAPI extends BaseAPI | ||||
| { | ||||
| public class RMAuditAPI extends BaseAPI { | ||||
|  | ||||
|     /** Logger for the class. */ | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RMAuditAPI.class); | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger( | ||||
|         RMAuditAPI.class | ||||
|     ); | ||||
|  | ||||
|     /** The URI for the audit API. */ | ||||
|     private static final String RM_AUDIT_API = "{0}rma/admin/rmauditlog"; | ||||
| @@ -67,19 +68,32 @@ public class RMAuditAPI extends BaseAPI | ||||
|      * @param event    The name of audit event to be retrieved | ||||
|      * @return return Only return log entries matching this event | ||||
|      */ | ||||
|     public List<AuditEntry> getRMAuditLog(String user, String password, final int size, final String event) | ||||
|     { | ||||
|     public List<AuditEntry> getRMAuditLog( | ||||
|         String user, | ||||
|         String password, | ||||
|         final int size, | ||||
|         final String event | ||||
|     ) { | ||||
|         String parameters = null; | ||||
|         try | ||||
|         { | ||||
|             parameters = "size=" + size + (event != null ? "&event=" + URLEncoder.encode(event, "UTF-8"):""); | ||||
|         } | ||||
|         catch (UnsupportedEncodingException e) | ||||
|         { | ||||
|         try { | ||||
|             parameters = | ||||
|                 "size=" + | ||||
|                 size + | ||||
|                 ( | ||||
|                     event != null | ||||
|                         ? "&event=" + URLEncoder.encode(event, "UTF-8") | ||||
|                         : "" | ||||
|                 ); | ||||
|         } catch (UnsupportedEncodingException e) { | ||||
|             LOGGER.error("Unable to encode the event name {}", e.getMessage()); | ||||
|         } | ||||
|         JSONArray auditEntries =  doGetRequest(user, password, | ||||
|                 MessageFormat.format(RM_AUDIT_LOG_API,"{0}", parameters)).getJSONObject("data").getJSONArray("entries"); | ||||
|         JSONArray auditEntries = doGetRequest( | ||||
|             user, | ||||
|             password, | ||||
|             MessageFormat.format(RM_AUDIT_LOG_API, "{0}", parameters) | ||||
|         ) | ||||
|             .getJSONObject("data") | ||||
|             .getJSONArray("entries"); | ||||
|  | ||||
|         return PojoUtility.jsonToObject(auditEntries, AuditEntry.class); | ||||
|     } | ||||
| @@ -91,14 +105,18 @@ public class RMAuditAPI extends BaseAPI | ||||
|      * @param password The password of the user. | ||||
|      * @throws AssertionError If the API call didn't clear the audit log. | ||||
|      */ | ||||
|     public void clearAuditLog(String username, String password) | ||||
|     { | ||||
|         JSONObject deleteStatus = doDeleteRequest(username, password, RM_AUDIT_API); | ||||
|     public void clearAuditLog(String username, String password) { | ||||
|         JSONObject deleteStatus = doDeleteRequest( | ||||
|             username, | ||||
|             password, | ||||
|             RM_AUDIT_API | ||||
|         ); | ||||
|  | ||||
|         assertTrue(deleteStatus != null | ||||
|                 //audit clear and login events are returned | ||||
|                 && getRMAuditLog(username, password, 100, null).size() == 2); | ||||
|         assertTrue( | ||||
|             deleteStatus != null && | ||||
|             //audit clear and login events are returned | ||||
|             getRMAuditLog(username, password, 100, null).size() == | ||||
|             2 | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -41,7 +41,6 @@ import java.time.ZonedDateTime; | ||||
| import java.util.Arrays; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
|  | ||||
| import org.alfresco.dataprep.AlfrescoHttpClient; | ||||
| import org.alfresco.dataprep.AlfrescoHttpClientFactory; | ||||
| import org.alfresco.dataprep.UserService; | ||||
| @@ -71,17 +70,21 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 2.5 | ||||
|  */ | ||||
| @Component | ||||
| public class RMRolesAndActionsAPI extends BaseAPI | ||||
| { | ||||
| public class RMRolesAndActionsAPI extends BaseAPI { | ||||
|  | ||||
|     /** The URI to view the configured roles and capabilities. */ | ||||
|     private static final String RM_ROLES = "{0}rma/admin/rmroles"; | ||||
|     /** The URI for REST requests about a particular configured role. */ | ||||
|     private static final String RM_ROLES_ROLE = RM_ROLES + "/{1}"; | ||||
|     private static final String RM_ROLES_AUTHORITIES = "{0}rm/roles/{1}/authorities/{2}?alf_ticket={3}"; | ||||
|     private static final String RM_ROLES_AUTHORITIES = | ||||
|         "{0}rm/roles/{1}/authorities/{2}?alf_ticket={3}"; | ||||
|  | ||||
|     // logger | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RMRolesAndActionsAPI.class); | ||||
|     private static final String MOVE_ACTIONS_API = "action/rm-move-to/site/rm/documentLibrary/{0}"; | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger( | ||||
|         RMRolesAndActionsAPI.class | ||||
|     ); | ||||
|     private static final String MOVE_ACTIONS_API = | ||||
|         "action/rm-move-to/site/rm/documentLibrary/{0}"; | ||||
|  | ||||
|     /** http client factory */ | ||||
|     @Autowired | ||||
| @@ -93,6 +96,7 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|  | ||||
|     @Autowired | ||||
|     private DataUserAIS dataUser; | ||||
|  | ||||
|     /** | ||||
|      * Get all the configured RM roles. | ||||
|      * | ||||
| @@ -100,11 +104,17 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @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). | ||||
|      */ | ||||
|     public Set<String> getConfiguredRoles(String adminUser, String adminPassword) | ||||
|     { | ||||
|     public Set<String> getConfiguredRoles( | ||||
|         String adminUser, | ||||
|         String adminPassword | ||||
|     ) { | ||||
|         // Using "is=true" includes the in-place readers and writers. | ||||
|         final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject( | ||||
|                 "data"); | ||||
|         final JSONObject jsonObject = doGetRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             RM_ROLES + "?is=true" | ||||
|         ) | ||||
|             .getJSONObject("data"); | ||||
|         return jsonObject.toMap().keySet(); | ||||
|     } | ||||
|  | ||||
| @@ -116,12 +126,25 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param role The role to get capabilities for. | ||||
|      * @return The set of system names for the capabilities. | ||||
|      */ | ||||
|     public Set<String> getCapabilitiesForRole(String adminUser, String adminPassword, String role) | ||||
|     { | ||||
|         final JSONObject jsonObject = doGetRequest(adminUser, adminPassword, RM_ROLES + "?is=true").getJSONObject( | ||||
|                 "data"); | ||||
|         assertTrue("Could not find role '" + role + "' in " + jsonObject.keySet(), jsonObject.has(role)); | ||||
|         return jsonObject.getJSONObject(role).getJSONObject("capabilities").keySet(); | ||||
|     public Set<String> getCapabilitiesForRole( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String role | ||||
|     ) { | ||||
|         final JSONObject jsonObject = doGetRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             RM_ROLES + "?is=true" | ||||
|         ) | ||||
|             .getJSONObject("data"); | ||||
|         assertTrue( | ||||
|             "Could not find role '" + role + "' in " + jsonObject.keySet(), | ||||
|             jsonObject.has(role) | ||||
|         ); | ||||
|         return jsonObject | ||||
|             .getJSONObject(role) | ||||
|             .getJSONObject("capabilities") | ||||
|             .keySet(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -132,8 +155,11 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param capabilities     a list of capabilities for the role | ||||
|      * @return | ||||
|      */ | ||||
|     private JSONObject roleRequestBody(String roleName, String roleDisplayLabel, Set<String> capabilities) | ||||
|     { | ||||
|     private JSONObject roleRequestBody( | ||||
|         String roleName, | ||||
|         String roleDisplayLabel, | ||||
|         Set<String> capabilities | ||||
|     ) { | ||||
|         final JSONObject requestBody = new JSONObject(); | ||||
|         requestBody.put("name", roleName); | ||||
|         requestBody.put("displayLabel", roleDisplayLabel); | ||||
| @@ -152,10 +178,20 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param roleDisplayLabel A human-readable label for the role. | ||||
|      * @param capabilities A list of capabilities for the role. | ||||
|      */ | ||||
|     public void createRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities) | ||||
|     { | ||||
|         doPostJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities), | ||||
|                 RM_ROLES); | ||||
|     public void createRole( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String roleName, | ||||
|         String roleDisplayLabel, | ||||
|         Set<String> capabilities | ||||
|     ) { | ||||
|         doPostJsonRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             HttpStatus.SC_OK, | ||||
|             roleRequestBody(roleName, roleDisplayLabel, capabilities), | ||||
|             RM_ROLES | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -167,10 +203,21 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param roleDisplayLabel A human-readable label for the role. | ||||
|      * @param capabilities A list of capabilities for the role. | ||||
|      */ | ||||
|     public void updateRole(String adminUser, String adminPassword, String roleName, String roleDisplayLabel, Set<String> capabilities) | ||||
|     { | ||||
|         doPutJsonRequest(adminUser, adminPassword, HttpStatus.SC_OK, roleRequestBody(roleName, roleDisplayLabel, capabilities), | ||||
|                 RM_ROLES_ROLE, roleName); | ||||
|     public void updateRole( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String roleName, | ||||
|         String roleDisplayLabel, | ||||
|         Set<String> capabilities | ||||
|     ) { | ||||
|         doPutJsonRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             HttpStatus.SC_OK, | ||||
|             roleRequestBody(roleName, roleDisplayLabel, capabilities), | ||||
|             RM_ROLES_ROLE, | ||||
|             roleName | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -180,27 +227,34 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param adminPassword The password for the admin user. | ||||
|      * @param roleName The name of the role to be deleted. | ||||
|      */ | ||||
|     public void deleteRole(String adminUser, String adminPassword, String roleName) | ||||
|     { | ||||
|         doDeleteRequest(adminUser, adminPassword, MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName)); | ||||
|         assertFalse("Failed to delete role " + roleName + " with " + adminUser, | ||||
|                 getConfiguredRoles(adminUser, adminPassword).contains(roleName)); | ||||
|     public void deleteRole( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String roleName | ||||
|     ) { | ||||
|         doDeleteRequest( | ||||
|             adminUser, | ||||
|             adminPassword, | ||||
|             MessageFormat.format(RM_ROLES_ROLE, "{0}", roleName) | ||||
|         ); | ||||
|         assertFalse( | ||||
|             "Failed to delete role " + roleName + " with " + adminUser, | ||||
|             getConfiguredRoles(adminUser, adminPassword).contains(roleName) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * create user and assign to records management role | ||||
|      */ | ||||
|     public void createUserAndAssignToRole( | ||||
|             String adminUser, | ||||
|             String adminPassword, | ||||
|             String userName, | ||||
|             String password, | ||||
|             String role) | ||||
|     { | ||||
|         if (!userService.userExists(adminUser, adminPassword, userName)) | ||||
|         { | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String userName, | ||||
|         String password, | ||||
|         String role | ||||
|     ) { | ||||
|         if (!userService.userExists(adminUser, adminPassword, userName)) { | ||||
|             dataUser.createUser(userName, password); | ||||
|  | ||||
|         } | ||||
|         assignRoleToUser(adminUser, adminPassword, userName, role); | ||||
|     } | ||||
| @@ -210,33 +264,37 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * | ||||
|      * @throws AssertionError if the assignation is unsuccessful. | ||||
|      */ | ||||
|     public void assignRoleToUser(String adminUser, String adminPassword, String userName, String role) | ||||
|     { | ||||
|     public void assignRoleToUser( | ||||
|         String adminUser, | ||||
|         String adminPassword, | ||||
|         String userName, | ||||
|         String role | ||||
|     ) { | ||||
|         final AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         final String reqURL = MessageFormat.format( | ||||
|                 RM_ROLES_AUTHORITIES, | ||||
|                 client.getApiUrl(), | ||||
|                 role, | ||||
|                 userName, | ||||
|                 client.getAlfTicket(adminUser, adminPassword)); | ||||
|             RM_ROLES_AUTHORITIES, | ||||
|             client.getApiUrl(), | ||||
|             role, | ||||
|             userName, | ||||
|             client.getAlfTicket(adminUser, adminPassword) | ||||
|         ); | ||||
|  | ||||
|         HttpPost request = null; | ||||
|         HttpResponse response; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             request = new HttpPost(reqURL); | ||||
|             response = client.execute(adminUser, adminPassword, request); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             if (request != null) | ||||
|             { | ||||
|         } finally { | ||||
|             if (request != null) { | ||||
|                 request.releaseConnection(); | ||||
|             } | ||||
|             client.close(); | ||||
|         } | ||||
|         assertEquals("Assigning role " + role + " to user " + userName + " failed.", SC_OK, | ||||
|                     response.getStatusLine().getStatusCode()); | ||||
|         assertEquals( | ||||
|             "Assigning role " + role + " to user " + userName + " failed.", | ||||
|             SC_OK, | ||||
|             response.getStatusLine().getStatusCode() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -248,51 +306,68 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param destinationPath destination path | ||||
|      * @throws AssertionError if the move was unsuccessful. | ||||
|      */ | ||||
|     public void moveTo(String user, String password, String contentPath, String destinationPath) | ||||
|     { | ||||
|         String contentNodeRef = getNodeRefSpacesStore() + getItemNodeRef(user, password, contentPath); | ||||
|     public void moveTo( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentPath, | ||||
|         String destinationPath | ||||
|     ) { | ||||
|         String contentNodeRef = | ||||
|             getNodeRefSpacesStore() + | ||||
|             getItemNodeRef(user, password, contentPath); | ||||
|         AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); | ||||
|         String url = MessageFormat.format(client.getAlfrescoUrl() + "alfresco/s/slingshot/doclib/" + MOVE_ACTIONS_API, destinationPath); | ||||
|         String url = MessageFormat.format( | ||||
|             client.getAlfrescoUrl() + | ||||
|             "alfresco/s/slingshot/doclib/" + | ||||
|             MOVE_ACTIONS_API, | ||||
|             destinationPath | ||||
|         ); | ||||
|         HttpPost request = new HttpPost(url); | ||||
|  | ||||
|         boolean success = false; | ||||
|         try | ||||
|         { | ||||
|         try { | ||||
|             JSONObject body = new JSONObject(); | ||||
|             body.put("nodeRefs", new JSONArray(Arrays.asList(contentNodeRef))); | ||||
|             StringEntity se = new StringEntity(body.toString(), AlfrescoHttpClient.UTF_8_ENCODING); | ||||
|             se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, MIME_TYPE_JSON)); | ||||
|             StringEntity se = new StringEntity( | ||||
|                 body.toString(), | ||||
|                 AlfrescoHttpClient.UTF_8_ENCODING | ||||
|             ); | ||||
|             se.setContentType( | ||||
|                 new BasicHeader(HTTP.CONTENT_TYPE, MIME_TYPE_JSON) | ||||
|             ); | ||||
|             request.setEntity(se); | ||||
|  | ||||
|             HttpResponse response = client.execute(user, password, request); | ||||
|             switch (response.getStatusLine().getStatusCode()) | ||||
|             { | ||||
|             switch (response.getStatusLine().getStatusCode()) { | ||||
|                 case HttpStatus.SC_OK: | ||||
|                     JSONObject json = new JSONObject(EntityUtils.toString(response.getEntity())); | ||||
|                     JSONObject json = new JSONObject( | ||||
|                         EntityUtils.toString(response.getEntity()) | ||||
|                     ); | ||||
|                     success = (Boolean) json.get("overallSuccess"); | ||||
|                     break; | ||||
|                 case HttpStatus.SC_NOT_FOUND: | ||||
|                     LOGGER.info("The provided paths couldn't be found " + response.toString()); | ||||
|                     LOGGER.info( | ||||
|                         "The provided paths couldn't be found " + | ||||
|                         response.toString() | ||||
|                     ); | ||||
|                     break; | ||||
|                 default: | ||||
|                     LOGGER.error("Unable to move: " + response.toString()); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|         catch (JSONException | IOException e) | ||||
|         { | ||||
|         } catch (JSONException | IOException e) { | ||||
|             LOGGER.error(e.toString()); | ||||
|         } | ||||
|         finally | ||||
|         { | ||||
|             if (request != null) | ||||
|             { | ||||
|         } finally { | ||||
|             if (request != null) { | ||||
|                 request.releaseConnection(); | ||||
|             } | ||||
|             client.close(); | ||||
|         } | ||||
|  | ||||
|         assertTrue("Moving " + contentPath + " to " + destinationPath + " failed.", success); | ||||
|         assertTrue( | ||||
|             "Moving " + contentPath + " to " + destinationPath + " failed.", | ||||
|             success | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -304,18 +379,25 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param destinationPath destination path | ||||
|      * @throws AssertionError if the move was unexpectedly successful. | ||||
|      */ | ||||
|     public void moveToAndExpectFailure(String user, String password, String contentPath, String destinationPath) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|     public void moveToAndExpectFailure( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentPath, | ||||
|         String destinationPath | ||||
|     ) { | ||||
|         try { | ||||
|             moveTo(user, password, contentPath, destinationPath); | ||||
|         } | ||||
|         catch(AssertionError e) | ||||
|         { | ||||
|         } catch (AssertionError e) { | ||||
|             // We are expecting the move to fail. | ||||
|             return; | ||||
|         } | ||||
|         fail("Moving " + contentPath + " to " + destinationPath + " succeeded unexpectedly."); | ||||
|         fail( | ||||
|             "Moving " + | ||||
|             contentPath + | ||||
|             " to " + | ||||
|             destinationPath + | ||||
|             " succeeded unexpectedly." | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -326,10 +408,15 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param contentName the content name | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action) | ||||
|     { | ||||
|     public HttpResponse executeAction( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RM_ACTIONS action | ||||
|     ) { | ||||
|         return executeAction(user, password, contentName, action, null, SC_OK); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Perform an action on the given content | ||||
|      * | ||||
| @@ -338,9 +425,13 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param contentName the content name | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse executeActionAndExpectResponseCode(String user, String password, String contentName, RM_ACTIONS action, | ||||
|                                                            int status) | ||||
|     { | ||||
|     public HttpResponse executeActionAndExpectResponseCode( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RM_ACTIONS action, | ||||
|         int status | ||||
|     ) { | ||||
|         return executeAction(user, password, contentName, action, null, status); | ||||
|     } | ||||
|  | ||||
| @@ -352,9 +443,13 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param contentName the content name | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action, | ||||
|                                       ZonedDateTime date) | ||||
|     { | ||||
|     public HttpResponse executeAction( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RM_ACTIONS action, | ||||
|         ZonedDateTime date | ||||
|     ) { | ||||
|         return executeAction(user, password, contentName, action, date, SC_OK); | ||||
|     } | ||||
|  | ||||
| @@ -368,15 +463,20 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param actionsParams the request parameters | ||||
|      * @return the JSONObject created | ||||
|      */ | ||||
|     private JSONObject actionsRequestBody(String user, String password, String contentName, RM_ACTIONS action, | ||||
|                                           JSONObject actionsParams) | ||||
|     { | ||||
|         final String recNodeRef = getNodeRefSpacesStore() + contentService.getNodeRef(user, password, RM_SITE_ID, contentName); | ||||
|     private JSONObject actionsRequestBody( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RM_ACTIONS action, | ||||
|         JSONObject actionsParams | ||||
|     ) { | ||||
|         final String recNodeRef = | ||||
|             getNodeRefSpacesStore() + | ||||
|             contentService.getNodeRef(user, password, RM_SITE_ID, contentName); | ||||
|         final JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("name", action.getAction()); | ||||
|         requestParams.put("nodeRef", recNodeRef); | ||||
|         if (actionsParams != null) | ||||
|         { | ||||
|         if (actionsParams != null) { | ||||
|             requestParams.put("params", actionsParams); | ||||
|         } | ||||
|         return requestParams; | ||||
| @@ -391,16 +491,36 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param date        the date to be updated | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse executeAction(String user, String password, String contentName, RM_ACTIONS action, | ||||
|                                       ZonedDateTime date, int status) | ||||
|     { | ||||
|     public HttpResponse executeAction( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RM_ACTIONS action, | ||||
|         ZonedDateTime date, | ||||
|         int status | ||||
|     ) { | ||||
|         final JSONObject actionParams = new JSONObject(); | ||||
|         if (date != null) | ||||
|         { | ||||
|             actionParams.put("asOfDate", new JSONObject().put("iso8601", ISO_INSTANT_FORMATTER.format(date))); | ||||
|         if (date != null) { | ||||
|             actionParams.put( | ||||
|                 "asOfDate", | ||||
|                 new JSONObject() | ||||
|                     .put("iso8601", ISO_INSTANT_FORMATTER.format(date)) | ||||
|             ); | ||||
|         } | ||||
|         final JSONObject requestParams = actionsRequestBody(user, password, contentName, action, actionParams); | ||||
|         return doPostJsonRequest(user, password, status, requestParams, RM_ACTIONS_API); | ||||
|         final JSONObject requestParams = actionsRequestBody( | ||||
|             user, | ||||
|             password, | ||||
|             contentName, | ||||
|             action, | ||||
|             actionParams | ||||
|         ); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             status, | ||||
|             requestParams, | ||||
|             RM_ACTIONS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -413,17 +533,36 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param date        the date to be updated | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse completeEvent(String user, String password, String nodeName, RMEvents event, Instant date) | ||||
|     { | ||||
|     public HttpResponse completeEvent( | ||||
|         String user, | ||||
|         String password, | ||||
|         String nodeName, | ||||
|         RMEvents event, | ||||
|         Instant date | ||||
|     ) { | ||||
|         date = (date != null) ? date : Instant.now(); | ||||
|         final JSONObject actionParams = new JSONObject().put("eventName", event.getEventName()) | ||||
|                                                         .put("eventCompletedBy", user) | ||||
|                                                         .put("eventCompletedAt", new JSONObject() | ||||
|                                                                 .put("iso8601", ISO_INSTANT_FORMATTER.format(date)) | ||||
|                                                             ); | ||||
|         final JSONObject requestParams = actionsRequestBody(user, password, nodeName, RM_ACTIONS.COMPLETE_EVENT, | ||||
|                 actionParams); | ||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); | ||||
|         final JSONObject actionParams = new JSONObject() | ||||
|             .put("eventName", event.getEventName()) | ||||
|             .put("eventCompletedBy", user) | ||||
|             .put( | ||||
|                 "eventCompletedAt", | ||||
|                 new JSONObject() | ||||
|                     .put("iso8601", ISO_INSTANT_FORMATTER.format(date)) | ||||
|             ); | ||||
|         final JSONObject requestParams = actionsRequestBody( | ||||
|             user, | ||||
|             password, | ||||
|             nodeName, | ||||
|             RM_ACTIONS.COMPLETE_EVENT, | ||||
|             actionParams | ||||
|         ); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             requestParams, | ||||
|             RM_ACTIONS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -435,11 +574,26 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param event       the event to be undone | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse undoEvent(String user, String password, String contentName, RMEvents event) | ||||
|     { | ||||
|         final JSONObject requestParams = actionsRequestBody(user, password, contentName, RM_ACTIONS.UNDO_EVENT, | ||||
|                 new JSONObject().put("eventName", event.getEventName())); | ||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); | ||||
|     public HttpResponse undoEvent( | ||||
|         String user, | ||||
|         String password, | ||||
|         String contentName, | ||||
|         RMEvents event | ||||
|     ) { | ||||
|         final JSONObject requestParams = actionsRequestBody( | ||||
|             user, | ||||
|             password, | ||||
|             contentName, | ||||
|             RM_ACTIONS.UNDO_EVENT, | ||||
|             new JSONObject().put("eventName", event.getEventName()) | ||||
|         ); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             requestParams, | ||||
|             RM_ACTIONS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -451,14 +605,32 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param containerName the container to look for items into | ||||
|      * @throws AssertionError if not all items could be deleted. | ||||
|      */ | ||||
|     public void deleteAllItemsInContainer(String username, String password, String siteId, String containerName) | ||||
|     { | ||||
|         for (CmisObject item : contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren()) | ||||
|         { | ||||
|     public void deleteAllItemsInContainer( | ||||
|         String username, | ||||
|         String password, | ||||
|         String siteId, | ||||
|         String containerName | ||||
|     ) { | ||||
|         for (CmisObject item : contentService | ||||
|             .getFolderObject( | ||||
|                 contentService.getCMISSession(username, password), | ||||
|                 siteId, | ||||
|                 containerName | ||||
|             ) | ||||
|             .getChildren()) { | ||||
|             item.delete(); | ||||
|         } | ||||
|         assertFalse("Not all items were deleted from " + containerName, | ||||
|                 contentService.getFolderObject(contentService.getCMISSession(username, password), siteId, containerName).getChildren().getHasMoreItems()); | ||||
|         assertFalse( | ||||
|             "Not all items were deleted from " + containerName, | ||||
|             contentService | ||||
|                 .getFolderObject( | ||||
|                     contentService.getCMISSession(username, password), | ||||
|                     siteId, | ||||
|                     containerName | ||||
|                 ) | ||||
|                 .getChildren() | ||||
|                 .getHasMoreItems() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -469,18 +641,62 @@ public class RMRolesAndActionsAPI extends BaseAPI | ||||
|      * @param itemNodeRef the item noderef | ||||
|      * @return The HTTP response. | ||||
|      */ | ||||
|     public HttpResponse updateMetadata(String username, String password, String itemNodeRef, Map<RMProperty, String> properties) | ||||
|     { | ||||
|     public HttpResponse updateMetadata( | ||||
|         String username, | ||||
|         String password, | ||||
|         String itemNodeRef, | ||||
|         Map<RMProperty, String> properties | ||||
|     ) { | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         addPropertyToRequest(requestParams, "prop_cm_name", properties, RMProperty.NAME); | ||||
|         addPropertyToRequest(requestParams, "prop_cm_title", properties, RMProperty.TITLE); | ||||
|         addPropertyToRequest(requestParams, "prop_cm_description", properties, RMProperty.DESCRIPTION); | ||||
|         addPropertyToRequest(requestParams, "prop_cm_author", properties, RMProperty.AUTHOR); | ||||
|         addPropertyToRequest(requestParams, "prop_dod_originator", properties, RMProperty.ORIGINATOR); | ||||
|         addPropertyToRequest(requestParams, "prop_dod_originatingOrganization", properties, RMProperty | ||||
|                 .ORIGINATING_ORGANIZATION); | ||||
|         addPropertyToRequest(requestParams, "prop_dod_publicationDate", properties, RMProperty.PUBLICATION_DATE); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_cm_name", | ||||
|             properties, | ||||
|             RMProperty.NAME | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_cm_title", | ||||
|             properties, | ||||
|             RMProperty.TITLE | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_cm_description", | ||||
|             properties, | ||||
|             RMProperty.DESCRIPTION | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_cm_author", | ||||
|             properties, | ||||
|             RMProperty.AUTHOR | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_dod_originator", | ||||
|             properties, | ||||
|             RMProperty.ORIGINATOR | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_dod_originatingOrganization", | ||||
|             properties, | ||||
|             RMProperty.ORIGINATING_ORGANIZATION | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "prop_dod_publicationDate", | ||||
|             properties, | ||||
|             RMProperty.PUBLICATION_DATE | ||||
|         ); | ||||
|  | ||||
|         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) | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -31,7 +31,6 @@ 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.apache.http.HttpResponse; | ||||
| import org.json.JSONObject; | ||||
| @@ -46,13 +45,17 @@ import org.springframework.stereotype.Component; | ||||
|  * @since 2.5 | ||||
|  */ | ||||
| @Component | ||||
| public class RecordCategoriesAPI extends BaseAPI | ||||
| { | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger(RecordCategoriesAPI.class); | ||||
|     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_SCHEDULE_API = "{0}node/{1}/dispositionschedule"; | ||||
| public class RecordCategoriesAPI extends BaseAPI { | ||||
|  | ||||
|     private static final Logger LOGGER = LoggerFactory.getLogger( | ||||
|         RecordCategoriesAPI.class | ||||
|     ); | ||||
|     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_SCHEDULE_API = | ||||
|         "{0}node/{1}/dispositionschedule"; | ||||
|  | ||||
|     /** | ||||
|      * Creates a retention schedule for the category given as parameter | ||||
| @@ -62,15 +65,26 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param categoryName the category name to create the retention schedule for | ||||
|      * @return The HTTP Response. | ||||
|      */ | ||||
|     public HttpResponse createRetentionSchedule(String user, String password, String categoryName) | ||||
|     { | ||||
|         String catNodeRef = getNodeRefSpacesStore() + getItemNodeRef(user, password, "/" + categoryName); | ||||
|     public HttpResponse createRetentionSchedule( | ||||
|         String user, | ||||
|         String password, | ||||
|         String categoryName | ||||
|     ) { | ||||
|         String catNodeRef = | ||||
|             getNodeRefSpacesStore() + | ||||
|             getItemNodeRef(user, password, "/" + categoryName); | ||||
|  | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("name", "createDispositionSchedule"); | ||||
|         requestParams.put("nodeRef", catNodeRef); | ||||
|  | ||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, RM_ACTIONS_API); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             requestParams, | ||||
|             RM_ACTIONS_API | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -81,11 +95,22 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param categoryName | ||||
|      * @return the disposition schedule nodeRef | ||||
|      */ | ||||
|     public String getDispositionScheduleNodeRef(String user, String password, String categoryName) | ||||
|     { | ||||
|         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||
|         JSONObject dispositionSchedule = doGetRequest(user, password, MessageFormat.format(DISPOSITION_SCHEDULE_API, "{0}", catNodeRef)); | ||||
|         return dispositionSchedule.getJSONObject("data").getString("nodeRef").replace(getNodeRefSpacesStore(), ""); | ||||
|     public String getDispositionScheduleNodeRef( | ||||
|         String user, | ||||
|         String password, | ||||
|         String categoryName | ||||
|     ) { | ||||
|         String catNodeRef = | ||||
|             NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||
|         JSONObject dispositionSchedule = doGetRequest( | ||||
|             user, | ||||
|             password, | ||||
|             MessageFormat.format(DISPOSITION_SCHEDULE_API, "{0}", catNodeRef) | ||||
|         ); | ||||
|         return dispositionSchedule | ||||
|             .getJSONObject("data") | ||||
|             .getString("nodeRef") | ||||
|             .replace(getNodeRefSpacesStore(), ""); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -96,15 +121,45 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param retentionNodeRef the retention nodeRef | ||||
|      * @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; | ||||
|  | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         requestParams.put("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()); | ||||
|         return doPostJsonRequest(user, password, SC_OK, requestParams, MessageFormat.format(UPDATE_METADATA_API, "{0}", dispRetentionNodeRef)); | ||||
|         requestParams.put( | ||||
|             "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() | ||||
|         ); | ||||
|         return doPostJsonRequest( | ||||
|             user, | ||||
|             password, | ||||
|             SC_OK, | ||||
|             requestParams, | ||||
|             MessageFormat.format( | ||||
|                 UPDATE_METADATA_API, | ||||
|                 "{0}", | ||||
|                 dispRetentionNodeRef | ||||
|             ) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -115,26 +170,79 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param categoryName the category name to create the retention schedule for | ||||
|      * @return The HTTP Response. | ||||
|      */ | ||||
|     public HttpResponse addDispositionScheduleSteps(String user, String password, String categoryName, Map<RETENTION_SCHEDULE, String> properties) | ||||
|     { | ||||
|         String catNodeRef = NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||
|     public HttpResponse addDispositionScheduleSteps( | ||||
|         String user, | ||||
|         String password, | ||||
|         String categoryName, | ||||
|         Map<RETENTION_SCHEDULE, String> properties | ||||
|     ) { | ||||
|         String catNodeRef = | ||||
|             NODE_PREFIX + getItemNodeRef(user, password, "/" + categoryName); | ||||
|  | ||||
|         JSONObject requestParams = new JSONObject(); | ||||
|         addPropertyToRequest(requestParams, "name", properties, RETENTION_SCHEDULE.NAME); | ||||
|         addPropertyToRequest(requestParams, "description", properties, RETENTION_SCHEDULE.DESCRIPTION); | ||||
|         addPropertyToRequest(requestParams, "period", properties, RETENTION_SCHEDULE.RETENTION_PERIOD); | ||||
|         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); | ||||
|         if(!events.equals("")) | ||||
|         { | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "name", | ||||
|             properties, | ||||
|             RETENTION_SCHEDULE.NAME | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "description", | ||||
|             properties, | ||||
|             RETENTION_SCHEDULE.DESCRIPTION | ||||
|         ); | ||||
|         addPropertyToRequest( | ||||
|             requestParams, | ||||
|             "period", | ||||
|             properties, | ||||
|             RETENTION_SCHEDULE.RETENTION_PERIOD | ||||
|         ); | ||||
|         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 | ||||
|         ); | ||||
|         if (!events.equals("")) { | ||||
|             requestParams.append("events", events); | ||||
|         } | ||||
|         addPropertyToRequest(requestParams, "combineDispositionStepConditions", properties, RETENTION_SCHEDULE.COMBINE_DISPOSITION_STEP_CONDITIONS); | ||||
|         addPropertyToRequest(requestParams, "eligibleOnFirstCompleteEvent", properties, RETENTION_SCHEDULE.RETENTION_ELIGIBLE_FIRST_EVENT); | ||||
|         addPropertyToRequest( | ||||
|             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) | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -145,8 +253,11 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param categoryName the name of the category | ||||
|      * @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); | ||||
|     } | ||||
|  | ||||
| @@ -158,9 +269,17 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param categoryName the name of the sub-category | ||||
|      * @throws AssertionError if the deletion was unsuccessful. | ||||
|      */ | ||||
|     public void deleteSubCategory(String username, String password, String categoryName, String subCategoryName) | ||||
|     { | ||||
|         deleteItem(username, password, "/" + categoryName + "/" + subCategoryName); | ||||
|     public void deleteSubCategory( | ||||
|         String username, | ||||
|         String password, | ||||
|         String categoryName, | ||||
|         String subCategoryName | ||||
|     ) { | ||||
|         deleteItem( | ||||
|             username, | ||||
|             password, | ||||
|             "/" + categoryName + "/" + subCategoryName | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -172,8 +291,12 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param containerName the name of the category or container sin which the folder is | ||||
|      * @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); | ||||
|     } | ||||
|  | ||||
| @@ -184,11 +307,19 @@ public class RecordCategoriesAPI extends BaseAPI | ||||
|      * @param instructions retention authority | ||||
|      * @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<>(); | ||||
|         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_AUTHORITY, authority); | ||||
|         retentionProperties.put(RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS, instructions); | ||||
|         retentionProperties.put( | ||||
|             RETENTION_SCHEDULE.RETENTION_AUTHORITY, | ||||
|             authority | ||||
|         ); | ||||
|         retentionProperties.put( | ||||
|             RETENTION_SCHEDULE.RETENTION_INSTRUCTIONS, | ||||
|             instructions | ||||
|         ); | ||||
|         return retentionProperties; | ||||
|     } | ||||
| } | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user