mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			23.1.0.195
			...
			APPS-2000_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					4c406c1301 | ||
| 
						 | 
					32bdf67969 | ||
| 
						 | 
					b5076c6fdd | ||
| 
						 | 
					78359d396f | ||
| 
						 | 
					bcba412d73 | 
							
								
								
									
										34
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -33,7 +33,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -52,7 +52,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      ((github.ref_name == 'master' || startsWith(github.ref_name, 'release/')) && github.event_name != 'pull_request') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -76,7 +76,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: Alfresco/ya-pmd-scan@v2.0.0
 | 
			
		||||
      - uses: Alfresco/ya-pmd-scan@v1.0.0
 | 
			
		||||
        with:
 | 
			
		||||
          fail-on-new-issues: "false"
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +87,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -108,7 +108,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -153,7 +153,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -183,7 +183,7 @@ jobs:
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -209,7 +209,7 @@ jobs:
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -234,7 +234,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip db]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -259,7 +259,7 @@ jobs:
 | 
			
		||||
      contains(github.event.head_commit.message, '[latest db]') ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[db]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -282,7 +282,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -303,7 +303,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -372,7 +372,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tas]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[tas]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -439,7 +439,7 @@ jobs:
 | 
			
		||||
    if: >
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip repo]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
@@ -462,7 +462,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip ags]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[ags]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -493,7 +493,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip ags]')) ||
 | 
			
		||||
      contains(github.event.head_commit.message, '[ags on MySQL]')) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
@@ -524,7 +524,7 @@ jobs:
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip ags]') && !contains(github.event.head_commit.message, '[skip tas]')) ||
 | 
			
		||||
      (contains(github.event.head_commit.message, '[ags]') && contains(github.event.head_commit.message, '[tas]'))) &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force')
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    env:
 | 
			
		||||
      REQUIRES_LOCAL_IMAGES: true
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <build>
 | 
			
		||||
@@ -83,24 +83,6 @@
 | 
			
		||||
         <groupId>com.github.docker-java</groupId>
 | 
			
		||||
         <artifactId>docker-java</artifactId>
 | 
			
		||||
         <version>3.3.2</version>
 | 
			
		||||
         <exclusions>
 | 
			
		||||
            <exclusion>
 | 
			
		||||
               <groupId>org.bouncycastle</groupId>
 | 
			
		||||
               <artifactId>bcprov-jdk15on</artifactId>
 | 
			
		||||
            </exclusion>
 | 
			
		||||
            <exclusion>
 | 
			
		||||
               <groupId>org.bouncycastle</groupId>
 | 
			
		||||
               <artifactId>bcpkix-jdk15on</artifactId>
 | 
			
		||||
            </exclusion>
 | 
			
		||||
         </exclusions>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.bouncycastle</groupId>
 | 
			
		||||
         <artifactId>bcprov-jdk15to18</artifactId>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.bouncycastle</groupId>
 | 
			
		||||
         <artifactId>bcpkix-jdk15to18</artifactId>
 | 
			
		||||
      </dependency>
 | 
			
		||||
   </dependencies>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ package org.alfresco.rest.core;
 | 
			
		||||
 | 
			
		||||
import static lombok.AccessLevel.PROTECTED;
 | 
			
		||||
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
 | 
			
		||||
import lombok.Getter;
 | 
			
		||||
import lombok.Setter;
 | 
			
		||||
 
 | 
			
		||||
@@ -50,6 +50,7 @@ import org.apache.http.HttpResponse;
 | 
			
		||||
import org.apache.http.HttpStatus;
 | 
			
		||||
import org.apache.http.util.EntityUtils;
 | 
			
		||||
import org.json.JSONObject;
 | 
			
		||||
import org.junit.Ignore;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.testng.AssertJUnit;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
@@ -64,9 +65,7 @@ import java.util.List;
 | 
			
		||||
import static org.alfresco.rest.core.v0.BaseAPI.NODE_REF_WORKSPACE_SPACES_STORE;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentAlias.FILE_PLAN_ALIAS;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentAspects.CUT_OFF_ASPECT;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.recordcategory.RetentionPeriodProperty.CREATED_DATE;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.recordcategory.RetentionPeriodProperty.DATE_FILED;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.recordcategory.RetentionPeriodProperty.CUT_OFF_DATE;
 | 
			
		||||
import static org.alfresco.rest.rm.community.model.recordcategory.RetentionPeriodProperty.*;
 | 
			
		||||
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
 | 
			
		||||
import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
import static org.junit.Assert.assertNull;
 | 
			
		||||
@@ -85,25 +84,28 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private RecordFoldersAPI recordFoldersAPI;
 | 
			
		||||
    private final static  String TEST_PREFIX = generateTestPrefix(DispositionScheduleLinkedRecordsTest.class);
 | 
			
		||||
    private static final String CATEGORY_RM_3077 = TEST_PREFIX + "RM-3077_manager_sees_me";
 | 
			
		||||
    private static final String COPY_CATEGORY_RM_3077 = "Copy_of_" + CATEGORY_RM_3077;
 | 
			
		||||
    private static final String FOLDER_RM_3077 = "RM-3077_folder_"+ CATEGORY_RM_3077;
 | 
			
		||||
    private static final String COPY_FOLDER_RM_3077 = "Copy_of_" + FOLDER_RM_3077;
 | 
			
		||||
    private static final String FIRST_CATEGORY_RM_3060 = TEST_PREFIX + "RM-3060_category_record";
 | 
			
		||||
    private static final String SECOND_CATEGORY_RM_3060 = "Copy_of_" + FIRST_CATEGORY_RM_3060;
 | 
			
		||||
    private static final String FIRST_FOLDER_RM_3060 = TEST_PREFIX + "RM-3060_folder";
 | 
			
		||||
    private static final String SECOND_FOLDER_RM_3060 = TEST_PREFIX + "RM-3060_disposition_on_Record_Level";
 | 
			
		||||
    private static final String ELECTRONIC_RECORD_RM_3060 = TEST_PREFIX + "RM-3060_electronic_1_record";
 | 
			
		||||
    private static final String NON_ELECTRONIC_RECORD_RM_3060 = TEST_PREFIX + "RM-3060_non-electronic_record";
 | 
			
		||||
    private static final String FIRST_CATEGORY_RM_1622 = TEST_PREFIX + "RM-1622_category_record";
 | 
			
		||||
    private static final String SECOND_CATEGORY_RM_1622 = "Copy_of_" + FIRST_CATEGORY_RM_1622;
 | 
			
		||||
    private static final String FIRST_FOLDER_RM_1622 = TEST_PREFIX + "RM-1622_folder";
 | 
			
		||||
    private static final String ELECTRONIC_RECORD_RM_1622 = TEST_PREFIX + "RM-1622_electronic_1_record";
 | 
			
		||||
    private static final String SECOND_FOLDER_RM_1622 = TEST_PREFIX + "RM-1622_disposition_on_Record_Level";
 | 
			
		||||
    private RecordCategory Category1;
 | 
			
		||||
    private RecordCategoryChild CopyCatFolder,folder1,CatFolder,folder2;
 | 
			
		||||
    private static final String categoryRM3077 = TEST_PREFIX + "RM-3077_manager_sees_me";
 | 
			
		||||
    private static final String copyCategoryRM3077 = "Copy_of_" + categoryRM3077;
 | 
			
		||||
    private static final String folderRM3077 = "RM-3077_folder_"+ categoryRM3077;
 | 
			
		||||
    private static final String copyFolderRM3077 = "Copy_of_" + folderRM3077;
 | 
			
		||||
    private final String folder = TEST_PREFIX + "RM-2937 folder ghosting";
 | 
			
		||||
    private static final String firstCategoryRM3060 = TEST_PREFIX + "RM-3060_category_record";
 | 
			
		||||
    private static final String secondCategoryRM3060 = "Copy_of_" + firstCategoryRM3060;
 | 
			
		||||
    private static final String firstFolderRM3060 = TEST_PREFIX + "RM-3060_folder";
 | 
			
		||||
    private static final String secondFolderRM3060 = TEST_PREFIX + "RM-3060_disposition_on_Record_Level";
 | 
			
		||||
    private static final String electronicRecordRM3060 = TEST_PREFIX + "RM-3060_electronic_1_record";
 | 
			
		||||
    private static final String nonElectronicRecordRM3060 = TEST_PREFIX + "RM-3060_non-electronic_record";
 | 
			
		||||
    private static final String firstCategoryRM1622 = TEST_PREFIX + "RM-1622_category_record";
 | 
			
		||||
    private static final String secondCategoryRM1622 = "Copy_of_" + firstCategoryRM1622;;
 | 
			
		||||
    private static final String firstFolderRM1622 = TEST_PREFIX + "RM-1622_folder";
 | 
			
		||||
    private static final String electronicRecordRM1622 = TEST_PREFIX + "RM-1622_electronic_1_record";
 | 
			
		||||
    private static final String secondFolderRM1622 = TEST_PREFIX + "RM-1622_disposition_on_Record_Level";
 | 
			
		||||
    private static final String TRANSFER_LOCATION = TEST_PREFIX + "RM-3060_transferred_records";
 | 
			
		||||
    public static final String TRANSFER_TYPE = "rma:transferred";
 | 
			
		||||
    private FilePlan filePlanModel;
 | 
			
		||||
    private UserModel rmAdmin;
 | 
			
		||||
    private UserModel rmAdmin, rmManager;
 | 
			
		||||
 | 
			
		||||
    @BeforeClass(alwaysRun = true)
 | 
			
		||||
    public void setupDispositionScheduleLinkedRecordsTest() {
 | 
			
		||||
@@ -118,12 +120,11 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
            UserRoles.ROLE_RM_ADMIN.roleId);
 | 
			
		||||
 | 
			
		||||
        // create "rm Manager" user if it does not exist and assign it to RM Administrator role
 | 
			
		||||
        UserModel rmManager = getDataUser().createRandomTestUser();
 | 
			
		||||
        rmManager = getDataUser().createRandomTestUser();
 | 
			
		||||
        rmRolesAndActionsAPI.assignRoleToUser(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), rmManager.getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(),rmManager.getUsername(),
 | 
			
		||||
            UserRoles.ROLE_RM_MANAGER.roleId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Disposition Schedule on Record Folder with linked records test
 | 
			
		||||
     * <p>
 | 
			
		||||
@@ -135,202 +136,194 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
     * <p>
 | 
			
		||||
     * <p/> TestRail Test C775<p/>
 | 
			
		||||
     **/
 | 
			
		||||
    @Test
 | 
			
		||||
    @AlfrescoTest(jira = "RM-1622")
 | 
			
		||||
    public void dispositionScheduleLinkedRecords() throws UnsupportedEncodingException {
 | 
			
		||||
        STEP("Create record category");
 | 
			
		||||
        RecordCategory category1 = createRootCategory(CATEGORY_RM_3077);
 | 
			
		||||
 | 
			
		||||
        //create retention schedule
 | 
			
		||||
        dispositionScheduleService.createCategoryRetentionSchedule(category1.getName(), false);
 | 
			
		||||
 | 
			
		||||
        // add cut off step
 | 
			
		||||
        dispositionScheduleService.addCutOffAfterPeriodStep(category1.getName(), "day|2", CREATED_DATE);
 | 
			
		||||
 | 
			
		||||
        //create a copy of the category recordsCategory
 | 
			
		||||
        String copyCategoryId = copyCategory(getAdminUser(), category1.getId(), COPY_CATEGORY_RM_3077);
 | 
			
		||||
 | 
			
		||||
        // create folders in both categories
 | 
			
		||||
        RecordCategoryChild catFolder = createRecordFolder(category1.getId(), FOLDER_RM_3077);
 | 
			
		||||
        createRecordFolder(copyCategoryId, COPY_FOLDER_RM_3077);
 | 
			
		||||
 | 
			
		||||
        // create record  files
 | 
			
		||||
        String electronicRecord = "RM-2801 electronic record";
 | 
			
		||||
        Record elRecord = createElectronicRecord(catFolder.getId(), electronicRecord);
 | 
			
		||||
        String elRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), catFolder.getName(), electronicRecord);
 | 
			
		||||
 | 
			
		||||
        String nonElectronicRecord = "RM-2801 non-electronic record";
 | 
			
		||||
        Record nonElRecord = createNonElectronicRecord(catFolder.getId(), nonElectronicRecord);
 | 
			
		||||
        String nonElRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), catFolder.getName(), nonElectronicRecord);
 | 
			
		||||
 | 
			
		||||
        // link the records to copy folder, then complete them
 | 
			
		||||
        List<String> recordLists = new ArrayList<>();
 | 
			
		||||
        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + elRecord.getId());
 | 
			
		||||
        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + nonElRecord.getId());
 | 
			
		||||
 | 
			
		||||
        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK, COPY_CATEGORY_RM_3077 + "/" +
 | 
			
		||||
                COPY_FOLDER_RM_3077, recordLists);
 | 
			
		||||
        recordsAPI.completeRecord(rmAdmin.getUsername(), rmAdmin.getPassword(), elRecordFullName);
 | 
			
		||||
        recordsAPI.completeRecord(rmAdmin.getUsername(), rmAdmin.getPassword(), nonElRecordFullName);
 | 
			
		||||
 | 
			
		||||
        // edit disposition date
 | 
			
		||||
        recordFoldersAPI.postFolderAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(), catFolder.getName());
 | 
			
		||||
 | 
			
		||||
        // cut off the Folder
 | 
			
		||||
        recordFoldersAPI.postFolderAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"), catFolder.getName());
 | 
			
		||||
 | 
			
		||||
        // Verify the Content
 | 
			
		||||
        Node electronicNode = getNode(elRecord.getId());
 | 
			
		||||
        assertTrue("The content of " + electronicRecord + " is available",
 | 
			
		||||
            StringUtils.isEmpty(electronicNode.getNodeContent().getResponse().getBody().asString()));
 | 
			
		||||
 | 
			
		||||
        // verify the Properties
 | 
			
		||||
        AssertJUnit.assertNull("The properties are present even after cutting off the record.", elRecord.getProperties().getTitle());
 | 
			
		||||
 | 
			
		||||
        // delete precondition
 | 
			
		||||
        deleteRecordCategory(category1.getId());
 | 
			
		||||
        deleteRecordCategory(copyCategoryId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Test covering RM-3060
 | 
			
		||||
     * Check the disposition steps for a record can be executed
 | 
			
		||||
     * When the record is linked to a folder with the same disposition schedule
 | 
			
		||||
     * */
 | 
			
		||||
    @Test
 | 
			
		||||
    @AlfrescoTest (jira = "RM-3060")
 | 
			
		||||
    public void sameDispositionScheduleLinkedRecords() throws UnsupportedEncodingException {
 | 
			
		||||
 | 
			
		||||
        // create a category with retention applied on records level
 | 
			
		||||
        RecordCategory recordCategory = getRestAPIFactory().getFilePlansAPI(rmAdmin)
 | 
			
		||||
            .createRootRecordCategory(RecordCategory.builder().name(FIRST_CATEGORY_RM_3060).build(),
 | 
			
		||||
                RecordCategory.DEFAULT_FILE_PLAN_ALIAS);
 | 
			
		||||
        dispositionScheduleService.createCategoryRetentionSchedule(FIRST_CATEGORY_RM_3060, true);
 | 
			
		||||
        dispositionScheduleService.addCutOffAfterPeriodStep(FIRST_CATEGORY_RM_3060, "week|1", DATE_FILED);
 | 
			
		||||
        dispositionScheduleService.addTransferAfterEventStep(
 | 
			
		||||
            FIRST_CATEGORY_RM_3060, TRANSFER_LOCATION, RMEvents.CASE_CLOSED.getEventName());
 | 
			
		||||
        dispositionScheduleService.addDestroyWithoutGhostingAfterPeriodStep(FIRST_CATEGORY_RM_3060, "week|1", CUT_OFF_DATE);
 | 
			
		||||
 | 
			
		||||
        // make a copy of the category created
 | 
			
		||||
        String categorySecondId = copyCategory(getAdminUser(), recordCategory.getId(), SECOND_CATEGORY_RM_3060);
 | 
			
		||||
 | 
			
		||||
        // create a folder on the category firstCategoryRM3060 with a complete electronic record
 | 
			
		||||
        RecordCategoryChild firstFolderRecordCategoryChild = createRecordFolder(recordCategory.getId(),
 | 
			
		||||
            FIRST_FOLDER_RM_3060);
 | 
			
		||||
        Record firstElectronicRecord = createElectronicRecord(firstFolderRecordCategoryChild.getId(),
 | 
			
		||||
            ELECTRONIC_RECORD_RM_3060);
 | 
			
		||||
 | 
			
		||||
        String elRecordFullName = recordsAPI.getRecordFullName(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), FIRST_FOLDER_RM_3060, ELECTRONIC_RECORD_RM_3060);
 | 
			
		||||
        String elRecordNameNodeRef = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + FIRST_CATEGORY_RM_3060 + "/" + FIRST_FOLDER_RM_3060);
 | 
			
		||||
 | 
			
		||||
        recordsAPI.completeRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), elRecordFullName);
 | 
			
		||||
 | 
			
		||||
        // create a folder on the category secondCategoryRM3060 with a non electronic record
 | 
			
		||||
        RecordCategoryChild secondFolderRecordCategoryChild = createRecordFolder(categorySecondId,
 | 
			
		||||
            SECOND_FOLDER_RM_3060);
 | 
			
		||||
        Record secondNonElectronicRecord = createNonElectronicRecord(secondFolderRecordCategoryChild.getId(),
 | 
			
		||||
            NON_ELECTRONIC_RECORD_RM_3060);
 | 
			
		||||
 | 
			
		||||
        // link the nonElectronicRecordRM3060 to firstFolderRM3060
 | 
			
		||||
        List<String> recordLists = new ArrayList<>();
 | 
			
		||||
        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + secondNonElectronicRecord.getId());
 | 
			
		||||
 | 
			
		||||
        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK, SECOND_CATEGORY_RM_3060 + "/" +
 | 
			
		||||
                SECOND_FOLDER_RM_3060, recordLists);
 | 
			
		||||
        String nonElRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(),
 | 
			
		||||
            SECOND_FOLDER_RM_3060, secondNonElectronicRecord.getName());
 | 
			
		||||
        String nonElRecordNameNodeRef = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), nonElRecordFullName, "/" + SECOND_CATEGORY_RM_3060
 | 
			
		||||
                + "/" + SECOND_FOLDER_RM_3060);
 | 
			
		||||
 | 
			
		||||
        // complete records and cut them off
 | 
			
		||||
        recordsAPI.completeRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), nonElRecordFullName);
 | 
			
		||||
 | 
			
		||||
        // edit the disposition date
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(),nonElRecordNameNodeRef);
 | 
			
		||||
 | 
			
		||||
        // cut off the record
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"),nonElRecordNameNodeRef);
 | 
			
		||||
 | 
			
		||||
        //check the record is cut off
 | 
			
		||||
        AssertJUnit.assertTrue("The file " + NON_ELECTRONIC_RECORD_RM_3060 + " has not been successfully cut off.", getRestAPIFactory().getRecordsAPI().getRecord(secondNonElectronicRecord.getId()).getAspectNames().contains(CUT_OFF_ASPECT));
 | 
			
		||||
 | 
			
		||||
        // link the electronic record to secondFolderRM3060
 | 
			
		||||
        recordLists.clear();
 | 
			
		||||
        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + secondNonElectronicRecord.getId());
 | 
			
		||||
        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK, SECOND_CATEGORY_RM_3060 + "/" +
 | 
			
		||||
                SECOND_FOLDER_RM_3060, recordLists);
 | 
			
		||||
 | 
			
		||||
        // edit the disposition date and cut off the record
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(),elRecordNameNodeRef);
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"),elRecordNameNodeRef);
 | 
			
		||||
 | 
			
		||||
        AssertJUnit.assertTrue("The file " + ELECTRONIC_RECORD_RM_3060 + " has not been successfully cut off.", getRestAPIFactory().getRecordsAPI().getRecord(firstElectronicRecord.getId()).getAspectNames().contains(CUT_OFF_ASPECT));
 | 
			
		||||
 | 
			
		||||
        // open the record and complete the disposition schedule event
 | 
			
		||||
        rmRolesAndActionsAPI.completeEvent(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(), elRecordFullName, RMEvents.CASE_CLOSED, Instant.now());
 | 
			
		||||
        rmRolesAndActionsAPI.completeEvent(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(), nonElRecordFullName, RMEvents.CASE_CLOSED, Instant.now());
 | 
			
		||||
 | 
			
		||||
        // transfer the files & complete transfers
 | 
			
		||||
        HttpResponse nonElRecordNameHttpResponse = recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","transfer"),recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
                getDataUser().usingAdmin().getAdminUser().getPassword(), nonElRecordFullName, "/" + SECOND_CATEGORY_RM_3060
 | 
			
		||||
                    + "/" + SECOND_FOLDER_RM_3060));
 | 
			
		||||
 | 
			
		||||
        String nonElRecordNameTransferId = getTransferId(nonElRecordNameHttpResponse,nonElRecordNameNodeRef);
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","transferComplete"),nonElRecordNameTransferId);
 | 
			
		||||
 | 
			
		||||
        HttpResponse elRecordNameHttpResponse = recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","transfer"),recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
                getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + FIRST_CATEGORY_RM_3060
 | 
			
		||||
                    + "/" + FIRST_FOLDER_RM_3060));
 | 
			
		||||
 | 
			
		||||
        String elRecordNameTransferId = getTransferId(elRecordNameHttpResponse,elRecordNameNodeRef);
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","transferComplete"),elRecordNameTransferId);
 | 
			
		||||
 | 
			
		||||
        AssertJUnit.assertTrue("The file " + ELECTRONIC_RECORD_RM_3060 + " has not been successfully transferred", getRestAPIFactory().getRecordsAPI().getRecord(firstElectronicRecord.getId()).getAspectNames().contains(TRANSFER_TYPE));
 | 
			
		||||
        AssertJUnit.assertTrue("The file " + NON_ELECTRONIC_RECORD_RM_3060 + " has not been successfully transferred.", getRestAPIFactory().getRecordsAPI().getRecord(secondNonElectronicRecord.getId()).getAspectNames().contains(TRANSFER_TYPE));
 | 
			
		||||
 | 
			
		||||
        // edit the disposition date for nonElectronicRecordRM3060 & electronicRecordRM3060
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(),nonElRecordNameNodeRef);
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(),elRecordNameNodeRef);
 | 
			
		||||
 | 
			
		||||
        // destroy nonElectronicRecordRM3060 & electronicRecordRM3060 records
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","destroy"),nonElRecordNameNodeRef);
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),new JSONObject().put("name","destroy"),elRecordNameNodeRef);
 | 
			
		||||
 | 
			
		||||
        // check the file is not displayed
 | 
			
		||||
       assertNull("The file " + NON_ELECTRONIC_RECORD_RM_3060 + " has not been successfully destroyed.", secondNonElectronicRecord.getContent());
 | 
			
		||||
       assertNull("The file " + ELECTRONIC_RECORD_RM_3060 + " has not been successfully destroyed.", firstElectronicRecord.getContent());
 | 
			
		||||
 | 
			
		||||
        // delete precondition
 | 
			
		||||
        deleteRecordCategory(recordCategory.getId());
 | 
			
		||||
        deleteRecordCategory(categorySecondId);
 | 
			
		||||
    }
 | 
			
		||||
