Compare commits

..

2 Commits

6816 changed files with 1333342 additions and 1598148 deletions

181
.github/dependabot.yml vendored
View File

@@ -1,181 +0,0 @@
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

View File

@@ -1,9 +0,0 @@
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

View File

@@ -1,7 +1,4 @@
---
import:
- source: Alfresco/alfresco-build-tools:.travis.pre-commit.yml@v1.1.5
dist: focal
language: java
jdk: openjdk11
@@ -34,7 +31,6 @@ 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
@@ -49,23 +45,20 @@ 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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
@@ -73,25 +66,22 @@ 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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
@@ -107,29 +97,26 @@ jobs:
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
@@ -137,7 +124,6 @@ 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
@@ -145,7 +131,6 @@ 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
@@ -153,7 +138,6 @@ 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
@@ -161,16 +145,13 @@ 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"
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\]/
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.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'
@@ -178,16 +159,13 @@ 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"
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\]/
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: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'
@@ -195,7 +173,6 @@ 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'
@@ -203,7 +180,6 @@ 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'
@@ -211,7 +187,6 @@ 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'
@@ -219,7 +194,6 @@ 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'
@@ -227,7 +201,6 @@ 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:
@@ -236,23 +209,20 @@ 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\]/
if: commit_message !~ /\[skip db\]/
before_script:
- docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.3 postgres -c 'max_connections=300'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - Messaging tests"
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'
@@ -260,34 +230,30 @@ 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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.3
- docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.5.2
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'
@@ -295,7 +261,6 @@ 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:
@@ -304,7 +269,6 @@ 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
@@ -312,7 +276,6 @@ 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
@@ -320,7 +283,6 @@ 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
@@ -328,7 +290,6 @@ 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
@@ -336,7 +297,6 @@ 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
@@ -344,7 +304,6 @@ 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
@@ -352,7 +311,6 @@ 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
@@ -360,7 +318,6 @@ 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
@@ -368,44 +325,36 @@ 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:

View File

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

View File

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

View File

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

View File

@@ -26,11 +26,12 @@
*/
package org.alfresco.rest.core;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import lombok.Getter;
/**
* Extends {@link RestProperties} to be able to change/add properties
*
@@ -39,31 +40,23 @@ import org.springframework.context.annotation.PropertySource;
*/
@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;
}

View File

@@ -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,6 +43,8 @@ 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
*
@@ -51,8 +53,8 @@ import org.springframework.stereotype.Service;
*/
@Service
@Scope(value = "prototype")
public class RMRestWrapper {
public class RMRestWrapper
{
/** The class that wraps the ReST APIs from core. */
@Autowired
private RestWrapper restWrapper;
@@ -61,77 +63,92 @@ 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();
}
@@ -146,7 +163,8 @@ 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();
}
@@ -155,7 +173,8 @@ public class RMRestWrapper {
*
* @throws EmptyJsonResponseException If there is no response from the server.
*/
public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest) {
public RestHtmlResponse processHtmlResponse(RestRequest simpleRequest)
{
return restWrapper.processHtmlResponse(simpleRequest);
}
}

View File

@@ -29,6 +29,7 @@ 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;
@@ -62,10 +63,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")
@@ -73,149 +74,173 @@ 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();
}
}

View File

@@ -27,6 +27,7 @@
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;
@@ -34,22 +35,23 @@ 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;
}
@@ -60,7 +62,8 @@ 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;
}
@@ -68,7 +71,8 @@ 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);
@@ -81,8 +85,10 @@ public class SearchRequestBuilder extends SearchRequest {
* @param fields requested fields
* @return search request
*/
public SearchRequestBuilder setFieldsBuilder(List<String> fields) {
public SearchRequestBuilder setFieldsBuilder(List<String> fields)
{
super.setFields(fields);
return this;
}
}

View File

@@ -26,12 +26,13 @@
*/
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;
@@ -47,20 +48,19 @@ 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,21 +68,16 @@ 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);
@@ -94,25 +89,30 @@ 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();
}
}

View File

