Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.0/Cloud)

86232: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud)
      86196: Merged DEV to V4.2-BUG-FIX (4.2.4)
         84316: MNT-11784 The "not" keyword is no longer working in CMIS query.
               In CMISQueryParser.buildConjunction() was added check (getOccur() == Occur.EXCLUDE).
         84522: MNT-11784 The "not" keyword is no longer working in CMIS query
               In OpenCmisQueryTest was added testNotKeyword() test. 


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@94529 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-01-31 09:45:07 +00:00
parent 9d7c30289a
commit 01699f3e60

View File

@@ -75,7 +75,9 @@ import org.alfresco.repo.search.impl.querymodel.Order;
import org.alfresco.repo.search.impl.querymodel.QueryModelException;
import org.alfresco.repo.search.impl.querymodel.QueryOptions.Connective;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MLText;
@@ -99,6 +101,7 @@ import org.apache.chemistry.opencmis.commons.enums.PropertyType;
import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
import org.junit.experimental.categories.Category;
import org.springframework.extensions.surf.util.I18NUtil;
import org.springframework.extensions.webscripts.GUID;
/**
* @author andyh
@@ -5724,6 +5727,53 @@ public class OpenCmisQueryTest extends BaseCMISTest
testExtendedQuery("SELECT * FROM cm:ownable ", 1, false, "cmis:name", new String(), false);
}
public void testNotKeyword() throws Exception
{
final String folderName = "testfolder" + GUID.generate();
final String docName = "testdoc." + GUID.generate();
final FileInfo fileInfo = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<FileInfo>()
{
@Override
public FileInfo execute() throws Throwable
{
FileInfo folderInfo = fileFolderService.create(base, folderName, ContentModel.TYPE_FOLDER);
nodeService.setProperty(folderInfo.getNodeRef(), ContentModel.PROP_NAME, folderName);
FileInfo fileInfo = fileFolderService.create(folderInfo.getNodeRef(), docName, ContentModel.TYPE_CONTENT);
nodeService.setProperty(fileInfo.getNodeRef(), ContentModel.PROP_NAME, docName);
nodeService.addAspect(fileInfo.getNodeRef(), ContentModel.ASPECT_VERSIONABLE, null);
return fileInfo;
}
});
String query = "SELECT * FROM cmis:document WHERE NOT cmis:name = '" + docName + "'";
CMISQueryOptions options = new CMISQueryOptions(query, rootNodeRef.getStoreRef());
CMISResultSet rs = cmisQueryService.query(options);
assertEquals(doc_count, rs.length());
for (CMISResultSetRow row : rs)
{
Serializable sValue = row.getValue("cmis:name");
assertFalse(sValue.equals(docName));
}
query = "SELECT cmis:name FROM cmis:document WHERE cmis:name = '" + docName + "'";
options = new CMISQueryOptions(query, rootNodeRef.getStoreRef());
rs = cmisQueryService.query(options);
assertEquals(1, rs.length());
CMISResultSetRow row = rs.iterator().next();
Serializable sValue = row.getValue("cmis:name");
assertTrue(sValue.equals(docName));
fileFolderService.delete(fileInfo.getNodeRef());
}
private void testOrderableProperty(String propertyQueryName)
{
testOrderBy("SELECT " + propertyQueryName + " FROM test:extendedContent ORDER BY " + propertyQueryName + " ASC", 13, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT,