mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-09-10 14:11:58 +00:00
Compare commits
1 Commits
17.1
...
fix/REPO-5
Author | SHA1 | Date | |
---|---|---|---|
|
02decc91d4 |
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-amps</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-parent</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-automation-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
|
@@ -73,7 +73,6 @@ import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
|
||||
/**
|
||||
* API tests for declaring document as record and filing it immediately to a record folder location within the file plan
|
||||
@@ -258,7 +257,7 @@ public class DeclareAndFileDocumentAsRecordTests extends BaseRMRestTest
|
||||
* Then I receive an error indicating that I have attempted to declare and file a document into an invalid record folder
|
||||
* And the document is not declared as a record
|
||||
*/
|
||||
@Test (dataProvider = "invalidDestinationPaths",groups = { TestGroup.NOT_SUPPORTED_ON_SINGLE_PIPELINE })
|
||||
@Test (dataProvider = "invalidDestinationPaths")
|
||||
public void declareAndFileToInvalidLocationUsingActionsAPI(String containerPath, String expectedException) throws Exception
|
||||
{
|
||||
STEP("Declare document as record with an invalid location parameter value");
|
||||
|
@@ -62,7 +62,6 @@ import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
|
||||
/**
|
||||
* API tests for declaring a document version as record and filing to a record folder location within the file plan
|
||||
@@ -208,7 +207,7 @@ public class FileVersionAsRecordTests extends BaseRMRestTest
|
||||
* record folder
|
||||
* And the document is not declared as a version record
|
||||
*/
|
||||
@Test (dataProvider = "invalidDestinationPaths", groups = { TestGroup.NOT_SUPPORTED_ON_SINGLE_PIPELINE })
|
||||
@Test (dataProvider = "invalidDestinationPaths")
|
||||
public void declareVersionAndFileToInvalidLocationUsingActionsAPI(String containerPath, String expectedException) throws Exception
|
||||
{
|
||||
STEP("Declare document as record version with an invalid location parameter value");
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-parent</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-repo-parent</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -3,8 +3,8 @@
|
||||
#
|
||||
|
||||
# Version label
|
||||
version.major=7
|
||||
version.minor=3
|
||||
version.major=23
|
||||
version.minor=1
|
||||
version.revision=0
|
||||
version.label=
|
||||
|
||||
@@ -15,4 +15,4 @@ version.edition=Community
|
||||
version.scmrevision=@scm-path@-r@scm-revision@
|
||||
|
||||
# Build number
|
||||
version.build=r@scm-revision@-b@build-number@
|
||||
version.build=r@scm-revision@-b@build-number@
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-governance-services-community-repo-parent</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<build>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-amps</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -9,6 +9,6 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
</project>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modules>
|
||||
|
@@ -27,11 +27,11 @@ fi
|
||||
|
||||
echo "Starting ACS stack in ${DOCKER_COMPOSE_PATH}"
|
||||
|
||||
export TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)
|
||||
export TRANSFORM_ROUTER_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-service.version -q -DforceStdout)
|
||||
TRANSFORMERS_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-core.version -q -DforceStdout)
|
||||
TRANSFORM_ROUTER_TAG=$(mvn help:evaluate -Dexpression=dependency.alfresco-transform-service.version -q -DforceStdout)
|
||||
|
||||
# .env files are picked up from project directory correctly on docker-compose 1.23.0+
|
||||
docker-compose --file "${DOCKER_COMPOSE_PATH}" --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d
|
||||
TRANSFORMERS_TAG=${TRANSFORMERS_TAG} TRANSFORM_ROUTER_TAG=${TRANSFORM_ROUTER_TAG} docker-compose --file "${DOCKER_COMPOSE_PATH}" --project-directory $(dirname "${DOCKER_COMPOSE_PATH}") up -d
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -11,7 +11,6 @@ import org.alfresco.rest.model.RestActionDefinitionModelsCollection;
|
||||
import org.alfresco.rest.model.RestNodeModel;
|
||||
import org.alfresco.utility.Utility;
|
||||
import org.alfresco.utility.model.FileModel;
|
||||
import org.alfresco.utility.model.FolderModel;
|
||||
import org.alfresco.utility.model.SiteModel;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
@@ -22,14 +21,10 @@ import org.springframework.http.HttpStatus;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
public class ActionsTests extends RestTest
|
||||
{
|
||||
private UserModel adminUser;
|
||||
private FileModel document;
|
||||
private FolderModel folder;
|
||||
private FileModel randomFile;
|
||||
private SiteModel publicSite;
|
||||
|
||||
@BeforeClass(alwaysRun = true)
|
||||
@@ -38,8 +33,6 @@ public class ActionsTests extends RestTest
|
||||
adminUser = dataUser.getAdminUser();
|
||||
publicSite = dataSite.createPublicRandomSite();
|
||||
document = dataContent.usingSite(publicSite).usingUser(adminUser).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||
folder = dataContent.usingUser(adminUser).createFolder();
|
||||
randomFile = dataContent.usingUser(adminUser).usingResource(folder).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||
}
|
||||
|
||||
@TestRail(section = { TestGroup.REST_API,TestGroup.ACTIONS }, executionType = ExecutionType.SANITY,
|
||||
@@ -113,22 +106,6 @@ public class ActionsTests extends RestTest
|
||||
});
|
||||
}
|
||||
|
||||
@TestRail(section = { TestGroup.REST_API,TestGroup.ACTIONS }, executionType = ExecutionType.SANITY,
|
||||
description = "Test for private action execution from POST api/-default-/public/alfresco/versions/1/action-executions, should not be possible to execute private action using V1 REST API")
|
||||
@Test(groups = { TestGroup.REST_API, TestGroup.ACTIONS, TestGroup.SANITY})
|
||||
public void executePrivateActionV1RESTAPI() throws Exception
|
||||
{
|
||||
// 'count-children' action is expected to be private (not exposed) by default
|
||||
String actionDefinitionId = "count-children";
|
||||
JSONObject response = restClient.authenticateUser(adminUser)
|
||||
.withCoreAPI()
|
||||
.usingActions()
|
||||
.executeAction(actionDefinitionId, folder);
|
||||
|
||||
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN);
|
||||
restClient.assertLastError().containsSummary("Action '" + actionDefinitionId + "' is not exposed within 'http-v1' execution source.");
|
||||
}
|
||||
|
||||
@TestRail (section = { TestGroup.REST_API, TestGroup.ACTIONS }, executionType = ExecutionType.SANITY,
|
||||
description = "Sanity test for POST /action-executions")
|
||||
@Test (groups = { TestGroup.REST_API, TestGroup.ACTIONS, TestGroup.SANITY })
|
||||
@@ -164,7 +141,7 @@ public class ActionsTests extends RestTest
|
||||
withCoreAPI().
|
||||
usingActions().
|
||||
getActionDefinitionById("add-features");
|
||||
|
||||
|
||||
restClient.assertStatusCodeIs(HttpStatus.OK);
|
||||
assertFalse(restActionDefinition.getId().isEmpty());
|
||||
restActionDefinition.getId().equals("add-features");
|
||||
|
@@ -9,7 +9,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-tests</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo-packaging</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
|
8
pom.xml
8
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>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>Alfresco Community Repo Parent</name>
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<acs.version.major>7</acs.version.major>
|
||||
<acs.version.minor>3</acs.version.minor>
|
||||
<acs.version.major>23</acs.version.major>
|
||||
<acs.version.minor>1</acs.version.minor>
|
||||
<acs.version.revision>0</acs.version.revision>
|
||||
<acs.version.label />
|
||||
<amp.min.version>${acs.version.major}.1.0</amp.min.version>
|
||||
@@ -147,7 +147,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>17.1</tag>
|
||||
<tag>HEAD</tag>
|
||||
</scm>
|
||||
|
||||
<distributionManagement>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -390,9 +390,8 @@ public class LockInfoImpl implements Serializable, LockInfo
|
||||
else
|
||||
{
|
||||
Date now = dateNow();
|
||||
long remainingTimeoutInSecondsRoundedUp = (Math.max(expires.getTime() - now.getTime(), 0) + 999) / 1000;
|
||||
|
||||
return remainingTimeoutInSecondsRoundedUp;
|
||||
long timeout = ((expires.getTime() - now.getTime()) / 1000);
|
||||
return timeout;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.webdav;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -449,18 +449,30 @@ public class LockMethod extends WebDAVMethod
|
||||
*/
|
||||
protected final void createLock(FileInfo lockNode, String userName) throws WebDAVServerException
|
||||
{
|
||||
if (!createExclusive) {
|
||||
// Create Lock token
|
||||
lockToken = WebDAV.makeLockToken(lockNode.getNodeRef(), userName);
|
||||
|
||||
if (createExclusive)
|
||||
{
|
||||
// Lock the node
|
||||
lockInfo.setTimeoutSeconds(getLockTimeout());
|
||||
lockInfo.setExclusiveLockToken(lockToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shared lock creation should already have been prohibited when parsing the request body
|
||||
throw new WebDAVServerException(HttpServletResponse.SC_PRECONDITION_FAILED);
|
||||
}
|
||||
|
||||
lockToken = WebDAV.makeLockToken(lockNode.getNodeRef(), userName);
|
||||
lockInfo.setExclusiveLockToken(lockToken);
|
||||
// Store lock depth
|
||||
lockInfo.setDepth(WebDAV.getDepthName(m_depth));
|
||||
lockInfo.setScope(WebDAV.XML_EXCLUSIVE);
|
||||
// Store lock scope (shared/exclusive)
|
||||
String scope = createExclusive ? WebDAV.XML_EXCLUSIVE : WebDAV.XML_SHARED;
|
||||
lockInfo.setScope(scope);
|
||||
// Store the owner of this lock
|
||||
lockInfo.setOwner(userName);
|
||||
|
||||
getDAVLockService().lock(lockNode.getNodeRef(), lockInfo, getLockTimeout());
|
||||
// Lock the node
|
||||
getDAVLockService().lock(lockNode.getNodeRef(), lockInfo);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
|
@@ -1,28 +1,28 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.webdav;
|
||||
|
||||
@@ -56,9 +56,7 @@ public interface WebDAVLockService
|
||||
void lock(NodeRef nodeRef, String userName, int timeout);
|
||||
|
||||
void lock(NodeRef nodeRef, LockInfo lockInfo);
|
||||
|
||||
void lock(NodeRef nodeRef, LockInfo lockInfo, int timeout);
|
||||
|
||||
|
||||
/**
|
||||
* Shared method for webdav/vti to unlock node. Unlocked node is automatically removed from
|
||||
* current sessions's locked resources list.
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -32,6 +32,7 @@ import java.util.List;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.lock.LockUtils;
|
||||
import org.alfresco.repo.lock.mem.Lifetime;
|
||||
import org.alfresco.repo.lock.mem.LockState;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
@@ -236,15 +237,57 @@ public class WebDAVLockServiceImpl implements WebDAVLockService
|
||||
}
|
||||
}
|
||||
|
||||
public void lock(NodeRef nodeRef, LockInfo lockInfo) {
|
||||
int timeout = (int) lockInfo.getRemainingTimeoutSeconds();
|
||||
lock(nodeRef, lockInfo, timeout);
|
||||
}
|
||||
public void lock(NodeRef nodeRef, LockInfo lockInfo)
|
||||
{
|
||||
boolean performSessionBehavior = false;
|
||||
long timeout;
|
||||
|
||||
timeout = lockInfo.getRemainingTimeoutSeconds();
|
||||
|
||||
// ALF-11777 fix, do not lock node for more than 24 hours (webdav and vti)
|
||||
if (timeout >= WebDAV.TIMEOUT_24_HOURS || timeout == WebDAV.TIMEOUT_INFINITY)
|
||||
{
|
||||
timeout = WebDAV.TIMEOUT_24_HOURS;
|
||||
lockInfo.setTimeoutSeconds((int) timeout);
|
||||
performSessionBehavior = true;
|
||||
}
|
||||
|
||||
// TODO: lock children according to depth? lock type?
|
||||
final String additionalInfo = lockInfo.toJSON();
|
||||
lockService.lock(nodeRef, LockType.WRITE_LOCK, (int) timeout, Lifetime.EPHEMERAL, additionalInfo);
|
||||
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(nodeRef + " was locked for " + timeout + " seconds.");
|
||||
}
|
||||
|
||||
if (performSessionBehavior)
|
||||
{
|
||||
HttpSession session = currentSession.get();
|
||||
|
||||
if (session == null)
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Couldn't find current session.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
storeObjectInSessionList(session, LOCKED_RESOURCES, new Pair<String, NodeRef>(AuthenticationUtil.getRunAsUser(), nodeRef));
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(nodeRef + " was added to the session " + session.getId() + " for post expiration processing.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shared method for webdav/vti protocols to lock node. If node is locked for more than 24 hours it is automatically added
|
||||
* to the current session locked resources list.
|
||||
*
|
||||
*
|
||||
* @param nodeRef the node to lock
|
||||
* @param userName userName
|
||||
* @param timeout the number of seconds before the locks expires
|
||||
@@ -252,68 +295,8 @@ public class WebDAVLockServiceImpl implements WebDAVLockService
|
||||
@Override
|
||||
public void lock(NodeRef nodeRef, String userName, int timeout)
|
||||
{
|
||||
LockInfo lockInfo = createLock(nodeRef, userName, true);
|
||||
lock(nodeRef, lockInfo, timeout);
|
||||
}
|
||||
|
||||
public void lock(NodeRef nodeRef, LockInfo lockInfo, int timeout)
|
||||
{
|
||||
// ALF-11777 fix, do not lock node for more than 24 hours (webdav and vti)
|
||||
boolean performSessionBehavior = false;
|
||||
if (timeout > WebDAV.TIMEOUT_24_HOURS || timeout == WebDAV.TIMEOUT_INFINITY)
|
||||
{
|
||||
timeout = WebDAV.TIMEOUT_24_HOURS;
|
||||
performSessionBehavior = true;
|
||||
}
|
||||
|
||||
validateLockTimeout(timeout);
|
||||
lockInner(nodeRef, lockInfo, timeout);
|
||||
|
||||
if (performSessionBehavior)
|
||||
{
|
||||
performLockSessionBehavior(nodeRef);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateLockTimeout(int timeout) {
|
||||
if (timeout != WebDAV.TIMEOUT_INFINITY && timeout == LockService.TIMEOUT_INFINITY) {
|
||||
throw new IllegalArgumentException("Timeout == " + LockService.TIMEOUT_INFINITY +
|
||||
" is treated as permanence for locks. For maximum allowed timeout set " + WebDAV.TIMEOUT_INFINITY);
|
||||
}
|
||||
}
|
||||
|
||||
private void lockInner(NodeRef nodeRef, LockInfo lockInfo, int timeout) {
|
||||
//Update/set true expiry date of a lock to be used in additional information
|
||||
lockInfo.setTimeoutSeconds(timeout);
|
||||
|
||||
// TODO: lock children according to depth? lock type?
|
||||
final String additionalInfo = lockInfo.toJSON();
|
||||
lockService.lock(nodeRef, LockType.WRITE_LOCK, timeout, Lifetime.EPHEMERAL, additionalInfo);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(nodeRef + " was locked for " + timeout + " seconds.");
|
||||
}
|
||||
}
|
||||
|
||||
private void performLockSessionBehavior(NodeRef nodeRef) {
|
||||
HttpSession session = currentSession.get();
|
||||
|
||||
if (session == null)
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Couldn't find current session.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
storeObjectInSessionList(session, LOCKED_RESOURCES, new Pair<String, NodeRef>(AuthenticationUtil.getRunAsUser(), nodeRef));
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(nodeRef + " was added to the session " + session.getId() + " for post expiration processing.");
|
||||
}
|
||||
LockInfo lockInfo = createLock(nodeRef, userName, true, timeout);
|
||||
lock(nodeRef, lockInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -461,15 +444,19 @@ public class WebDAVLockServiceImpl implements WebDAVLockService
|
||||
* @param nodeRef NodeRef
|
||||
* @param userName String
|
||||
* @param createExclusive boolean
|
||||
* @param timeoutSecs int
|
||||
*/
|
||||
private LockInfo createLock(NodeRef nodeRef, String userName, boolean createExclusive)
|
||||
private LockInfo createLock(NodeRef nodeRef, String userName, boolean createExclusive, int timeoutSecs)
|
||||
{
|
||||
// Create Lock token
|
||||
String lockToken = WebDAV.makeLockToken(nodeRef, userName);
|
||||
|
||||
LockInfo lockInfo = new LockInfoImpl();
|
||||
|
||||
if (createExclusive)
|
||||
{
|
||||
// Lock the node
|
||||
lockInfo.setTimeoutSeconds(timeoutSecs);
|
||||
lockInfo.setExclusiveLockToken(lockToken);
|
||||
}
|
||||
else
|
||||
@@ -477,11 +464,15 @@ public class WebDAVLockServiceImpl implements WebDAVLockService
|
||||
lockInfo.addSharedLockToken(lockToken);
|
||||
}
|
||||
|
||||
// Store lock depth
|
||||
lockInfo.setDepth(WebDAV.getDepthName(WebDAV.DEPTH_INFINITY));
|
||||
// Store lock scope (shared/exclusive)
|
||||
String scope = createExclusive ? WebDAV.XML_EXCLUSIVE : WebDAV.XML_SHARED;
|
||||
lockInfo.setScope(scope);
|
||||
// Store the owner of this lock
|
||||
lockInfo.setOwner(userName);
|
||||
|
||||
|
||||
// TODO: to help with debugging/refactoring (remove later)
|
||||
String currentUser = AuthenticationUtil.getFullyAuthenticatedUser();
|
||||
if (!currentUser.equals(userName))
|
||||
{
|
||||
|
@@ -26,14 +26,11 @@
|
||||
package org.alfresco.rest.api.impl;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.repo.action.ActionExecutionContext;
|
||||
import org.alfresco.repo.action.RuntimeActionService;
|
||||
import org.alfresco.rest.api.Actions;
|
||||
import org.alfresco.rest.api.model.Action;
|
||||
import org.alfresco.rest.api.model.ActionDefinition;
|
||||
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
||||
import org.alfresco.rest.framework.core.exceptions.PermissionDeniedException;
|
||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||
import org.alfresco.rest.framework.resource.parameters.SortColumn;
|
||||
@@ -75,9 +72,6 @@ public class ActionsImpl implements Actions
|
||||
private NamespaceService namespaceService;
|
||||
private NodeService nodeService;
|
||||
private NamespacePrefixResolver prefixResolver;
|
||||
private RuntimeActionService runtimeActionService;
|
||||
|
||||
private final String HTTP_V1_EXECUTION_SOURCE = "http-v1";
|
||||
|
||||
public void setActionService(ActionService actionService)
|
||||
{
|
||||
@@ -104,11 +98,6 @@ public class ActionsImpl implements Actions
|
||||
this.prefixResolver = prefixResolver;
|
||||
}
|
||||
|
||||
public void setRuntimeActionService(RuntimeActionService runtimeActionService)
|
||||
{
|
||||
this.runtimeActionService = runtimeActionService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionDefinition getActionDefinitionById(String actionDefinitionId)
|
||||
{
|
||||
@@ -274,16 +263,6 @@ public class ActionsImpl implements Actions
|
||||
throw new EntityNotFoundException(action.getActionDefinitionId());
|
||||
}
|
||||
|
||||
final ActionExecutionContext actionExecutionContext = ActionExecutionContext
|
||||
.builder(actionDef.getName())
|
||||
.withExecutionSource(HTTP_V1_EXECUTION_SOURCE)
|
||||
.build();
|
||||
|
||||
if (!runtimeActionService.isExposed(actionExecutionContext))
|
||||
{
|
||||
throw new PermissionDeniedException("Action '" + actionDef.getName() + "' is not exposed within '" + HTTP_V1_EXECUTION_SOURCE + "' execution source.");
|
||||
}
|
||||
|
||||
// targetId is optional, however, currently targetId must be a valid node ID.
|
||||
NodeRef actionedUponNodeRef = null;
|
||||
if (action.getTargetId() != null && !action.getTargetId().isEmpty())
|
||||
|
@@ -566,7 +566,6 @@
|
||||
<property name="namespaceService" ref="NamespaceService"/>
|
||||
<property name="nodeService" ref="NodeService"/>
|
||||
<property name="prefixResolver" ref="namespaceService"/>
|
||||
<property name="runtimeActionService" ref="actionService"/>
|
||||
</bean>
|
||||
<bean id="Actions" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||
<property name="proxyInterfaces" value="org.alfresco.rest.api.Actions"/>
|
||||
|
@@ -3,7 +3,6 @@ function main()
|
||||
|
||||
// Get the args
|
||||
var filter = args["filter"];
|
||||
if (filter!==null && !filter.includes(":")) {filter += " [hint:useCQ]";}
|
||||
var maxResults = args["maxResults"];
|
||||
var skipCountStr = args["skipCount"];
|
||||
var skipCount = skipCountStr != null ? parseInt(skipCountStr) : -1;
|
||||
|
@@ -3,7 +3,7 @@ function main()
|
||||
// Get the args
|
||||
var siteShortName = url.templateArgs.shortname,
|
||||
site = siteService.getSite(siteShortName),
|
||||
filter = ((args.filter != null) ? args.filter : (args.shortNameFilter != null) ? args.shortNameFilter : "" )+ " [hint:useCQ]",
|
||||
filter = (args.filter != null) ? args.filter : (args.shortNameFilter != null) ? args.shortNameFilter : "",
|
||||
maxResults = (args.maxResults == null) ? 10 : parseInt(args.maxResults, 10),
|
||||
authorityType = args.authorityType,
|
||||
zone = args.zone,
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>alfresco-community-repo</artifactId>
|
||||
<version>17.1</version>
|
||||
<version>23.1.0.23-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
@@ -236,7 +236,7 @@
|
||||
<dependency>
|
||||
<groupId>org.freemarker</groupId>
|
||||
<artifactId>freemarker</artifactId>
|
||||
<version>2.3.20-alfresco-patched-20220413</version>
|
||||
<version>2.3.20-alfresco-patched-20200421</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.xmlbeans</groupId>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2019-2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
|
@@ -91,7 +91,7 @@ public class EventGeneratorQueue implements InitializingBean
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error("Unexpected error while enqueuing maker function for repository event" + e);
|
||||
LOGGER.error("Unexpected error while enqueuing maker function for repository event", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class EventGeneratorQueue implements InitializingBean
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error("Unexpected error while dequeuing and sending repository event" + e);
|
||||
LOGGER.error("Unexpected error while dequeuing and sending repository event", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2018 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -321,7 +321,7 @@ public class LockServiceImpl implements LockService,
|
||||
public void lock(NodeRef nodeRef, LockType lockType)
|
||||
{
|
||||
// Lock with no expiration
|
||||
lock(nodeRef, lockType, TIMEOUT_INFINITY);
|
||||
lock(nodeRef, lockType, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -371,8 +371,16 @@ public class LockServiceImpl implements LockService,
|
||||
public void lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, String additionalInfo)
|
||||
{
|
||||
invokeBeforeLock(nodeRef, lockType);
|
||||
validateTimeToExpire(timeToExpire, lifetime);
|
||||
lifetime = switchLifetimeMode(timeToExpire, lifetime);
|
||||
if (lifetime.equals(Lifetime.EPHEMERAL) && (timeToExpire > MAX_EPHEMERAL_LOCK_SECONDS))
|
||||
{
|
||||
throw new IllegalArgumentException("Attempt to create ephemeral lock for " +
|
||||
timeToExpire + " seconds - exceeds maximum allowed time.");
|
||||
}
|
||||
if (lifetime.equals(Lifetime.EPHEMERAL) && (timeToExpire > ephemeralExpiryThreshold))
|
||||
{
|
||||
lifetime = Lifetime.PERSISTENT;
|
||||
}
|
||||
|
||||
|
||||
nodeRef = tenantService.getName(nodeRef);
|
||||
|
||||
@@ -434,22 +442,6 @@ public class LockServiceImpl implements LockService,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void validateTimeToExpire(int timeToExpire, Lifetime lifetime) {
|
||||
if (lifetime.equals(Lifetime.EPHEMERAL) && (timeToExpire > MAX_EPHEMERAL_LOCK_SECONDS))
|
||||
{
|
||||
throw new IllegalArgumentException("Attempt to create ephemeral lock for " +
|
||||
timeToExpire + " seconds - exceeds maximum allowed time.");
|
||||
}
|
||||
}
|
||||
|
||||
private Lifetime switchLifetimeMode(int timeToExpire, Lifetime lifetime) {
|
||||
if (lifetime.equals(Lifetime.EPHEMERAL) && (timeToExpire > ephemeralExpiryThreshold))
|
||||
{
|
||||
return Lifetime.PERSISTENT;
|
||||
}
|
||||
return lifetime;
|
||||
}
|
||||
|
||||
private void persistLockProps(NodeRef nodeRef, LockType lockType, Lifetime lifetime, String userName, Date expiryDate, String additionalInfo)
|
||||
{
|
||||
@@ -476,16 +468,16 @@ public class LockServiceImpl implements LockService,
|
||||
*/
|
||||
private Date makeExpiryDate(int timeToExpire)
|
||||
{
|
||||
boolean permanent = timeToExpire <= TIMEOUT_INFINITY;
|
||||
if (permanent) {
|
||||
return null;
|
||||
// Set the expiry date
|
||||
Date expiryDate = null;
|
||||
if (timeToExpire > 0)
|
||||
{
|
||||
expiryDate = new Date();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(expiryDate);
|
||||
calendar.add(Calendar.SECOND, timeToExpire);
|
||||
expiryDate = calendar.getTime();
|
||||
}
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.SECOND, timeToExpire);
|
||||
Date expiryDate = calendar.getTime();
|
||||
|
||||
return expiryDate;
|
||||
}
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2021 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -23,7 +23,7 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.search.impl;
|
||||
package org.alfresco.repo.search.impl.solr;
|
||||
|
||||
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
|
||||
import org.alfresco.opencmis.search.CMISQueryOptions;
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -23,7 +23,7 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.search.impl;
|
||||
package org.alfresco.repo.search.impl.solr;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
@@ -36,7 +36,6 @@ import org.alfresco.repo.domain.solr.SearchDAO;
|
||||
import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryLanguage;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryLanguageSPI;
|
||||
import org.alfresco.repo.search.impl.querymodel.QueryModelException;
|
||||
import org.alfresco.repo.search.impl.solr.SolrJSONResultSet;
|
||||
import org.alfresco.repo.search.results.ChildAssocRefResultSet;
|
||||
import org.alfresco.repo.solr.NodeParameters;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
@@ -62,16 +61,12 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
LuceneQueryLanguageSPI indexQueryLanguage;
|
||||
|
||||
QueryConsistency queryConsistency = QueryConsistency.DEFAULT;
|
||||
QueryConsistency solrQueryConsistency = null; // Deprecated
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
private SearchDAO searchDao;
|
||||
|
||||
private Boolean hybridEnabled;
|
||||
private Boolean solrHybridEnabled; // Deprecated
|
||||
|
||||
private String subsystemName;
|
||||
private boolean hybridEnabled;
|
||||
|
||||
/**
|
||||
* @param dbQueryLanguage the dbQueryLanguage to set
|
||||
@@ -97,12 +92,6 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
this.queryConsistency = queryConsistency;
|
||||
}
|
||||
|
||||
// Deprecated
|
||||
public void setSolrQueryConsistency(QueryConsistency solrQueryConsistency)
|
||||
{
|
||||
this.solrQueryConsistency = solrQueryConsistency;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param nodeService the nodeService to set
|
||||
*/
|
||||
@@ -116,35 +105,17 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
this.searchDao = searchDao;
|
||||
}
|
||||
|
||||
public void setHybridEnabled(Boolean hybridEnabled)
|
||||
public void setHybridEnabled(boolean hybridEnabled)
|
||||
{
|
||||
this.hybridEnabled = hybridEnabled;
|
||||
}
|
||||
|
||||
// Deprecated
|
||||
public void setSolrHybridEnabled(Boolean solrHybridEnabled)
|
||||
{
|
||||
this.solrHybridEnabled = solrHybridEnabled;
|
||||
}
|
||||
|
||||
public void setSubsystemName(String subsystemName)
|
||||
{
|
||||
this.subsystemName = subsystemName;
|
||||
}
|
||||
|
||||
public ResultSet executeQuery(SearchParameters searchParameters)
|
||||
{
|
||||
QueryConsistency consistency = searchParameters.getQueryConsistency();
|
||||
if(consistency == QueryConsistency.DEFAULT)
|
||||
{
|
||||
if(solrQueryConsistency != null)
|
||||
{
|
||||
consistency = solrQueryConsistency;
|
||||
}
|
||||
else
|
||||
{
|
||||
consistency = queryConsistency;
|
||||
}
|
||||
consistency = queryConsistency;
|
||||
}
|
||||
|
||||
switch(consistency)
|
||||
@@ -154,7 +125,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Using "+subsystemName+" query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
logger.debug("Using SOLR query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
}
|
||||
StopWatch stopWatch = new StopWatch("index only");
|
||||
stopWatch.start();
|
||||
@@ -162,7 +133,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
stopWatch.stop();
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(subsystemName+" returned " + results.length() + " results in " +
|
||||
logger.debug("SOLR returned " + results.length() + " results in " +
|
||||
stopWatch.getLastTaskTimeMillis() + "ms");
|
||||
}
|
||||
return results;
|
||||
@@ -194,7 +165,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
throw new QueryModelException("No query language available");
|
||||
}
|
||||
case HYBRID:
|
||||
if (((solrHybridEnabled != null) && (!solrHybridEnabled)) || (hybridEnabled == null) || (!hybridEnabled))
|
||||
if (!hybridEnabled)
|
||||
{
|
||||
throw new DisabledFeatureException("Hybrid query is disabled.");
|
||||
}
|
||||
@@ -238,7 +209,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Using "+subsystemName+" query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
logger.debug("Using SOLR query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
}
|
||||
stopWatch.start();
|
||||
|
||||
@@ -247,7 +218,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
stopWatch.stop();
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(subsystemName+" returned " + results.length() + " results in " +
|
||||
logger.debug("SOLR returned " + results.length() + " results in " +
|
||||
stopWatch.getLastTaskTimeMillis() + "ms");
|
||||
}
|
||||
return results;
|
||||
@@ -260,14 +231,14 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("(No DB QL) Using "+subsystemName+" query: "+"dbQueryLanguage==null"+" for "+searchParameters);
|
||||
logger.debug("(No DB QL) Using SOLR query: "+"dbQueryLanguage==null"+" for "+searchParameters);
|
||||
}
|
||||
stopWatch.start();
|
||||
ResultSet results = indexQueryLanguage.executeQuery(searchParameters);
|
||||
stopWatch.stop();
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(subsystemName+" returned " + results.length() + " results in " +
|
||||
logger.debug("SOLR returned " + results.length() + " results in " +
|
||||
stopWatch.getLastTaskTimeMillis() + "ms");
|
||||
}
|
||||
return results;
|
||||
@@ -311,21 +282,21 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
if (indexQueryLanguage == null || dbQueryLanguage == null)
|
||||
{
|
||||
throw new QueryModelException("Both "+subsystemName+" and DB query language required for hybrid search [index=" +
|
||||
throw new QueryModelException("Both index and DB query language required for hybrid search [index=" +
|
||||
indexQueryLanguage + ", DB=" + dbQueryLanguage + "]");
|
||||
}
|
||||
|
||||
StopWatch stopWatch = new StopWatch("hybrid search");
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Hybrid search, using "+subsystemName+" query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
logger.debug("Hybrid search, using SOLR query: "+dbQueryLanguage.getName()+" for "+searchParameters);
|
||||
}
|
||||
stopWatch.start("index query");
|
||||
ResultSet indexResults = indexQueryLanguage.executeQuery(searchParameters);
|
||||
stopWatch.stop();
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug(subsystemName+" query returned " + indexResults.length() + " results in " +
|
||||
logger.debug("SOLR query returned " + indexResults.length() + " results in " +
|
||||
stopWatch.getLastTaskTimeMillis() + "ms");
|
||||
}
|
||||
// TODO: if the results are up-to-date, then nothing more to do - return the results.
|
||||
@@ -334,7 +305,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
if (logger.isWarnEnabled())
|
||||
{
|
||||
logger.warn("Hybrid search can only use database when "+subsystemName+" is also in use. " +
|
||||
logger.warn("Hybrid search can only use database when SOLR is also in use. " +
|
||||
"Skipping DB search, returning results from index.");
|
||||
}
|
||||
return indexResults;
|
||||
@@ -374,7 +345,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
{
|
||||
nodeRefs.add(n.getNodeRef());
|
||||
}
|
||||
// Only use the Search Index results for nodes that haven't changed since indexing.
|
||||
// Only use the SOLR results for nodes that haven't changed since indexing.
|
||||
for (ChildAssociationRef car : indexResults.getChildAssocRefs())
|
||||
{
|
||||
if (!nodeRefs.contains(car.getChildRef()))
|
||||
@@ -389,7 +360,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
|
||||
stopWatch.stop(); // merge result sets
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
String stats = String.format(subsystemName+"=%d, DB=%d, total=%d",
|
||||
String stats = String.format("SOLR=%d, DB=%d, total=%d",
|
||||
indexResults.length(), dbResults.length(), results.length());
|
||||
logger.debug("Hybrid search returning combined results with counts: " + stats);
|
||||
logger.debug(stopWatch.prettyPrint());
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -23,19 +23,19 @@
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.repo.search.impl;
|
||||
|
||||
/**
|
||||
* Identifies an attempt to use a disabled feature.
|
||||
*
|
||||
* @author Matt Ward
|
||||
*/
|
||||
public class DisabledFeatureException extends RuntimeException
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
DisabledFeatureException(String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
package org.alfresco.repo.search.impl.solr;
|
||||
|
||||
/**
|
||||
* Identifies an attempt to use a disabled feature.
|
||||
*
|
||||
* @author Matt Ward
|
||||
*/
|
||||
public class DisabledFeatureException extends RuntimeException
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
DisabledFeatureException(String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
}
|
@@ -1,29 +1,29 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* 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.search.impl;
|
||||
/*
|
||||
* #%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.search.impl.solr;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -52,19 +52,19 @@ import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
|
||||
/**
|
||||
* @author Andy
|
||||
*/
|
||||
public class OpenCMISQueryServiceImpl implements CMISQueryService
|
||||
public class SolrOpenCMISQueryServiceImpl implements CMISQueryService
|
||||
{
|
||||
private LuceneQueryLanguageSPI queryLanguage;
|
||||
private LuceneQueryLanguageSPI solrQueryLanguage;
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
private DictionaryService alfrescoDictionaryService;
|
||||
|
||||
private CMISDictionaryService cmisDictionaryService;
|
||||
|
||||
public void setQueryLanguage(LuceneQueryLanguageSPI queryLanguage)
|
||||
|
||||
public void setSolrQueryLanguage(LuceneQueryLanguageSPI solrQueryLanguage)
|
||||
{
|
||||
this.queryLanguage = queryLanguage;
|
||||
this.solrQueryLanguage = solrQueryLanguage;
|
||||
}
|
||||
|
||||
public void setNodeService(NodeService nodeService)
|
||||
@@ -87,7 +87,7 @@ public class OpenCMISQueryServiceImpl implements CMISQueryService
|
||||
{
|
||||
SearchParameters searchParameters = options.getAsSearchParmeters();
|
||||
searchParameters.addExtraParameter("cmisVersion", options.getCmisVersion().toString());
|
||||
ResultSet rs = queryLanguage.executeQuery(searchParameters);
|
||||
ResultSet rs = solrQueryLanguage.executeQuery(searchParameters);
|
||||
|
||||
CapabilityJoin joinSupport = getJoinSupport();
|
||||
if(options.getQueryMode() == CMISQueryOptions.CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS)
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -42,8 +42,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@AlfrescoPublicApi
|
||||
public interface LockService
|
||||
{
|
||||
int TIMEOUT_INFINITY = 0;
|
||||
|
||||
/**
|
||||
* Places a lock on a node.
|
||||
* <p>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<!-- Core and miscellaneous bean definitions -->
|
||||
<beans>
|
||||
|
||||
<bean id="base.search.cmis.alfresco.switching" abstract="true" class="org.alfresco.repo.search.impl.DbOrIndexSwitchingQueryLanguage">
|
||||
<bean id="search.cmis.alfresco.switching" class="org.alfresco.repo.search.impl.solr.DbOrIndexSwitchingQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
@@ -19,19 +19,15 @@
|
||||
<property name="indexQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.index" />
|
||||
</property>
|
||||
|
||||
<property name="queryConsistency" value="${query.cmis.queryConsistency}"/>
|
||||
<property name="solrQueryConsistency" value="${solr.query.cmis.queryConsistency}"/>
|
||||
|
||||
<!-- Deprecated -->
|
||||
<property name="hybridEnabled" value="${query.hybrid.enabled}"/>
|
||||
<property name="solrHybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
|
||||
<property name="queryConsistency">
|
||||
<value>${solr.query.cmis.queryConsistency}</value>
|
||||
</property>
|
||||
<property name="nodeService" ref="NodeService"/>
|
||||
<property name="searchDao" ref="searchDAO"/>
|
||||
<property name="hybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="base.search.cmis.alfresco.switching1.1" abstract="true" class="org.alfresco.repo.search.impl.DbOrIndexSwitchingQueryLanguage">
|
||||
<bean id="search.cmis.alfresco.switching1.1" class="org.alfresco.repo.search.impl.solr.DbOrIndexSwitchingQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
@@ -46,15 +42,12 @@
|
||||
<property name="indexQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.index" />
|
||||
</property>
|
||||
|
||||
<property name="queryConsistency" value="${query.cmis.queryConsistency}"/>
|
||||
|
||||
<!-- Deprecated -->
|
||||
<property name="solrQueryConsistency" value="${solr.query.cmis.queryConsistency}"/>
|
||||
|
||||
<property name="queryConsistency">
|
||||
<value>${solr.query.cmis.queryConsistency}</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="base.search.cmis.strict.switching" abstract="true" class="org.alfresco.repo.search.impl.DbOrIndexSwitchingQueryLanguage">
|
||||
<bean id="search.cmis.strict.switching" class="org.alfresco.repo.search.impl.solr.DbOrIndexSwitchingQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
@@ -69,19 +62,15 @@
|
||||
<property name="indexQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.index" />
|
||||
</property>
|
||||
|
||||
<property name="queryConsistency" value="${query.cmis.queryConsistency}"/>
|
||||
<property name="solrQueryConsistency" value="${solr.query.cmis.queryConsistency}"/>
|
||||
|
||||
<!-- Deprecated -->
|
||||
<property name="hybridEnabled" value="${query.hybrid.enabled}"/>
|
||||
<property name="solrHybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
|
||||
<property name="queryConsistency">
|
||||
<value>${solr.query.cmis.queryConsistency}</value>
|
||||
</property>
|
||||
<property name="nodeService" ref="NodeService"/>
|
||||
<property name="searchDao" ref="searchDAO"/>
|
||||
<property name="hybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.db" class="org.alfresco.repo.search.impl.DbCmisQueryLanguage" >
|
||||
<bean id="search.cmis.alfresco.db" class="org.alfresco.repo.search.impl.solr.DbCmisQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
@@ -101,7 +90,7 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.db1.1" class="org.alfresco.repo.search.impl.DbCmisQueryLanguage" >
|
||||
<bean id="search.cmis.alfresco.db1.1" class="org.alfresco.repo.search.impl.solr.DbCmisQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
|
@@ -64,8 +64,8 @@
|
||||
</property>
|
||||
<!-- Query collections should be loaded on demand using this component - once loaded thay are available for use -->
|
||||
</bean>
|
||||
|
||||
<bean id="base.search.fts.alfresco.switching" abstract="true" class="org.alfresco.repo.search.impl.DbOrIndexSwitchingQueryLanguage">
|
||||
|
||||
<bean id="search.fts.alfresco.switching" class="org.alfresco.repo.search.impl.solr.DbOrIndexSwitchingQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
@@ -80,16 +80,12 @@
|
||||
<property name="indexQueryLanguage">
|
||||
<ref bean="search.fts.alfresco.index" />
|
||||
</property>
|
||||
|
||||
<property name="queryConsistency" value="${query.fts.queryConsistency}"/>
|
||||
<property name="solrQueryConsistency" value="${solr.query.fts.queryConsistency}"/>
|
||||
|
||||
<!-- Deprecated -->
|
||||
<property name="hybridEnabled" value="${query.hybrid.enabled}"/>
|
||||
<property name="solrHybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
|
||||
<property name="queryConsistency">
|
||||
<value>${solr.query.fts.queryConsistency}</value>
|
||||
</property>
|
||||
<property name="searchDao" ref="searchDAO"/>
|
||||
</bean>
|
||||
<property name="hybridEnabled" value="${solr.query.hybrid.enabled}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.db" class="org.alfresco.repo.search.impl.solr.DbAftsQueryLanguage" >
|
||||
<property name="dictionaryService" ref="dictionaryService" />
|
||||
|
@@ -2,14 +2,9 @@ search.solrTrackingSupport.enabled=true
|
||||
search.solrTrackingSupport.ignorePathsForSpecificTypes=false
|
||||
search.solrTrackingSupport.ignorePathsForSpecificAspects=false
|
||||
|
||||
# Deprecated
|
||||
solr.query.fts.queryConsistency=
|
||||
solr.query.cmis.queryConsistency=
|
||||
solr.query.hybrid.enabled=
|
||||
|
||||
query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.hybrid.enabled=false
|
||||
solr.query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.hybrid.enabled=false
|
||||
|
||||
search.solrShardRegistry.purgeOnInit=false
|
||||
search.solrShardRegistry.shardInstanceTimeoutInSeconds=300
|
||||
|
@@ -99,11 +99,7 @@
|
||||
<ref bean="search.indexerAndSearcherFactory" />
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.switching" parent="base.search.fts.alfresco.switching" >
|
||||
<property name="subsystemName" value="noindex"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="search.fts.alfresco.index" class="org.alfresco.repo.search.impl.solr.NoIndexQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
|
@@ -5,19 +5,7 @@
|
||||
|
||||
<import resource="../common-opencmis-context.xml" />
|
||||
|
||||
<bean id="search.cmis.alfresco.switching" parent="base.search.cmis.alfresco.switching" >
|
||||
<property name="subsystemName" value="noindex"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.switching1.1" parent="base.search.cmis.alfresco.switching1.1" >
|
||||
<property name="subsystemName" value="noindex"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.strict.switching" parent="base.search.cmis.strict.switching" >
|
||||
<property name="subsystemName" value="noindex"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService" />
|
||||
</property>
|
||||
@@ -27,12 +15,12 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching" />
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService1.1" />
|
||||
</property>
|
||||
@@ -42,7 +30,7 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching1.1" />
|
||||
</property>
|
||||
</bean>
|
||||
|
@@ -2,14 +2,9 @@ search.solrTrackingSupport.enabled=true
|
||||
search.solrTrackingSupport.ignorePathsForSpecificTypes=false
|
||||
search.solrTrackingSupport.ignorePathsForSpecificAspects=false
|
||||
|
||||
# Deprecated
|
||||
solr.query.fts.queryConsistency=
|
||||
solr.query.cmis.queryConsistency=
|
||||
solr.query.hybrid.enabled=
|
||||
|
||||
query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.hybrid.enabled=false
|
||||
solr.query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.hybrid.enabled=false
|
||||
|
||||
search.solrShardRegistry.purgeOnInit=false
|
||||
search.solrShardRegistry.shardInstanceTimeoutInSeconds=300
|
||||
|
@@ -4,19 +4,7 @@
|
||||
<beans>
|
||||
<import resource="../common-opencmis-context.xml" />
|
||||
|
||||
<bean id="search.cmis.alfresco.switching" parent="base.search.cmis.alfresco.switching" >
|
||||
<property name="subsystemName" value="solr"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.switching1.1" parent="base.search.cmis.alfresco.switching1.1" >
|
||||
<property name="subsystemName" value="solr"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.strict.switching" parent="base.search.cmis.strict.switching" >
|
||||
<property name="subsystemName" value="solr"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService" />
|
||||
</property>
|
||||
@@ -26,12 +14,12 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching" />
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService1.1" />
|
||||
</property>
|
||||
@@ -41,7 +29,7 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching1.1" />
|
||||
</property>
|
||||
</bean>
|
||||
|
@@ -168,11 +168,7 @@
|
||||
</property>
|
||||
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.switching" parent="base.search.fts.alfresco.switching" >
|
||||
<property name="subsystemName" value="solr"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="search.index.alfresco" class="org.alfresco.repo.search.impl.solr.SolrQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
|
@@ -2,14 +2,9 @@ search.solrTrackingSupport.enabled=true
|
||||
search.solrTrackingSupport.ignorePathsForSpecificTypes=false
|
||||
search.solrTrackingSupport.ignorePathsForSpecificAspects=false
|
||||
|
||||
# Deprecated
|
||||
solr.query.fts.queryConsistency=
|
||||
solr.query.cmis.queryConsistency=
|
||||
solr.query.hybrid.enabled=
|
||||
|
||||
query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.hybrid.enabled=false
|
||||
solr.query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.hybrid.enabled=false
|
||||
|
||||
search.solrShardRegistry.purgeOnInit=false
|
||||
search.solrShardRegistry.shardInstanceTimeoutInSeconds=300
|
||||
|
@@ -4,19 +4,7 @@
|
||||
<beans>
|
||||
<import resource="../common-opencmis-context.xml" />
|
||||
|
||||
<bean id="search.cmis.alfresco.switching" parent="base.search.cmis.alfresco.switching" >
|
||||
<property name="subsystemName" value="solr4"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.switching1.1" parent="base.search.cmis.alfresco.switching1.1" >
|
||||
<property name="subsystemName" value="solr4"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.strict.switching" parent="base.search.cmis.strict.switching" >
|
||||
<property name="subsystemName" value="solr4"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService" />
|
||||
</property>
|
||||
@@ -26,12 +14,12 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching" />
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService1.1" />
|
||||
</property>
|
||||
@@ -41,7 +29,7 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching1.1" />
|
||||
</property>
|
||||
</bean>
|
||||
|
@@ -218,10 +218,6 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.switching" parent="base.search.fts.alfresco.switching" >
|
||||
<property name="subsystemName" value="sol4"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.index" class="org.alfresco.repo.search.impl.solr.SolrQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
|
@@ -2,14 +2,9 @@ search.solrTrackingSupport.enabled=true
|
||||
search.solrTrackingSupport.ignorePathsForSpecificTypes=false
|
||||
search.solrTrackingSupport.ignorePathsForSpecificAspects=false
|
||||
|
||||
# Deprecated
|
||||
solr.query.fts.queryConsistency=
|
||||
solr.query.cmis.queryConsistency=
|
||||
solr.query.hybrid.enabled=
|
||||
|
||||
query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
query.hybrid.enabled=false
|
||||
solr.query.fts.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.cmis.queryConsistency=TRANSACTIONAL_IF_POSSIBLE
|
||||
solr.query.hybrid.enabled=false
|
||||
|
||||
search.solrShardRegistry.purgeOnInit=false
|
||||
search.solrShardRegistry.shardInstanceTimeoutInSeconds=300
|
||||
|
@@ -4,19 +4,7 @@
|
||||
<beans>
|
||||
<import resource="../common-opencmis-context.xml" />
|
||||
|
||||
<bean id="search.cmis.alfresco.switching" parent="base.search.cmis.alfresco.switching" >
|
||||
<property name="subsystemName" value="solr6"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.alfresco.switching1.1" parent="base.search.cmis.alfresco.switching1.1" >
|
||||
<property name="subsystemName" value="solr6"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.cmis.strict.switching" parent="base.search.cmis.strict.switching" >
|
||||
<property name="subsystemName" value="solr6"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService" />
|
||||
</property>
|
||||
@@ -26,12 +14,12 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching" />
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.OpenCMISQueryServiceImpl" >
|
||||
<bean id="search.OpenCMISQueryService1.1" class="org.alfresco.repo.search.impl.solr.SolrOpenCMISQueryServiceImpl" >
|
||||
<property name="cmisDictionaryService">
|
||||
<ref bean="OpenCMISDictionaryService1.1" />
|
||||
</property>
|
||||
@@ -41,7 +29,7 @@
|
||||
<property name="alfrescoDictionaryService">
|
||||
<ref bean="dictionaryService" />
|
||||
</property>
|
||||
<property name="queryLanguage">
|
||||
<property name="solrQueryLanguage">
|
||||
<ref bean="search.cmis.alfresco.switching1.1" />
|
||||
</property>
|
||||
</bean>
|
||||
|
@@ -238,10 +238,6 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.switching" parent="base.search.fts.alfresco.switching" >
|
||||
<property name="subsystemName" value="solr6"/>
|
||||
</bean>
|
||||
|
||||
<bean id="search.fts.alfresco.index" class="org.alfresco.repo.search.impl.solr.SolrQueryLanguage" >
|
||||
<property name="factories">
|
||||
<list>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -28,7 +28,7 @@ package org.alfresco.repo.search;
|
||||
import javax.transaction.UserTransaction;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.DisabledFeatureException;
|
||||
import org.alfresco.repo.search.impl.solr.DisabledFeatureException;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.MutableAuthenticationDao;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* #%L
|
||||
* Alfresco Repository
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
@@ -38,8 +38,6 @@ import java.util.List;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.domain.node.Node;
|
||||
import org.alfresco.repo.domain.solr.SearchDAO;
|
||||
import org.alfresco.repo.search.impl.DbOrIndexSwitchingQueryLanguage;
|
||||
import org.alfresco.repo.search.impl.DisabledFeatureException;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryLanguageSPI;
|
||||
import org.alfresco.repo.search.impl.querymodel.QueryModelException;
|
||||
import org.alfresco.repo.solr.NodeParameters;
|
||||
|
Reference in New Issue
Block a user