mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	Compare commits
	
		
			144 Commits
		
	
	
		
			23.1.0.125
			...
			APPS-2000_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3ffe06391b | ||
| 
						 | 
					92ff7151d8 | ||
| 
						 | 
					d7722e4f25 | ||
| 
						 | 
					6a87008665 | ||
| 
						 | 
					6d14548119 | ||
| 
						 | 
					67c4751676 | ||
| 
						 | 
					d4a60a1d24 | ||
| 
						 | 
					4388a75924 | ||
| 
						 | 
					5982ec7172 | ||
| 
						 | 
					7f26658eba | ||
| 
						 | 
					88273f3073 | ||
| 
						 | 
					7218864a44 | ||
| 
						 | 
					133dd2b1c1 | ||
| 
						 | 
					ade270743e | ||
| 
						 | 
					59b50f0c67 | ||
| 
						 | 
					8837c15a67 | ||
| 
						 | 
					bac818baf2 | ||
| 
						 | 
					2f6c845865 | ||
| 
						 | 
					347627d0fd | ||
| 
						 | 
					a495dae1db | ||
| 
						 | 
					a07da7308f | ||
| 
						 | 
					8b472e89f5 | ||
| 
						 | 
					a3aaaedb0e | ||
| 
						 | 
					044d07af86 | ||
| 
						 | 
					110ccd5574 | ||
| 
						 | 
					8fbe444266 | ||
| 
						 | 
					5ef0bbb840 | ||
| 
						 | 
					ba5720b494 | ||
| 
						 | 
					866adc16f3 | ||
| 
						 | 
					577788a8c6 | ||
| 
						 | 
					6b02b4dc05 | ||
| 
						 | 
					fc847ac7a5 | ||
| 
						 | 
					25e8f0c6f8 | ||
| 
						 | 
					499cf08ecd | ||
| 
						 | 
					f0c191d7ca | ||
| 
						 | 
					a1faf97fc5 | ||
| 
						 | 
					d372ff6f5e | ||
| 
						 | 
					095bf0e8d8 | ||
| 
						 | 
					c23db31ca4 | ||
| 
						 | 
					6cfcc8b207 | ||
| 
						 | 
					20582dfcf9 | ||
| 
						 | 
					fb6b1ef4ab | ||
| 
						 | 
					7fc184ccf3 | ||
| 
						 | 
					732d4e4733 | ||
| 
						 | 
					bd94060fea | ||
| 
						 | 
					d46ae1634f | ||
| 
						 | 
					7bd31eca5f | ||
| 
						 | 
					8938aaff09 | ||
| 
						 | 
					18dadfe110 | ||
| 
						 | 
					4e9fb76404 | ||
| 
						 | 
					295c3ba58e | ||
| 
						 | 
					195e0e927c | ||
| 
						 | 
					b0adc1a6bb | ||
| 
						 | 
					828c98d03f | ||
| 
						 | 
					1d4c97cfb7 | ||
| 
						 | 
					e0d5d0691f | ||
| 
						 | 
					96942ceeb9 | ||
| 
						 | 
					2d16c28859 | ||
| 
						 | 
					51fe0275df | ||
| 
						 | 
					4786a0fb0b | ||
| 
						 | 
					3f91a6001f | ||
| 
						 | 
					1f1b534a28 | ||
| 
						 | 
					689e6a23fa | ||
| 
						 | 
					562c83bb9c | ||
| 
						 | 
					4ff91be9f4 | ||
| 
						 | 
					f3190133c3 | ||
| 
						 | 
					8325cd7c66 | ||
| 
						 | 
					aeb931b018 | ||
| 
						 | 
					6679a33412 | ||
| 
						 | 
					aea504f911 | ||
| 
						 | 
					fb235e1682 | ||
| 
						 | 
					4065400dbd | ||
| 
						 | 
					02aa423087 | ||
| 
						 | 
					0dbd2fb3d0 | ||
| 
						 | 
					c30c96de47 | ||
| 
						 | 
					fa9ffbe71a | ||
| 
						 | 
					826db75625 | ||
| 
						 | 
					04df3385fd | ||
| 
						 | 
					cc12b34c7f | ||
| 
						 | 
					c110e2b76c | ||
| 
						 | 
					3d1ef4883b | ||
| 
						 | 
					afa2bbf325 | ||
| 
						 | 
					1d665f4e50 | ||
| 
						 | 
					6a527068dc | ||
| 
						 | 
					a45c04679f | ||
| 
						 | 
					bc6398c038 | ||
| 
						 | 
					43f1100040 | ||
| 
						 | 
					8bade25669 | ||
| 
						 | 
					1e6e87f24a | ||
| 
						 | 
					cac97dc1e7 | ||
| 
						 | 
					3bcef29c30 | ||
| 
						 | 
					fb98bb09f0 | ||
| 
						 | 
					ad723a700a | ||
| 
						 | 
					1bc5bed838 | ||
| 
						 | 
					beaf83a008 | ||
| 
						 | 
					8734eec068 | ||
| 
						 | 
					1e506659d2 | ||
| 
						 | 
					b834ab9245 | ||
| 
						 | 
					402c0661e0 | ||
| 
						 | 
					763f0932a0 | ||
| 
						 | 
					0403fcde69 | ||
| 
						 | 
					1866e64d07 | ||
| 
						 | 
					47b793b922 | ||
| 
						 | 
					8ebaf16a45 | ||
| 
						 | 
					c3dcf8891e | ||
| 
						 | 
					5cdb5f2922 | ||
| 
						 | 
					2bac9bd9d1 | ||
| 
						 | 
					fffef168d9 | ||
| 
						 | 
					0f89c3ce8a | ||
| 
						 | 
					497b197c12 | ||
| 
						 | 
					2b8ea3bb50 | ||
| 
						 | 
					5e7394a37d | ||
| 
						 | 
					89329d7984 | ||
| 
						 | 
					3f94b1632b | ||
| 
						 | 
					d0f6867887 | ||
| 
						 | 
					49c56e9a9d | ||
| 
						 | 
					78b54e65c4 | ||
| 
						 | 
					b93212f3bf | ||
| 
						 | 
					636d63e34f | ||
| 
						 | 
					ad934e511d | ||
| 
						 | 
					16db159092 | ||
| 
						 | 
					fd8e44e365 | ||
| 
						 | 
					ed924094ff | ||
| 
						 | 
					3181d2b8bf | ||
| 
						 | 
					2891a3ba61 | ||
| 
						 | 
					92f27bbcd7 | ||
| 
						 | 
					80d4db2e81 | ||
| 
						 | 
					6bd598fadf | ||
| 
						 | 
					c1b4b30262 | ||
| 
						 | 
					f0e5dcaa67 | ||
| 
						 | 
					07c7342032 | ||
| 
						 | 
					b0af817377 | ||
| 
						 | 
					e8cf0f7d12 | ||
| 
						 | 
					b8e621d3d9 | ||
| 
						 | 
					a62db22ecb | ||
| 
						 | 
					5fcee3ec55 | ||
| 
						 | 
					8a6274b37e | ||
| 
						 | 
					d279b3e3c3 | ||
| 
						 | 
					da5505a21f | ||
| 
						 | 
					e476334998 | ||
| 
						 | 
					7990991453 | ||
| 
						 | 
					9289fc7f89 | ||
| 
						 | 
					653f733887 | ||