@@ -38,6 +38,7 @@ 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;
@@ -69,25 +70,20 @@ 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
@@ -96,8 +92,7 @@ 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";
/**
@@ -107,18 +102,20 @@ 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);
}
@@ -127,36 +124,35 @@ 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.
*
@@ -164,32 +160,26 @@ 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);
}
@@ -206,16 +196,9 @@ 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);
}
/**
@@ -226,18 +209,14 @@ 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;
@@ -251,25 +230,23 @@ 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();
@@ -283,29 +260,24 @@ 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);
}
}
@@ -317,29 +289,24 @@ 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);
}
}
@@ -352,30 +319,25 @@ 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);
}
}
@@ -390,24 +352,15 @@ 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);
}
/**
@@ -422,35 +375,23 @@ 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);
}
}
@@ -463,18 +404,12 @@ 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);
}
@@ -487,30 +422,25 @@ 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);
}
}
@@ -525,24 +455,15 @@ 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);
}
/**
@@ -555,24 +476,15 @@ 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);
}
/**
@@ -587,32 +499,24 @@ 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);
}
}
@@ -633,95 +537,84 @@ 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();
@@ -731,45 +624,39 @@ 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();
@@ -782,7 +669,8 @@ public abstract class BaseAPI {
* Used to set RM items properties
* including records, categories and folders
*/
public enum RMProperty {
public enum RMProperty
{
NAME,
TITLE,
CONTENT,
@@ -796,10 +684,11 @@ public abstract class BaseAPI {
FILE,
ORIGINATOR,
ORIGINATING_ORGANIZATION,
PUBLICATION_DATE,
PUBLICATION_DATE
}
public enum RETENTION_SCHEDULE {
public enum RETENTION_SCHEDULE
{
NAME,
DESCRIPTION,
RETENTION_AUTHORITY,
@@ -810,13 +699,14 @@ 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"),
@@ -825,19 +715,21 @@ 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,
@@ -851,12 +743,11 @@ 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;
@@ -871,15 +762,12 @@ 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;
@@ -895,23 +783,14 @@ 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));
}
/**
@@ -919,7 +798,8 @@ public abstract class BaseAPI {
*
* @return node ref spaces store
*/
public static String getNodeRefSpacesStore() {
public static String getNodeRefSpacesStore()
{
return NODE_REF_WORKSPACE_SPACES_STORE;
}
@@ -928,7 +808,8 @@ public abstract class BaseAPI {
*
* @return the File Plan path
*/
public static String getFilePlanPath() {
public static String getFilePlanPath()
{
return FILE_PLAN_PATH;
}
}

View File

@@ -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;
}
}

View File

@@ -26,9 +26,11 @@
*/
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;
@@ -45,42 +47,43 @@ 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;
}

View File

@@ -33,7 +33,8 @@ 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"),
@@ -53,7 +54,8 @@ public enum AuditEvents {
/** display name for the event audited */
public final String eventDisplayName;
AuditEvents(String event, String displayName) {
AuditEvents(String event, String displayName)
{
this.event = event;
this.eventDisplayName = displayName;
}

View File

@@ -26,8 +26,10 @@
*/
package org.alfresco.rest.rm.community.model.common;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -43,17 +45,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;
}

View File

@@ -27,6 +27,7 @@
package org.alfresco.rest.rm.community.model.common;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -43,5 +44,8 @@ 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
{
}

View File

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

View File

@@ -27,6 +27,7 @@
package org.alfresco.rest.rm.community.model.common;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -42,11 +43,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;
}

View File

@@ -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,7 +46,8 @@ public enum CustomDefinitions {
/**
* Private constructor.
*/
CustomDefinitions(String definition) {
CustomDefinitions(String definition)
{
this.definition = definition;
}
@@ -55,7 +56,8 @@ public enum CustomDefinitions {
*
* @return The value of custom reference.
*/
public String getDefinition() {
public String getDefinition()
{
return definition;
}
}

View File

@@ -26,16 +26,19 @@
*/
package org.alfresco.rest.rm.community.model.fileplan;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
/**
* POJO for file plan
@@ -49,40 +52,40 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -34,12 +34,14 @@ 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
@@ -52,29 +54,29 @@ import org.alfresco.utility.model.TestModel;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class FilePlanProperties extends TestModel {
public class FilePlanProperties extends TestModel
{
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
@JsonProperty(required = true, value = PROPERTIES_COMPONENT_ID)
@JsonProperty (required = true, value = PROPERTIES_COMPONENT_ID)
private String componentd;
@JsonProperty(required = true, value = PROPERTIES_ROOT_NODE_REF)
@JsonProperty (required = true, value = PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
/************************/
/** Optional parameters */
/************************/
@JsonProperty(PROPERTIES_COUNT)
@JsonProperty (PROPERTIES_COUNT)
private Integer count;
@JsonProperty(PROPERTIES_TITLE)
@JsonProperty (PROPERTIES_TITLE)
private String title;
@JsonProperty(PROPERTIES_DESCRIPTION)
@JsonProperty (PROPERTIES_DESCRIPTION)
private String description;
}

View File

@@ -32,8 +32,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-";

View File

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

View File

@@ -32,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,35 +44,24 @@ 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";
@@ -83,13 +72,10 @@ 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
@@ -102,53 +88,39 @@ 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";
@@ -163,6 +135,5 @@ 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";
}

View File

@@ -32,21 +32,17 @@ 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";
}

View File

@@ -28,6 +28,7 @@ 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;
@@ -44,12 +45,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;
}

View File

@@ -26,13 +26,10 @@
*/
package org.alfresco.rest.rm.community.model.record;
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 com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
import org.alfresco.rest.model.RestByUserModel;
@@ -40,6 +37,12 @@ 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
*
@@ -51,35 +54,35 @@ import org.alfresco.utility.model.TestModel;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class Record extends TestModel implements IRestModel<RestNodeModel> {
public static final String CONTENT_NODE_TYPE = "cm:content";
public class Record extends TestModel implements IRestModel<RestNodeModel>
{
public final static 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;
/************************/
@@ -104,20 +107,23 @@ 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;
}
}

View File

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

View File

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

View File

@@ -55,7 +55,6 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_AS_OF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_ACTION_NAME;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_AUTHORITY;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_EVENTS_ELIGIBLE;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_INSTRUCTIONS;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_DISPOSITION_PERIOD;
@@ -64,6 +63,7 @@ import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanCo
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RECORD_SEARCH_VITAL_RECORD_REVIEW_PERIOD_EXPRESSION;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RESOLUTION_UNIT;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_REVIEW_AS_OF;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_RMV_VERSIONED;
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentFields.PROPERTIES_ROOT_NODE_REF;
@@ -79,10 +79,12 @@ 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 com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -103,170 +105,162 @@ 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)
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)

View File

@@ -26,16 +26,19 @@
*/
package org.alfresco.rest.rm.community.model.recordcategory;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
/**
* POJO for record category
@@ -48,42 +51,42 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -26,16 +26,19 @@
*/
package org.alfresco.rest.rm.community.model.recordcategory;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
/**
* POJO for record category child
@@ -48,35 +51,35 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -26,16 +26,19 @@
*/
package org.alfresco.rest.rm.community.model.recordfolder;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
/**
* POJO for record folder
@@ -48,39 +51,39 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

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

View File

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

View File

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

View File

@@ -29,7 +29,8 @@ 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"),
@@ -53,11 +54,13 @@ public enum ActionsOnRule {
private String actionValue;
ActionsOnRule(String value) {
ActionsOnRule(String value)
{
this.actionValue = value;
}
public String getActionValue() {
public String getActionValue()
{
return actionValue;
}
}

View File

@@ -29,18 +29,20 @@ 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;
}
}

View File

@@ -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,124 +52,152 @@ public class RuleDefinition {
*
* @return the object
*/
public static RuleDefinition createNewRule() {
public static RuleDefinition createNewRule()
{
return new RuleDefinition();
}
public String getId() {
public String getId()
{
return id;
}
public RuleDefinition id(String id) {
public RuleDefinition id(String id)
{
this.id = id;
return this;
}
public String getTitle() {
public String getTitle()
{
return title;
}
public RuleDefinition title(String title) {
public RuleDefinition title(String title)
{
this.title = title;
return this;
}
public String getDescription() {
public String getDescription()
{
return description;
}
public RuleDefinition description(String description) {
public RuleDefinition description(String description)
{
this.description = description;
return this;
}
public boolean isDisabled() {
public boolean isDisabled()
{
return disabled;
}
public RuleDefinition disabled(boolean disabled) {
public RuleDefinition disabled(boolean disabled)
{
this.disabled = disabled;
return this;
}
public boolean isApplyToChildren() {
public boolean isApplyToChildren()
{
return applyToChildren;
}
public RuleDefinition applyToChildren(boolean applyToChildren) {
public RuleDefinition applyToChildren(boolean applyToChildren)
{
this.applyToChildren = applyToChildren;
return this;
}
public boolean getRunInBackground() {
public boolean getRunInBackground()
{
return runInBackground;
}
public RuleDefinition runInBackground(boolean runInBackground) {
public RuleDefinition runInBackground(boolean runInBackground)
{
this.runInBackground = runInBackground;
return this;
}
public String getRuleType() {
public String getRuleType()
{
return ruleType;
}
public RuleDefinition ruleType(String ruleType) {
public RuleDefinition ruleType(String ruleType)
{
this.ruleType = ruleType;
return this;
}
public String getPath() {
public String getPath()
{
return path;
}
public RuleDefinition path(String path) {
public RuleDefinition path(String path)
{
this.path = path;
return this;
}
public Boolean getCreateRecordPath() {
public Boolean getCreateRecordPath()
{
return createRecordPath;
}
public RuleDefinition createRecordPath(boolean createRecordPath) {
public RuleDefinition createRecordPath(boolean createRecordPath)
{
this.createRecordPath = createRecordPath;
return this;
}
public String getContentTitle() {
public String getContentTitle()
{
return contentTitle;
}
public RuleDefinition contentTitle(String contentTitle) {
public RuleDefinition contentTitle(String contentTitle)
{
this.contentTitle = contentTitle;
return this;
}
public String getContentDescription() {
public String getContentDescription()
{
return contentDescription;
}
public RuleDefinition contentDescription(String contentDescription) {
public RuleDefinition contentDescription(String contentDescription)
{
this.contentDescription = contentDescription;
return this;
}
public String getRejectReason() {
public String getRejectReason()
{
return rejectReason;
}
public RuleDefinition rejectReason(String rejectReason) {
public RuleDefinition rejectReason(String rejectReason)
{
this.rejectReason = rejectReason;
return this;
}
public List<String> getActions() {
public List<String> getActions()
{
return actions;
}
public RuleDefinition actions(List<String> actions) {
public RuleDefinition actions(List<String> actions)
{
this.actions = actions;
return this;
}
}

View File

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

View File

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

View File

@@ -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";
}

View File

@@ -27,15 +27,18 @@
package org.alfresco.rest.rm.community.model.transfer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
/**
* POJO for Transfer
@@ -48,33 +51,33 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -27,16 +27,19 @@
package org.alfresco.rest.rm.community.model.transfer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
/**
* POJO for transfer child
@@ -49,33 +52,33 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -34,5 +34,7 @@ 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>
{
}

View File

@@ -27,13 +27,15 @@
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
@@ -46,9 +48,8 @@ import org.alfresco.rest.core.RestModels;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferChildEntry
extends RestModels<Transfer, TransferChildEntry> {
public class TransferChildEntry extends RestModels<Transfer, TransferChildEntry>
{
@JsonProperty
private TransferChild entry;
}

View File

@@ -64,17 +64,19 @@ 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
@@ -87,130 +89,131 @@ import org.alfresco.utility.model.TestModel;
@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;
}

View File

@@ -34,5 +34,7 @@ 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>
{
}

View File

@@ -27,14 +27,16 @@
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
@@ -47,9 +49,8 @@ import org.alfresco.rest.rm.community.model.transfercontainer.TransferContainer;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferEntry
extends RestModels<TransferContainer, TransferEntry> {
public class TransferEntry extends RestModels<TransferContainer, TransferEntry>
{
@JsonProperty
private Transfer entry;
}

View File

@@ -27,21 +27,23 @@
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_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_PDF_INDICATOR;
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
@@ -54,29 +56,29 @@ import org.alfresco.utility.model.TestModel;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferProperties extends TestModel {
public class TransferProperties extends TestModel
{
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
/************************/
/** Optional parameters */
/************************/
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty(PROPERTIES_OWNER)
@JsonProperty (PROPERTIES_OWNER)
private Owner owner;
@JsonProperty(PROPERTIES_PDF_INDICATOR)
@JsonProperty (PROPERTIES_PDF_INDICATOR)
private Boolean pdfIndicator;
@JsonProperty(PROPERTIES_TRANSFER_LOCATION)
@JsonProperty (PROPERTIES_TRANSFER_LOCATION)
private String transferLocation;
@JsonProperty(PROPERTIES_ACCESSION_INDICATOR)
@JsonProperty (PROPERTIES_ACCESSION_INDICATOR)
private Boolean accessionIndicator;
}

View File

@@ -27,15 +27,18 @@
package org.alfresco.rest.rm.community.model.transfercontainer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.utility.model.TestModel;
/**
* POJO for Transfer Container
@@ -48,39 +51,39 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -31,13 +31,15 @@ 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
@@ -50,20 +52,21 @@ import org.alfresco.utility.model.TestModel;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class TransferContainerProperties extends TestModel {
public class TransferContainerProperties extends TestModel
{
/*************************/
/** Mandatory parameters */
/*************************/
@JsonProperty(required = true, value = PROPERTIES_IDENTIFIER)
@JsonProperty (required = true, value = PROPERTIES_IDENTIFIER)
private String identifier;
/************************/
/** Optional parameters */
/************************/
@JsonProperty(PROPERTIES_ROOT_NODE_REF)
@JsonProperty (PROPERTIES_ROOT_NODE_REF)
private String rootNodeRef;
@JsonProperty(PROPERTIES_COUNT)
@JsonProperty (PROPERTIES_COUNT)
private Integer count;
}

View File

@@ -26,16 +26,19 @@
*/
package org.alfresco.rest.rm.community.model.unfiledcontainer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
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
@@ -48,39 +51,39 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

@@ -26,18 +26,21 @@
*/
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
@@ -50,40 +53,40 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

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

View File

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

View File

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

View File

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

View File

@@ -26,17 +26,20 @@
*/
package org.alfresco.rest.rm.community.model.unfiledcontainer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import org.alfresco.rest.model.RestByUserModel;
import org.alfresco.rest.rm.community.model.common.Path;
import org.alfresco.rest.rm.community.model.record.RecordContent;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
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
@@ -49,33 +52,33 @@ import org.alfresco.utility.model.TestModel;
@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;
/************************/

View File

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

View File

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

View File

@@ -33,22 +33,23 @@ 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;
}
}

View File

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

View File

@@ -30,10 +30,11 @@ 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.RMModelRequest;
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.FilePlanAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.FilesAPI;
import org.alfresco.rest.rm.community.requests.gscore.api.RMSiteAPI;
@@ -53,25 +54,18 @@ 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);
@@ -82,8 +76,9 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link RMSiteAPI}
*/
public RMSiteAPI usingRMSite() {
return new RMSiteAPI(getRmRestWrapper());
public RMSiteAPI usingRMSite()
{
return new RMSiteAPI(getRmRestWrapper());
}
/**
@@ -91,7 +86,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link FilePlanAPI}
*/
public FilePlanAPI usingFilePlans() {
public FilePlanAPI usingFilePlans()
{
return new FilePlanAPI(getRmRestWrapper());
}
@@ -100,7 +96,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link RecordCategoryAPI}
*/
public RecordCategoryAPI usingRecordCategory() {
public RecordCategoryAPI usingRecordCategory()
{
return new RecordCategoryAPI(getRmRestWrapper());
}
@@ -109,7 +106,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link RecordFolderAPI}
*/
public RecordFolderAPI usingRecordFolder() {
public RecordFolderAPI usingRecordFolder()
{
return new RecordFolderAPI(getRmRestWrapper());
}
@@ -118,7 +116,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link RecordsAPI}
*/
public RecordsAPI usingRecords() {
public RecordsAPI usingRecords()
{
return new RecordsAPI(getRmRestWrapper());
}
@@ -127,7 +126,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link FilesAPI}
*/
public FilesAPI usingFiles() {
public FilesAPI usingFiles()
{
return new FilesAPI(getRmRestWrapper());
}
@@ -136,7 +136,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link TransferContainerAPI}
*/
public TransferContainerAPI usingTransferContainer() {
public TransferContainerAPI usingTransferContainer()
{
return new TransferContainerAPI(getRmRestWrapper());
}
@@ -145,7 +146,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link TransferAPI}
*/
public TransferAPI usingTransfer() {
public TransferAPI usingTransfer()
{
return new TransferAPI(getRmRestWrapper());
}
@@ -154,7 +156,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link UnfiledContainerAPI}
*/
public UnfiledContainerAPI usingUnfiledContainers() {
public UnfiledContainerAPI usingUnfiledContainers()
{
return new UnfiledContainerAPI(getRmRestWrapper());
}
@@ -163,7 +166,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link UnfiledRecordFolderAPI}
*/
public UnfiledRecordFolderAPI usingUnfiledRecordFolder() {
public UnfiledRecordFolderAPI usingUnfiledRecordFolder()
{
return new UnfiledRecordFolderAPI(getRmRestWrapper());
}
@@ -172,7 +176,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link RMUserAPI}
*/
public RMUserAPI usingRMUser() {
public RMUserAPI usingRMUser()
{
return new RMUserAPI(getRmRestWrapper());
}
@@ -181,7 +186,8 @@ public class GSCoreAPI extends RMModelRequest {
*
* @return {@link ActionsExecutionAPI}
*/
public ActionsExecutionAPI usingActionsExecutionsAPI() {
public ActionsExecutionAPI usingActionsExecutionsAPI()
{
return new ActionsExecutionAPI(getRmRestWrapper());
}
}

View File

@@ -27,6 +27,7 @@
package org.alfresco.rest.rm.community.requests.gscore.api;
import com.google.common.collect.ImmutableMap;
import lombok.SneakyThrows;
import org.alfresco.rest.core.RMRestWrapper;
import org.alfresco.rest.rm.community.model.rules.ActionsOnRule;
@@ -40,12 +41,13 @@ 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);
}
@@ -56,18 +58,11 @@ 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));
}
/**
@@ -76,17 +71,13 @@ 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
*
@@ -94,18 +85,11 @@ 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));
}
/**
@@ -114,15 +98,10 @@ 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);
}
/**
@@ -132,14 +111,10 @@ 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);
}
/**
@@ -150,20 +125,10 @@ 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)));
}
}

View File

@@ -49,21 +49,23 @@ 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);
@@ -83,25 +85,23 @@ 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,31 +120,23 @@ 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);
@@ -168,31 +160,25 @@ 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);
@@ -214,24 +200,17 @@ 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));
}
}

View File

@@ -40,14 +40,15 @@ 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);
}
@@ -58,18 +59,16 @@ public class FilesAPI extends RMModelRequest<FilesAPI> {
* @return The {@link Record} for created record
* @throws RuntimeException for malformed JSON responses
*/
public Record declareAsRecord(String fileId) {
public Record declareAsRecord(String fileId)
{
mandatoryString("fileId", fileId);
return getRmRestWrapper()
.processModel(
Record.class,
simpleRequest(
POST,
"/files/{fileId}/declare?{parameters}",
fileId,
getRmRestWrapper().getParameters()
)
);
return getRmRestWrapper().processModel(Record.class, simpleRequest(
POST,
"/files/{fileId}/declare?{parameters}",
fileId,
getRmRestWrapper().getParameters()
));
}
}

View File

@@ -46,14 +46,15 @@ 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);
}
@@ -69,9 +70,12 @@ 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"
));
}
/**
@@ -87,14 +91,15 @@ 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"
));
}
/**
@@ -108,9 +113,12 @@ 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"
));
}
/**
@@ -127,14 +135,15 @@ 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"
));
}
/**
@@ -149,10 +158,9 @@ 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()));
}
}

View File

@@ -26,16 +26,18 @@
*/
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;
@@ -54,12 +56,13 @@ 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);
}
@@ -67,7 +70,8 @@ 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();
@@ -85,7 +89,8 @@ 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
@@ -93,29 +98,22 @@ 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()));
}
/**
@@ -124,46 +122,40 @@ 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()));
}
/**
@@ -173,45 +165,41 @@ 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
*
@@ -220,11 +208,8 @@ 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();
@@ -247,9 +232,8 @@ 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();

View File

@@ -49,14 +49,15 @@ 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);
}
@@ -73,23 +74,22 @@ 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,39 +109,27 @@ 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);
}
/**
@@ -161,33 +149,25 @@ 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);
@@ -206,39 +186,27 @@ 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);
}
/**
@@ -258,27 +226,17 @@ 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
));
}
}

View File

@@ -39,13 +39,15 @@ 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;
@@ -59,14 +61,15 @@ 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);
}
@@ -83,23 +86,22 @@ 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);
@@ -119,31 +121,23 @@ 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);
@@ -167,33 +161,25 @@ 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);
@@ -212,28 +198,23 @@ 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);
@@ -249,16 +230,14 @@ 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");
}
@@ -268,34 +247,22 @@ 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);
@@ -317,24 +284,17 @@ public class RecordFolderAPI extends RMModelRequest {
* <li>model integrity exception, including node name with invalid characters</li>
* </ul>
*/
public Record createRecord(
Record recordModel,
String recordFolderId,
String parameters
) {
public Record createRecord(Record recordModel, String recordFolderId, String parameters)
{
mandatoryObject("recordModel", recordModel);
mandatoryString("recordFolderId", recordFolderId);
return getRmRestWrapper()
.processModel(
Record.class,
requestWithBody(
POST,
toJson(recordModel),
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters
)
);
return getRmRestWrapper().processModel(Record.class, requestWithBody(
POST,
toJson(recordModel),
"record-folders/{recordFolderId}/records?{parameters}",
recordFolderId,
parameters
));
}
}

View File

@@ -37,24 +37,27 @@ 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);
}
@@ -71,14 +74,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();
}
/**
@@ -98,7 +101,8 @@ 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);
@@ -122,31 +126,25 @@ 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);
@@ -167,21 +165,17 @@ 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.
*
@@ -195,19 +189,22 @@ 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);
@@ -227,25 +224,23 @@ 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);
@@ -269,24 +264,17 @@ 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
));
}
}

View File

@@ -43,19 +43,21 @@ 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);
@@ -75,25 +77,22 @@ 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);
@@ -112,21 +111,15 @@ 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
));
}
}

View File

@@ -47,19 +47,21 @@ 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);
@@ -79,39 +81,27 @@ 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);
}
/**
@@ -131,31 +121,25 @@ 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);
@@ -174,21 +158,15 @@ 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
));
}
}

View File

@@ -38,13 +38,16 @@ 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;
@@ -59,19 +62,21 @@ 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);
@@ -91,30 +96,23 @@ 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);
@@ -133,42 +131,27 @@ 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);
}
/**
@@ -188,28 +171,18 @@ 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
));
}
/**
@@ -221,22 +194,14 @@ 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");
}
@@ -246,57 +211,36 @@ 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);
}
/**
@@ -316,24 +260,18 @@ 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
));
}
}

View File

@@ -39,13 +39,15 @@ 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;
@@ -59,21 +61,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);
@@ -93,30 +95,23 @@ 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);
@@ -135,42 +130,27 @@ 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);
}
/**
@@ -190,28 +170,18 @@ 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
));
}
/**
@@ -223,22 +193,14 @@ 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");
}
@@ -248,57 +210,36 @@ 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);
}
/**
@@ -318,25 +259,18 @@ 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
));
}
/**
@@ -352,16 +286,15 @@ 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
));
}
}

View File

@@ -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();
}
}

View File

@@ -29,6 +29,11 @@ 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;
@@ -36,10 +41,7 @@ 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;
@@ -57,31 +59,30 @@ 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();
}
}
@@ -92,34 +93,31 @@ 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;
@@ -130,22 +128,19 @@ 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;
}
}
@@ -156,22 +151,14 @@ 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)));
});
}
/**
@@ -180,15 +167,12 @@ public class DockerHelper {
* @param imageName - the name of the image used by container
* @return the containers
*/
private List<Container> findContainersByImageName(String imageName) {
final List<Container> containers = getDockerClient()
.listContainersCmd()
.withShowAll(true)
.exec();
private List<Container> findContainersByImageName(String imageName)
{
final List<Container> containers = getDockerClient().listContainersCmd().withShowAll(true).exec();
return containers
.stream()
.filter(container -> container.getImage().contains(imageName))
.collect(Collectors.toList());
return containers.stream()
.filter(container -> container.getImage().contains(imageName))
.collect(Collectors.toList());
}
}

View File

@@ -27,6 +27,7 @@
package org.alfresco.rest.rm.community.util;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import org.alfresco.rest.rm.community.model.record.RecordProperties;
/**
@@ -37,8 +38,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

View File

@@ -34,9 +34,10 @@ 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
}
@@ -47,14 +48,11 @@ 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.");
}
}
@@ -65,14 +63,11 @@ public class ParameterCheck {
* @param object The value of the parameter to check
* @throws IllegalArgumentException Throws an exception if the given value is null
*/
public static void mandatoryObject(
final String paramName,
final Object object
) throws IllegalArgumentException {
if (object == null) {
throw new IllegalArgumentException(
"'" + paramName + "' is a mandatory parameter."
);
public static void mandatoryObject(final String paramName, final Object object) throws IllegalArgumentException
{
if (object == null)
{
throw new IllegalArgumentException("'" + paramName + "' is a mandatory parameter.");
}
}
}

View File

@@ -28,12 +28,14 @@ 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;
@@ -45,22 +47,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);
@@ -75,16 +77,14 @@ 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,11 +94,12 @@ 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();
}
}
@@ -111,16 +112,20 @@ 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);
}
@@ -135,25 +140,27 @@ 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;
}
}