//    @Ignore("ACS-5020")
 | 
			
		||||
    //    @Test
 | 
			
		||||
//    @AlfrescoTest(jira = "RM-1622")
 | 
			
		||||
//    public void dispositionScheduleLinkedRecords() throws UnsupportedEncodingException {
 | 
			
		||||
//        STEP("Create record category");
 | 
			
		||||
//        Category1 = createRootCategory(categoryRM3077);
 | 
			
		||||
//
 | 
			
		||||
//        //create retention schedule
 | 
			
		||||
//        dispositionScheduleService.createCategoryRetentionSchedule(Category1.getName(), false);
 | 
			
		||||
//
 | 
			
		||||
//        // add cut off step
 | 
			
		||||
//        dispositionScheduleService.addCutOffAfterPeriodStep(Category1.getName(), "day|2", CREATED_DATE);
 | 
			
		||||
//
 | 
			
		||||
//        //create a copy of the category recordsCategory
 | 
			
		||||
//        String CopyCategoryId = copyCategory(getAdminUser(),Category1.getId(), copyCategoryRM3077);
 | 
			
		||||
//
 | 
			
		||||
//        // create folders in both categories
 | 
			
		||||
//        CatFolder = createRecordFolder(Category1.getId(), folderRM3077);
 | 
			
		||||
//        CopyCatFolder = createRecordFolder(CopyCategoryId, copyFolderRM3077);
 | 
			
		||||
//
 | 
			
		||||
//        // create record  files
 | 
			
		||||
//        String electronicRecord = "RM-2801 electronic record";
 | 
			
		||||
//        Record elRecord = createElectronicRecord(CatFolder.getId(), electronicRecord);
 | 
			
		||||
//        String elRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().usingAdmin().getAdminUser().getPassword(), CatFolder.getName(), electronicRecord);
 | 
			
		||||
//
 | 
			
		||||
//        String nonElectronicRecord = "RM-2801 non-electronic record";
 | 
			
		||||
//        Record nonElRecord = createNonElectronicRecord(CatFolder.getId(), nonElectronicRecord);
 | 
			
		||||
//        String nonElRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().usingAdmin().getAdminUser().getPassword(), CatFolder.getName(), nonElectronicRecord);
 | 
			
		||||
//
 | 
			
		||||
//        // link the records to copy folder, then complete them
 | 
			
		||||
//        List<String> recordLists = new ArrayList<>();
 | 
			
		||||
//        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + elRecord.getId());
 | 
			
		||||
//        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + nonElRecord.getId());
 | 
			
		||||
//
 | 
			
		||||
//        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK,copyCategoryRM3077 + "/" +
 | 
			
		||||
//                copyFolderRM3077, recordLists);
 | 
			
		||||
//        recordsAPI.completeRecord(rmAdmin.getUsername(), rmAdmin.getPassword(), elRecordFullName);
 | 
			
		||||
//        recordsAPI.completeRecord(rmAdmin.getUsername(), rmAdmin.getPassword(), nonElRecordFullName);
 | 
			
		||||
//
 | 
			
		||||
//        // edit disposition date
 | 
			
		||||
//        recordFoldersAPI.postFolderAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),editDispositionDateJson(),CatFolder.getName());
 | 
			
		||||
//
 | 
			
		||||
//        // cut off the Folder
 | 
			
		||||
//        recordFoldersAPI.postFolderAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"),CatFolder.getName());
 | 
			
		||||
//
 | 
			
		||||
//        // Verify the Content
 | 
			
		||||
//        Node electronicNode = getNode(elRecord.getId());
 | 
			
		||||
//        assertTrue("The content of " + electronicRecord + " is available",
 | 
			
		||||
//            StringUtils.isEmpty(electronicNode.getNodeContent().getResponse().getBody().asString()));
 | 
			
		||||
//
 | 
			
		||||
//        // verify the Properties
 | 
			
		||||
//        AssertJUnit.assertNull("The properties are present even after cutting off the record.", elRecord.getProperties().getTitle());
 | 
			
		||||
//
 | 
			
		||||
//        // delete precondition
 | 
			
		||||
//        deleteRecordCategory(Category1.getId());
 | 
			
		||||
//        deleteRecordCategory(CopyCategoryId);
 | 
			
		||||
//    }
 | 
			
		||||
//    /**
 | 
			
		||||
//     * Test covering RM-3060
 | 
			
		||||
//     * Check the disposition steps for a record can be executed
 | 
			
		||||
//     * When the record is linked to a folder with the same disposition schedule
 | 
			
		||||
//     * */
 | 
			
		||||
//    @Ignore("ACS-5020")
 | 
			
		||||
////    @Test
 | 
			
		||||
//    @AlfrescoTest (jira = "RM-3060")
 | 
			
		||||
//    public void sameDispositionScheduleLinkedRecords() throws UnsupportedEncodingException {
 | 
			
		||||
//
 | 
			
		||||
//        // create a category with retention applied on records level
 | 
			
		||||
//        RecordCategory recordCategory = getRestAPIFactory().getFilePlansAPI(rmAdmin)
 | 
			
		||||
//            .createRootRecordCategory(RecordCategory.builder().name(firstCategoryRM3060).build(),
 | 
			
		||||
//                RecordCategory.DEFAULT_FILE_PLAN_ALIAS);
 | 
			
		||||
//        dispositionScheduleService.createCategoryRetentionSchedule(firstCategoryRM3060, true);
 | 
			
		||||
//        dispositionScheduleService.addCutOffAfterPeriodStep(firstCategoryRM3060, "week|1", DATE_FILED);
 | 
			
		||||
//        dispositionScheduleService.addTransferAfterEventStep(firstCategoryRM3060, TRANSFER_LOCATION, RMEvents.CASE_CLOSED.getEventName());
 | 
			
		||||
//        dispositionScheduleService.addDestroyWithoutGhostingAfterPeriodStep(firstCategoryRM3060, "week|1", CUT_OFF_DATE);
 | 
			
		||||
//
 | 
			
		||||
//        // make a copy of the category created
 | 
			
		||||
//        String categorySecondId = copyCategory(getAdminUser(), recordCategory.getId(), secondCategoryRM3060);
 | 
			
		||||
//
 | 
			
		||||
//        // create a folder on the category firstCategoryRM3060 with a complete electronic record
 | 
			
		||||
//        RecordCategoryChild firstFolderRecordCategoryChild = createRecordFolder(recordCategory.getId(),firstFolderRM3060);
 | 
			
		||||
//        Record firstElectronicRecord = createElectronicRecord(firstFolderRecordCategoryChild.getId(),electronicRecordRM3060);
 | 
			
		||||
//
 | 
			
		||||
//        String elRecordFullName = recordsAPI.getRecordFullName(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(),firstFolderRM3060, electronicRecordRM3060);
 | 
			
		||||
//        String elRecordNameNodeRef = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + firstCategoryRM3060 + "/" + firstFolderRM3060);
 | 
			
		||||
//
 | 
			
		||||
//        recordsAPI.completeRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(), elRecordFullName);
 | 
			
		||||
//
 | 
			
		||||
//        // create a folder on the category secondCategoryRM3060 with a non electronic record
 | 
			
		||||
//        RecordCategoryChild secondFolderRecordCategoryChild = createRecordFolder(categorySecondId,secondFolderRM3060);
 | 
			
		||||
//        Record secondNonElectronicRecord = createNonElectronicRecord(secondFolderRecordCategoryChild.getId(),nonElectronicRecordRM3060);
 | 
			
		||||
//
 | 
			
		||||
//        // link the nonElectronicRecordRM3060 to firstFolderRM3060
 | 
			
		||||
//        List<String> recordLists = new ArrayList<>();
 | 
			
		||||
//        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + secondNonElectronicRecord.getId());
 | 
			
		||||
//
 | 
			
		||||
//        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK,secondCategoryRM3060 + "/" +
 | 
			
		||||
//                secondFolderRM3060, recordLists);
 | 
			
		||||
//        String nonElRecordFullName = recordsAPI.getRecordFullName(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().usingAdmin().getAdminUser().getPassword(), secondFolderRM3060, secondNonElectronicRecord.getName());
 | 
			
		||||
//        String nonElRecordNameNodeRef = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().usingAdmin().getAdminUser().getPassword(), nonElRecordFullName, "/" + secondCategoryRM3060 + "/" + secondFolderRM3060);
 | 
			
		||||
//
 | 
			
		||||
//        // complete records and cut them off
 | 
			
		||||
//        recordsAPI.completeRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(), nonElRecordFullName);
 | 
			
		||||
//
 | 
			
		||||
//        // edit the disposition date
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),editDispositionDateJson(),nonElRecordNameNodeRef);
 | 
			
		||||
//
 | 
			
		||||
//        // cut off the record
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"),nonElRecordNameNodeRef);
 | 
			
		||||
//
 | 
			
		||||
//        //check the record is cut off
 | 
			
		||||
//        AssertJUnit.assertTrue("The file " + nonElectronicRecordRM3060 + " has not been successfully cut off.", getRestAPIFactory().getRecordsAPI().getRecord(secondNonElectronicRecord.getId()).getAspectNames().contains(CUT_OFF_ASPECT));
 | 
			
		||||
//
 | 
			
		||||
//        // link the electronic record to secondFolderRM3060
 | 
			
		||||
//        recordLists.clear();
 | 
			
		||||
//        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + secondNonElectronicRecord.getId());
 | 
			
		||||
//        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
//            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK,secondCategoryRM3060 + "/" +
 | 
			
		||||
//                secondFolderRM3060, recordLists);
 | 
			
		||||
//
 | 
			
		||||
//        // edit the disposition date and cut off the record
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),editDispositionDateJson(),elRecordNameNodeRef);
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","cutoff"),elRecordNameNodeRef);
 | 
			
		||||
//
 | 
			
		||||
//        AssertJUnit.assertTrue("The file " + electronicRecordRM3060 + " has not been successfully cut off.", getRestAPIFactory().getRecordsAPI().getRecord(firstElectronicRecord.getId()).getAspectNames().contains(CUT_OFF_ASPECT));
 | 
			
		||||
//
 | 
			
		||||
//        // open the record and complete the disposition schedule event
 | 
			
		||||
//        rmRolesAndActionsAPI.completeEvent(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(), elRecordFullName, RMEvents.CASE_CLOSED, Instant.now());
 | 
			
		||||
//        rmRolesAndActionsAPI.completeEvent(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(), nonElRecordFullName, RMEvents.CASE_CLOSED, Instant.now());
 | 
			
		||||
//
 | 
			
		||||
//        // transfer the files & complete transfers
 | 
			
		||||
//        HttpResponse nonElRecordNameHttpResponse = recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","transfer"),recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//                getDataUser().usingAdmin().getAdminUser().getPassword(), nonElRecordFullName, "/" + secondCategoryRM3060 + "/" + secondFolderRM3060));
 | 
			
		||||
//
 | 
			
		||||
//        String nonElRecordNameTransferId = getTransferId(nonElRecordNameHttpResponse,nonElRecordNameNodeRef);
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","transferComplete"),nonElRecordNameTransferId);
 | 
			
		||||
//
 | 
			
		||||
//        HttpResponse elRecordNameHttpResponse = recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","transfer"),recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
//                getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + firstCategoryRM3060 + "/" + firstFolderRM3060));
 | 
			
		||||
//
 | 
			
		||||
//        String elRecordNameTransferId = getTransferId(elRecordNameHttpResponse,elRecordNameNodeRef);
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","transferComplete"),elRecordNameTransferId);
 | 
			
		||||
//
 | 
			
		||||
//        AssertJUnit.assertTrue("The file " + electronicRecordRM3060 + " has not been successfully transferred", getRestAPIFactory().getRecordsAPI().getRecord(firstElectronicRecord.getId()).getAspectNames().contains(TRANSFER_TYPE));
 | 
			
		||||
//        AssertJUnit.assertTrue("The file " + nonElectronicRecordRM3060 + " has not been successfully transferred.", getRestAPIFactory().getRecordsAPI().getRecord(secondNonElectronicRecord.getId()).getAspectNames().contains(TRANSFER_TYPE));
 | 
			
		||||
//
 | 
			
		||||
//        // edit the disposition date for nonElectronicRecordRM3060 & electronicRecordRM3060
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),editDispositionDateJson(),nonElRecordNameNodeRef);
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),editDispositionDateJson(),elRecordNameNodeRef);
 | 
			
		||||
//
 | 
			
		||||
//        // destroy nonElectronicRecordRM3060 & electronicRecordRM3060 records
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","destroy"),nonElRecordNameNodeRef);
 | 
			
		||||
//        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
//            getAdminUser().getPassword(),new JSONObject().put("name","destroy"),elRecordNameNodeRef);
 | 
			
		||||
//
 | 
			
		||||
//        // check the file is not displayed
 | 
			
		||||
//       assertNull("The file " + nonElectronicRecordRM3060 + " has not been successfully destroyed.", secondNonElectronicRecord.getContent());
 | 
			
		||||
//       assertNull("The file " + electronicRecordRM3060 + " has not been successfully destroyed.", firstElectronicRecord.getContent());
 | 
			
		||||
//
 | 
			
		||||
//        // delete precondition
 | 
			
		||||
//        deleteRecordCategory(recordCategory.getId());
 | 
			
		||||
//        deleteRecordCategory(categorySecondId);
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    private String copyCategory(UserModel user, String categoryId, String copyName) {
 | 
			
		||||
        RepoTestModel repoTestModel = new RepoTestModel() {};
 | 
			
		||||
@@ -361,7 +354,7 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
 | 
			
		||||
    private String getTransferId(HttpResponse httpResponse,String nodeRef) {
 | 
			
		||||
        HttpEntity entity = httpResponse.getEntity();
 | 
			
		||||
        String responseString;
 | 
			
		||||
        String responseString = null;
 | 
			
		||||
        try {
 | 
			
		||||
            responseString = EntityUtils.toString(entity, "UTF-8");
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
@@ -372,6 +365,7 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
            .getJSONObject("results")
 | 
			
		||||
            .get(nodeRef)
 | 
			
		||||
            .toString();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@@ -380,39 +374,35 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
 | 
			
		||||
        // create a category with retention applied on records level
 | 
			
		||||
        RecordCategory catsameLevel1  = getRestAPIFactory().getFilePlansAPI(rmAdmin)
 | 
			
		||||
                                                           .createRootRecordCategory(RecordCategory.builder().name(
 | 
			
		||||
                                                                   FIRST_CATEGORY_RM_1622).build(),
 | 
			
		||||
                                                           .createRootRecordCategory(RecordCategory.builder().name(firstCategoryRM1622).build(),
 | 
			
		||||
                                                               RecordCategory.DEFAULT_FILE_PLAN_ALIAS);
 | 
			
		||||
        RecordCategory catsameLevel2  = getRestAPIFactory().getFilePlansAPI(rmAdmin)
 | 
			
		||||
                                                           .createRootRecordCategory(RecordCategory.builder().name(
 | 
			
		||||
                                                                   SECOND_CATEGORY_RM_1622).build(),
 | 
			
		||||
                                                           .createRootRecordCategory(RecordCategory.builder().name(secondCategoryRM1622).build(),
 | 
			
		||||
                                                               RecordCategory.DEFAULT_FILE_PLAN_ALIAS);
 | 
			
		||||
 | 
			
		||||
        // create retention schedule applied on records for category 1
 | 
			
		||||
        dispositionScheduleService.createCategoryRetentionSchedule(FIRST_CATEGORY_RM_1622, true);
 | 
			
		||||
        dispositionScheduleService.createCategoryRetentionSchedule(firstCategoryRM1622, true);
 | 
			
		||||
 | 
			
		||||
        // with retain immediately after record creation date and cut 1 day after record creation date
 | 
			
		||||
        dispositionScheduleService.addCutOffAfterPeriodStep(FIRST_CATEGORY_RM_1622, "day|1", DATE_FILED);
 | 
			
		||||
        dispositionScheduleService.addCutOffAfterPeriodStep(firstCategoryRM1622, "day|1", DATE_FILED);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // create a folder on the category firstCategoryRM1622 with a complete electronic record
 | 
			
		||||
        RecordCategoryChild firstFolderRecordCategoryChild = createRecordFolder(catsameLevel1.getId(),
 | 
			
		||||
            FIRST_FOLDER_RM_1622);
 | 
			
		||||
        Record firstElectronicRecord = createElectronicRecord(firstFolderRecordCategoryChild.getId(),
 | 
			
		||||
            ELECTRONIC_RECORD_RM_1622);
 | 
			
		||||
        RecordCategoryChild firstFolderRecordCategoryChild = createRecordFolder(catsameLevel1.getId(),firstFolderRM1622);
 | 
			
		||||
        Record firstElectronicRecord = createElectronicRecord(firstFolderRecordCategoryChild.getId(),electronicRecordRM1622);
 | 
			
		||||
 | 
			
		||||
        String elRecordFullName = recordsAPI.getRecordFullName(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), FIRST_FOLDER_RM_1622, ELECTRONIC_RECORD_RM_1622);
 | 
			
		||||
       recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + FIRST_CATEGORY_RM_1622 + "/" + FIRST_FOLDER_RM_1622);
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(),firstFolderRM1622, electronicRecordRM1622);
 | 
			
		||||
        String elRecordNameNodeRef = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + firstCategoryRM1622 + "/" + firstFolderRM1622);
 | 
			
		||||
 | 
			
		||||
        recordsAPI.completeRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), elRecordFullName);
 | 
			
		||||
 | 
			
		||||
        // create a folder on the category secondCategoryRM1622 with a non electronic record
 | 
			
		||||
        createRecordFolder(catsameLevel2.getId(), SECOND_FOLDER_RM_1622);
 | 
			
		||||
        RecordCategoryChild secondFolderRecordCategoryChild = createRecordFolder(catsameLevel2.getId(),secondFolderRM1622);
 | 
			
		||||
        String elRecordNameNodeRefs = recordsAPI.getRecordNodeRef(getDataUser().usingAdmin().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + FIRST_CATEGORY_RM_1622 + "/" + FIRST_FOLDER_RM_1622);
 | 
			
		||||
            getDataUser().usingAdmin().getAdminUser().getPassword(), elRecordFullName, "/" + firstCategoryRM1622 + "/" + firstFolderRM1622);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // link it to the folder in second category through the details page
 | 
			
		||||
@@ -420,12 +410,14 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
        recordLists.add(NODE_REF_WORKSPACE_SPACES_STORE + firstElectronicRecord.getId());
 | 
			
		||||
 | 
			
		||||
        linksAPI.linkRecord(getDataUser().getAdminUser().getUsername(),
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK, SECOND_CATEGORY_RM_1622 + "/" +
 | 
			
		||||
                SECOND_FOLDER_RM_1622, recordLists);
 | 
			
		||||
            getDataUser().getAdminUser().getPassword(), HttpStatus.SC_OK,secondCategoryRM1622 + "/" +
 | 
			
		||||
                secondFolderRM1622, recordLists);
 | 
			
		||||
 | 
			
		||||
        // edit disposition date
 | 
			
		||||
        recordFoldersAPI.postRecordAction(getAdminUser().getUsername(),
 | 
			
		||||
            getAdminUser().getPassword(),editDispositionDateJson(),elRecordNameNodeRefs);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test (dependsOnMethods = {"sameLevelDispositionScheduleStepsPeriodsCalculation" })
 | 
			
		||||
@@ -436,4 +428,4 @@ public class DispositionScheduleLinkedRecordsTest extends BaseRMRestTest {
 | 
			
		||||
        // Verify the status code
 | 
			
		||||
        assertStatusCode(NO_CONTENT);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
SOLR6_TAG=2.0.7-A5
 | 
			
		||||
POSTGRES_TAG=14.4
 | 
			
		||||
ACTIVEMQ_TAG=5.18.2-jre17-rockylinux8
 | 
			
		||||
ACTIVEMQ_TAG=5.17.4-jre17-rockylinux8
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <properties>
 | 
			
		||||
@@ -60,12 +60,9 @@
 | 
			
		||||
         <scope>test</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>jakarta.servlet</groupId>
 | 
			
		||||
         <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>jakarta.mail</groupId>
 | 
			
		||||
         <artifactId>jakarta.mail-api</artifactId>
 | 
			
		||||
         <groupId>javax.servlet</groupId>
 | 
			
		||||
         <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
         <scope>provided</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>org.alfresco.surf</groupId>
 | 
			
		||||
@@ -105,8 +102,9 @@
 | 
			
		||||
         <artifactId>swagger-parser</artifactId>
 | 
			
		||||
         <scope>test</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
      <!-- https://mvnrepository.com/artifact/com.github.fge/json-schema-validator -->
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>com.networknt</groupId>
 | 
			
		||||
         <groupId>com.github.fge</groupId>
 | 
			
		||||
         <artifactId>json-schema-validator</artifactId>
 | 
			
		||||
         <scope>test</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
 
 | 
			
		||||
@@ -39,12 +39,12 @@ import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import jakarta.mail.Multipart;
 | 
			
		||||
import jakarta.mail.Part;
 | 
			
		||||
import jakarta.mail.internet.ContentType;
 | 
			
		||||
import jakarta.mail.internet.MimeMessage;
 | 
			
		||||
import jakarta.mail.internet.MimeUtility;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
import javax.mail.Multipart;
 | 
			
		||||
import javax.mail.Part;
 | 
			
		||||
import javax.mail.internet.ContentType;
 | 
			
		||||
import javax.mail.internet.MimeMessage;
 | 
			
		||||
import javax.mail.internet.MimeUtility;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.error.AlfrescoRuntimeException;
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ package org.alfresco.module.org_alfresco_module_rm.script;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.util.WebScriptUtils.getTemplateVars;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
 | 
			
		||||
package org.alfresco.module.org_alfresco_module_rm.script;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ package org.alfresco.module.org_alfresco_module_rm.script;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
 | 
			
		||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition;
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ import java.io.IOException;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ import static org.alfresco.util.WebScriptUtils.getTemplateVars;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.NodeRef;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
 | 
			
		||||
package org.alfresco.module.org_alfresco_module_rm.script;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileOutputStream;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ import java.util.HashSet;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.TreeMap;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright (C) 2005-2014 Alfresco Software Limited.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of Alfresco
 | 
			
		||||
 *
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.repo.web.scripts.roles;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.BufferedWriter;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.FileWriter;
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright (C) 2005-2014 Alfresco Software Limited.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of Alfresco
 | 
			
		||||
 *
 | 
			
		||||
@@ -54,7 +54,7 @@ import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule;
 | 
			
		||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
 | 
			
		||||
 
 | 
			
		||||
@@ -45,10 +45,12 @@ import java.util.Set;
 | 
			
		||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
			
		||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
			
		||||
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 | 
			
		||||
import com.networknt.schema.JsonSchema;
 | 
			
		||||
import com.networknt.schema.JsonSchemaFactory;
 | 
			
		||||
import com.networknt.schema.SpecVersion.VersionFlag;
 | 
			
		||||
import com.networknt.schema.ValidationMessage;
 | 
			
		||||
import com.github.fge.jackson.JsonLoader;
 | 
			
		||||
import com.github.fge.jsonschema.core.exceptions.ProcessingException;
 | 
			
		||||
import com.github.fge.jsonschema.core.report.ProcessingMessage;
 | 
			
		||||
import com.github.fge.jsonschema.core.report.ProcessingReport;
 | 
			
		||||
import com.github.fge.jsonschema.main.JsonSchema;
 | 
			
		||||
import com.github.fge.jsonschema.main.JsonSchemaFactory;
 | 
			
		||||
 | 
			
		||||
import io.swagger.models.Swagger;
 | 
			
		||||
import io.swagger.parser.SwaggerParser;
 | 
			
		||||
@@ -64,8 +66,8 @@ import org.apache.commons.io.filefilter.WildcardFileFilter;
 | 
			
		||||
 */
 | 
			
		||||
public class BaseYamlUnitTest
 | 
			
		||||
{
 | 
			
		||||
    private static final String SWAGGER_2_SCHEMA_LOCATION = "/rest/schema.json";
 | 
			
		||||
    private static final String OPEN_API_SPECIFICATION = "2.0";
 | 
			
		||||
    private static String SWAGGER_2_SCHEMA_LOCATION = "/rest/schema.json";
 | 
			
		||||
    private static String OPEN_API_SPECIFICATION = "2.0";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method to obtain path names for all yaml files found on the given path
 | 
			
		||||
@@ -84,11 +86,11 @@ public class BaseYamlUnitTest
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method to validate that all given yaml files are valid readable Swagger format
 | 
			
		||||
     */
 | 
			
		||||
    protected void validateYamlFiles(final Set<String> yamlFileNames) throws ValidationException, IOException
 | 
			
		||||
    protected void validateYamlFiles(final Set<String> yamlFileNames) throws ProcessingException, IOException
 | 
			
		||||
    {
 | 
			
		||||
        assertFalse("Expected at least 1 yaml file to validate", yamlFileNames.isEmpty());
 | 
			
		||||
 | 
			
		||||
        final JsonSchema swaggerSchema = getSwaggerSchema();
 | 
			
		||||
        final JsonSchema swaggerSchema = getSwaggerSchema(SWAGGER_2_SCHEMA_LOCATION);
 | 
			
		||||
        assertNotNull("Failed to obtain the Swagger schema", swaggerSchema);
 | 
			
		||||
        
 | 
			
		||||
        for (String yamlFilePath : yamlFileNames)
 | 
			
		||||
@@ -104,11 +106,11 @@ public class BaseYamlUnitTest
 | 
			
		||||
                assertEquals("Failed to obtain Swagger version from yaml file " + yamlFilePath, 
 | 
			
		||||
                        swagger.getSwagger(), OPEN_API_SPECIFICATION);
 | 
			
		||||
            }
 | 
			
		||||
            catch (ValidationException ex)
 | 
			
		||||
            catch (ProcessingException ex)
 | 
			
		||||
            {
 | 
			
		||||
                // ensure the yaml filename is included in the message
 | 
			
		||||
                String context = String.format(yamlFilePath + ": %n" + ex.getMessage());
 | 
			
		||||
                throw new ValidationException(context) ;
 | 
			
		||||
                throw new ProcessingException(context) ;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -116,15 +118,16 @@ public class BaseYamlUnitTest
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method to read in the Swagger JSON schema file
 | 
			
		||||
     */
 | 
			
		||||
    private JsonSchema getSwaggerSchema() throws IOException
 | 
			
		||||
    private JsonSchema getSwaggerSchema(final String schemaLocation) throws IOException, ProcessingException
 | 
			
		||||
    {
 | 
			
		||||
        JsonSchema swaggerSchema = null;
 | 
			
		||||
        final InputStream in = this.getClass().getResourceAsStream(SWAGGER_2_SCHEMA_LOCATION);
 | 
			
		||||
        final InputStream in = this.getClass().getResourceAsStream(schemaLocation);
 | 
			
		||||
        if (in != null)
 | 
			
		||||
        {
 | 
			
		||||
            final String swaggerSchemaAsString = IOUtils.toString(in);
 | 
			
		||||
            final JsonSchemaFactory factory = JsonSchemaFactory.getInstance(VersionFlag.V4);
 | 
			
		||||
            swaggerSchema = factory.getSchema(swaggerSchemaAsString);
 | 
			
		||||
            final JsonNode schemaNode = JsonLoader.fromString(swaggerSchemaAsString);
 | 
			
		||||
            final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
 | 
			
		||||
            swaggerSchema = factory.getJsonSchema(schemaNode);
 | 
			
		||||
        }
 | 
			
		||||
        return swaggerSchema;
 | 
			
		||||
    }
 | 
			
		||||
@@ -132,7 +135,7 @@ public class BaseYamlUnitTest
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method to validate Yaml file against JSON schema
 | 
			
		||||
     */
 | 
			
		||||
    private boolean validateYamlFile(final String yamlFilePath, final JsonSchema jsonSchema) throws IOException, ValidationException
 | 
			
		||||
    private boolean validateYamlFile(final String yamlFilePath, final JsonSchema jsonSchema) throws IOException, ProcessingException
 | 
			
		||||
    {
 | 
			
		||||
        // Get yaml file as a string
 | 
			
		||||
        final String yaml = new String(Files.readAllBytes(Paths.get(yamlFilePath)));
 | 
			
		||||
@@ -149,22 +152,19 @@ public class BaseYamlUnitTest
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method to validate JSON string against JSON schema
 | 
			
		||||
     */
 | 
			
		||||
    private boolean validateJSON(final String jsonData, final JsonSchema schema) throws IOException, ValidationException
 | 
			
		||||
    private boolean validateJSON(final String jsonData, final JsonSchema schema) throws IOException, ProcessingException
 | 
			
		||||
    {
 | 
			
		||||
        final JsonNode dataNode = new ObjectMapper().readTree(jsonData);
 | 
			
		||||
 | 
			
		||||
        final Iterator<ValidationMessage> errors = schema.validate(dataNode).iterator();
 | 
			
		||||
        if (!errors.hasNext()) return true;
 | 
			
		||||
 | 
			
		||||
        final ValidationMessage errorMessage = errors.next();
 | 
			
		||||
        throw new ValidationException(errorMessage.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class ValidationException extends Exception
 | 
			
		||||
    {
 | 
			
		||||
        public ValidationException(String message)
 | 
			
		||||
        final JsonNode dataNode = JsonLoader.fromString(jsonData);
 | 
			
		||||
        final ProcessingReport report = schema.validate(dataNode);
 | 
			
		||||
        boolean isOk = report.isSuccess();
 | 
			
		||||
        if (!isOk)
 | 
			
		||||
        {
 | 
			
		||||
            super(message);
 | 
			
		||||
            Iterator<ProcessingMessage> messages = report.iterator();
 | 
			
		||||
            if (messages.hasNext())
 | 
			
		||||
            {
 | 
			
		||||
                throw new ProcessingException(messages.next().toString());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return isOk;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "title": "A JSON Schema for Swagger 2.0 API.",
 | 
			
		||||
  "id": "http://swagger.io/v2/schema.json#",
 | 
			
		||||
  "$schema": "http://json-schema.org/draft-04/schema#",
 | 
			
		||||
  "id": "#",
 | 
			
		||||
  "$schema": "#",
 | 
			
		||||
  "type": "object",
 | 
			
		||||
  "required": [
 | 
			
		||||
    "swagger",
 | 
			
		||||
@@ -203,7 +203,7 @@
 | 
			
		||||
      "additionalProperties": {
 | 
			
		||||
        "$ref": "#/definitions/response"
 | 
			
		||||
      },
 | 
			
		||||
      "description": "One or more JSON representations for responses"
 | 
			
		||||
      "description": "One or more JSON representations for parameters"
 | 
			
		||||
    },
 | 
			
		||||
    "externalDocs": {
 | 
			
		||||
      "type": "object",
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -128,8 +128,9 @@
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.servlet</groupId>
 | 
			
		||||
            <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
            <groupId>javax.servlet</groupId>
 | 
			
		||||
            <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- SHA-2432 -->
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright 2005 - 2020 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.
 | 
			
		||||
@@ -27,7 +27,7 @@ import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
 | 
			
		||||
import org.alfresco.repo.web.scripts.admin.NodeBrowserPost;
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -48,7 +48,7 @@ function tagQuery()
 | 
			
		||||
   }
 | 
			
		||||
   query += "ASPECT:\"{http://www.alfresco.org/model/content/1.0}taggable\"";
 | 
			
		||||
   //MNT-2118 Share inconsistencies when displaying locked files with tags
 | 
			
		||||
   query += " AND -ASPECT:\"{http://www.alfresco.org/model/content/1.0}workingcopy\"";
 | 
			
		||||
   query += " -ASPECT:\"{http://www.alfresco.org/model/content/1.0}workingcopy\"";
 | 
			
		||||
 | 
			
		||||
   // MNT-20091 check to prevent cm:taggable with NULL
 | 
			
		||||
   query += " AND ISNOTNULL:\"{http://www.alfresco.org/model/content/1.0}taggable\"";
 | 
			
		||||
@@ -60,7 +60,7 @@ function tagQuery()
 | 
			
		||||
         query: query,
 | 
			
		||||
         language: "lucene",
 | 
			
		||||
         page: {
 | 
			
		||||
            // query minimum rows because all useful info will come with facets
 | 
			
		||||
            // query minimum rows because all usefull info will come with facets 
 | 
			
		||||
            maxItems: 1,
 | 
			
		||||
            skipCount: 0
 | 
			
		||||
         },
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ function getCategoryNode()
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
         var queryPath = "/" + catAspect + "/" + encodePath(path);
 | 
			
		||||
         categoryResults = search.luceneSearch("+PATH:\"" + queryPath + "/*\" AND -PATH:\"" + queryPath + "/member\"");
 | 
			
		||||
         categoryResults = search.luceneSearch("+PATH:\"" + queryPath + "/*\" -PATH:\"" + queryPath + "/member\"");
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      // make each result an object and indicate it is selectable in the UI
 | 
			
		||||
@@ -71,4 +71,4 @@ function encodePath(path)
 | 
			
		||||
function sortByName(a, b)
 | 
			
		||||
{
 | 
			
		||||
   return (b.node.name.toLowerCase() > a.node.name.toLowerCase() ? -1 : 1);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@@ -29,7 +29,7 @@ function main()
 | 
			
		||||
   {
 | 
			
		||||
      query = "+PATH:\"" + parsedArgs.pathNode.qnamePath + "//*\" ";
 | 
			
		||||
   }
 | 
			
		||||
   query += "AND +TYPE:\"cm:content\" AND +@cm\\:content.mimetype:\"image/*\"";
 | 
			
		||||
   query += "+TYPE:\"cm:content\" +@cm\\:content.mimetype:image/*";
 | 
			
		||||
   
 | 
			
		||||
   // Sort the list before trimming to page chunks 
 | 
			
		||||
   assets = search.query(
 | 
			
		||||
@@ -52,4 +52,4 @@ function main()
 | 
			
		||||
/**
 | 
			
		||||
 * Images List Component: images
 | 
			
		||||
 */
 | 
			
		||||
model.images = main();
 | 
			
		||||
model.images = main();
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
      <version>23.1.0.195</version>
 | 
			
		||||
      <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <dependencies>
 | 
			
		||||
@@ -111,8 +111,9 @@
 | 
			
		||||
 | 
			
		||||
      <!-- provided dependencies -->
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>jakarta.servlet</groupId>
 | 
			
		||||
         <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
         <groupId>javax.servlet</groupId>
 | 
			
		||||
         <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
         <scope>provided</scope>
 | 
			
		||||
      </dependency>
 | 
			
		||||
 | 
			
		||||
      <!-- Test only dependencies, as popped up while running mvn test -->
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright (C) 2005-2011 Alfresco Software Limited.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of Alfresco
 | 
			
		||||
 *
 | 
			
		||||
@@ -26,8 +26,8 @@ import java.net.UnknownHostException;
 | 
			
		||||
import java.security.AlgorithmParameters;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.encryption.MACUtils.MACInput;
 | 
			
		||||
import org.alfresco.error.AlfrescoRuntimeException;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright (C) 2005-2011 Alfresco Software Limited.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of Alfresco
 | 
			
		||||
 *
 | 
			
		||||
@@ -21,8 +21,8 @@ package org.alfresco.encryption;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.security.AlgorithmParameters;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.httpclient.HttpMethod;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -92,16 +92,15 @@ public class HttpClient4Factory
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            //Setting a connectionManager overrides these properties
 | 
			
		||||
            config.getMaxTotalConnections().ifPresent(v -> clientBuilder.setMaxConnTotal(v));
 | 
			
		||||
            config.getMaxHostConnections().ifPresent(v -> clientBuilder.setMaxConnPerRoute(v));
 | 
			
		||||
            clientBuilder.setMaxConnTotal(config.getMaxTotalConnections());
 | 
			
		||||
            clientBuilder.setMaxConnPerRoute(config.getMaxHostConnections());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
 | 
			
		||||
        config.getConnectionTimeout().ifPresent(v -> requestConfigBuilder.setConnectTimeout(v));
 | 
			
		||||
        config.getConnectionRequestTimeout().ifPresent(v -> requestConfigBuilder.setConnectionRequestTimeout(v));
 | 
			
		||||
        config.getSocketTimeout().ifPresent(v -> requestConfigBuilder.setSocketTimeout(v));
 | 
			
		||||
 | 
			
		||||
        RequestConfig requestConfig = requestConfigBuilder.build();
 | 
			
		||||
        RequestConfig requestConfig = RequestConfig.custom()
 | 
			
		||||
               .setConnectTimeout(config.getConnectionTimeout())
 | 
			
		||||
               .setSocketTimeout(config.getSocketTimeout())
 | 
			
		||||
               .setConnectionRequestTimeout(config.getConnectionRequestTimeout())
 | 
			
		||||
               .build();
 | 
			
		||||
 | 
			
		||||
        clientBuilder.setDefaultRequestConfig(requestConfig);
 | 
			
		||||
 | 
			
		||||
@@ -136,8 +135,8 @@ public class HttpClient4Factory
 | 
			
		||||
                   .register("http", PlainConnectionSocketFactory.getSocketFactory())
 | 
			
		||||
                   .build());
 | 
			
		||||
        }
 | 
			
		||||
        config.getMaxTotalConnections().ifPresent(v -> poolingHttpClientConnectionManager.setMaxTotal(v));
 | 
			
		||||
        config.getMaxHostConnections().ifPresent(v -> poolingHttpClientConnectionManager.setDefaultMaxPerRoute(v));
 | 
			
		||||
        poolingHttpClientConnectionManager.setMaxTotal(config.getMaxTotalConnections());
 | 
			
		||||
        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(config.getMaxHostConnections());
 | 
			
		||||
 | 
			
		||||
        return poolingHttpClientConnectionManager;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -85,27 +85,17 @@ public class HttpClientConfig
 | 
			
		||||
        this.keyStore = new AlfrescoKeyStoreImpl(sslEncryptionParameters.getKeyStoreParameters(),  keyResourceLoader);
 | 
			
		||||
        this.trustStore = new AlfrescoKeyStoreImpl(sslEncryptionParameters.getTrustStoreParameters(), keyResourceLoader);
 | 
			
		||||
 | 
			
		||||
        config = retrieveConfig();
 | 
			
		||||
        config = retrieveConfig(serviceName);
 | 
			
		||||
        checkUnsupportedProperties(config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method used for retrieving HttpClient config from Global Properties
 | 
			
		||||
     * that can also have values provided/overridden through System Properties
 | 
			
		||||
     *
 | 
			
		||||
     * @param serviceName name of used service
 | 
			
		||||
     * @return map of properties
 | 
			
		||||
     */
 | 
			
		||||
    private Map<String, String> retrieveConfig()
 | 
			
		||||
    private Map<String, String> retrieveConfig(String serviceName)
 | 
			
		||||
    {
 | 
			
		||||
        Map<String, String> resultProperties = getHttpClientPropertiesForService(properties);
 | 
			
		||||
        Map<String, String> systemProperties = getHttpClientPropertiesForService(System.getProperties());
 | 
			
		||||
 | 
			
		||||
        systemProperties.forEach((k, v) -> resultProperties.put(k, v)); //Override/Add to Global Properties results with values from System Properties
 | 
			
		||||
 | 
			
		||||
        return resultProperties;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<String, String> getHttpClientPropertiesForService(Properties properties) {
 | 
			
		||||
        return properties.keySet().stream()
 | 
			
		||||
                .filter(key -> key instanceof String)
 | 
			
		||||
                .map(Object::toString)
 | 
			
		||||
@@ -122,75 +112,79 @@ public class HttpClientConfig
 | 
			
		||||
              .forEach(propertyName -> LOGGER.warn(String.format("For service [%s], an unsupported property [%s] is set", serviceName, propertyName)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Optional<Integer> getIntegerProperty(HttpClientPropertiesEnum property)
 | 
			
		||||
    private Integer getIntegerProperty(HttpClientPropertiesEnum property)
 | 
			
		||||
    {
 | 
			
		||||
        Optional<String> optionalProperty = extractValueFromConfig(property);
 | 
			
		||||
 | 
			
		||||
        return optionalProperty.isPresent() ? Optional.of(Integer.parseInt(optionalProperty.get())) : Optional.empty();
 | 
			
		||||
        return Integer.parseInt(extractValueFromConfig(property).orElse("0"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Optional<Boolean> getBooleanProperty(HttpClientPropertiesEnum property)
 | 
			
		||||
    private Boolean getBooleanProperty(HttpClientPropertiesEnum property)
 | 
			
		||||
    {
 | 
			
		||||
        Optional<String> optionalProperty = extractValueFromConfig(property);
 | 
			
		||||
 | 
			
		||||
        return optionalProperty.isPresent() ? Optional.of(Boolean.parseBoolean(optionalProperty.get())) : Optional.empty();
 | 
			
		||||
        return Boolean.parseBoolean(extractValueFromConfig(property).orElse("false"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Optional<String> extractValueFromConfig(HttpClientPropertiesEnum property)
 | 
			
		||||
    {
 | 
			
		||||
        return Optional.ofNullable(config.get(property.name));
 | 
			
		||||
        Optional<String> optionalProperty = Optional.ofNullable(config.get(property.name));
 | 
			
		||||
        if(property.isRequired && optionalProperty.isEmpty())
 | 
			
		||||
        {
 | 
			
		||||
            String msg = String.format("Required property: '%s' is empty.", property.name);
 | 
			
		||||
            throw new HttpClientException(msg);
 | 
			
		||||
        }
 | 
			
		||||
        return optionalProperty;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Integer> getConnectionTimeout()
 | 
			
		||||
    public Integer getConnectionTimeout()
 | 
			
		||||
    {
 | 
			
		||||
        return getIntegerProperty(HttpClientPropertiesEnum.CONNECTION_REQUEST_TIMEOUT);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Integer> getSocketTimeout()
 | 
			
		||||
    public Integer getSocketTimeout()
 | 
			
		||||
    {
 | 
			
		||||
        return getIntegerProperty(HttpClientPropertiesEnum.SOCKET_TIMEOUT);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Integer> getConnectionRequestTimeout()
 | 
			
		||||
    public Integer getConnectionRequestTimeout()
 | 
			
		||||
    {
 | 
			
		||||
        return getIntegerProperty(HttpClientPropertiesEnum.CONNECTION_REQUEST_TIMEOUT);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Integer> getMaxTotalConnections()
 | 
			
		||||
    public Integer getMaxTotalConnections()
 | 
			
		||||
    {
 | 
			
		||||
        return getIntegerProperty(HttpClientPropertiesEnum.MAX_TOTAL_CONNECTIONS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Optional<Integer> getMaxHostConnections()
 | 
			
		||||
    public Integer getMaxHostConnections()
 | 
			
		||||
    {
 | 
			
		||||
        return getIntegerProperty(HttpClientPropertiesEnum.MAX_HOST_CONNECTIONS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isMTLSEnabled()
 | 
			
		||||
    public Boolean isMTLSEnabled()
 | 
			
		||||
    {
 | 
			
		||||
        return getBooleanProperty(HttpClientPropertiesEnum.MTLS_ENABLED).orElse(Boolean.FALSE);
 | 
			
		||||
        return getBooleanProperty(HttpClientPropertiesEnum.MTLS_ENABLED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isHostnameVerificationDisabled()
 | 
			
		||||
    {
 | 
			
		||||
        return getBooleanProperty(HttpClientPropertiesEnum.HOSTNAME_VERIFICATION_DISABLED).orElse(Boolean.FALSE);
 | 
			
		||||
        return getBooleanProperty(HttpClientPropertiesEnum.HOSTNAME_VERIFICATION_DISABLED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private enum HttpClientPropertiesEnum
 | 
			
		||||
    {
 | 
			
		||||
        CONNECTION_TIMEOUT("connectionTimeout"),
 | 
			
		||||
        SOCKET_TIMEOUT("socketTimeout"),
 | 
			
		||||
        CONNECTION_REQUEST_TIMEOUT("connectionRequestTimeout"),
 | 
			
		||||
        MAX_TOTAL_CONNECTIONS("maxTotalConnections"),
 | 
			
		||||
        MAX_HOST_CONNECTIONS("maxHostConnections"),
 | 
			
		||||
        HOSTNAME_VERIFICATION_DISABLED("hostnameVerificationDisabled"),
 | 
			
		||||
        MTLS_ENABLED("mTLSEnabled");
 | 
			
		||||
        CONNECTION_TIMEOUT("connectionTimeout", true),
 | 
			
		||||
        SOCKET_TIMEOUT("socketTimeout", true),
 | 
			
		||||
        CONNECTION_REQUEST_TIMEOUT("connectionRequestTimeout", true),
 | 
			
		||||
        MAX_TOTAL_CONNECTIONS("maxTotalConnections", true),
 | 
			
		||||
        MAX_HOST_CONNECTIONS("maxHostConnections", true),
 | 
			
		||||
        HOSTNAME_VERIFICATION_DISABLED("hostnameVerificationDisabled", false),
 | 
			
		||||
        MTLS_ENABLED("mTLSEnabled", true);
 | 
			
		||||
 | 
			
		||||
        private final String name;
 | 
			
		||||
        private final Boolean isRequired;
 | 
			
		||||
 | 
			
		||||
        HttpClientPropertiesEnum(String propertyName)
 | 
			
		||||
        HttpClientPropertiesEnum(String propertyName, Boolean isRequired)
 | 
			
		||||
        {
 | 
			
		||||
            this.name = propertyName;
 | 
			
		||||
            this.isRequired = isRequired;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static final List<String> supportedProperties = new ArrayList<>();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
 * Copyright (C) 2005-2010 Alfresco Software Limited.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of Alfresco
 | 
			
		||||
 *
 | 
			
		||||
@@ -20,13 +20,13 @@ package org.alfresco.web.scripts.servlet;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.Filter;
 | 
			
		||||
import jakarta.servlet.FilterChain;
 | 
			
		||||
import jakarta.servlet.FilterConfig;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRequest;
 | 
			
		||||
import jakarta.servlet.ServletResponse;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Simple servlet filter to add a 'Cache-Control' HTTP header to a response.
 | 
			
		||||
@@ -48,7 +48,7 @@ public class StaticAssetCacheFilter implements Filter
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see jakarta.servlet.Filter#init(jakarta.servlet.FilterConfig)
 | 
			
		||||
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
 | 
			
		||||
     */
 | 
			
		||||
    public void init(FilterConfig config) throws ServletException
 | 
			
		||||
    {
 | 
			
		||||
@@ -60,7 +60,7 @@ public class StaticAssetCacheFilter implements Filter
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see jakarta.servlet.Filter#doFilter(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse, jakarta.servlet.FilterChain)
 | 
			
		||||
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
 | 
			
		||||
            ServletException
 | 
			
		||||
@@ -70,7 +70,7 @@ public class StaticAssetCacheFilter implements Filter
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see jakarta.servlet.Filter#destroy()
 | 
			
		||||
     * @see javax.servlet.Filter#destroy()
 | 
			
		||||
     */
 | 
			
		||||
    public void destroy()
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
* Copyright (C) 2005 - 2023 Alfresco Software Limited.
 | 
			
		||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
 | 
			
		||||
*
 | 
			
		||||
* This file is part of Alfresco
 | 
			
		||||
*
 | 
			
		||||
@@ -21,9 +21,9 @@ package org.alfresco.web.scripts.servlet;
 | 
			
		||||
 | 
			
		||||
import javax.management.*;
 | 
			
		||||
import javax.security.auth.x500.X500Principal;
 | 
			
		||||
import jakarta.servlet.*;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.security.cert.X509Certificate;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
@@ -134,7 +134,7 @@ public abstract class X509ServletFilterBase implements Filter
 | 
			
		||||
                logger.debug("Enforcing X509 request");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            X509Certificate[] certs = (X509Certificate[])httpRequest.getAttribute("jakarta.servlet.request.X509Certificate");
 | 
			
		||||
            X509Certificate[] certs = (X509Certificate[])httpRequest.getAttribute("javax.servlet.request.X509Certificate");
 | 
			
		||||
            if(validCert(certs))
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -90,8 +90,9 @@
 | 
			
		||||
            | see http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
 | 
			
		||||
            -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.servlet</groupId>
 | 
			
		||||
            <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
            <groupId>javax.servlet</groupId>
 | 
			
		||||
            <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- Jakarta... -->
 | 
			
		||||
@@ -99,6 +100,7 @@
 | 
			
		||||
            <groupId>jakarta.activation</groupId>
 | 
			
		||||
            <artifactId>jakarta.activation-api</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- REPO-5047 - Replaces com.sun.activation:javax.activation -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.sun.activation</groupId>
 | 
			
		||||
            <artifactId>jakarta.activation</artifactId>
 | 
			
		||||
@@ -140,11 +142,53 @@
 | 
			
		||||
            <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
            <artifactId>chemistry-opencmis-commons-impl</artifactId>
 | 
			
		||||
            <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>com.sun.xml.messaging.saaj</groupId>
 | 
			
		||||
                    <artifactId>saaj-impl</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from com.fasterxml.woodstox:woodstox-core -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.codehaus.woodstox</groupId>
 | 
			
		||||
                    <artifactId>woodstox-core-asl</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- [ACS-544] Excluded as conflicts with JDK9+ as it includes javax.transaction -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                  <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                  <artifactId>geronimo-jta_1.1_spec</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
             </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
            <artifactId>chemistry-opencmis-server-bindings</artifactId>
 | 
			
		||||
            <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>commons-lang</groupId>
 | 
			
		||||
                    <artifactId>commons-lang3</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from jakarta.jws:jakarta.jws-api -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                    <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from jakarta.transaction:jakarta.transaction-api -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                    <artifactId>geronimo-jta_1.1_spec</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from jakarta.annotation:jakarta.annotation-api -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>javax.annotation</groupId>
 | 
			
		||||
                    <artifactId>javax.annotation-api</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from com.sun.activation:jakarta.activation -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>com.sun.activation</groupId>
 | 
			
		||||
                    <artifactId>javax.activation</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- This is now deployed at:
 | 
			
		||||
            | http://artifacts.alfresco.com/nexus/content/repositories/thirdparty/org/acegisecurity/acegi-security/0.8.2_patched/
 | 
			
		||||
@@ -197,10 +241,6 @@
 | 
			
		||||
                    <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                    <artifactId>bcprov-jdk15on</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                    <artifactId>bcmail-jdk15on</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>asm</groupId>
 | 
			
		||||
                    <artifactId>asm</artifactId>
 | 
			
		||||
@@ -224,10 +264,7 @@
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.bouncycastle</groupId>
 | 
			
		||||
            <artifactId>bcmail-jdk15to18</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.fasterxml.jackson.core</groupId>
 | 
			
		||||
            <artifactId>jackson-core</artifactId>
 | 
			
		||||
 
 | 
			
		||||
@@ -58,9 +58,10 @@ public class LuceneConjunction<Q, S, E extends Throwable> extends BaseConjunctio
 | 
			
		||||
    public Q addComponent(Set<String> selectors, Map<String, Argument> functionArgs, QueryBuilderContext<Q, S, E> luceneContext, FunctionEvaluationContext functionContext)
 | 
			
		||||
            throws E
 | 
			
		||||
    {
 | 
			
		||||
       
 | 
			
		||||
        QueryParserExpressionAdaptor<Q, E> expressionAdaptor = luceneContext.getLuceneQueryParserAdaptor().getExpressionAdaptor();
 | 
			
		||||
        boolean must = false;
 | 
			
		||||
        boolean mustNot = false;
 | 
			
		||||
        boolean must_not = false;
 | 
			
		||||
        for (Constraint constraint : getConstraints())
 | 
			
		||||
        {
 | 
			
		||||
            if (constraint instanceof LuceneQueryBuilderComponent)
 | 
			
		||||
@@ -83,20 +84,23 @@ public class LuceneConjunction<Q, S, E extends Throwable> extends BaseConjunctio
 | 
			
		||||
                        break;
 | 
			
		||||
                    case EXCLUDE:
 | 
			
		||||
                        expressionAdaptor.addExcluded(constraintQuery, constraint.getBoost());
 | 
			
		||||
                        mustNot = true;
 | 
			
		||||
                        must_not = true;
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                    
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                throw new UnsupportedOperationException();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if(!must && mustNot)
 | 
			
		||||
        {
 | 
			
		||||
            expressionAdaptor.addRequired(luceneContext.getLuceneQueryParserAdaptor().getMatchAllNodesQuery());
 | 
			
		||||
            if(!must &&  must_not)
 | 
			
		||||
            {
 | 
			
		||||
                expressionAdaptor.addRequired(luceneContext.getLuceneQueryParserAdaptor().getMatchAllNodesQuery());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return expressionAdaptor.getQuery();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -40,10 +40,12 @@ import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.Selector;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.Source;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.impl.BaseQuery;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.impl.SimpleConstraint;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.impl.functions.PropertyAccessor;
 | 
			
		||||
import org.alfresco.repo.search.impl.querymodel.impl.functions.Score;
 | 
			
		||||
import org.alfresco.service.cmr.search.SearchParameters.SortDefinition;
 | 
			
		||||
import org.alfresco.service.cmr.search.SearchParameters.SortDefinition.SortType;
 | 
			
		||||
import org.alfresco.util.Pair;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author andyh
 | 
			
		||||
@@ -70,8 +72,10 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
        QueryParserExpressionAdaptor<Q, E> expressionBuilder = luceneContext.getLuceneQueryParserAdaptor().getExpressionAdaptor();
 | 
			
		||||
 | 
			
		||||
        boolean must = false;
 | 
			
		||||
        boolean mustNot = false;
 | 
			
		||||
        boolean must_not = false;
 | 
			
		||||
 | 
			
		||||
        ArrayList<Pair<Constraint, Q>> queriestoConjoin = new ArrayList<>();
 | 
			
		||||
        
 | 
			
		||||
        if (selectors != null)
 | 
			
		||||
        {
 | 
			
		||||
            for (String selector : selectors)
 | 
			
		||||
@@ -82,6 +86,7 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
                    @SuppressWarnings("unchecked")
 | 
			
		||||
                    LuceneQueryBuilderComponent<Q, S, E> luceneQueryBuilderComponent = (LuceneQueryBuilderComponent<Q, S, E>) current;
 | 
			
		||||
                    Q selectorQuery = luceneQueryBuilderComponent.addComponent(selectors, null, luceneContext, functionContext);
 | 
			
		||||
                    queriestoConjoin.add(new Pair<Constraint, Q>(new SimpleConstraint(org.alfresco.repo.search.impl.querymodel.Constraint.Occur.MANDATORY), selectorQuery));
 | 
			
		||||
                    if (selectorQuery != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        expressionBuilder.addRequired(selectorQuery);
 | 
			
		||||
@@ -103,7 +108,8 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
                @SuppressWarnings("unchecked")
 | 
			
		||||
                LuceneQueryBuilderComponent<Q, S, E> luceneQueryBuilderComponent = (LuceneQueryBuilderComponent<Q, S, E>) constraint;
 | 
			
		||||
                Q constraintQuery = luceneQueryBuilderComponent.addComponent(selectors, null, luceneContext, functionContext);
 | 
			
		||||
 | 
			
		||||
                queriestoConjoin.add(new Pair<Constraint, Q>(constraint, constraintQuery));
 | 
			
		||||
                
 | 
			
		||||
                if (constraintQuery != null)
 | 
			
		||||
                {
 | 
			
		||||
                    switch (constraint.getOccur())
 | 
			
		||||
@@ -118,7 +124,7 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
                        break;
 | 
			
		||||
                    case EXCLUDE:
 | 
			
		||||
                        expressionBuilder.addExcluded(constraintQuery, constraint.getBoost());
 | 
			
		||||
                        mustNot = true;
 | 
			
		||||
                        must_not = true;
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@@ -129,12 +135,13 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!must && mustNot)
 | 
			
		||||
        if (!must && must_not)
 | 
			
		||||
        {
 | 
			
		||||
            expressionBuilder.addRequired(luceneContext.getLuceneQueryParserAdaptor().getMatchAllNodesQuery());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return expressionBuilder.getQuery();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
@@ -158,10 +165,10 @@ public class LuceneQuery<Q, S, E extends Throwable> extends BaseQuery implements
 | 
			
		||||
    {
 | 
			
		||||
        if ((getOrderings() == null) || (getOrderings().size() == 0))
 | 
			
		||||
        {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
            return Collections.<SortDefinition>emptyList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<SortDefinition> definitions = new ArrayList<>(getOrderings().size());
 | 
			
		||||
        ArrayList<SortDefinition> definitions = new ArrayList<SortDefinition>(getOrderings().size());
 | 
			
		||||
 | 
			
		||||
        for (Ordering ordering : getOrderings())
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,6 @@ public class DirectAccessUrl implements Serializable
 | 
			
		||||
    private String contentUrl;
 | 
			
		||||
    private Date expiryTime;
 | 
			
		||||
    private boolean attachment;
 | 
			
		||||
    private String fileName;
 | 
			
		||||
 | 
			
		||||
    public String getContentUrl()
 | 
			
		||||
    {
 | 
			
		||||
@@ -71,28 +70,18 @@ public class DirectAccessUrl implements Serializable
 | 
			
		||||
        this.attachment = attachment;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getFileName()
 | 
			
		||||
    {
 | 
			
		||||
        return fileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFileName(String fileName)
 | 
			
		||||
    {
 | 
			
		||||
        this.fileName = fileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public boolean equals(Object obj)
 | 
			
		||||
    {
 | 
			
		||||
        if (this == obj) return true;
 | 
			
		||||
        if (obj == null || getClass() != obj.getClass()) return false;
 | 
			
		||||
 | 
			
		||||
        DirectAccessUrl that = (DirectAccessUrl) obj;
 | 
			
		||||
        return Objects.equals(fileName, that.fileName) && attachment == that.attachment && Objects.equals(contentUrl,
 | 
			
		||||
        return attachment == that.attachment && Objects.equals(contentUrl,
 | 
			
		||||
                that.contentUrl) && Objects.equals(expiryTime, that.expiryTime);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override public int hashCode()
 | 
			
		||||
    {
 | 
			
		||||
        return Objects.hash(contentUrl, expiryTime, attachment, fileName);
 | 
			
		||||
        return Objects.hash(contentUrl, expiryTime, attachment);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Data model classes
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -27,7 +27,7 @@ package org.alfresco.util;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
 | 
			
		||||
import org.apache.chemistry.opencmis.commons.server.CmisServiceFactory;
 | 
			
		||||
import org.apache.chemistry.opencmis.server.impl.CmisRepositoryContextListener;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								mmt/pom.xml
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								mmt/pom.xml
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
@@ -20,16 +20,6 @@
 | 
			
		||||
            <groupId>de.schlichtherle.truezip</groupId>
 | 
			
		||||
            <artifactId>truezip-driver-zip</artifactId>
 | 
			
		||||
            <version>${dependency.truezip.version}</version>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                    <artifactId>bcprov-jdk15on</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.bouncycastle</groupId>
 | 
			
		||||
            <artifactId>bcprov-jdk15to18</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>de.schlichtherle.truezip</groupId>
 | 
			
		||||
@@ -41,11 +31,6 @@
 | 
			
		||||
            <artifactId>maven-artifact</artifactId>
 | 
			
		||||
            <version>${dependency.maven-artifact.version}</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>junit</groupId>
 | 
			
		||||
            <artifactId>junit</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.mockito</groupId>
 | 
			
		||||
            <artifactId>mockito-core</artifactId>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
# Fetch image based on Tomcat 9.0, Java 17 and Rocky Linux 8
 | 
			
		||||
# More infos about this image: https://github.com/Alfresco/alfresco-docker-base-tomcat
 | 
			
		||||
FROM alfresco/alfresco-base-tomcat:tomcat10-jre17-rockylinux8-202306291245
 | 
			
		||||
FROM alfresco/alfresco-base-tomcat:tomcat9-jre17-rockylinux8-202303081618
 | 
			
		||||
 | 
			
		||||
# Set default docker_context.
 | 
			
		||||
ARG resource_path=target
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
SOLR6_TAG=2.0.7-A5
 | 
			
		||||
POSTGRES_TAG=14.4
 | 
			
		||||
ACTIVEMQ_TAG=5.18.2-jre17-rockylinux8
 | 
			
		||||
ACTIVEMQ_TAG=5.17.4-jre17-rockylinux8
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <organization>
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
    <properties>
 | 
			
		||||
        <maven.build.sourceVersion>17</maven.build.sourceVersion>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <chemistry-opencmis-commons-api>1.1.0</chemistry-opencmis-commons-api>
 | 
			
		||||
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
 | 
			
		||||
        <maven-release.version>2.5.3</maven-release.version>
 | 
			
		||||
        <java.version>17</java.version>
 | 
			
		||||
@@ -68,6 +69,13 @@
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- open cmis settings -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
            <artifactId>chemistry-opencmis-commons-api</artifactId>
 | 
			
		||||
            <version>${chemistry-opencmis-commons-api}</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -280,26 +280,16 @@ public class CmisUtil
 | 
			
		||||
 | 
			
		||||
    protected boolean isPrivateWorkingCopy()
 | 
			
		||||
    {
 | 
			
		||||
        final Document document;
 | 
			
		||||
        boolean result;
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            document = getPWCDocument();
 | 
			
		||||
            result = getPWCDocument().isVersionSeriesPrivateWorkingCopy();
 | 
			
		||||
        }
 | 
			
		||||
        catch (CmisVersioningException cmisVersioningException)
 | 
			
		||||
        {
 | 
			
		||||
            return false;
 | 
			
		||||
            result = false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (Boolean.FALSE.equals(document.isVersionable())) return false;
 | 
			
		||||
        if (Boolean.FALSE.equals(document.isVersionSeriesCheckedOut())) return false;
 | 
			
		||||
 | 
			
		||||
        final Boolean isPWC = document.isPrivateWorkingCopy();
 | 
			
		||||
        if (isPWC != null) return isPWC;
 | 
			
		||||
 | 
			
		||||
        final String vsCoId = document.getVersionSeriesCheckedOutId();
 | 
			
		||||
        if (vsCoId == null) return false;
 | 
			
		||||
 | 
			
		||||
        return vsCoId.equals(document.getId());
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
@@ -31,11 +31,6 @@
 | 
			
		||||
            <artifactId>email</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.mail</groupId>
 | 
			
		||||
            <artifactId>jakarta.mail-api</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,8 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
public class ImapCheckFolderTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
public class ImapCopyFolderTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package org.alfresco.email.imap;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.dataprep.CMISUtil;
 | 
			
		||||
import org.alfresco.email.EmailTest;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for Create Folder action using IMAP client
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
 | 
			
		||||
public class ImapDeleteFolderTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
public class ImapDeleteMessagesTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import org.alfresco.utility.testrail.ExecutionType;
 | 
			
		||||
import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.Flags;
 | 
			
		||||
import javax.mail.Flags;
 | 
			
		||||
 | 
			
		||||
public class ImapMessageFlagsTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package org.alfresco.email.imap;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.dataprep.CMISUtil;
 | 
			
		||||
import org.alfresco.email.EmailTest;
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.Flags;
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.Flags;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
public class ImapReadMessagesTests extends EmailTest
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package org.alfresco.email.imap;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.email.EmailTest;
 | 
			
		||||
import org.alfresco.utility.constants.UserRole;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
public class ImapSitesTests extends EmailTest
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package org.alfresco.tas.integration;
 | 
			
		||||
 | 
			
		||||
import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.FolderNotFoundException;
 | 
			
		||||
import javax.mail.FolderNotFoundException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.model.RestCommentModel;
 | 
			
		||||
import org.alfresco.rest.model.RestDeploymentModel;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ import io.restassured.RestAssured;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import javax.json.JsonObject;
 | 
			
		||||
import jakarta.mail.Flags;
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.Flags;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.dataprep.CMISUtil;
 | 
			
		||||
import org.alfresco.dataprep.SiteService.Visibility;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import static org.alfresco.utility.report.log.Step.STEP;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import jakarta.mail.MessagingException;
 | 
			
		||||
import javax.mail.MessagingException;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.model.RestCommentModel;
 | 
			
		||||
import org.alfresco.rest.model.RestErrorModel;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -18,7 +18,7 @@
 | 
			
		||||
        <rest.api.explorer.branch>master</rest.api.explorer.branch>
 | 
			
		||||
        <httpclient-osgi-version>4.5.6</httpclient-osgi-version>
 | 
			
		||||
        <org.glassfish.version>1.1.4</org.glassfish.version>
 | 
			
		||||
        <commons-lang3.version>3.13.0</commons-lang3.version>
 | 
			
		||||
        <commons-lang3.version>3.12.0</commons-lang3.version>
 | 
			
		||||
        <scribejava-apis.version>8.3.3</scribejava-apis.version>
 | 
			
		||||
        <java.version>17</java.version>
 | 
			
		||||
    </properties>
 | 
			
		||||
@@ -45,9 +45,13 @@
 | 
			
		||||
    </profiles>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <!-- fix the info log messages related to Could not instantiate TestExecutionListener 
 | 
			
		||||
            [org.springframework.test.context.web.ServletTestExecutionListener -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.servlet</groupId>
 | 
			
		||||
            <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
            <groupId>javax.servlet</groupId>
 | 
			
		||||
            <artifactId>servlet-api</artifactId>
 | 
			
		||||
            <version>2.5</version>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- alfresco tester settings -->
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * alfresco-tas-restapi
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2022 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -86,7 +86,6 @@ import org.json.JSONObject;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.context.annotation.Scope;
 | 
			
		||||
import org.springframework.http.HttpMethod;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.testng.Assert;
 | 
			
		||||
@@ -631,42 +630,36 @@ public class RestWrapper extends DSLWrapper<RestWrapper>
 | 
			
		||||
 | 
			
		||||
        STEP(restRequest.toString());
 | 
			
		||||
 | 
			
		||||
        final Response returnedResponse;
 | 
			
		||||
        HttpMethod httpMethod = restRequest.getHttpMethod();
 | 
			
		||||
        if (HttpMethod.GET.equals(httpMethod))
 | 
			
		||||
        Response returnedResponse;
 | 
			
		||||
        switch (restRequest.getHttpMethod())
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.DELETE.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().delete(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.HEAD.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().head(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.OPTIONS.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().options(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.POST.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().body(restRequest.getBody())
 | 
			
		||||
                                          .post(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.PUT.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().body(restRequest.getBody())
 | 
			
		||||
                                          .contentType(ContentType.JSON.withCharset(restRequest.getContentType()))
 | 
			
		||||
                                          .put(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else if (HttpMethod.TRACE.equals(httpMethod))
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
            case GET:
 | 
			
		||||
                returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case DELETE:
 | 
			
		||||
                returnedResponse = onRequest().delete(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case HEAD:
 | 
			
		||||
                returnedResponse = onRequest().head(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case OPTIONS:
 | 
			
		||||
                returnedResponse = onRequest().options(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case POST:
 | 
			
		||||
                returnedResponse = onRequest().body(restRequest.getBody())
 | 
			
		||||
                        .post(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case PUT:
 | 
			
		||||
                returnedResponse = onRequest().body(restRequest.getBody())
 | 
			
		||||
                        .contentType(ContentType.JSON.withCharset(restRequest.getContentType()))
 | 
			
		||||
                        .put(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            case TRACE:
 | 
			
		||||
                returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                returnedResponse = onRequest().get(restRequest.getPath(), restRequest.getPathParams()).andReturn();
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        logResponseInformation(restRequest, returnedResponse);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,11 @@
 | 
			
		||||
package org.alfresco.rest.favorites;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.dataprep.CMISUtil.DocumentType;
 | 
			
		||||
import org.alfresco.rest.RestTest;
 | 
			
		||||
import org.alfresco.rest.model.RestErrorModel;
 | 
			
		||||
import org.alfresco.rest.model.RestPersonFavoritesModel;
 | 
			
		||||
import org.alfresco.rest.model.RestPersonFavoritesModelsCollection;
 | 
			
		||||
import org.alfresco.rest.model.RestSiteModel;
 | 
			
		||||
import org.alfresco.rest.search.RestRequestQueryModel;
 | 
			
		||||
import org.alfresco.rest.search.SearchRequest;
 | 
			
		||||
import org.alfresco.utility.Utility;
 | 
			
		||||
import org.alfresco.utility.constants.UserRole;
 | 
			
		||||
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
 | 
			
		||||
import org.alfresco.utility.model.FileModel;
 | 
			
		||||
@@ -20,7 +15,6 @@ import org.alfresco.utility.model.TestGroup;
 | 
			
		||||
import org.alfresco.utility.model.UserModel;
 | 
			
		||||
import org.alfresco.utility.testrail.ExecutionType;
 | 
			
		||||
import org.alfresco.utility.testrail.annotation.TestRail;
 | 
			
		||||
import org.hamcrest.Matchers;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.testng.annotations.BeforeClass;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
@@ -67,7 +61,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.SANITY,
 | 
			
		||||
            description = "Verify Manager user gets favorites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.SANITY })
 | 
			
		||||
    public void managerIsAbleToRetrieveFavorites()
 | 
			
		||||
    public void managerIsAbleToRetrieveFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteManager));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -83,7 +77,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
            description = "Verify user gets status code 401 if authentication call fails")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.SANITY })
 | 
			
		||||
//    @Bug(id = "MNT-16904", description = "It fails only on environment with tenants")
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesIfAuthenticationFails()
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesIfAuthenticationFails() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        UserModel siteManager = firstSiteUsers.getOneUserWithRole(UserRole.SiteManager);
 | 
			
		||||
        siteManager.setPassword("wrongPassword");
 | 
			
		||||
@@ -94,7 +88,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Admin user gets favorites sites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesSites()
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesSites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withCoreAPI().usingUser(adminUserModel).addSiteToFavorites(firstSiteModel);
 | 
			
		||||
        restClient.withCoreAPI().usingUser(adminUserModel).addSiteToFavorites(secondSiteModel);
 | 
			
		||||
@@ -109,7 +103,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Admin user gets favorites folders with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesFolders()
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesFolders() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withCoreAPI().usingUser(adminUserModel).addFolderToFavorites(firstFolderModel);
 | 
			
		||||
        restClient.withCoreAPI().usingUser(adminUserModel).addFolderToFavorites(secondFolderModel);
 | 
			
		||||
@@ -124,7 +118,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Admin user gets favorites files with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesFiles()
 | 
			
		||||
    public void adminIsAbleToRetrieveFavoritesFiles() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withCoreAPI().usingUser(adminUserModel).addFileToFavorites(firstFileModel);
 | 
			
		||||
        restClient.withCoreAPI().usingUser(adminUserModel).addFileToFavorites(secondFileModel);
 | 
			
		||||
@@ -139,7 +133,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Collaborator user gets favorites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void collaboratorIsAbleToRetrieveFavorites()
 | 
			
		||||
    public void collaboratorIsAbleToRetrieveFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator))
 | 
			
		||||
                  .withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -154,7 +148,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Contributor user gets favorites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void contributorIsAbleToRetrieveFavorites()
 | 
			
		||||
    public void contributorIsAbleToRetrieveFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteContributor))
 | 
			
		||||
                  .withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -169,7 +163,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify Consumer user gets favorites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void consumerIsAbleToRetrieveFavorites()
 | 
			
		||||
    public void consumerIsAbleToRetrieveFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteConsumer))
 | 
			
		||||
                  .withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -184,7 +178,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify user doesn't have permission to get favorites of another user with Rest API and status code is 404")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesOfAnotherUser()
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesOfAnotherUser() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteConsumer))
 | 
			
		||||
                  .withCoreAPI().usingUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator)).getFavorites();
 | 
			
		||||
@@ -195,7 +189,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify user doesn't have permission to get favorites of admin user with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION  })
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesOfAdminUser()
 | 
			
		||||
    public void userIsNotAbleToRetrieveFavoritesOfAdminUser() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteConsumer)).withCoreAPI()
 | 
			
		||||
                  .usingUser(adminUserModel).getFavorites();
 | 
			
		||||
@@ -206,7 +200,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify admin user doesn't have permission to get favorites of another user with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void adminIsNotAbleToRetrieveFavoritesOfAnotherUser()
 | 
			
		||||
    public void adminIsNotAbleToRetrieveFavoritesOfAnotherUser() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withCoreAPI().usingUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator))
 | 
			
		||||
                  .getFavorites();
 | 
			
		||||
@@ -217,7 +211,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites sites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesSites()
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesSites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(secondSiteUsers.getOneUserWithRole(UserRole.SiteManager));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -235,7 +229,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites files with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesFiles()
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesFiles() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -253,7 +247,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites folders with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesFolders()
 | 
			
		||||
    public void userIsAbleToRetrieveOnlyFavoritesFolders() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -271,7 +265,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites files or folders with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFilesOrFolders()
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFilesOrFolders() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteConsumer));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -292,7 +286,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites files or sites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFilesOrSites()
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFilesOrSites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(secondSiteUsers.getOneUserWithRole(UserRole.SiteManager));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -313,7 +307,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets only favorites folders or sites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFoldersOrSites()
 | 
			
		||||
    public void userIsAbleToRetrieveFavoritesFoldersOrSites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(secondSiteUsers.getOneUserWithRole(UserRole.SiteManager));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -334,7 +328,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets all favorites with Rest API and status code is 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToRetrieveAllFavorites()
 | 
			
		||||
    public void userIsAbleToRetrieveAllFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(secondSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -365,7 +359,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify request for a user with no favorites returns status 200")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userHasNoFavorites()
 | 
			
		||||
    public void userHasNoFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(secondSiteUsers.getOneUserWithRole(UserRole.SiteContributor));
 | 
			
		||||
 | 
			
		||||
@@ -377,7 +371,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify request using invalid where parameter returns status 400")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void getFavoritesUsingInvalidWhereParameter()
 | 
			
		||||
    public void getFavoritesUsingInvalidWhereParameter() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteConsumer));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -393,7 +387,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify User gets correct favorites after deleting a favorite")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void checkFavoriteFolderIsRemoved()
 | 
			
		||||
    public void checkFavoriteFolderIsRemoved() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(firstSiteUsers.getOneUserWithRole(UserRole.SiteManager));
 | 
			
		||||
        restClient.withCoreAPI().usingAuthUser().addSiteToFavorites(firstSiteModel);
 | 
			
		||||
@@ -411,7 +405,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites specifying -me- string in place of <personid> for request")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenUsingMeAsUsername()
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenUsingMeAsUsername() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withCoreAPI().usingMe().getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -421,7 +415,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites using empty for where parameter for request")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenUsingEmptyWhereParameter()
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenUsingEmptyWhereParameter() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(adminUserModel).withCoreAPI().usingAuthUser().where().getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
 | 
			
		||||
@@ -431,7 +425,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API,TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify that for invalid maxItems parameter status code returned is 400.")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void checkInvalidMaxItemsStatusCode()
 | 
			
		||||
    public void checkInvalidMaxItemsStatusCode() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withParams("maxItems=AB").withCoreAPI().usingUser(adminUserModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Invalid paging parameter");
 | 
			
		||||
@@ -440,7 +434,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API,TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify that for invalid skipCount parameter status code returned is 400.")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void checkInvalidSkipCountStatusCode()
 | 
			
		||||
    public void checkInvalidSkipCountStatusCode() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(adminUserModel).withParams("skipCount=AB").withCoreAPI().usingUser(adminUserModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Invalid paging parameter");
 | 
			
		||||
@@ -449,7 +443,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites when using invalid network id for non-tenant user")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void getFavoritesWhenNetworkIdIsInvalid()
 | 
			
		||||
    public void getFavoritesWhenNetworkIdIsInvalid() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        UserModel networkUserModel = dataUser.createRandomTestUser();
 | 
			
		||||
        networkUserModel.setDomain("invalidNetwork");
 | 
			
		||||
@@ -460,7 +454,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites using AND instead of OR in where parameter for request")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsNotAbleToGetFavoritesWhenUsingANDInWhereParameter()
 | 
			
		||||
    public void userIsNotAbleToGetFavoritesWhenUsingANDInWhereParameter() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.withCoreAPI().usingAuthUser().where().targetFolderExist().invalidWhereParameter("AND").targetFileExist().getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
 | 
			
		||||
@@ -470,7 +464,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites using wrong name instead of EXISTS in where parameter for request")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsNotAbleToGetFavoritesWhenUsingWrongWhereParameter()
 | 
			
		||||
    public void userIsNotAbleToGetFavoritesWhenUsingWrongWhereParameter() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.withCoreAPI().usingAuthUser().where().invalidWhereParameter("EXIST((target/site))").targetFileExist().getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
 | 
			
		||||
@@ -480,7 +474,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites except the first one for request")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesExceptTheFirstOne()
 | 
			
		||||
    public void userIsAbleToGetFavoritesExceptTheFirstOne() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withParams("skipCount=1").withCoreAPI().usingUser(userModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -493,7 +487,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get first two favorites sites")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFirstTwoFavorites()
 | 
			
		||||
    public void userIsAbleToGetFirstTwoFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withParams("maxItems=2").withCoreAPI().usingUser(userModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -509,7 +503,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify get favorites sites when using empty values for skipCount and maxItems")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenSkipCountAndMaxItemsAreEmpty()
 | 
			
		||||
    public void userIsAbleToGetFavoritesWhenSkipCountAndMaxItemsAreEmpty() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        restClient.authenticateUser(userModel).withParams("skipCount= ").withCoreAPI().usingUser(userModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, " "));
 | 
			
		||||
@@ -521,7 +515,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify the get favorites request for a high value for skipCount parameter")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesWithHighSkipCount()
 | 
			
		||||
    public void userIsAbleToGetFavoritesWithHighSkipCount() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withParams("skipCount=999999999").withCoreAPI().usingUser(userModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -532,7 +526,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify the get favorites request with properties parameter applied")
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    public void userIsAbleToGetFavoritesWithPropertiesParamApplied()
 | 
			
		||||
    public void userIsAbleToGetFavoritesWithPropertiesParamApplied() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withParams("properties=targetGuid").withCoreAPI().usingUser(userModel).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -543,7 +537,7 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION, description = "Verify entry details for get favorites response with Rest API")
 | 
			
		||||
    public void checkResponseSchemaForGetFavorites()
 | 
			
		||||
    public void checkResponseSchemaForGetFavorites() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        userFavorites = restClient.authenticateUser(userModel).withCoreAPI().usingAuthUser().getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
@@ -559,12 +553,11 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
                .field("title").is(thirdSiteModel.getTitle());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(groups = {TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION})
 | 
			
		||||
    @TestRail(section = {TestGroup.REST_API, TestGroup.FAVORITES}, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify if get favorites response returns allowableOperations object when requested")
 | 
			
		||||
    public void checkResponsesForGetFavoritesWithAllowableOperations()
 | 
			
		||||
    @Test(groups = { TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION })
 | 
			
		||||
    @TestRail(section = { TestGroup.REST_API, TestGroup.FAVORITES }, executionType = ExecutionType.REGRESSION, description = "Verify if get favorites response returns allowableOperations object when requested")
 | 
			
		||||
    public void checkResponseForGetFavoritesWithAllowableOperations()
 | 
			
		||||
    {
 | 
			
		||||
        final RestPersonFavoritesModelsCollection adminFavorites =
 | 
			
		||||
        RestPersonFavoritesModelsCollection adminFavorites =
 | 
			
		||||
                restClient.authenticateUser(adminUserModel).withCoreAPI().usingAuthUser().include(ALLOWABLE_OPERATIONS).getFavorites();
 | 
			
		||||
        restClient.assertStatusCodeIs(HttpStatus.OK);
 | 
			
		||||
 | 
			
		||||
@@ -572,22 +565,4 @@ public class GetFavoritesTests extends RestTest
 | 
			
		||||
                .map(RestPersonFavoritesModel::onModel)
 | 
			
		||||
                .forEach(m -> m.assertThat().field(ALLOWABLE_OPERATIONS).isNotEmpty());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @TestRail(section = {TestGroup.REST_API, TestGroup.FAVORITES}, executionType = ExecutionType.REGRESSION,
 | 
			
		||||
            description = "Verify the get favorites request with properties parameter applied")
 | 
			
		||||
    @Test(groups = {TestGroup.REST_API, TestGroup.FAVORITES, TestGroup.REGRESSION})
 | 
			
		||||
    public void checkSearchResponseContainsIsFavoriteWhenRequested() throws InterruptedException {
 | 
			
		||||
        final SearchRequest query = new SearchRequest();
 | 
			
		||||
        final RestRequestQueryModel queryReq = new RestRequestQueryModel();
 | 
			
		||||
        queryReq.setQuery(firstFileModel.getName());
 | 
			
		||||
        query.setQuery(queryReq);
 | 
			
		||||
        query.setInclude(List.of("isFavorite"));
 | 
			
		||||
 | 
			
		||||
        Utility.sleep(500, 60000, () ->
 | 
			
		||||
                {
 | 
			
		||||
                    restClient.authenticateUser(adminUserModel).withSearchAPI().search(query);
 | 
			
		||||
                    restClient.onResponse().assertThat().body("list.entries.entry[0].isFavorite", Matchers.notNullValue());
 | 
			
		||||
                }
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -59,8 +59,9 @@
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- 'provided' dependencies, not packaged in war -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.servlet</groupId>
 | 
			
		||||
            <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
            <groupId>javax.servlet</groupId>
 | 
			
		||||
            <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- Test dependencies -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Repository WAR Community
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.web.app;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletContextEvent;
 | 
			
		||||
import javax.servlet.ServletContextEvent;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Repository WAR Community
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -30,9 +30,9 @@ import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
import org.springframework.extensions.surf.util.URLDecoder;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServlet;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServlet;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.StringTokenizer;
 | 
			
		||||
 | 
			
		||||
@@ -66,7 +66,7 @@ public class DownloadContentServlet extends HttpServlet
 | 
			
		||||
   private static final String URL_DIRECT_LONG = "direct";
 | 
			
		||||
 | 
			
		||||
   /**
 | 
			
		||||
    * @see jakarta.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
 | 
			
		||||
    * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
 | 
			
		||||
    */
 | 
			
		||||
   protected void doGet(final HttpServletRequest req, final HttpServletResponse res)
 | 
			
		||||
      throws IOException
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										299
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										299
									
								
								pom.xml
									
									
									
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
			
		||||
    <modelVersion>4.0.0</modelVersion>
 | 
			
		||||
    <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
    <version>23.1.0.195</version>
 | 
			
		||||
    <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
    <name>Alfresco Community Repo Parent</name>
 | 
			
		||||
 | 
			
		||||
@@ -48,32 +48,30 @@
 | 
			
		||||
        <dependency.alfresco-hb-data-sender.version>1.1.1</dependency.alfresco-hb-data-sender.version>
 | 
			
		||||
        <dependency.alfresco-trashcan-cleaner.version>2.4.2</dependency.alfresco-trashcan-cleaner.version>
 | 
			
		||||
        <dependency.alfresco-jlan.version>7.5</dependency.alfresco-jlan.version>
 | 
			
		||||
        <dependency.alfresco-server-root.version>7.0.1</dependency.alfresco-server-root.version>
 | 
			
		||||
        <dependency.alfresco-server-root.version>6.0.1</dependency.alfresco-server-root.version>
 | 
			
		||||
        <dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version>
 | 
			
		||||
        <dependency.activiti.version>5.23.0</dependency.activiti.version>
 | 
			
		||||
        <dependency.alfresco-transform-service.version>3.0.1-A2</dependency.alfresco-transform-service.version>
 | 
			
		||||
        <dependency.alfresco-transform-core.version>4.0.1-A3</dependency.alfresco-transform-core.version>
 | 
			
		||||
        <dependency.alfresco-greenmail.version>7.0</dependency.alfresco-greenmail.version>
 | 
			
		||||
        <dependency.alfresco-transform-service.version>3.0.0</dependency.alfresco-transform-service.version>
 | 
			
		||||
        <dependency.alfresco-transform-core.version>4.0.0</dependency.alfresco-transform-core.version>
 | 
			
		||||
        <dependency.alfresco-greenmail.version>6.9</dependency.alfresco-greenmail.version>
 | 
			
		||||
        <dependency.acs-event-model.version>0.0.23</dependency.acs-event-model.version>
 | 
			
		||||
 | 
			
		||||
        <dependency.spring.version>6.0.9</dependency.spring.version>
 | 
			
		||||
        <dependency.spring.version>5.3.27</dependency.spring.version>
 | 
			
		||||
        <dependency.antlr.version>3.5.3</dependency.antlr.version>
 | 
			
		||||
        <dependency.jackson.version>2.15.2</dependency.jackson.version>
 | 
			
		||||
        <dependency.cxf.version>4.0.2</dependency.cxf.version>
 | 
			
		||||
        <dependency.opencmis.version>1.0.0-jakarta-1</dependency.opencmis.version>
 | 
			
		||||
        <dependency.webscripts.version>8.46</dependency.webscripts.version>
 | 
			
		||||
        <dependency.bouncycastle.version>1.76</dependency.bouncycastle.version>
 | 
			
		||||
        <dependency.mockito-core.version>5.4.0</dependency.mockito-core.version>
 | 
			
		||||
        <dependency.cxf.version>3.5.5</dependency.cxf.version>
 | 
			
		||||
        <dependency.opencmis.version>1.0.0</dependency.opencmis.version>
 | 
			
		||||
        <dependency.webscripts.version>8.45</dependency.webscripts.version>
 | 
			
		||||
        <dependency.bouncycastle.version>1.70</dependency.bouncycastle.version>
 | 
			
		||||
        <dependency.mockito-core.version>4.9.0</dependency.mockito-core.version>
 | 
			
		||||
        <dependency.assertj.version>3.24.2</dependency.assertj.version>
 | 
			
		||||
        <dependency.org-json.version>20230618</dependency.org-json.version>
 | 
			
		||||
        <dependency.commons-dbcp.version>2.9.0</dependency.commons-dbcp.version>
 | 
			
		||||
        <dependency.commons-io.version>2.13.0</dependency.commons-io.version>
 | 
			
		||||
        <dependency.gson.version>2.8.9</dependency.gson.version>
 | 
			
		||||
        <dependency.guava.version>32.1.2-jre</dependency.guava.version>
 | 
			
		||||
        <dependency.guava.version>32.1.1-jre</dependency.guava.version>
 | 
			
		||||
        <dependency.httpclient.version>4.5.13</dependency.httpclient.version>
 | 
			
		||||
        <dependency.httpcore.version>4.4.16</dependency.httpcore.version>
 | 
			
		||||
        <dependency.httpcomponents-httpclient5.version>5.2.1</dependency.httpcomponents-httpclient5.version>
 | 
			
		||||
        <dependency.httpcomponents-httpcore5.version>5.2.2</dependency.httpcomponents-httpcore5.version>
 | 
			
		||||
        <dependency.commons-httpclient.version>3.1-HTTPCLIENT-1265</dependency.commons-httpclient.version>
 | 
			
		||||
        <dependency.xercesImpl.version>2.12.2</dependency.xercesImpl.version>
 | 
			
		||||
        <dependency.slf4j.version>2.0.7</dependency.slf4j.version>
 | 
			
		||||
@@ -81,14 +79,16 @@
 | 
			
		||||
        <dependency.gytheio.version>0.20.0-A1</dependency.gytheio.version>
 | 
			
		||||
        <dependency.groovy.version>3.0.18</dependency.groovy.version>
 | 
			
		||||
        <dependency.tika.version>2.4.1</dependency.tika.version>
 | 
			
		||||
        <dependency.spring-security.version>6.1.0</dependency.spring-security.version>
 | 
			
		||||
        <dependency.spring-security.version>5.8.3</dependency.spring-security.version>
 | 
			
		||||
        <dependency.truezip.version>7.7.10</dependency.truezip.version>
 | 
			
		||||
        <dependency.poi.version>5.2.2</dependency.poi.version>
 | 
			
		||||
        <dependency.poi-ooxml-lite.version>5.2.3</dependency.poi-ooxml-lite.version>
 | 
			
		||||
        <dependency.jboss.logging.version>3.5.0.Final</dependency.jboss.logging.version>
 | 
			
		||||
        <dependency.camel.version>4.0.0-RC2</dependency.camel.version> <!-- when bumping this version, please keep track/sync with included netty.io dependencies -->
 | 
			
		||||
        <dependency.netty.version>4.1.96.Final</dependency.netty.version> <!-- must be in sync with camels transitive dependencies, e.g.: netty-common -->
 | 
			
		||||
        <dependency.activemq.version>5.18.2</dependency.activemq.version>
 | 
			
		||||
        <dependency.camel.version>3.20.2</dependency.camel.version> <!-- when bumping this version, please keep track/sync with included netty.io dependencies -->
 | 
			
		||||
        <dependency.netty.version>4.1.87.Final</dependency.netty.version> <!-- must be in sync with camels transitive dependencies, e.g.: netty-common -->
 | 
			
		||||
        <dependency.netty.qpid.version>4.1.82.Final</dependency.netty.qpid.version> <!-- must be in sync with camels transitive dependencies: native-unix-common/native-epoll/native-kqueue -->
 | 
			
		||||
        <dependency.netty-tcnative.version>2.0.56.Final</dependency.netty-tcnative.version> <!-- must be in sync with camels transitive dependencies -->
 | 
			
		||||
        <dependency.activemq.version>5.17.4</dependency.activemq.version>
 | 
			
		||||
        <dependency.apache-compress.version>1.23.0</dependency.apache-compress.version>
 | 
			
		||||
        <dependency.apache.taglibs.version>1.2.5</dependency.apache.taglibs.version>
 | 
			
		||||
        <dependency.awaitility.version>4.2.0</dependency.awaitility.version>
 | 
			
		||||
@@ -97,26 +97,22 @@
 | 
			
		||||
        <dependency.maven-filtering.version>3.1.1</dependency.maven-filtering.version>
 | 
			
		||||
        <dependency.maven-artifact.version>3.8.6</dependency.maven-artifact.version>
 | 
			
		||||
        <dependency.jdom2.version>2.0.6.1</dependency.jdom2.version>
 | 
			
		||||
        <dependency.pooled-jms.version>3.1.0</dependency.pooled-jms.version>
 | 
			
		||||
 | 
			
		||||
        <dependency.jakarta-ee-jaxb-api.version>3.0.1</dependency.jakarta-ee-jaxb-api.version>
 | 
			
		||||
        <dependency.java-ee-jaxb-api.version>2.3.3</dependency.java-ee-jaxb-api.version>
 | 
			
		||||
        <dependency.jakarta-ws-api.version>3.0.1</dependency.jakarta-ws-api.version>
 | 
			
		||||
        <dependency.jakarta-soap-api.version>2.0.1</dependency.jakarta-soap-api.version>
 | 
			
		||||
        <dependency.jakarta-jaxb-api.version>2.3.3</dependency.jakarta-jaxb-api.version>
 | 
			
		||||
        <dependency.jakarta-ws-api.version>2.3.3</dependency.jakarta-ws-api.version>
 | 
			
		||||
        <dependency.jakarta-soap-api.version>1.4.2</dependency.jakarta-soap-api.version>
 | 
			
		||||
        <dependency.jakarta-activation-api.version>1.2.2</dependency.jakarta-activation-api.version>
 | 
			
		||||
        <dependency.jakarta-annotation-api.version>2.1.1</dependency.jakarta-annotation-api.version>
 | 
			
		||||
        <dependency.jakarta-transaction-api.version>1.3.3</dependency.jakarta-transaction-api.version>
 | 
			
		||||
        <dependency.jakarta-jws-api.version>3.0.0</dependency.jakarta-jws-api.version>
 | 
			
		||||
        <dependency.jakarta-ee-mail.version>2.0.1</dependency.jakarta-ee-mail.version>
 | 
			
		||||
        <dependency.jakarta-ee-activation.version>2.0.1</dependency.jakarta-ee-activation.version>
 | 
			
		||||
        <dependency.jakarta-ee-jms.version>3.0.0</dependency.jakarta-ee-jms.version>
 | 
			
		||||
        <dependency.java-ee-activation.version>1.2.0</dependency.java-ee-activation.version>
 | 
			
		||||
        <dependency.jakarta-jws-api.version>2.1.0</dependency.jakarta-jws-api.version>
 | 
			
		||||
        <dependency.jakarta-mail-api.version>1.6.5</dependency.jakarta-mail-api.version>
 | 
			
		||||
        <dependency.jakarta-json-api.version>1.1.6</dependency.jakarta-json-api.version>
 | 
			
		||||
        <dependency.jakarta-json-path.version>2.8.0</dependency.jakarta-json-path.version>
 | 
			
		||||
        <dependency.json-smart.version>2.5.0</dependency.json-smart.version>
 | 
			
		||||
        <dependency.jakarta-rpc-api.version>1.1.4</dependency.jakarta-rpc-api.version>
 | 
			
		||||
 | 
			
		||||
        <alfresco.googledrive.version>3.4.2-A4</alfresco.googledrive.version>
 | 
			
		||||
        <alfresco.aos-module.version>1.6.2-A1</alfresco.aos-module.version>
 | 
			
		||||
        <alfresco.aos-module.version>1.6.1</alfresco.aos-module.version>
 | 
			
		||||
        <alfresco.api-explorer.version>23.1.0-A1</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share -->
 | 
			
		||||
 | 
			
		||||
        <alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version>
 | 
			
		||||
@@ -126,9 +122,9 @@
 | 
			
		||||
        <dependency.mysql.version>8.0.30</dependency.mysql.version>
 | 
			
		||||
        <dependency.mysql-image.version>8</dependency.mysql-image.version>
 | 
			
		||||
        <dependency.mariadb.version>2.7.4</dependency.mariadb.version>
 | 
			
		||||
        <dependency.tas-utility.version>5.0.0</dependency.tas-utility.version>
 | 
			
		||||
        <dependency.tas-utility.version>4.0.4</dependency.tas-utility.version>
 | 
			
		||||
        <dependency.rest-assured.version>5.3.1</dependency.rest-assured.version>
 | 
			
		||||
        <dependency.tas-email.version>2.0.0</dependency.tas-email.version>
 | 
			
		||||
        <dependency.tas-email.version>1.24</dependency.tas-email.version>
 | 
			
		||||
        <dependency.tas-webdav.version>1.20</dependency.tas-webdav.version>
 | 
			
		||||
        <dependency.tas-ftp.version>1.18</dependency.tas-ftp.version>
 | 
			
		||||
        <dependency.tas-dataprep.version>2.6</dependency.tas-dataprep.version>
 | 
			
		||||
@@ -154,7 +150,7 @@
 | 
			
		||||
        <connection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</connection>
 | 
			
		||||
        <developerConnection>scm:git:https://github.com/Alfresco/alfresco-community-repo.git</developerConnection>
 | 
			
		||||
        <url>https://github.com/Alfresco/alfresco-community-repo</url>
 | 
			
		||||
        <tag>23.1.0.195</tag>
 | 
			
		||||
        <tag>HEAD</tag>
 | 
			
		||||
    </scm>
 | 
			
		||||
 | 
			
		||||
    <distributionManagement>
 | 
			
		||||
@@ -174,12 +170,12 @@
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.xml.bind</groupId>
 | 
			
		||||
                <artifactId>jakarta.xml.bind-api</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-jaxb-api.version}</version>
 | 
			
		||||
                <version>${dependency.jakarta-jaxb-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.glassfish.jaxb</groupId>
 | 
			
		||||
                <artifactId>jaxb-runtime</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-jaxb-api.version}</version>
 | 
			
		||||
                <version>${dependency.jakarta-jaxb-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
@@ -194,6 +190,17 @@
 | 
			
		||||
                <version>${dependency.jakarta-soap-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.activation</groupId>
 | 
			
		||||
                <artifactId>jakarta.activation-api</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-activation-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.sun.activation</groupId>
 | 
			
		||||
                <artifactId>jakarta.activation</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-activation-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.annotation</groupId>
 | 
			
		||||
                <artifactId>jakarta.annotation-api</artifactId>
 | 
			
		||||
@@ -212,49 +219,15 @@
 | 
			
		||||
                <version>${dependency.jakarta-jws-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
<!--            <dependency>-->
 | 
			
		||||
<!--                <groupId>com.sun.mail</groupId>-->
 | 
			
		||||
<!--                <artifactId>javax.mail</artifactId>-->
 | 
			
		||||
<!--                <version>${dependency.java-ee-mail.version}</version>-->
 | 
			
		||||
<!--            </dependency>-->
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.sun.mail</groupId>
 | 
			
		||||
                <artifactId>jakarta.mail</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-mail.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.mail</groupId>
 | 
			
		||||
                <artifactId>jakarta.mail-api</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-mail.version}</version>
 | 
			
		||||
                <scope>provided</scope>
 | 
			
		||||
                <version>${dependency.jakarta-mail-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.sun.activation</groupId>
 | 
			
		||||
                <artifactId>jakarta.activation</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-activation.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.activation</groupId>
 | 
			
		||||
                <artifactId>jakarta.activation-api</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-activation.version}</version>
 | 
			
		||||
                <scope>provided</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>javax.activation</groupId>
 | 
			
		||||
                <artifactId>javax.activation-api</artifactId>
 | 
			
		||||
                <version>${dependency.java-ee-activation.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.jms</groupId>
 | 
			
		||||
                <artifactId>jakarta.jms-api</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-ee-jms.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.messaginghub</groupId>
 | 
			
		||||
                <artifactId>pooled-jms</artifactId>
 | 
			
		||||
                <version>${dependency.pooled-jms.version}</version>
 | 
			
		||||
                <groupId>com.sun.mail</groupId>
 | 
			
		||||
                <artifactId>jakarta.mail</artifactId>
 | 
			
		||||
                <version>${dependency.jakarta-mail-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
@@ -290,33 +263,6 @@
 | 
			
		||||
                <version>${dependency.jakarta-rpc-api.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <!--CMIS-->
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
                <artifactId>chemistry-opencmis-client-api</artifactId>
 | 
			
		||||
                <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
                <artifactId>chemistry-opencmis-client-bindings</artifactId>
 | 
			
		||||
                <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
                <artifactId>chemistry-opencmis-client-impl</artifactId>
 | 
			
		||||
                <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
                <artifactId>chemistry-opencmis-commons-api</artifactId>
 | 
			
		||||
                <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
                <artifactId>chemistry-opencmis-commons-impl</artifactId>
 | 
			
		||||
                <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.alfresco</groupId>
 | 
			
		||||
                <artifactId>alfresco-jlan-embed</artifactId>
 | 
			
		||||
@@ -401,16 +347,6 @@
 | 
			
		||||
                <artifactId>commons-httpclient</artifactId>
 | 
			
		||||
                <version>${dependency.commons-httpclient.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.httpcomponents.client5</groupId>
 | 
			
		||||
                <artifactId>httpclient5</artifactId>
 | 
			
		||||
                <version>${dependency.httpcomponents-httpclient5.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.httpcomponents.core5</groupId>
 | 
			
		||||
                <artifactId>httpcore5</artifactId>
 | 
			
		||||
                <version>${dependency.httpcomponents-httpcore5.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-logging</groupId>
 | 
			
		||||
                <artifactId>commons-logging</artifactId>
 | 
			
		||||
@@ -448,15 +384,11 @@
 | 
			
		||||
                <version>2.1</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.commons</groupId>
 | 
			
		||||
                <artifactId>commons-fileupload2-jakarta</artifactId>
 | 
			
		||||
                <version>2.0.0-M1</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-net</groupId>
 | 
			
		||||
                <artifactId>commons-net</artifactId>
 | 
			
		||||
                <version>3.9.0</version>
 | 
			
		||||
                <groupId>commons-fileupload</groupId>
 | 
			
		||||
                <artifactId>commons-fileupload</artifactId>
 | 
			
		||||
                <version>1.5</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.httpcomponents</groupId>
 | 
			
		||||
                <artifactId>httpclient</artifactId>
 | 
			
		||||
@@ -586,7 +518,7 @@
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.yaml</groupId>
 | 
			
		||||
                <artifactId>snakeyaml</artifactId>
 | 
			
		||||
                <version>2.1</version>
 | 
			
		||||
                <version>2.0</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.fasterxml.jackson.core</groupId>
 | 
			
		||||
@@ -663,17 +595,12 @@
 | 
			
		||||
            <!-- Enforce newer version -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                <artifactId>bcprov-jdk15to18</artifactId>
 | 
			
		||||
                <artifactId>bcprov-jdk15on</artifactId>
 | 
			
		||||
                <version>${dependency.bouncycastle.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                <artifactId>bcmail-jdk15to18</artifactId>
 | 
			
		||||
                <version>${dependency.bouncycastle.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.bouncycastle</groupId>
 | 
			
		||||
                <artifactId>bcpkix-jdk15to18</artifactId>
 | 
			
		||||
                <artifactId>bcmail-jdk15on</artifactId>
 | 
			
		||||
                <version>${dependency.bouncycastle.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
@@ -711,9 +638,9 @@
 | 
			
		||||
                <version>7.5.5</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.networknt</groupId>
 | 
			
		||||
                <groupId>com.github.fge</groupId>
 | 
			
		||||
                <artifactId>json-schema-validator</artifactId>
 | 
			
		||||
                <version>1.0.86</version>
 | 
			
		||||
                <version>2.2.6</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <!-- upgrade dependency from TIKA -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
@@ -808,22 +735,9 @@
 | 
			
		||||
 | 
			
		||||
            <!-- provided dependencies -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.servlet</groupId>
 | 
			
		||||
                <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
                <version>6.0.0</version>
 | 
			
		||||
                <scope>provided</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>jakarta.servlet.jsp</groupId>
 | 
			
		||||
                <artifactId>jakarta.servlet.jsp-api</artifactId>
 | 
			
		||||
                <version>3.1.1</version>
 | 
			
		||||
                <scope>provided</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
                <artifactId>camel-activemq</artifactId>
 | 
			
		||||
                <version>${dependency.camel.version}</version>
 | 
			
		||||
                <groupId>javax.servlet</groupId>
 | 
			
		||||
                <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
                <version>3.0.1</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <!-- Test only dependencies, as popped up while running mvn test -->
 | 
			
		||||
@@ -883,6 +797,22 @@
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
                <artifactId>camel-activemq</artifactId>
 | 
			
		||||
                <version>${dependency.camel.version}</version>
 | 
			
		||||
                <exclusions>
 | 
			
		||||
                    <exclusion>
 | 
			
		||||
                        <groupId>org.apache.activemq</groupId>
 | 
			
		||||
                        <artifactId>activemq-broker</artifactId>
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                    <!-- Duplicates classes from jakarta.transaction:jakarta.transaction-api -->
 | 
			
		||||
                    <exclusion>
 | 
			
		||||
                        <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                        <artifactId>geronimo-jta_1.1_spec</artifactId>
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <!--  If you are going to bump dependency.camel.version, please check if the netty-codec-http has higher version that the one above.-->
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
@@ -901,6 +831,11 @@
 | 
			
		||||
                <artifactId>camel-jackson</artifactId>
 | 
			
		||||
                <version>${dependency.camel.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
                <artifactId>camel-directvm</artifactId>
 | 
			
		||||
                <version>${dependency.camel.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
                <artifactId>camel-direct</artifactId>
 | 
			
		||||
@@ -916,6 +851,17 @@
 | 
			
		||||
                <artifactId>camel-mock</artifactId>
 | 
			
		||||
                <version>${dependency.camel.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <!-- Netty non-transitive dependencies declared for depending projects usage in conjunction with Camel's other transitive netty dependencies -->
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>io.netty</groupId>
 | 
			
		||||
                <artifactId>netty-handler-proxy</artifactId>
 | 
			
		||||
                <version>${dependency.netty.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>io.netty</groupId>
 | 
			
		||||
                <artifactId>netty-tcnative-classes</artifactId>
 | 
			
		||||
                <version>${dependency.netty-tcnative.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.taglibs</groupId>
 | 
			
		||||
@@ -960,15 +906,6 @@
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>io.netty</groupId>
 | 
			
		||||
                <artifactId>netty-bom</artifactId>
 | 
			
		||||
                <version>${dependency.netty.version}</version>
 | 
			
		||||
                <type>pom</type>
 | 
			
		||||
                <scope>import</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.springframework.security</groupId>
 | 
			
		||||
                <artifactId>spring-security-bom</artifactId>
 | 
			
		||||
@@ -1077,60 +1014,6 @@
 | 
			
		||||
                    <artifactId>cargo-maven3-plugin</artifactId>
 | 
			
		||||
                    <version>1.10.8</version>
 | 
			
		||||
                </plugin>
 | 
			
		||||
                <plugin>
 | 
			
		||||
                    <groupId>org.apache.maven.plugins</groupId>
 | 
			
		||||
                    <artifactId>maven-enforcer-plugin</artifactId>
 | 
			
		||||
                    <version>3.3.0</version>
 | 
			
		||||
                    <executions>
 | 
			
		||||
                        <execution>
 | 
			
		||||
                            <id>enforce-banned-dependencies</id>
 | 
			
		||||
                            <goals>
 | 
			
		||||
                                <goal>enforce</goal>
 | 
			
		||||
                            </goals>
 | 
			
		||||
                            <configuration>
 | 
			
		||||
                                <rules>
 | 
			
		||||
                                    <bannedDependencies>
 | 
			
		||||
                                        <excludes>
 | 
			
		||||
                                            <exclude>commons-fileupload:commons-fileupload</exclude>
 | 
			
		||||
 | 
			
		||||
                                            <exclude>javax.servlet:servlet-api</exclude>
 | 
			
		||||
                                            <exclude>com.sun.mail:javax.mail</exclude>
 | 
			
		||||
                                            <exclude>javax.jms:javax.jms-api</exclude>
 | 
			
		||||
                                            <exclude>javax.activation:activation</exclude>
 | 
			
		||||
                                            <exclude>javax.activation:javax.activation-api</exclude>
 | 
			
		||||
                                            <exclude>javax.xml.bind:jaxb-api</exclude>
 | 
			
		||||
                                            <exclude>javax.xml.soap:saaj-api</exclude>
 | 
			
		||||
                                            <exclude>javax.xml.ws:jaxws-api</exclude>
 | 
			
		||||
                                            <exclude>javax.mail</exclude>
 | 
			
		||||
 | 
			
		||||
<!--                                            Enforce minimal versions of jakarta dependencies-->
 | 
			
		||||
                                            <exclude>jakarta.servlet:jakarta.servlet-api:(, 5.0.0)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.xml.bind:jakarta.xml.bind-api:(, 3.0.1)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.json:jakarta.json-api:(, 2.0.1)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.servlet.jsp:jakarta.servlet.jsp-api:(, 3.0.0)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.annotation:jakarta.annotation-api:(, 2.0.0)</exclude>
 | 
			
		||||
<!--                                            <exclude>jakarta.transaction:jakarta.transaction-api:(, 2.0.0)</exclude>-->
 | 
			
		||||
                                            <exclude>jakarta.jms:jakarta.jms-api:(, 3.0.0)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.activation:jakarta.activation-api:(, 2.0.1)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.xml.ws:jakarta.xml.ws-api:(, 3.0.1)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.xml.soap:jakarta.xml.soap-api:(, 2.0.1)</exclude>
 | 
			
		||||
                                            <exclude>jakarta.jws:jakarta.jws-api:(, 3.0.0)</exclude>
 | 
			
		||||
<!--                                            Enforce ban bouncycastle dependencies other than specified under <includes> section-->
 | 
			
		||||
                                            <exclude>org.bouncycastle</exclude>
 | 
			
		||||
                                        </excludes>
 | 
			
		||||
                                        <includes>
 | 
			
		||||
                                            <include>org.bouncycastle:bcprov-jdk15to18:[1.74,)</include>
 | 
			
		||||
                                            <include>org.bouncycastle:bcmail-jdk15to18:[1.74,)</include>
 | 
			
		||||
                                            <include>org.bouncycastle:bcpkix-jdk15to18:[1.74,)</include>
 | 
			
		||||
                                            <include>org.bouncycastle:bcutil-jdk15to18:[1.74,)</include>
 | 
			
		||||
                                        </includes>
 | 
			
		||||
                                    </bannedDependencies>
 | 
			
		||||
                                </rules>
 | 
			
		||||
                                <fail>true</fail>
 | 
			
		||||
                            </configuration>
 | 
			
		||||
                        </execution>
 | 
			
		||||
                    </executions>
 | 
			
		||||
                </plugin>
 | 
			
		||||
            </plugins>
 | 
			
		||||
        </pluginManagement>
 | 
			
		||||
        <plugins>
 | 
			
		||||
@@ -1138,10 +1021,6 @@
 | 
			
		||||
                <groupId>org.codehaus.mojo</groupId>
 | 
			
		||||
                <artifactId>license-maven-plugin</artifactId>
 | 
			
		||||
            </plugin>
 | 
			
		||||
            <plugin>
 | 
			
		||||
                <groupId>org.apache.maven.plugins</groupId>
 | 
			
		||||
                <artifactId>maven-enforcer-plugin</artifactId>
 | 
			
		||||
            </plugin>
 | 
			
		||||
        </plugins>
 | 
			
		||||
    </build>
 | 
			
		||||
</project>
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.195</version>
 | 
			
		||||
        <version>23.1.0.168-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
@@ -36,12 +36,9 @@
 | 
			
		||||
            <artifactId>jackson-annotations</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.servlet</groupId>
 | 
			
		||||
            <artifactId>jakarta.servlet-api</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>jakarta.mail</groupId>
 | 
			
		||||
            <artifactId>jakarta.mail-api</artifactId>
 | 
			
		||||
            <groupId>javax.servlet</groupId>
 | 
			
		||||
            <artifactId>javax.servlet-api</artifactId>
 | 
			
		||||
            <scope>provided</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.commons</groupId>
 | 
			
		||||
@@ -62,8 +59,22 @@
 | 
			
		||||
            <groupId>org.apache.chemistry.opencmis</groupId>
 | 
			
		||||
            <artifactId>chemistry-opencmis-test-tck</artifactId>
 | 
			
		||||
            <version>${dependency.opencmis.version}</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <!-- REPO-5009 Excluded to avoid duplicated classes with javax.jws:javax.jws-api -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                  <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                  <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
                <!-- Duplicates classes from jakarta.transaction:jakarta.transaction-api -->
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                    <artifactId>geronimo-jta_1.1_spec</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
            <!-- <scope>test</scope> -->
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- the cxf libs were updated, see dependencyManagement section -->
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- Test dependencies -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
@@ -119,7 +130,7 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.eclipse.jetty</groupId>
 | 
			
		||||
            <artifactId>jetty-server</artifactId>
 | 
			
		||||
            <version>11.0.15</version>
 | 
			
		||||
            <version>10.0.14</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
@@ -131,13 +142,13 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.eclipse.jetty</groupId>
 | 
			
		||||
            <artifactId>jetty-security</artifactId>
 | 
			
		||||
            <version>11.0.15</version>
 | 
			
		||||
            <version>10.0.11</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.eclipse.jetty</groupId>
 | 
			
		||||
            <artifactId>jetty-webapp</artifactId>
 | 
			
		||||
            <version>11.0.15</version>
 | 
			
		||||
            <version>10.0.11</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
@@ -146,10 +157,21 @@
 | 
			
		||||
            <version>2.3</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
            <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <groupId>*</groupId>
 | 
			
		||||
                    <artifactId>*</artifactId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
              <!-- Duplicates classes from jakarta.transaction:jakarta.transaction-api -->
 | 
			
		||||
              <exclusion>
 | 
			
		||||
                <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                <artifactId>geronimo-jta_1.1_spec</artifactId>
 | 
			
		||||
              </exclusion>
 | 
			
		||||
              <!-- REPO-5009 Excluded to avoid duplicated classes with javax.jws:javax.jws-api -->
 | 
			
		||||
              <exclusion>
 | 
			
		||||
                <groupId>org.apache.geronimo.specs</groupId>
 | 
			
		||||
                <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
 | 
			
		||||
              </exclusion>
 | 
			
		||||
              <!-- MNT-20557: Excluding javax.annotation:javax.annotation-api, jakarta.annotation:jakarta.annotation-api will be used instead -->
 | 
			
		||||
              <exclusion>
 | 
			
		||||
                  <groupId>javax.annotation</groupId>
 | 
			
		||||
                  <artifactId>javax.annotation-api</artifactId>
 | 
			
		||||
              </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
import org.alfresco.repo.tenant.TenantUtil;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServlet;
 | 
			
		||||
import javax.servlet.http.HttpServlet;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
import org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -23,22 +23,22 @@
 | 
			
		||||
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS base url based on the request, repository id and binding.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author steveglover
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public interface BaseUrlGenerator
 | 
			
		||||
{
 | 
			
		||||
	String getContextPath(HttpServletRequest httpReq);
 | 
			
		||||
	String getServletPath(HttpServletRequest req);
 | 
			
		||||
	String getBaseUrl(HttpServletRequest req, String repositoryId, Binding binding);
 | 
			
		||||
	String getRequestURI(HttpServletRequest req, String repositoryId, String operation, String id);
 | 
			
		||||
}
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS base url based on the request, repository id and binding.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author steveglover
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public interface BaseUrlGenerator
 | 
			
		||||
{
 | 
			
		||||
	String getContextPath(HttpServletRequest httpReq);
 | 
			
		||||
	String getServletPath(HttpServletRequest req);
 | 
			
		||||
	String getBaseUrl(HttpServletRequest req, String repositoryId, Binding binding);
 | 
			
		||||
	String getRequestURI(HttpServletRequest req, String repositoryId, String operation, String id);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServlet;
 | 
			
		||||
import javax.servlet.http.HttpServlet;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
import org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -25,14 +25,31 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import java.io.BufferedReader;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.UnsupportedEncodingException;
 | 
			
		||||
import java.security.Principal;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Enumeration;
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequestWrapper;
 | 
			
		||||
import javax.servlet.AsyncContext;
 | 
			
		||||
import javax.servlet.DispatcherType;
 | 
			
		||||
import javax.servlet.RequestDispatcher;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletInputStream;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.http.Cookie;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpSession;
 | 
			
		||||
import javax.servlet.http.Part;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
 | 
			
		||||
@@ -53,9 +70,10 @@ import org.springframework.extensions.webscripts.servlet.WebScriptServletRuntime
 | 
			
		||||
 * Wraps an OpenCMIS HttpServletRequest, mapping urls and adding servlet attributes specific to the Alfresco implementation of OpenCMIS.
 | 
			
		||||
 */
 | 
			
		||||
@SuppressWarnings("rawtypes")
 | 
			
		||||
public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
public class CMISHttpServletRequest implements HttpServletRequest
 | 
			
		||||
{
 | 
			
		||||
	protected WebScriptRequest req;
 | 
			
		||||
	protected HttpServletRequest httpReq;
 | 
			
		||||
	protected String networkId;
 | 
			
		||||
	protected String operation;
 | 
			
		||||
	protected String id; // object id (or path for browser binding)
 | 
			
		||||
@@ -67,7 +85,6 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	public CMISHttpServletRequest(WebScriptRequest req, String serviceName, BaseUrlGenerator baseUrlGenerator, Binding binding, Descriptor currentDescriptor,
 | 
			
		||||
	        TenantAdminService tenantAdminService)
 | 
			
		||||
	{
 | 
			
		||||
		super(WebScriptServletRuntime.getHttpServletRequest(req));
 | 
			
		||||
		this.req = req;
 | 
			
		||||
		this.serviceName = serviceName;
 | 
			
		||||
		this.baseUrlGenerator = baseUrlGenerator;
 | 
			
		||||
@@ -102,17 +119,13 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
		Match match = req.getServiceMatch();
 | 
			
		||||
		Map<String, String> templateVars = match.getTemplateVars();
 | 
			
		||||
 | 
			
		||||
        HttpServletRequest httpReq = WebScriptServletRuntime.getHttpServletRequest(req);
 | 
			
		||||
		this.httpReq = httpReq;
 | 
			
		||||
		this.operation = templateVars.get("operation");
 | 
			
		||||
		this.id = templateVars.get("id");
 | 
			
		||||
 | 
			
		||||
    	addAttributes();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public HttpServletRequest getRequest()
 | 
			
		||||
	{
 | 
			
		||||
		return (HttpServletRequest) super.getRequest();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/*
 | 
			
		||||
	 * Recursively unwrap req if it is a WrappingWebScriptRequest
 | 
			
		||||
@@ -132,9 +145,9 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	{
 | 
			
		||||
		if(networkId != null)
 | 
			
		||||
		{
 | 
			
		||||
			super.setAttribute(Constants.PARAM_REPOSITORY_ID, networkId);
 | 
			
		||||
			httpReq.setAttribute(Constants.PARAM_REPOSITORY_ID, networkId);
 | 
			
		||||
		}
 | 
			
		||||
		super.setAttribute("serviceName", serviceName);
 | 
			
		||||
		httpReq.setAttribute("serviceName", serviceName);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -142,11 +155,11 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	{
 | 
			
		||||
		if(arg0.equals(Dispatcher.BASE_URL_ATTRIBUTE))
 | 
			
		||||
		{
 | 
			
		||||
			return baseUrlGenerator.getBaseUrl(getRequest(), networkId, binding);
 | 
			
		||||
			return baseUrlGenerator.getBaseUrl(this, networkId, binding);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			return super.getAttribute(arg0);
 | 
			
		||||
			return httpReq.getAttribute(arg0);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -154,7 +167,7 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	@Override
 | 
			
		||||
	public Enumeration getAttributeNames()
 | 
			
		||||
	{
 | 
			
		||||
		Enumeration e = super.getAttributeNames();
 | 
			
		||||
		Enumeration e = httpReq.getAttributeNames();
 | 
			
		||||
		List attrNames = new ArrayList();
 | 
			
		||||
		while(e.hasMoreElements())
 | 
			
		||||
		{
 | 
			
		||||
@@ -177,6 +190,60 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	    };
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getCharacterEncoding()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getCharacterEncoding();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getContentLength()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getContentLength();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getContentType()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getContentType();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public ServletInputStream getInputStream() throws IOException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getInputStream();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getLocalAddr()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getLocalAddr();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getLocalName()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getLocalName();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getLocalPort()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getLocalPort();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public Locale getLocale()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getLocale();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Enumeration getLocales()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getLocales();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getParameter(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
@@ -184,14 +251,14 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
		{
 | 
			
		||||
			return networkId;
 | 
			
		||||
		}
 | 
			
		||||
		return super.getParameter(arg0);
 | 
			
		||||
		return httpReq.getParameter(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	@Override
 | 
			
		||||
	public Map getParameterMap()
 | 
			
		||||
	{
 | 
			
		||||
		Map map = super.getParameterMap();
 | 
			
		||||
		Map map = httpReq.getParameterMap();
 | 
			
		||||
		Map ret = new HashedMap(map);
 | 
			
		||||
		if(networkId != null)
 | 
			
		||||
		{
 | 
			
		||||
@@ -204,7 +271,7 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
	@Override
 | 
			
		||||
	public Enumeration getParameterNames()
 | 
			
		||||
	{
 | 
			
		||||
		final Enumeration e = super.getParameterNames();
 | 
			
		||||
		final Enumeration e = httpReq.getParameterNames();
 | 
			
		||||
		List l = new ArrayList();
 | 
			
		||||
		while(e.hasMoreElements())
 | 
			
		||||
		{
 | 
			
		||||
@@ -233,13 +300,152 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String[] getParameterValues(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getParameterValues(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getProtocol()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getProtocol();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public BufferedReader getReader() throws IOException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getReader();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("deprecation")
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRealPath(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRealPath(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRemoteAddr()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRemoteAddr();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRemoteHost()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRemoteHost();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getRemotePort()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRemotePort();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public RequestDispatcher getRequestDispatcher(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRequestDispatcher(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getScheme()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getScheme();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getServerName() 
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getServerName();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getServerPort()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getServerPort();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isSecure()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isSecure();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void removeAttribute(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		httpReq.removeAttribute(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void setAttribute(String arg0, Object arg1)
 | 
			
		||||
	{
 | 
			
		||||
		httpReq.setAttribute(arg0, arg1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void setCharacterEncoding(String arg0) throws UnsupportedEncodingException
 | 
			
		||||
	{
 | 
			
		||||
		httpReq.setCharacterEncoding(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getAuthType()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getAuthType();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getContextPath()
 | 
			
		||||
	{
 | 
			
		||||
		String contextPath = baseUrlGenerator.getContextPath(getRequest());
 | 
			
		||||
		String contextPath = baseUrlGenerator.getContextPath(httpReq);
 | 
			
		||||
		return contextPath;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Cookie[] getCookies()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getCookies();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public long getDateHeader(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getDateHeader(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getHeader(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getHeader(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Enumeration getHeaderNames()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getHeaderNames();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Enumeration getHeaders(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getHeaders(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getIntHeader(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getIntHeader(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getMethod()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getMethod();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getPathInfo()
 | 
			
		||||
	{
 | 
			
		||||
@@ -253,11 +459,17 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
		return sb.toString();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getPathTranslated()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getPathTranslated();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getQueryString()
 | 
			
		||||
	{
 | 
			
		||||
        StringBuilder queryString = new StringBuilder();
 | 
			
		||||
        String reqQueryString = super.getQueryString();
 | 
			
		||||
        String reqQueryString = httpReq.getQueryString();
 | 
			
		||||
 | 
			
		||||
        if(networkId != null && networkId.length() > 0)
 | 
			
		||||
        {
 | 
			
		||||
@@ -276,17 +488,156 @@ public class CMISHttpServletRequest extends HttpServletRequestWrapper
 | 
			
		||||
        return reqQueryString;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRemoteUser()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRemoteUser();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRequestURI()
 | 
			
		||||
	{
 | 
			
		||||
		String requestURI = baseUrlGenerator.getRequestURI(getRequest(), networkId, operation, id);
 | 
			
		||||
		String requestURI = baseUrlGenerator.getRequestURI(httpReq, networkId, operation, id);
 | 
			
		||||
		return requestURI;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public StringBuffer getRequestURL()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRequestURL();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getRequestedSessionId()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getRequestedSessionId();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getServletPath()
 | 
			
		||||
	{
 | 
			
		||||
		String servletPath = baseUrlGenerator.getServletPath(getRequest());
 | 
			
		||||
		String servletPath = baseUrlGenerator.getServletPath(httpReq);
 | 
			
		||||
		return servletPath;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public HttpSession getSession()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getSession();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public HttpSession getSession(boolean arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getSession(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Principal getUserPrincipal()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getUserPrincipal();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isRequestedSessionIdFromCookie()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isRequestedSessionIdFromCookie();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isRequestedSessionIdFromURL()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isRequestedSessionIdFromURL();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isRequestedSessionIdFromUrl()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isRequestedSessionIdFromURL();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isRequestedSessionIdValid()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isRequestedSessionIdValid();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isUserInRole(String arg0)
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isUserInRole(arg0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean authenticate(HttpServletResponse response) throws IOException, ServletException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.authenticate(response);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void login(String username, String password) throws ServletException
 | 
			
		||||
	{
 | 
			
		||||
		httpReq.login(username, password);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void logout() throws ServletException
 | 
			
		||||
	{
 | 
			
		||||
		httpReq.logout();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Collection<Part> getParts() throws IOException, ServletException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getParts();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Part getPart(String name) throws IOException, ServletException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getPart(name);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public ServletContext getServletContext()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getServletContext();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AsyncContext startAsync() throws IllegalStateException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.startAsync();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.startAsync(servletRequest, servletResponse);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isAsyncStarted()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isAsyncStarted();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean isAsyncSupported()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.isAsyncSupported();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public AsyncContext getAsyncContext()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getAsyncContext();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public DispatcherType getDispatcherType()
 | 
			
		||||
	{
 | 
			
		||||
		return httpReq.getDispatcherType();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -25,12 +25,18 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponseWrapper;
 | 
			
		||||
import org.alfresco.error.AlfrescoRuntimeException;
 | 
			
		||||
import org.springframework.extensions.webscripts.WebScriptResponse;
 | 
			
		||||
import org.springframework.extensions.webscripts.servlet.WebScriptServletRuntime;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.ServletOutputStream;
 | 
			
		||||
import javax.servlet.http.Cookie;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.PrintWriter;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -38,8 +44,10 @@ import java.util.Set;
 | 
			
		||||
 * 
 | 
			
		||||
 * @author janv
 | 
			
		||||
 */
 | 
			
		||||
public class CMISHttpServletResponse extends HttpServletResponseWrapper
 | 
			
		||||
public class CMISHttpServletResponse implements HttpServletResponse
 | 
			
		||||
{
 | 
			
		||||
    protected HttpServletResponse httpResp;
 | 
			
		||||
 | 
			
		||||
    protected Set<String> nonAttachContentTypes = Collections.emptySet(); // pre-configured whitelist, eg. images & pdf
 | 
			
		||||
 | 
			
		||||
    private final static String HDR_CONTENT_DISPOSITION = "Content-Disposition";
 | 
			
		||||
@@ -49,21 +57,89 @@ public class CMISHttpServletResponse extends HttpServletResponseWrapper
 | 
			
		||||
 | 
			
		||||
	public CMISHttpServletResponse(WebScriptResponse res, Set<String> nonAttachContentTypes)
 | 
			
		||||
	{
 | 
			
		||||
		super(WebScriptServletRuntime.getHttpServletResponse(res));
 | 
			
		||||
		httpResp = WebScriptServletRuntime.getHttpServletResponse(res);
 | 
			
		||||
        this.nonAttachContentTypes = nonAttachContentTypes;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void addCookie(Cookie cookie)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.addCookie(cookie);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean containsHeader(String name)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.containsHeader(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String encodeURL(String url)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.encodeURL(url);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String encodeRedirectURL(String url)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.encodeRedirectURL(url);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String encodeUrl(String url)
 | 
			
		||||
    {
 | 
			
		||||
        return encodeUrl(url);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String encodeRedirectUrl(String url)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.encodeRedirectUrl(url);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendError(int sc, String msg) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.sendError(sc, msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendError(int sc) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.sendError(sc);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendRedirect(String location) throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.sendRedirect(location);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setDateHeader(String name, long date)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setDateHeader(name, date);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void addDateHeader(String name, long date)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.addDateHeader(name, date);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setHeader(String name, String value)
 | 
			
		||||
    {
 | 
			
		||||
        super.setHeader(name, getStringHeaderValue(name, value, super.getContentType()));
 | 
			
		||||
        httpResp.setHeader(name, getStringHeaderValue(name, value, httpResp.getContentType()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void addHeader(String name, String value)
 | 
			
		||||
    {
 | 
			
		||||
        super.addHeader(name, getStringHeaderValue(name, value, super.getContentType()));
 | 
			
		||||
        httpResp.addHeader(name, getStringHeaderValue(name, value, httpResp.getContentType()));
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    private String getStringHeaderValue(String name, String value, String contentType)
 | 
			
		||||
    {
 | 
			
		||||
@@ -85,4 +161,142 @@ public class CMISHttpServletResponse extends HttpServletResponseWrapper
 | 
			
		||||
 | 
			
		||||
        return value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setIntHeader(String name, int value)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setIntHeader(name, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void addIntHeader(String name, int value)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.addIntHeader(name, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setStatus(int sc)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setStatus(sc);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setStatus(int sc, String sm)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setStatus(sc, sm);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int getStatus()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getStatus();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getHeader(String name)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getHeader(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Collection<String> getHeaders(String name)
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getHeaders(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Collection<String> getHeaderNames()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getHeaderNames();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getCharacterEncoding()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getCharacterEncoding();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String getContentType()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getContentType();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ServletOutputStream getOutputStream() throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getOutputStream();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PrintWriter getWriter() throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getWriter();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setCharacterEncoding(String charset)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setCharacterEncoding(charset);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setContentLength(int len)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setContentLength(len);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setContentType(String type)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setContentType(type);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setBufferSize(int size)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setBufferSize(size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int getBufferSize()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getBufferSize();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void flushBuffer() throws IOException
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.flushBuffer();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void resetBuffer()
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.resetBuffer();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean isCommitted()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.isCommitted();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void reset()
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.reset();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void setLocale(Locale loc)
 | 
			
		||||
    {
 | 
			
		||||
        httpResp.setLocale(loc);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Locale getLocale()
 | 
			
		||||
    {
 | 
			
		||||
        return httpResp.getLocale();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * 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 
 | 
			
		||||
@@ -38,19 +38,18 @@ import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.Filter;
 | 
			
		||||
import jakarta.servlet.FilterRegistration;
 | 
			
		||||
import jakarta.servlet.RequestDispatcher;
 | 
			
		||||
import jakarta.servlet.Servlet;
 | 
			
		||||
import jakarta.servlet.ServletConfig;
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRegistration;
 | 
			
		||||
import jakarta.servlet.ServletRegistration.Dynamic;
 | 
			
		||||
import jakarta.servlet.SessionCookieConfig;
 | 
			
		||||
import jakarta.servlet.SessionTrackingMode;
 | 
			
		||||
import jakarta.servlet.descriptor.JspConfigDescriptor;
 | 
			
		||||
import jakarta.servlet.http.HttpServlet;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterRegistration;
 | 
			
		||||
import javax.servlet.RequestDispatcher;
 | 
			
		||||
import javax.servlet.Servlet;
 | 
			
		||||
import javax.servlet.ServletConfig;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRegistration;
 | 
			
		||||
import javax.servlet.SessionCookieConfig;
 | 
			
		||||
import javax.servlet.SessionTrackingMode;
 | 
			
		||||
import javax.servlet.descriptor.JspConfigDescriptor;
 | 
			
		||||
import javax.servlet.http.HttpServlet;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.error.AlfrescoRuntimeException;
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
@@ -307,8 +306,6 @@ public abstract class CMISServletDispatcher implements CMISDispatcher
 | 
			
		||||
		@Override
 | 
			
		||||
		public ServletContext getServletContext()
 | 
			
		||||
		{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			return new ServletContext()
 | 
			
		||||
			{
 | 
			
		||||
 | 
			
		||||
@@ -426,6 +423,12 @@ public abstract class CMISServletDispatcher implements CMISDispatcher
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public Servlet getServlet(String arg0) throws ServletException
 | 
			
		||||
				{
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public String getServletContextName()
 | 
			
		||||
				{
 | 
			
		||||
@@ -450,12 +453,6 @@ public abstract class CMISServletDispatcher implements CMISDispatcher
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public Dynamic addJspFile(String servletName, String jspFile)
 | 
			
		||||
				{
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException
 | 
			
		||||
				{
 | 
			
		||||
@@ -577,52 +574,27 @@ public abstract class CMISServletDispatcher implements CMISDispatcher
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public String getVirtualServerName()
 | 
			
		||||
				public Enumeration getServletNames()
 | 
			
		||||
				{
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public int getSessionTimeout()
 | 
			
		||||
				{
 | 
			
		||||
					return 0;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void setSessionTimeout(int sessionTimeout)
 | 
			
		||||
				{
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public String getRequestCharacterEncoding()
 | 
			
		||||
				public Enumeration getServlets()
 | 
			
		||||
				{
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void setRequestCharacterEncoding(String encoding)
 | 
			
		||||
				{
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public String getResponseCharacterEncoding()
 | 
			
		||||
				{
 | 
			
		||||
					return null;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void setResponseCharacterEncoding(String encoding)
 | 
			
		||||
				{
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void log(String arg0)
 | 
			
		||||
				{
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void log(Exception arg0, String arg1)
 | 
			
		||||
				{
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				@Override
 | 
			
		||||
				public void log(String arg0, Throwable arg1)
 | 
			
		||||
				{
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS base url based on the request, repository id and binding. The url scheme, host and port
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
import org.alfresco.repo.tenant.TenantUtil;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -23,19 +23,19 @@
 | 
			
		||||
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * #L%
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS path based on the repositoryId and binding.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author steveglover
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public interface PathGenerator
 | 
			
		||||
{
 | 
			
		||||
	public void generatePath(HttpServletRequest req, StringBuilder url, String repositoryId, Binding binding);
 | 
			
		||||
package org.alfresco.opencmis;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS path based on the repositoryId and binding.
 | 
			
		||||
 * 
 | 
			
		||||
 * @author steveglover
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public interface PathGenerator
 | 
			
		||||
{
 | 
			
		||||
	public void generatePath(HttpServletRequest req, StringBuilder url, String repositoryId, Binding binding);
 | 
			
		||||
}
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generates an OpenCMIS base url based on the request, repository id and binding. The url scheme, host and port
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +1,28 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
@@ -55,12 +55,12 @@ public class PublicApiCMISHttpServletRequest extends CMISHttpServletRequest
 | 
			
		||||
 | 
			
		||||
		if(apiScope != null)
 | 
			
		||||
		{
 | 
			
		||||
			setAttribute("apiScope", apiScope);
 | 
			
		||||
			httpReq.setAttribute("apiScope", apiScope);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(apiVersion != null)
 | 
			
		||||
		{
 | 
			
		||||
			setAttribute("apiVersion", apiVersion);
 | 
			
		||||
			httpReq.setAttribute("apiVersion", apiVersion);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.opencmis;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.repo.admin.SysAdminParams;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,39 +1,39 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.repo.web.filter.beans;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.Filter;
 | 
			
		||||
import jakarta.servlet.FilterChain;
 | 
			
		||||
import jakarta.servlet.FilterConfig;
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRequest;
 | 
			
		||||
import jakarta.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.springframework.web.context.WebApplicationContext;
 | 
			
		||||
import org.springframework.web.context.support.WebApplicationContextUtils;
 | 
			
		||||
@@ -73,7 +73,7 @@ public class BeanProxyFilter implements Filter
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see jakarta.servlet.Filter#destroy()
 | 
			
		||||
     * @see javax.servlet.Filter#destroy()
 | 
			
		||||
     */
 | 
			
		||||
    public void destroy()
 | 
			
		||||
    {
 | 
			
		||||
@@ -81,7 +81,7 @@ public class BeanProxyFilter implements Filter
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see jakarta.servlet.Filter#doFilter(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse, jakarta.servlet.FilterChain)
 | 
			
		||||
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
 | 
			
		||||
            ServletException
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +1,37 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.repo.web.filter.beans;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.FilterChain;
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRequest;
 | 
			
		||||
import jakarta.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A bean-like equivalent of a servlet filter, designed to be managed by a Spring container.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +1,37 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.repo.web.filter.beans;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.FilterChain;
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRequest;
 | 
			
		||||
import jakarta.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.repo.management.subsystems.ActivateableBean;
 | 
			
		||||
 | 
			
		||||
@@ -66,8 +66,8 @@ public class NullFilter implements DependencyInjectedFilter, ActivateableBean
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * (non-Javadoc)
 | 
			
		||||
     * @see org.alfresco.repo.web.filter.beans.DependencyInjectedFilter#doFilter(jakarta.servlet.ServletContext,
 | 
			
		||||
     * jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse, jakarta.servlet.FilterChain)
 | 
			
		||||
     * @see org.alfresco.repo.web.filter.beans.DependencyInjectedFilter#doFilter(javax.servlet.ServletContext,
 | 
			
		||||
     * javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletContext context, ServletRequest request, ServletResponse response, FilterChain chain)
 | 
			
		||||
            throws IOException, ServletException
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +1,40 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.repo.web.filter.beans;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.Filter;
 | 
			
		||||
import jakarta.servlet.FilterChain;
 | 
			
		||||
import jakarta.servlet.FilterConfig;
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.ServletRequest;
 | 
			
		||||
import jakarta.servlet.ServletResponse;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpSession;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpSession;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A filter that will use the HttpSession (if it exists) as the monitor for a
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2018 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software.
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of
 | 
			
		||||
@@ -28,9 +28,9 @@ package org.alfresco.repo.web.scripts;
 | 
			
		||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
 | 
			
		||||
import org.springframework.extensions.webscripts.servlet.WebScriptServlet;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
public class AlfrescoWebScriptServlet extends WebScriptServlet
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -28,7 +28,7 @@ package org.alfresco.repo.web.scripts;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.api.AlfrescoPublicApi;   
 | 
			
		||||
import org.alfresco.service.cmr.repository.FileTypeImageSize;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * 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 
 | 
			
		||||
@@ -33,7 +33,7 @@ import java.util.Map;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
import java.util.function.Supplier;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.transaction.Status;
 | 
			
		||||
import javax.transaction.UserTransaction;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 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%
 | 
			
		||||
 */
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2016 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.repo.web.scripts;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.service.cmr.repository.FileTypeImageSize;
 | 
			
		||||
import org.alfresco.service.cmr.repository.TemplateImageResolver;
 | 
			
		||||
@@ -46,7 +46,7 @@ public class RepositoryImageResolver
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    /* (non-Javadoc)
 | 
			
		||||
     * @see org.springframework.web.context.ServletContextAware#setServletContext(jakarta.servlet.ServletContext)
 | 
			
		||||
     * @see org.springframework.web.context.ServletContextAware#setServletContext(javax.servlet.ServletContext)
 | 
			
		||||
     */
 | 
			
		||||
    public void setServletContext(ServletContext context)
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Remote API
 | 
			
		||||
 * %%
 | 
			
		||||
 * Copyright (C) 2005 - 2023 Alfresco Software Limited
 | 
			
		||||
 * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | 
			
		||||
 * %%
 | 
			
		||||
 * This file is part of the Alfresco software. 
 | 
			
		||||
 * If the software was purchased under a paid Alfresco license, the terms of 
 | 
			
		||||
@@ -28,9 +28,9 @@ package org.alfresco.repo.web.scripts;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import jakarta.servlet.ServletException;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
@@ -62,7 +62,7 @@ public class TenantWebScriptServlet extends WebScriptServlet
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* (non-Javadoc) 
 | 
			
		||||
     * @see jakarta.servlet.http.HttpServlet#service(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
 | 
			
		||||
     * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 | 
			
		||||
     */
 | 
			
		||||
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user