| 
						 | 
					623782dc97 | 
							
								
								
									
										40
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -65,7 +65,21 @@ jobs:
 | 
			
		||||
          srcclr-api-token: ${{ secrets.SRCCLR_API_TOKEN }}
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
  pmd_scan:
 | 
			
		||||
    name: "PMD Scan"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [prepare]
 | 
			
		||||
    if: >
 | 
			
		||||
      github.event_name == 'pull_request' &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip pmd]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[skip tests]') &&
 | 
			
		||||
      !contains(github.event.head_commit.message, '[force]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/pmd@v2.5.0
 | 
			
		||||
        with:
 | 
			
		||||
          fail-on-new-issues: "false"
 | 
			
		||||
 | 
			
		||||
  all_unit_tests_suite:
 | 
			
		||||
    name: "Core, Data-Model, Repository - AllUnitTestsSuite - Build and test"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
@@ -547,3 +561,27 @@ jobs:
 | 
			
		||||
          aws s3 cp --acl private ./amps/ags/rm-automation/rm-automation-community-rest-api/target/reports/rm-automation-community-rest-api.log s3://ags-travis-artifacts/community/${{ github.run_number }}/AGS-Community-Rest-API-Tests/rm-automation-community-rest-api.log
 | 
			
		||||
      - name: "Clean Maven cache"
 | 
			
		||||
        run: bash ./scripts/ci/cleanup_cache.sh
 | 
			
		||||
 | 
			
		||||
  ags_start_api_explorer:
 | 
			
		||||
    name: "Test Tomcat deployment of api explorer"
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: [ prepare ]
 | 
			
		||||
    if: >
 | 
			
		||||
      (((github.ref_name == 'master' || startsWith(github.ref_name, 'release/') || github.event_name == 'pull_request' ) &&
 | 
			
		||||
      !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]')
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/get-build-info@v1.33.0
 | 
			
		||||
      - uses: Alfresco/alfresco-build-tools/.github/actions/setup-java-build@v1.33.0
 | 
			
		||||
      - name: "Build"
 | 
			
		||||
        timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
 | 
			
		||||
        run: |
 | 
			
		||||
          bash ./scripts/ci/init.sh
 | 
			
		||||
          bash ./scripts/ci/build.sh
 | 
			
		||||
      - name: "Test Tomcat deployment"
 | 
			
		||||
        run: |
 | 
			
		||||
          mvn verify -Pags,start-api-explorer -DskipTests &
 | 
			
		||||
          ${{ env.TAS_SCRIPTS }}/wait-for-alfresco-start.sh "http://localhost:8085/api-explorer"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
      <version>23.1.0.125</version>
 | 
			
		||||
      <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.125</version>
 | 
			
		||||
      <version>23.1.0.163-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.125</version>
 | 
			
		||||
      <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <build>
 | 
			
		||||
@@ -82,7 +82,7 @@
 | 
			
		||||
      <dependency>
 | 
			
		||||
         <groupId>com.github.docker-java</groupId>
 | 
			
		||||
         <artifactId>docker-java</artifactId>
 | 
			
		||||
         <version>3.3.0</version>
 | 
			
		||||
         <version>3.3.2</version>
 | 
			
		||||
      </dependency>
 | 
			
		||||
   </dependencies>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -512,7 +512,12 @@ public abstract class BaseAPI
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            HttpResponse httpResponse = doRequestJson(HttpPost.class, requestUrl, adminUser, adminPassword, requestParams);
 | 
			
		||||
            assertEquals("POST request to " + requestUrl + " was not successful.", expectedStatusCode, httpResponse.getStatusLine().getStatusCode());
 | 
			
		||||
            if (httpResponse.getStatusLine().getStatusCode() != expectedStatusCode)
 | 
			
		||||
            {
 | 
			
		||||
                // It's only possible to stream the response body once, so ensure we only do this if the test has failed.
 | 
			
		||||
                JSONObject responseJson = responseBodyToJson(httpResponse);
 | 
			
		||||
                assertEquals("POST request to " + requestUrl + " was not successful. Response: " + responseJson, expectedStatusCode, httpResponse.getStatusLine().getStatusCode());
 | 
			
		||||
            }
 | 
			
		||||
            return httpResponse;
 | 
			
		||||
        }
 | 
			
		||||
        catch (InstantiationException | IllegalAccessException error)
 | 
			
		||||
@@ -521,6 +526,32 @@ public abstract class BaseAPI
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Try to convert the response body to a JSON object.
 | 
			
		||||
     *
 | 
			
		||||
     * @param response The response.
 | 
			
		||||
     * @return The JSON object or null if it was not possible to convert the response.
 | 
			
		||||
     */
 | 
			
		||||
    private JSONObject responseBodyToJson(HttpResponse response)
 | 
			
		||||
    {
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                return new JSONObject(EntityUtils.toString(response.getEntity()));
 | 
			
		||||
            }
 | 
			
		||||
            catch (JSONException error)
 | 
			
		||||
            {
 | 
			
		||||
                LOGGER.error("Converting message body to JSON failed. Body: {}", response.getEntity().getContent(), error);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        catch (ParseException | IOException error)
 | 
			
		||||
        {
 | 
			
		||||
            LOGGER.error("Parsing message body failed.", error);
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Helper method for handling generic HTTP requests
 | 
			
		||||
     * @param requestType request type (a subclass of {@link HttpRequestBase})
 | 
			
		||||
@@ -558,18 +589,7 @@ public abstract class BaseAPI
 | 
			
		||||
            HttpResponse response = client.execute(adminUser, adminPassword, request);
 | 
			
		||||
            LOGGER.info("Response: {}", response.getStatusLine());
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                responseBody = new JSONObject(EntityUtils.toString(response.getEntity()));
 | 
			
		||||
            }
 | 
			
		||||
            catch (JSONException error)
 | 
			
		||||
            {
 | 
			
		||||
                LOGGER.error("Converting message body to JSON failed. Body: {}", responseBody, error);
 | 
			
		||||
            }
 | 
			
		||||
            catch (ParseException | IOException error)
 | 
			
		||||
            {
 | 
			
		||||
                LOGGER.error("Parsing message body failed.", error);
 | 
			
		||||
            }
 | 
			
		||||
            responseBody = responseBodyToJson(response);
 | 
			
		||||
 | 
			
		||||
            switch (response.getStatusLine().getStatusCode())
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.125</version>
 | 
			
		||||
      <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
      <version>23.1.0.125</version>
 | 
			
		||||
      <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
@@ -36,24 +36,40 @@
 | 
			
		||||
         <id>start-api-explorer</id>
 | 
			
		||||
         <build>
 | 
			
		||||
            <plugins>
 | 
			
		||||
               <plugin>
 | 
			
		||||
                  <groupId>org.apache.tomcat.maven</groupId>
 | 
			
		||||
                  <artifactId>tomcat7-maven-plugin</artifactId>
 | 
			
		||||
                  <executions>
 | 
			
		||||
                     <execution>
 | 
			
		||||
                        <id>run-war</id>
 | 
			
		||||
                        <goals>
 | 
			
		||||
                           <goal>run-war</goal>
 | 
			
		||||
                        </goals>
 | 
			
		||||
                        <phase>verify</phase>
 | 
			
		||||
                     </execution>
 | 
			
		||||
                  </executions>
 | 
			
		||||
                  <configuration>
 | 
			
		||||
                     <useSeparateTomcatClassLoader>true</useSeparateTomcatClassLoader>
 | 
			
		||||
                     <path>/api-explorer</path>
 | 
			
		||||
                     <port>8085</port>
 | 
			
		||||
                  </configuration>
 | 
			
		||||
               </plugin>
 | 
			
		||||
                <plugin>
 | 
			
		||||
                    <groupId>org.codehaus.cargo</groupId>
 | 
			
		||||
                    <artifactId>cargo-maven3-plugin</artifactId>
 | 
			
		||||
                    <executions>
 | 
			
		||||
                        <execution>
 | 
			
		||||
                            <id>run-war</id>
 | 
			
		||||
                            <phase>verify</phase>
 | 
			
		||||
                            <goals>
 | 
			
		||||
                                <goal>run</goal>
 | 
			
		||||
                            </goals>
 | 
			
		||||
                        </execution>
 | 
			
		||||
                    </executions>
 | 
			
		||||
                    <configuration>
 | 
			
		||||
                        <container>
 | 
			
		||||
                            <containerId>tomcat9x</containerId>
 | 
			
		||||
                            <type>embedded</type>
 | 
			
		||||
                            <log>target/cargo.log</log>
 | 
			
		||||
                        </container>
 | 
			
		||||
                        <configuration>
 | 
			
		||||
                            <properties>
 | 
			
		||||
                                <cargo.servlet.port>8085</cargo.servlet.port>
 | 
			
		||||
                            </properties>
 | 
			
		||||
                        </configuration>
 | 
			
		||||
                        <deployables>
 | 
			
		||||
                            <deployable>
 | 
			
		||||
                                <type>war</type>
 | 
			
		||||
                                <properties>
 | 
			
		||||
                                    <context>/api-explorer</context>
 | 
			
		||||
                                </properties>
 | 
			
		||||
                                <pingURL>http://localhost:8085/api-explorer</pingURL>
 | 
			
		||||
                            </deployable>
 | 
			
		||||
                        </deployables>
 | 
			
		||||
                    </configuration>
 | 
			
		||||
                </plugin>
 | 
			
		||||
            </plugins>
 | 
			
		||||
         </build>
 | 
			
		||||
      </profile>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-amps</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,10 @@ function runAction(p_params)
 | 
			
		||||
      if (p_params.destNode.hasAspect("cm:lockable") && !p_params.destNode.hasAspect("trx:transferred"))
 | 
			
		||||
      {
 | 
			
		||||
         p_params.destNode.unlock();
 | 
			
		||||
         if(p_params.destNode.hasAspect("gd2:editingInGoogle"))
 | 
			
		||||
         {
 | 
			
		||||
             p_params.destNode.removeAspect("gd2:editingInGoogle");
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var resultId = originalDoc.name,
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
   <parent>
 | 
			
		||||
      <groupId>org.alfresco</groupId>
 | 
			
		||||
      <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
      <version>23.1.0.125</version>
 | 
			
		||||
      <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
   </parent>
 | 
			
		||||
 | 
			
		||||
   <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -201,6 +201,11 @@ public class SearchParameters implements BasicSearchParameters
 | 
			
		||||
 | 
			
		||||
    private String timezone;
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Configure the limit to track the total hits on search results
 | 
			
		||||
     */
 | 
			
		||||
    private int trackTotalHits;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Default constructor
 | 
			
		||||
     */
 | 
			
		||||
@@ -251,6 +256,7 @@ public class SearchParameters implements BasicSearchParameters
 | 
			
		||||
        sp.stats = this.stats;
 | 
			
		||||
        sp.ranges = this.ranges;
 | 
			
		||||
        sp.timezone = this.timezone;
 | 
			
		||||
        sp.trackTotalHits = this.trackTotalHits;
 | 
			
		||||
        return sp;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@@ -1641,6 +1647,21 @@ public class SearchParameters implements BasicSearchParameters
 | 
			
		||||
    {
 | 
			
		||||
        this.includeMetadata = includeMetadata;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public int getTrackTotalHits()
 | 
			
		||||
    {
 | 
			
		||||
        return trackTotalHits;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set a maximum value for the report of total hits. The reported number of hits will never exceed this limit even
 | 
			
		||||
     * if more are found. If unset, the engine’s default tracking limit is applied. To remove any limit, set to -1.
 | 
			
		||||
     *
 | 
			
		||||
     * @param trackTotalHits int
 | 
			
		||||
     */
 | 
			
		||||
    public void setTrackTotalHits(int trackTotalHits)
 | 
			
		||||
    {
 | 
			
		||||
        this.trackTotalHits = trackTotalHits;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,6 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <modules>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <organization>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -171,14 +171,14 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.codehaus.groovy</groupId>
 | 
			
		||||
            <artifactId>groovy</artifactId>
 | 
			
		||||
            <version>3.0.17</version>
 | 
			
		||||
            <version>3.0.18</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-json-->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.codehaus.groovy</groupId>
 | 
			
		||||
            <artifactId>groovy-json</artifactId>
 | 
			
		||||
            <version>3.0.17</version>
 | 
			
		||||
            <version>3.0.18</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
       <dependency>
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,190 @@
 | 
			
		||||
package org.alfresco.rest.search;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.core.IRestModel;
 | 
			
		||||
import org.alfresco.utility.model.TestModel;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generated by 'krystian' on '2023-06-12 18:46' from 'Alfresco Content Services REST API' swagger file 
 | 
			
		||||
 * Generated from 'Alfresco Content Services REST API' swagger file
 | 
			
		||||
 * Base Path {@linkplain /alfresco/api/-default-/public/search/versions/1}
 | 
			
		||||
 */
 | 
			
		||||
public class RestRequestDefaultsModel extends TestModel implements IRestModel<RestRequestDefaultsModel>
 | 
			
		||||
{
 | 
			
		||||
    @JsonProperty(value = "entry")
 | 
			
		||||
    RestRequestDefaultsModel model;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RestRequestDefaultsModel onModel()
 | 
			
		||||
    {
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
    A list of query fields/properties used to expand TEXT: queries.
 | 
			
		||||
The default is cm:content.
 | 
			
		||||
You could include all content properties using d:content or list all individual content properties or types.
 | 
			
		||||
As more terms are included the query size, complexity, memory impact and query time will increase.
 | 
			
		||||
 | 
			
		||||
    */	        
 | 
			
		||||
 | 
			
		||||
    private List<String> textAttributes;	    
 | 
			
		||||
    /**
 | 
			
		||||
    The default way to combine query parts when AND or OR is not explicitly stated - includes ! - +
 | 
			
		||||
one two three
 | 
			
		||||
(one two three)
 | 
			
		||||
 | 
			
		||||
    */	        
 | 
			
		||||
 | 
			
		||||
    private String defaultFTSOperator;	    
 | 
			
		||||
    /**
 | 
			
		||||
    The default way to combine query parts in field query groups when AND or OR is not explicitly stated - includes ! - +
 | 
			
		||||
FIELD:(one two three)
 | 
			
		||||
 | 
			
		||||
    */	        
 | 
			
		||||
 | 
			
		||||
    private String defaultFTSFieldOperator;	    
 | 
			
		||||
    /**
 | 
			
		||||
    The default name space to use if one is not provided
 | 
			
		||||
    */	        
 | 
			
		||||
 | 
			
		||||
    private String namespace;	    
 | 
			
		||||
 | 
			
		||||
    private String defaultFieldName;	    
 | 
			
		||||
 | 
			
		||||
    public List<String> getTextAttributes()
 | 
			
		||||
    {
 | 
			
		||||
        return this.textAttributes;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setTextAttributes(List<String> textAttributes)
 | 
			
		||||
    {
 | 
			
		||||
        this.textAttributes = textAttributes;
 | 
			
		||||
    }				
 | 
			
		||||
 | 
			
		||||
    public String getDefaultFTSOperator()
 | 
			
		||||
    {
 | 
			
		||||
        return this.defaultFTSOperator;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDefaultFTSOperator(String defaultFTSOperator)
 | 
			
		||||
    {
 | 
			
		||||
        this.defaultFTSOperator = defaultFTSOperator;
 | 
			
		||||
    }				
 | 
			
		||||
 | 
			
		||||
    public String getDefaultFTSFieldOperator()
 | 
			
		||||
    {
 | 
			
		||||
        return this.defaultFTSFieldOperator;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDefaultFTSFieldOperator(String defaultFTSFieldOperator)
 | 
			
		||||
    {
 | 
			
		||||
        this.defaultFTSFieldOperator = defaultFTSFieldOperator;
 | 
			
		||||
    }				
 | 
			
		||||
 | 
			
		||||
    public String getNamespace()
 | 
			
		||||
    {
 | 
			
		||||
        return this.namespace;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setNamespace(String namespace)
 | 
			
		||||
    {
 | 
			
		||||
        this.namespace = namespace;
 | 
			
		||||
    }				
 | 
			
		||||
 | 
			
		||||
    public String getDefaultFieldName()
 | 
			
		||||
    {
 | 
			
		||||
        return this.defaultFieldName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDefaultFieldName(String defaultFieldName)
 | 
			
		||||
    {
 | 
			
		||||
        this.defaultFieldName = defaultFieldName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString()
 | 
			
		||||
    {
 | 
			
		||||
        return "RestRequestDefaultsModel{" + "textAttributes=" + textAttributes + ", defaultFTSOperator='" + defaultFTSOperator + '\'' + ", defaultFTSFieldOperator='"
 | 
			
		||||
            + defaultFTSFieldOperator + '\'' + ", namespace='" + namespace + '\'' + ", defaultFieldName='" + defaultFieldName + '\'' + '}';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean equals(Object o)
 | 
			
		||||
    {
 | 
			
		||||
        if (this == o)
 | 
			
		||||
            return true;
 | 
			
		||||
        if (o == null || getClass() != o.getClass())
 | 
			
		||||
            return false;
 | 
			
		||||
        RestRequestDefaultsModel that = (RestRequestDefaultsModel) o;
 | 
			
		||||
        return Objects.equals(textAttributes, that.textAttributes) && Objects.equals(defaultFTSOperator, that.defaultFTSOperator) && Objects.equals(
 | 
			
		||||
            defaultFTSFieldOperator, that.defaultFTSFieldOperator) && Objects.equals(namespace, that.namespace) && Objects.equals(defaultFieldName, that.defaultFieldName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int hashCode()
 | 
			
		||||
    {
 | 
			
		||||
        return Objects.hash(textAttributes, defaultFTSOperator, defaultFTSFieldOperator, namespace, defaultFieldName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Builder builder()
 | 
			
		||||
    {
 | 
			
		||||
        return new Builder();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static class Builder
 | 
			
		||||
    {
 | 
			
		||||
        private List<String> textAttributes;
 | 
			
		||||
        private String defaultFTSOperator;
 | 
			
		||||
        private String defaultFTSFieldOperator;
 | 
			
		||||
        private String namespace;
 | 
			
		||||
        private String defaultFieldName;
 | 
			
		||||
 | 
			
		||||
        public Builder textAttributes(List<String> textAttributes)
 | 
			
		||||
        {
 | 
			
		||||
            this.textAttributes = textAttributes;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder defaultFTSOperator(String defaultFTSOperator)
 | 
			
		||||
        {
 | 
			
		||||
            this.defaultFTSOperator = defaultFTSOperator;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder defaultFTSFieldOperator(String defaultFTSFieldOperator)
 | 
			
		||||
        {
 | 
			
		||||
            this.defaultFTSFieldOperator = defaultFTSFieldOperator;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder namespace(String namespace)
 | 
			
		||||
        {
 | 
			
		||||
            this.namespace = namespace;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder defaultFieldName(String defaultFieldName)
 | 
			
		||||
        {
 | 
			
		||||
            this.defaultFieldName = defaultFieldName;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public RestRequestDefaultsModel create()
 | 
			
		||||
        {
 | 
			
		||||
            RestRequestDefaultsModel defaults = new RestRequestDefaultsModel();
 | 
			
		||||
            defaults.setTextAttributes(this.textAttributes);
 | 
			
		||||
            defaults.setDefaultFTSOperator(this.defaultFTSOperator);
 | 
			
		||||
            defaults.setDefaultFTSFieldOperator(this.defaultFTSFieldOperator);
 | 
			
		||||
            defaults.setNamespace(this.namespace);
 | 
			
		||||
            defaults.setDefaultFieldName(this.defaultFieldName);
 | 
			
		||||
 | 
			
		||||
            return defaults;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,82 @@
 | 
			
		||||
/*-
 | 
			
		||||
 * #%L
 | 
			
		||||
 * alfresco-tas-restapi
 | 
			
		||||
 * %%
 | 
			
		||||
 * 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%
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.rest.search;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.core.IRestModel;
 | 
			
		||||
import org.alfresco.utility.model.TestModel;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
 | 
			
		||||
public class RestRequestLimitsModel extends TestModel implements IRestModel<RestRequestLimitsModel>
 | 
			
		||||
{
 | 
			
		||||
    @JsonProperty
 | 
			
		||||
    RestRequestLimitsModel model;
 | 
			
		||||
 | 
			
		||||
    private Integer permissionEvaluationTime;
 | 
			
		||||
    private Integer permissionEvaluationCount;
 | 
			
		||||
    private Integer trackTotalHitsLimit;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RestRequestLimitsModel onModel()
 | 
			
		||||
    {
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public RestRequestLimitsModel(Integer permissionEvaluationTime, Integer permissionEvaluationCount,
 | 
			
		||||
            Integer trackTotalHitsLimit)
 | 
			
		||||
    {
 | 
			
		||||
        super();
 | 
			
		||||
        this.permissionEvaluationTime = permissionEvaluationTime;
 | 
			
		||||
        this.permissionEvaluationCount = permissionEvaluationCount;
 | 
			
		||||
        this.trackTotalHitsLimit = trackTotalHitsLimit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Integer getPermissionEvaluationTime()
 | 
			
		||||
    {
 | 
			
		||||
        return permissionEvaluationTime;
 | 
			
		||||
    }
 | 
			
		||||
    public void setPermissionEvaluationTime(Integer permissionEvaluationTime)
 | 
			
		||||
    {
 | 
			
		||||
        this.permissionEvaluationTime = permissionEvaluationTime;
 | 
			
		||||
    }
 | 
			
		||||
    public Integer getPermissionEvaluationCount()
 | 
			
		||||
    {
 | 
			
		||||
        return permissionEvaluationCount;
 | 
			
		||||
    }
 | 
			
		||||
    public void setPermissionEvaluationCount(Integer permissionEvaluationCount)
 | 
			
		||||
    {
 | 
			
		||||
        this.permissionEvaluationCount = permissionEvaluationCount;
 | 
			
		||||
    }
 | 
			
		||||
    public Integer getTrackTotalHitsLimit()
 | 
			
		||||
    {
 | 
			
		||||
        return trackTotalHitsLimit;
 | 
			
		||||
    }
 | 
			
		||||
    public void setTrackTotalHitsLimit(Integer trackTotalHitsLimit)
 | 
			
		||||
    {
 | 
			
		||||
        this.trackTotalHitsLimit = trackTotalHitsLimit;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,105 @@
 | 
			
		||||
package org.alfresco.rest.search;
 | 
			
		||||
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.core.IRestModel;
 | 
			
		||||
import org.alfresco.utility.model.TestModel;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generated by 'krystian' on '2023-06-12 18:46' from 'Alfresco Content Services REST API' swagger file 
 | 
			
		||||
 * Generated from 'Alfresco Content Services REST API' swagger file
 | 
			
		||||
 * Base Path {@linkplain /alfresco/api/-default-/public/search/versions/1}
 | 
			
		||||
 */
 | 
			
		||||
public class RestRequestTemplatesModel extends TestModel implements IRestModel<RestRequestTemplatesModel>
 | 
			
		||||
{
 | 
			
		||||
    @JsonProperty(value = "entry")
 | 
			
		||||
    RestRequestTemplatesModel model;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RestRequestTemplatesModel onModel()
 | 
			
		||||
    {
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    private String template;
 | 
			
		||||
 | 
			
		||||
    public String getName()
 | 
			
		||||
    {
 | 
			
		||||
        return name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setName(String name)
 | 
			
		||||
    {
 | 
			
		||||
        this.name = name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getTemplate()
 | 
			
		||||
    {
 | 
			
		||||
        return template;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setTemplate(String template)
 | 
			
		||||
    {
 | 
			
		||||
        this.template = template;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString()
 | 
			
		||||
    {
 | 
			
		||||
        return "RestRequestTemplatesModel{" + "name='" + name + '\'' + ", template='" + template + '\'' + '}';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean equals(Object o)
 | 
			
		||||
    {
 | 
			
		||||
        if (this == o)
 | 
			
		||||
            return true;
 | 
			
		||||
        if (o == null || getClass() != o.getClass())
 | 
			
		||||
            return false;
 | 
			
		||||
        RestRequestTemplatesModel that = (RestRequestTemplatesModel) o;
 | 
			
		||||
        return Objects.equals(name, that.name) && Objects.equals(template, that.template);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int hashCode()
 | 
			
		||||
    {
 | 
			
		||||
        return Objects.hash(name, template);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static Builder builder()
 | 
			
		||||
    {
 | 
			
		||||
        return new Builder();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static class Builder
 | 
			
		||||
    {
 | 
			
		||||
        private String name;
 | 
			
		||||
        private String template;
 | 
			
		||||
 | 
			
		||||
        public Builder name(String name)
 | 
			
		||||
        {
 | 
			
		||||
            this.name = name;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Builder template(String template)
 | 
			
		||||
        {
 | 
			
		||||
            this.template = template;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public RestRequestTemplatesModel create()
 | 
			
		||||
        {
 | 
			
		||||
            RestRequestTemplatesModel template = new RestRequestTemplatesModel();
 | 
			
		||||
            template.setName(this.name);
 | 
			
		||||
            template.setTemplate(this.template);
 | 
			
		||||
 | 
			
		||||
            return template;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,14 +43,15 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.rest.search;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
			
		||||
 | 
			
		||||
import org.alfresco.rest.model.RestRequestRangesModel;
 | 
			
		||||
import org.alfresco.rest.model.RestRequestSpellcheckModel;
 | 
			
		||||
import org.alfresco.utility.model.TestModel;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Search Query object.
 | 
			
		||||
 * @author msuzuki
 | 
			
		||||
@@ -76,6 +77,9 @@ public class SearchRequest extends TestModel
 | 
			
		||||
    String facetFormat;
 | 
			
		||||
    List<String> include;
 | 
			
		||||
    List<SortClause> sort;
 | 
			
		||||
    RestRequestDefaultsModel defaults;
 | 
			
		||||
    List<RestRequestTemplatesModel> templates;
 | 
			
		||||
    RestRequestLimitsModel limits;
 | 
			
		||||
 | 
			
		||||
    public SearchRequest()
 | 
			
		||||
    {
 | 
			
		||||
@@ -255,6 +259,26 @@ public class SearchRequest extends TestModel
 | 
			
		||||
        this.fields = fields;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RestRequestDefaultsModel getDefaults()
 | 
			
		||||
    {
 | 
			
		||||
        return defaults;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDefaults(RestRequestDefaultsModel defaults)
 | 
			
		||||
    {
 | 
			
		||||
        this.defaults = defaults;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<RestRequestTemplatesModel> getTemplates()
 | 
			
		||||
    {
 | 
			
		||||
        return templates;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setTemplates(List<RestRequestTemplatesModel> templates)
 | 
			
		||||
    {
 | 
			
		||||
        this.templates = templates;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<SortClause> getSort()
 | 
			
		||||
    {
 | 
			
		||||
        if (sort == null)
 | 
			
		||||
@@ -279,4 +303,15 @@ public class SearchRequest extends TestModel
 | 
			
		||||
 | 
			
		||||
        return this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RestRequestLimitsModel getLimits()
 | 
			
		||||
    {
 | 
			
		||||
        return limits;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setLimits(RestRequestLimitsModel limits)
 | 
			
		||||
    {
 | 
			
		||||
        this.limits = limits;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-tests</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <developers>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo-packaging</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
@@ -30,10 +30,6 @@
 | 
			
		||||
            <groupId>org.alfresco</groupId>
 | 
			
		||||
            <artifactId>alfresco-trashcan-cleaner</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.alfresco.services</groupId>
 | 
			
		||||
            <artifactId>alfresco-messaging-repo</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>xalan</groupId>
 | 
			
		||||
            <artifactId>xalan</artifactId>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										69
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										69
									
								
								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.125</version>
 | 
			
		||||
    <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    <packaging>pom</packaging>
 | 
			
		||||
    <name>Alfresco Community Repo Parent</name>
 | 
			
		||||
 | 
			
		||||
@@ -45,31 +45,31 @@
 | 
			
		||||
 | 
			
		||||
        <dir.root>${project.build.directory}/alf_data</dir.root>
 | 
			
		||||
 | 
			
		||||
        <dependency.alfresco-hb-data-sender.version>1.1.0</dependency.alfresco-hb-data-sender.version>
 | 
			
		||||
        <dependency.alfresco-trashcan-cleaner.version>2.4.1</dependency.alfresco-trashcan-cleaner.version>
 | 
			
		||||
        <dependency.alfresco-jlan.version>7.4</dependency.alfresco-jlan.version>
 | 
			
		||||
        <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>6.0.1</dependency.alfresco-server-root.version>
 | 
			
		||||
        <dependency.alfresco-messaging-repo.version>1.2.22</dependency.alfresco-messaging-repo.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>2.2.0-A1</dependency.alfresco-transform-service.version>
 | 
			
		||||
        <dependency.alfresco-transform-core.version>3.2.0-A1</dependency.alfresco-transform-core.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.22</dependency.acs-event-model.version>
 | 
			
		||||
        <dependency.acs-event-model.version>0.0.23</dependency.acs-event-model.version>
 | 
			
		||||
 | 
			
		||||
        <dependency.spring.version>5.3.27</dependency.spring.version>
 | 
			
		||||
        <dependency.antlr.version>3.5.3</dependency.antlr.version>
 | 
			
		||||
        <dependency.jackson.version>2.15.1</dependency.jackson.version>
 | 
			
		||||
        <dependency.cxf.version>3.5.5</dependency.cxf.version>
 | 
			
		||||
        <dependency.opencmis.version>1.0.0</dependency.opencmis.version>
 | 
			
		||||
        <dependency.webscripts.version>8.42</dependency.webscripts.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>20230227</dependency.org-json.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.11.0</dependency.commons-io.version>
 | 
			
		||||
        <dependency.gson.version>2.8.9</dependency.gson.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.commons-httpclient.version>3.1-HTTPCLIENT-1265</dependency.commons-httpclient.version>
 | 
			
		||||
@@ -77,7 +77,7 @@
 | 
			
		||||
        <dependency.slf4j.version>2.0.7</dependency.slf4j.version>
 | 
			
		||||
        <dependency.log4j.version>2.20.0</dependency.log4j.version>
 | 
			
		||||
        <dependency.gytheio.version>0.20.0-A1</dependency.gytheio.version>
 | 
			
		||||
        <dependency.groovy.version>3.0.17</dependency.groovy.version>
 | 
			
		||||
        <dependency.groovy.version>3.0.18</dependency.groovy.version>
 | 
			
		||||
        <dependency.tika.version>2.4.1</dependency.tika.version>
 | 
			
		||||
        <dependency.spring-security.version>5.8.3</dependency.spring-security.version>
 | 
			
		||||
        <dependency.truezip.version>7.7.10</dependency.truezip.version>
 | 
			
		||||
@@ -93,7 +93,7 @@
 | 
			
		||||
        <dependency.apache.taglibs.version>1.2.5</dependency.apache.taglibs.version>
 | 
			
		||||
        <dependency.awaitility.version>4.2.0</dependency.awaitility.version>
 | 
			
		||||
        <dependency.swagger-ui.version>3.38.0</dependency.swagger-ui.version>
 | 
			
		||||
        <dependency.swagger-parser.version>1.0.66</dependency.swagger-parser.version>
 | 
			
		||||
        <dependency.swagger-parser.version>1.0.67</dependency.swagger-parser.version>
 | 
			
		||||
        <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>
 | 
			
		||||
@@ -108,11 +108,11 @@
 | 
			
		||||
        <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.4.11</dependency.json-smart.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.5.0-A2</alfresco.googledrive.version>
 | 
			
		||||
        <alfresco.aos-module.version>1.6.0</alfresco.aos-module.version>
 | 
			
		||||
        <alfresco.googledrive.version>3.4.2-A2</alfresco.googledrive.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>
 | 
			
		||||
@@ -122,11 +122,11 @@
 | 
			
		||||
        <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>4.0.3</dependency.tas-utility.version>
 | 
			
		||||
        <dependency.rest-assured.version>5.3.0</dependency.rest-assured.version>
 | 
			
		||||
        <dependency.tas-email.version>1.21</dependency.tas-email.version>
 | 
			
		||||
        <dependency.tas-webdav.version>1.16</dependency.tas-webdav.version>
 | 
			
		||||
        <dependency.tas-ftp.version>1.17</dependency.tas-ftp.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>1.23</dependency.tas-email.version>
 | 
			
		||||
        <dependency.tas-webdav.version>1.18</dependency.tas-webdav.version>
 | 
			
		||||
        <dependency.tas-ftp.version>1.18</dependency.tas-ftp.version>
 | 
			
		||||
        <dependency.tas-dataprep.version>2.6</dependency.tas-dataprep.version>
 | 
			
		||||
 | 
			
		||||
        <!-- AGS properties shared between community and enterprise -->
 | 
			
		||||
@@ -150,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.125</tag>
 | 
			
		||||
        <tag>HEAD</tag>
 | 
			
		||||
    </scm>
 | 
			
		||||
 | 
			
		||||
    <distributionManagement>
 | 
			
		||||
@@ -297,17 +297,6 @@
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.alfresco.services</groupId>
 | 
			
		||||
                <artifactId>alfresco-messaging-repo</artifactId>
 | 
			
		||||
                <version>${dependency.alfresco-messaging-repo.version}</version>
 | 
			
		||||
                <exclusions>
 | 
			
		||||
                    <exclusion>
 | 
			
		||||
                        <groupId>org.apache.activemq</groupId>
 | 
			
		||||
                        <artifactId>activemq-broker</artifactId>
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.alfresco</groupId>
 | 
			
		||||
                <artifactId>alfresco-server-root</artifactId>
 | 
			
		||||
@@ -371,7 +360,7 @@
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-codec</groupId>
 | 
			
		||||
                <artifactId>commons-codec</artifactId>
 | 
			
		||||
                <version>1.15</version>
 | 
			
		||||
                <version>1.16.0</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>commons-lang</groupId>
 | 
			
		||||
@@ -783,6 +772,11 @@
 | 
			
		||||
                <artifactId>gson</artifactId>
 | 
			
		||||
                <version>${dependency.gson.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>com.google.guava</groupId>
 | 
			
		||||
                <artifactId>guava</artifactId>
 | 
			
		||||
                <version>${dependency.guava.version}</version>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.apache.camel</groupId>
 | 
			
		||||
                <artifactId>camel-core</artifactId>
 | 
			
		||||
@@ -898,7 +892,7 @@
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.projectlombok</groupId>
 | 
			
		||||
                <artifactId>lombok</artifactId>
 | 
			
		||||
                <version>1.18.26</version>
 | 
			
		||||
                <version>1.18.28</version>
 | 
			
		||||
                <scope>provided</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
@@ -936,7 +930,7 @@
 | 
			
		||||
                <plugin>
 | 
			
		||||
                    <groupId>io.fabric8</groupId>
 | 
			
		||||
                    <artifactId>docker-maven-plugin</artifactId>
 | 
			
		||||
                    <version>0.42.1</version>
 | 
			
		||||
                    <version>0.43.0</version>
 | 
			
		||||
                </plugin>
 | 
			
		||||
                <plugin>
 | 
			
		||||
                    <artifactId>maven-surefire-plugin</artifactId>
 | 
			
		||||
@@ -1015,6 +1009,11 @@
 | 
			
		||||
                        <skipDeploy>true</skipDeploy>
 | 
			
		||||
                    </configuration>
 | 
			
		||||
                </plugin>
 | 
			
		||||
                <plugin>
 | 
			
		||||
                    <groupId>org.codehaus.cargo</groupId>
 | 
			
		||||
                    <artifactId>cargo-maven3-plugin</artifactId>
 | 
			
		||||
                    <version>1.10.8</version>
 | 
			
		||||
                </plugin>
 | 
			
		||||
            </plugins>
 | 
			
		||||
        </pluginManagement>
 | 
			
		||||
        <plugins>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -823,6 +823,11 @@ public class SearchMapper
 | 
			
		||||
                sp.setLimitBy(LimitBy.NUMBER_OF_PERMISSION_EVALUATIONS);
 | 
			
		||||
                sp.setMaxPermissionCheckTimeMillis(limits.getPermissionEvaluationTime());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(limits.getTrackTotalHitsLimit() != null)
 | 
			
		||||
            {
 | 
			
		||||
                sp.setTrackTotalHits(limits.getTrackTotalHitsLimit());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -93,7 +93,7 @@ public class FacetField
 | 
			
		||||
 | 
			
		||||
    public String toFilterQuery(String value)
 | 
			
		||||
    {
 | 
			
		||||
        return field+":\""+value+"\"";
 | 
			
		||||
        return ("Null".equals(value)) ? "ISNULL:\"" + field + "\"" : field + ":\"" + value + "\"";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getPrefix()
 | 
			
		||||
 
 | 
			
		||||
@@ -37,13 +37,16 @@ public class Limits
 | 
			
		||||
 | 
			
		||||
    private final Integer permissionEvaluationTime;
 | 
			
		||||
    private final Integer permissionEvaluationCount;
 | 
			
		||||
    private final Integer trackTotalHitsLimit;
 | 
			
		||||
 | 
			
		||||
    @JsonCreator
 | 
			
		||||
    public Limits(@JsonProperty("permissionEvaluationTime") Integer permissionEvaluationTime,
 | 
			
		||||
                  @JsonProperty("permissionEvaluationCount") Integer permissionEvaluationCount)
 | 
			
		||||
                  @JsonProperty("permissionEvaluationCount") Integer permissionEvaluationCount,
 | 
			
		||||
                  @JsonProperty("trackTotalHitsLimit") Integer trackTotalHitsLimit)
 | 
			
		||||
    {
 | 
			
		||||
        this.permissionEvaluationTime = permissionEvaluationTime;
 | 
			
		||||
        this.permissionEvaluationCount = permissionEvaluationCount;
 | 
			
		||||
        this.trackTotalHitsLimit = trackTotalHitsLimit;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Integer getPermissionEvaluationTime()
 | 
			
		||||
@@ -55,4 +58,9 @@ public class Limits
 | 
			
		||||
    {
 | 
			
		||||
        return permissionEvaluationCount;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Integer getTrackTotalHitsLimit()
 | 
			
		||||
    {
 | 
			
		||||
        return trackTotalHitsLimit;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -745,33 +745,56 @@ public class SearchMapperTests
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void fromLimits() throws Exception
 | 
			
		||||
    public void fromLimits_setNull() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        SearchParameters searchParameters = new SearchParameters();
 | 
			
		||||
        searchMapper.setDefaults(searchParameters);
 | 
			
		||||
 | 
			
		||||
        //Doesn't error
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, null);
 | 
			
		||||
        assertEquals(500, searchParameters.getLimit());
 | 
			
		||||
        assertEquals(LimitBy.UNLIMITED, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals("LimitBy default value should be unlimited", LimitBy.UNLIMITED, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals("Limit default value should be 500", 500, searchParameters.getLimit());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(null, null));
 | 
			
		||||
        assertEquals(LimitBy.UNLIMITED, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals(500, searchParameters.getLimit());
 | 
			
		||||
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(null, 34));
 | 
			
		||||
        assertEquals(LimitBy.NUMBER_OF_PERMISSION_EVALUATIONS, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals(34, searchParameters.getMaxPermissionChecks());
 | 
			
		||||
        assertEquals(-1, searchParameters.getLimit());
 | 
			
		||||
        assertEquals(-1, searchParameters.getMaxPermissionCheckTimeMillis());
 | 
			
		||||
 | 
			
		||||
        searchParameters = new SearchParameters();
 | 
			
		||||
    @Test
 | 
			
		||||
    public void fromLimits_setAllLimitsAsNull() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        SearchParameters searchParameters = new SearchParameters();
 | 
			
		||||
        searchMapper.setDefaults(searchParameters);
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(1000, null));
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(null, null, null));
 | 
			
		||||
        assertEquals("LimitBy default value should be unlimited", LimitBy.UNLIMITED, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals("Limit default value should be 500", 500, searchParameters.getLimit());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void fromLimits_setPermissionEvaluationCount() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        SearchParameters searchParameters = new SearchParameters();
 | 
			
		||||
        searchMapper.setDefaults(searchParameters);
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(null, 34, null));
 | 
			
		||||
        assertEquals(LimitBy.NUMBER_OF_PERMISSION_EVALUATIONS, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals(1000, searchParameters.getMaxPermissionCheckTimeMillis());
 | 
			
		||||
        assertEquals(-1, searchParameters.getLimit());
 | 
			
		||||
        assertEquals(-1, searchParameters.getMaxPermissionChecks());
 | 
			
		||||
        assertEquals("MaxPermissionChecks should be set", 34, searchParameters.getMaxPermissionChecks());
 | 
			
		||||
        assertEquals("Limit should be -1", -1, searchParameters.getLimit());
 | 
			
		||||
        assertEquals("MaxPermissionCheckTimeMillis should be -1", -1, searchParameters.getMaxPermissionCheckTimeMillis());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void fromLimits_setPermissionEvaluationTime() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        SearchParameters searchParameters = new SearchParameters();
 | 
			
		||||
        searchMapper.setDefaults(searchParameters);
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(1000, null, null));
 | 
			
		||||
        assertEquals(LimitBy.NUMBER_OF_PERMISSION_EVALUATIONS, searchParameters.getLimitBy());
 | 
			
		||||
        assertEquals("MaxPermissionCheckTimeMillis should be set", 1000, searchParameters.getMaxPermissionCheckTimeMillis());
 | 
			
		||||
        assertEquals("Limit should be -1", -1, searchParameters.getLimit());
 | 
			
		||||
        assertEquals("MaxPermissionChecks should be -1", -1, searchParameters.getMaxPermissionChecks());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void fromLimits_setTrackTotalHitsLimit() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        SearchParameters searchParameters = new SearchParameters();
 | 
			
		||||
        searchMapper.setDefaults(searchParameters);
 | 
			
		||||
        searchMapper.fromLimits(searchParameters, new Limits(null, null, 10));
 | 
			
		||||
        assertEquals("TrackTotalHits should be set", 10, searchParameters.getTrackTotalHits());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <parent>
 | 
			
		||||
        <groupId>org.alfresco</groupId>
 | 
			
		||||
        <artifactId>alfresco-community-repo</artifactId>
 | 
			
		||||
        <version>23.1.0.125</version>
 | 
			
		||||
        <version>23.1.0.163-SNAPSHOT</version>
 | 
			
		||||
    </parent>
 | 
			
		||||
 | 
			
		||||
    <dependencies>
 | 
			
		||||
@@ -126,7 +126,7 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.ibm.icu</groupId>
 | 
			
		||||
            <artifactId>icu4j</artifactId>
 | 
			
		||||
            <version>73.1</version>
 | 
			
		||||
            <version>73.2</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.googlecode.json-simple</groupId>
 | 
			
		||||
@@ -378,17 +378,6 @@
 | 
			
		||||
            <version>6.5.1</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- GData -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.gdata</groupId>
 | 
			
		||||
            <artifactId>gdata-core-1.0</artifactId>
 | 
			
		||||
            <version>1.47.1</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>com.google.gdata</groupId>
 | 
			
		||||
            <artifactId>gdata-media-1.0</artifactId>
 | 
			
		||||
            <version>1.47.1</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.security</groupId>
 | 
			
		||||
            <artifactId>spring-security-crypto</artifactId>
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,7 @@ import java.util.zip.ZipException;
 | 
			
		||||
import org.alfresco.error.AlfrescoRuntimeException;
 | 
			
		||||
import org.alfresco.model.ApplicationModel;
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
import org.alfresco.repo.action.ActionServiceImpl;
 | 
			
		||||
import org.alfresco.repo.action.ParameterDefinitionImpl;
 | 
			
		||||
import org.alfresco.repo.content.MimetypeMap;
 | 
			
		||||
import org.alfresco.repo.importer.ACPImportPackageHandler;
 | 
			
		||||
@@ -65,6 +66,8 @@ import org.alfresco.util.TempFileProvider;
 | 
			
		||||
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 | 
			
		||||
import org.apache.commons.compress.archivers.zip.ZipFile;
 | 
			
		||||
import org.apache.commons.compress.utils.InputStreamStatistics;
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Importer action executor
 | 
			
		||||
@@ -73,6 +76,7 @@ import org.apache.commons.compress.utils.InputStreamStatistics;
 | 
			
		||||
 */
 | 
			
		||||
public class ImporterActionExecuter extends ActionExecuterAbstractBase
 | 
			
		||||
{
 | 
			
		||||
    private static Log logger = LogFactory.getLog(ImporterActionExecuter.class);
 | 
			
		||||
    public static final String NAME = "import";
 | 
			
		||||
    public static final String PARAM_ENCODING = "encoding";
 | 
			
		||||
    public static final String PARAM_DESTINATION_FOLDER = "destination";
 | 
			
		||||
@@ -242,17 +246,21 @@ public class ImporterActionExecuter extends ActionExecuterAbstractBase
 | 
			
		||||
                       //       http://bugs.sun.com/bugdatabase/view_bug.do;:WuuT?bug_id=4820807
 | 
			
		||||
                       // We also try to use the extra encoding information if present
 | 
			
		||||
                       String encoding = (String) ruleAction.getParameterValue(PARAM_ENCODING);
 | 
			
		||||
                       logger.info("Encoding before: "+encoding);
 | 
			
		||||
                       if (encoding == null)
 | 
			
		||||
                       {
 | 
			
		||||
                           encoding = "UTF-8";
 | 
			
		||||
                           logger.info("Encoding is null ");
 | 
			
		||||
                           encoding = "Cp437";
 | 
			
		||||
                       }
 | 
			
		||||
                       else
 | 
			
		||||
                       {
 | 
			
		||||
                           if (encoding.equalsIgnoreCase("default"))
 | 
			
		||||
                           {
 | 
			
		||||
                               encoding = null;
 | 
			
		||||
                               logger.info("Encoding is default ");
 | 
			
		||||
                               encoding = "Cp437";
 | 
			
		||||
                           }
 | 
			
		||||
                       }
 | 
			
		||||
                       logger.info("Encoding after: "+encoding);
 | 
			
		||||
                       zipFile = new ZipFile(tempFile, encoding, true);
 | 
			
		||||
                       // build a temp dir name based on the ID of the noderef we are importing
 | 
			
		||||
                       // also use the long life temp folder as large ZIP files can take a while
 | 
			
		||||
 
 | 
			
		||||
@@ -1,158 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * #%L
 | 
			
		||||
 * Alfresco Repository
 | 
			
		||||
 * %%
 | 
			
		||||
 * 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.config.source;
 | 
			
		||||
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import org.springframework.extensions.config.ConfigException;
 | 
			
		||||
import org.springframework.extensions.config.source.UrlConfigSource;
 | 
			
		||||
import org.alfresco.model.ContentModel;
 | 
			
		||||
import org.alfresco.repo.tenant.TenantService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.ContentReader;
 | 
			
		||||
import org.alfresco.service.cmr.repository.ContentService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.InvalidStoreRefException;
 | 
			
		||||
import org.alfresco.service.cmr.repository.NodeRef;
 | 
			
		||||
import org.alfresco.service.cmr.repository.NodeService;
 | 
			
		||||
import org.alfresco.service.cmr.repository.StoreRef;
 | 
			
		||||
import org.alfresco.service.cmr.search.SearchService;
 | 
			
		||||
import org.alfresco.service.namespace.NamespaceService;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ConfigSource that looks for a prefix to determine where to look for the config.</br>
 | 
			
		||||
 * Valid prefixes are:
 | 
			
		||||
 * <ul>
 | 
			
		||||
 *   <li><b><storeProtocol>://<storeIdentifier></b> the location provided is a path to a repository file</li>
 | 
			
		||||
 * </ul>
 | 
			
		||||
 * as well as those defined in the core (UrlConfigSource)
 | 
			
		||||
 *
 | 
			
		||||
 * Example store URLs
 | 
			
		||||
 *   <code>workspace://SpacesStore/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.webclient_extension.childname}/cm:web-client-config-custom.xml</code>
 | 
			
		||||
 *   <code>workspace://SpacesStore/app:company_home/app:dictionary/app:webclient_extension/cm:web-client-config-custom.xml</code> 
 | 
			
		||||
 */
 | 
			
		||||
public class RepoUrlConfigSource extends UrlConfigSource
 | 
			
		||||
{   
 | 
			
		||||
    private TenantService tenantService;
 | 
			
		||||
    private SearchService searchService;
 | 
			
		||||
    private ContentService contentService;
 | 
			
		||||
    private NamespaceService namespaceService;
 | 
			
		||||
    private NodeService nodeService;
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public void setTenantService(TenantService tenantService) 
 | 
			
		||||
    {
 | 
			
		||||
        this.tenantService = tenantService;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setSearchService(SearchService searchService) 
 | 
			
		||||
    {
 | 
			
		||||
        this.searchService = searchService;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setContentService(ContentService contentService) 
 | 
			
		||||
    {
 | 
			
		||||
        this.contentService = contentService;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setNamespaceService(NamespaceService namespaceService)
 | 
			
		||||
    {
 | 
			
		||||
        this.namespaceService = namespaceService;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setNodeService(NodeService nodeService) 
 | 
			
		||||
    {
 | 
			
		||||
        this.nodeService = nodeService;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    public RepoUrlConfigSource(String sourceLocation)
 | 
			
		||||
    {
 | 
			
		||||
        super(sourceLocation);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RepoUrlConfigSource(List<String> sourceLocations)
 | 
			
		||||
    {
 | 
			
		||||
        super(sourceLocations);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public InputStream getInputStream(String sourceUrl)
 | 
			
		||||
    {
 | 
			
		||||
        // determine the config source       
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            return super.getInputStream(sourceUrl);
 | 
			
		||||
        } 
 | 
			
		||||
        catch (ConfigException ce)
 | 
			
		||||
        {     
 | 
			
		||||
            int idx = sourceUrl.indexOf(StoreRef.URI_FILLER); 
 | 
			
		||||
            if (idx != -1)
 | 
			
		||||
            {
 | 
			
		||||
                // assume this is a repository location
 | 
			
		||||
                int idx2 = sourceUrl.indexOf("/", idx+3);
 | 
			
		||||
                                
 | 
			
		||||
                String store = sourceUrl.substring(0, idx2);
 | 
			
		||||
                String path = sourceUrl.substring(idx2);
 | 
			
		||||
                
 | 
			
		||||
                StoreRef storeRef = tenantService.getName(new StoreRef(store));    
 | 
			
		||||
                NodeRef rootNode = null;
 | 
			
		||||
                
 | 
			
		||||
                try 
 | 
			
		||||
                {
 | 
			
		||||
                    rootNode = nodeService.getRootNode(storeRef);
 | 
			
		||||
                } 
 | 
			
		||||
                catch (InvalidStoreRefException e)
 | 
			
		||||
                {
 | 
			
		||||
                    throw ce;
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                List<NodeRef> nodeRefs = searchService.selectNodes(rootNode, path, null, namespaceService, false);
 | 
			
		||||
                
 | 
			
		||||
                if (nodeRefs.size() == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    // if none found, then simply skip
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
                else if (nodeRefs.size() > 1)
 | 
			
		||||
                {
 | 
			
		||||
                    // unexpected
 | 
			
		||||
                    throw new ConfigException("Found duplicate config sources in the repository " + sourceUrl);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                NodeRef nodeRef = nodeRefs.get(0);
 | 
			
		||||
                
 | 
			
		||||
                ContentReader cr = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
 | 
			
		||||
                                   
 | 
			
		||||
                return cr.getContentInputStream();                                                  
 | 
			
		||||
            } 
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                // not a repository url
 | 
			
		||||
                throw ce;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -251,15 +251,16 @@ public class TransactionBehaviourQueue implements TransactionListener
 | 
			
		||||
        }
 | 
			
		||||
        catch (IllegalArgumentException e)
 | 
			
		||||
        {
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId(), e);
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId() + " : " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
        catch (IllegalAccessException e)
 | 
			
		||||
        {
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId(), e);
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId() + " : " + e.getMessage(), e);
 | 
			
		||||
        }
 | 
			
		||||
        catch (InvocationTargetException e)
 | 
			
		||||
        {
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId(), e.getTargetException());
 | 
			
		||||
            String msg = e.getMessage() + (e.getTargetException() != null ? "(" + e.getTargetException().getMessage() + ")" : "");
 | 
			
		||||
            throw new AlfrescoRuntimeException("Failed to execute transaction-level behaviour " + context.method + " in transaction " + AlfrescoTransactionSupport.getTransactionId() + " : " + msg, e.getTargetException());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -1605,8 +1605,6 @@ public class LDAPUserRegistry implements UserRegistry, LDAPNameResolver, Initial
 | 
			
		||||
                    this.userSearchCtls = new SearchControls();
 | 
			
		||||
                    this.userSearchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 | 
			
		||||
                    this.userSearchCtls.setReturningAttributes(LDAPUserRegistry.this.userKeys.getFirst());
 | 
			
		||||
                    // MNT-14001 fix, set search limit to ensure that server will not return more search results then provided by paged result control
 | 
			
		||||
                    this.userSearchCtls.setCountLimit(LDAPUserRegistry.this.queryBatchSize > 0 ? LDAPUserRegistry.this.queryBatchSize : 0);
 | 
			
		||||
 | 
			
		||||
                    this.next = fetchNext();
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -25,27 +25,66 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.alfresco.util.remote.server;
 | 
			
		||||
 | 
			
		||||
import org.springframework.remoting.rmi.RmiRegistryFactoryBean;
 | 
			
		||||
import org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.beans.factory.DisposableBean;
 | 
			
		||||
import org.springframework.beans.factory.FactoryBean;
 | 
			
		||||
 | 
			
		||||
import java.rmi.RemoteException;
 | 
			
		||||
import java.rmi.registry.LocateRegistry;
 | 
			
		||||
import java.rmi.registry.Registry;
 | 
			
		||||
import java.rmi.server.RMIClientSocketFactory;
 | 
			
		||||
import java.rmi.server.RMIServerSocketFactory;
 | 
			
		||||
import java.rmi.server.UnicastRemoteObject;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class controls the RMI connectivity via <code>alfresco.jmx.connector.enabled</code> property
 | 
			
		||||
 *
 | 
			
		||||
 * @author alex.mukha
 | 
			
		||||
 */
 | 
			
		||||
public class AlfrescoRmiRegistryFactoryBean extends RmiRegistryFactoryBean
 | 
			
		||||
public class AlfrescoRmiRegistryFactoryBean implements FactoryBean<Registry>, DisposableBean
 | 
			
		||||
{
 | 
			
		||||
    private static final String ERR_MSG_NOT_ENABLED = "The RMI registry factory is disabled.";
 | 
			
		||||
    private static final Logger LOG = LoggerFactory.getLogger(AlfrescoRmiRegistryFactoryBean.class);
 | 
			
		||||
 | 
			
		||||
    private boolean enabled = true;
 | 
			
		||||
    private boolean created = false;
 | 
			
		||||
 | 
			
		||||
    public void setEnabled(boolean enabled)
 | 
			
		||||
    {
 | 
			
		||||
    private final boolean enabled;
 | 
			
		||||
 | 
			
		||||
    private final int port;
 | 
			
		||||
 | 
			
		||||
    private final Registry registry;
 | 
			
		||||
 | 
			
		||||
    public AlfrescoRmiRegistryFactoryBean(boolean enabled, int port, HostConfigurableSocketFactory socketFactory) throws Exception {
 | 
			
		||||
        this.enabled = enabled;
 | 
			
		||||
        this.port = port;
 | 
			
		||||
        if(this.enabled)
 | 
			
		||||
        {
 | 
			
		||||
            this.registry = initRegistry(socketFactory);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            this.registry = null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Registry initRegistry(HostConfigurableSocketFactory socketFactory) throws RemoteException {
 | 
			
		||||
        if (LOG.isDebugEnabled()) {
 | 
			
		||||
            LOG.debug("Looking for RMI registry at port '" + this.port + "', using custom socket factory");
 | 
			
		||||
        }
 | 
			
		||||
        Registry registry;
 | 
			
		||||
        synchronized (LocateRegistry.class) {
 | 
			
		||||
            try {
 | 
			
		||||
                // Retrieve existing registry.
 | 
			
		||||
                registry = LocateRegistry.getRegistry(null, this.port, socketFactory);
 | 
			
		||||
                testRegistry(this.registry);
 | 
			
		||||
            }
 | 
			
		||||
            catch (RemoteException ex) {
 | 
			
		||||
                LOG.trace("RMI registry access threw exception", ex);
 | 
			
		||||
                LOG.debug("Could not detect RMI registry - creating new one");
 | 
			
		||||
                // Assume no registry found -> create new one.
 | 
			
		||||
                this.created = true;
 | 
			
		||||
                registry = LocateRegistry.createRegistry(this.port, socketFactory, socketFactory);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return registry;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isEnabled()
 | 
			
		||||
@@ -54,57 +93,34 @@ public class AlfrescoRmiRegistryFactoryBean extends RmiRegistryFactoryBean
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void afterPropertiesSet() throws Exception
 | 
			
		||||
    {
 | 
			
		||||
        if (enabled)
 | 
			
		||||
        {
 | 
			
		||||
            super.afterPropertiesSet();
 | 
			
		||||
    public void destroy() throws Exception {
 | 
			
		||||
        if (this.created) {
 | 
			
		||||
            LOG.debug("Unexporting RMI registry");
 | 
			
		||||
            UnicastRemoteObject.unexportObject(this.registry, true);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected Registry getRegistry(
 | 
			
		||||
            String registryHost,
 | 
			
		||||
            int registryPort,
 | 
			
		||||
            RMIClientSocketFactory clientSocketFactory,
 | 
			
		||||
            RMIServerSocketFactory serverSocketFactory) throws RemoteException
 | 
			
		||||
    {
 | 
			
		||||
        if(enabled)
 | 
			
		||||
        {
 | 
			
		||||
            return super.getRegistry(registryHost, registryPort, clientSocketFactory, serverSocketFactory);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            throw new RemoteException(ERR_MSG_NOT_ENABLED);
 | 
			
		||||
        }
 | 
			
		||||
    public Registry getObject() throws Exception {
 | 
			
		||||
        return this.registry;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected Registry getRegistry(
 | 
			
		||||
            int registryPort,
 | 
			
		||||
            RMIClientSocketFactory clientSocketFactory,
 | 
			
		||||
            RMIServerSocketFactory serverSocketFactory) throws RemoteException
 | 
			
		||||
    {
 | 
			
		||||
        if(enabled)
 | 
			
		||||
        {
 | 
			
		||||
            return super.getRegistry(registryPort, clientSocketFactory, serverSocketFactory);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            throw new RemoteException(ERR_MSG_NOT_ENABLED);
 | 
			
		||||
        }
 | 
			
		||||
    public Class<?> getObjectType() {
 | 
			
		||||
        return (this.registry != null ? this.registry.getClass() : Registry.class);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected Registry getRegistry(int registryPort) throws RemoteException
 | 
			
		||||
    public boolean isCreated()
 | 
			
		||||
    {
 | 
			
		||||
        if(enabled)
 | 
			
		||||
        {
 | 
			
		||||
            return super.getRegistry(registryPort);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            throw new RemoteException(ERR_MSG_NOT_ENABLED);
 | 
			
		||||
        }
 | 
			
		||||
        return created;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getPort() {
 | 
			
		||||
        return port;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void testRegistry(Registry registry) throws RemoteException
 | 
			
		||||
    {
 | 
			
		||||
        registry.list();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -75,6 +75,9 @@
 | 
			
		||||
        <property name="propertiesPersister">
 | 
			
		||||
        	<bean class="org.alfresco.config.AlfrescoPropertiesPersister"/>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="order">
 | 
			
		||||
            <value>9999999</value>
 | 
			
		||||
        </property>
 | 
			
		||||
    </bean>
 | 
			
		||||
 | 
			
		||||
    <!-- Expand global properties and version information in bean definitions -->
 | 
			
		||||
@@ -101,6 +104,18 @@
 | 
			
		||||
        </property>
 | 
			
		||||
    </bean>
 | 
			
		||||
 | 
			
		||||
    <bean id="default-properties-resolver" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 | 
			
		||||
        <property name="ignoreUnresolvablePlaceholders">
 | 
			
		||||
            <value>true</value>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="searchSystemEnvironment">
 | 
			
		||||
            <value>false</value>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="order">
 | 
			
		||||
            <value>2147483647</value>
 | 
			
		||||
        </property>
 | 
			
		||||
    </bean>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- Load properties that must be shared between the        -->
 | 
			
		||||
    <!-- Alfresco server and its remote clients.                -->
 | 
			
		||||
 
 | 
			
		||||
@@ -1349,7 +1349,7 @@ system.remove-alf_server-table-from-db.ignored=true
 | 
			
		||||
allow.unsecure.callback.jsonp=false
 | 
			
		||||
 | 
			
		||||
# pre-configured allow list of media/mime types to allow inline instead of attachment (via Content-Disposition response header)
 | 
			
		||||
content.nonAttach.mimetypes=application/pdf,image/jpeg,image/gif,image/png,image/tiff,image/bmp
 | 
			
		||||
content.nonAttach.mimetypes=application/pdf,image/jpeg,image/gif,image/png,image/tiff,image/bmp,application/octet-stream
 | 
			
		||||
 | 
			
		||||
# Zip file compression ratio threshold as a percentage, above which the zip file will be considered a "zip bomb" and the
 | 
			
		||||
# import extraction process cancelled.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user