View File

@@ -26,11 +26,13 @@
*/
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;
/**
@@ -39,8 +41,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
@@ -49,18 +51,9 @@ 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());
}
}

View File

@@ -27,6 +27,7 @@
package org.alfresco.rest.rm.community.util;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildProperties;
/**
@@ -37,8 +38,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

View File

@@ -28,6 +28,7 @@ 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;
@@ -43,15 +44,12 @@ 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.
@@ -65,12 +63,8 @@ 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);
}
@@ -87,22 +81,12 @@ 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));
}
}

View File

@@ -29,6 +29,7 @@ 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;
@@ -45,26 +46,22 @@ 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
@@ -76,43 +73,39 @@ 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;
@@ -129,48 +122,23 @@ 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);
}
}

View File

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

View File

@@ -33,6 +33,7 @@ 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;
@@ -52,14 +53,13 @@ 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,13 +81,8 @@ 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);
}
@@ -102,37 +97,19 @@ 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);
}
/**
@@ -145,32 +122,22 @@ 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);
}
@@ -184,13 +151,9 @@ 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);
}
/**
@@ -201,23 +164,13 @@ 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);
}
/**
@@ -228,12 +181,9 @@ 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));
}
/**
@@ -245,18 +195,9 @@ 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));
}
/**
@@ -268,29 +209,12 @@ 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);
}
/**
@@ -302,24 +226,11 @@ 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);
}
/**
@@ -331,20 +242,11 @@ 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);
}
@@ -355,18 +257,12 @@ 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);
@@ -382,18 +278,9 @@ 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));
}
/**
@@ -405,29 +292,12 @@ 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);
}
/**
@@ -440,24 +310,11 @@ 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);
}
/**
@@ -469,20 +326,11 @@ 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);
}
@@ -497,35 +345,15 @@ 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);
}

View File

@@ -25,8 +25,8 @@
* #L%
*/
package org.alfresco.rest.v0;
import java.text.MessageFormat;
import org.alfresco.dataprep.AlfrescoHttpClient;
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
import org.alfresco.rest.core.v0.BaseAPI;
@@ -38,41 +38,37 @@ 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);
}
}

View File

@@ -29,6 +29,7 @@ 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;
@@ -49,13 +50,12 @@ 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,17 +68,10 @@ 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
@@ -87,13 +80,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);
@@ -108,9 +101,11 @@ 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"
@@ -127,19 +122,17 @@ 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;

View File

@@ -32,6 +32,7 @@ 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;
@@ -48,12 +49,10 @@ 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";
@@ -68,32 +67,19 @@ 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);
}
@@ -105,18 +91,14 @@ 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);
}
}

View File

@@ -41,6 +41,7 @@ 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;
@@ -70,21 +71,17 @@ 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
@@ -96,7 +93,6 @@ public class RMRolesAndActionsAPI extends BaseAPI {
@Autowired
private DataUserAIS dataUser;
/**
* Get all the configured RM roles.
*
@@ -104,17 +100,11 @@ 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();
}
@@ -126,25 +116,12 @@ 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();
}
/**
@@ -155,11 +132,8 @@ 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);
@@ -178,20 +152,10 @@ 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);
}
/**
@@ -203,21 +167,10 @@ 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);
}
/**
@@ -227,34 +180,27 @@ 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);
}
@@ -264,37 +210,33 @@ 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());
}
/**
@@ -306,68 +248,51 @@ 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);
}
/**
@@ -379,25 +304,18 @@ 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.");
}
/**
@@ -408,15 +326,10 @@ 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
*
@@ -425,13 +338,9 @@ 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);
}
@@ -443,13 +352,9 @@ 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);
}
@@ -463,20 +368,15 @@ 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;
@@ -491,36 +391,16 @@ 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);
}
/**
@@ -533,36 +413,17 @@ 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);
}
/**
@@ -574,26 +435,11 @@ 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);
}
/**
@@ -605,32 +451,14 @@ 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());
}
/**
@@ -641,62 +469,18 @@ 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));
}
}

View File

@@ -31,6 +31,7 @@ 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;
@@ -45,17 +46,13 @@ import org.springframework.stereotype.Component;
* @since 2.5
*/
@Component
public class RecordCategoriesAPI extends BaseAPI {
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";
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
@@ -65,26 +62,15 @@ 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);
}
/**
@@ -95,22 +81,11 @@ 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(), "");
}
/**
@@ -121,45 +96,15 @@ 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));
}
/**
@@ -170,79 +115,26 @@ 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));
}
/**
@@ -253,11 +145,8 @@ 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);
}
@@ -269,17 +158,9 @@ 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);
}
/**
@@ -291,12 +172,8 @@ 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);
}
@@ -307,19 +184,11 @@ 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