Cleanly split CMIS interfaces from CMIS implementation.

- org.alfresco.cmis => public interfaces
- org.alfresco.cmis.mapping / dictionary / search => implementation

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13808 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2009-04-02 13:50:10 +00:00
parent af2b4f43c4
commit ee67b1f7de
64 changed files with 873 additions and 582 deletions

View File

@@ -1,81 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import org.alfresco.error.AlfrescoRuntimeException;
/**
* @author andyh
*
*/
public class CMISQueryException extends AlfrescoRuntimeException
{
/**
*
*/
private static final long serialVersionUID = 8281715613061152219L;
/**
* @param msgId
*/
public CMISQueryException(String msgId)
{
super(msgId);
// TODO Auto-generated constructor stub
}
/**
* @param msgId
* @param msgParams
*/
public CMISQueryException(String msgId, Object[] msgParams)
{
super(msgId, msgParams);
// TODO Auto-generated constructor stub
}
/**
* @param msgId
* @param cause
*/
public CMISQueryException(String msgId, Throwable cause)
{
super(msgId, cause);
// TODO Auto-generated constructor stub
}
/**
* @param msgId
* @param msgParams
* @param cause
*/
public CMISQueryException(String msgId, Object[] msgParams, Throwable cause)
{
super(msgId, msgParams, cause);
// TODO Auto-generated constructor stub
}
}

View File

@@ -1,95 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import java.util.Locale;
import org.alfresco.i18n.I18NUtil;
import org.alfresco.repo.search.impl.querymodel.QueryOptions;
import org.alfresco.service.cmr.repository.StoreRef;
/**
* The options for a CMIS query
*
* @author andyh
*/
public class CMISQueryOptions extends QueryOptions
{
public enum CMISQueryMode
{
CMS_STRICT, CMS_WITH_ALFRESCO_EXTENSIONS ;
}
private CMISQueryMode queryMode = CMISQueryMode.CMS_STRICT;
/**
* Create a CMISQueryOptions instance with the default options other than the query and store ref.
* The query will be run using the locale returned by I18NUtil.getLocale()
*
* @param query - the query to run
* @param storeRef - the store against which to run the query
*/
public CMISQueryOptions(String query, StoreRef storeRef)
{
this(query, storeRef, I18NUtil.getLocale());
}
/**
* Create a CMISQueryOptions instance with the default options other than the query, store ref and locale.
*
* @param query - the query to run
* @param storeRef - the store against which to run the query
*/
public CMISQueryOptions(String query, StoreRef storeRef, Locale locale)
{
super(query, storeRef, locale);
}
/**
* Get the query mode.
*
* @return the queryMode
*/
public CMISQueryMode getQueryMode()
{
return queryMode;
}
/**
* Set the query mode.
*
* @param queryMode the queryMode to set
*/
public void setQueryMode(CMISQueryMode queryMode)
{
this.queryMode = queryMode;
}
}

View File

@@ -22,7 +22,7 @@
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search.impl;
package org.alfresco.cmis.search;
import java.util.ArrayList;
import java.util.Collection;
@@ -33,15 +33,15 @@ import java.util.Map;
import java.util.StringTokenizer;
import org.alfresco.cmis.CMISCardinalityEnum;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISJoinEnum;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
import org.alfresco.cmis.dictionary.CMISPropertyId;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.search.CMISQueryException;
import org.alfresco.cmis.search.CMISQueryOptions;
import org.alfresco.cmis.search.CMISQueryOptions.CMISQueryMode;
import org.alfresco.cmis.CMISPropertyDefinition;
import org.alfresco.cmis.CMISPropertyId;
import org.alfresco.cmis.CMISQueryException;
import org.alfresco.cmis.CMISQueryOptions;
import org.alfresco.cmis.CMISScope;
import org.alfresco.cmis.CMISTypeDefinition;
import org.alfresco.cmis.CMISQueryOptions.CMISQueryMode;
import org.alfresco.repo.search.impl.parsers.CMISLexer;
import org.alfresco.repo.search.impl.parsers.CMISParser;
import org.alfresco.repo.search.impl.parsers.FTSLexer;

View File

@@ -1,85 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import org.alfresco.cmis.CMISFullTextSearchEnum;
import org.alfresco.cmis.CMISJoinEnum;
import org.alfresco.cmis.CMISQueryEnum;
/**
* Support to execute CMIS queries
*
* @author andyh
*
*/
public interface CMISQueryService
{
/**
* Execute a CMIS query as defined by options
*
* @param options
* @return a result set
*/
public CMISResultSet query(CMISQueryOptions options);
/**
* Execute a CMIS query with all the default options;
*
* @param query
* @return
*/
public CMISResultSet query(String query);
/**
* Get the query support level
*/
public CMISQueryEnum getQuerySupport();
/**
* Get the join support level in queries.
*/
public CMISJoinEnum getJoinSupport();
/**
* Get the full text search support level in queries.
*/
public CMISFullTextSearchEnum getFullTextSearchSupport();
/**
* Can you query Private Working Copies of a document.
*
* @return
*/
public boolean getPwcSearchable();
/**
* Can you query non-latest versions of a document.
* The current latest version is always searchable according to the type definition.
*
* @return
*/
public boolean getAllVersionsSearchable();
}

View File

@@ -22,22 +22,20 @@
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search.impl;
package org.alfresco.cmis.search;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISFullTextSearchEnum;
import org.alfresco.cmis.CMISJoinEnum;
import org.alfresco.cmis.CMISQueryEnum;
import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.search.CMISQueryOptions;
import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.cmis.search.CMISResultSet;
import org.alfresco.cmis.search.CMISResultSetImpl;
import org.alfresco.cmis.search.CmisFunctionEvaluationContext;
import org.alfresco.cmis.CMISQueryOptions;
import org.alfresco.cmis.CMISQueryService;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.cmis.CMISServices;
import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.repo.search.impl.querymodel.QueryEngine;
import org.alfresco.repo.search.impl.querymodel.QueryEngineResults;
@@ -49,7 +47,7 @@ import org.alfresco.service.cmr.search.ResultSet;
*/
public class CMISQueryServiceImpl implements CMISQueryService
{
private CMISService cmisService;
private CMISServices cmisService;
private CMISDictionaryService cmisDictionaryService;
@@ -61,7 +59,7 @@ public class CMISQueryServiceImpl implements CMISQueryService
* @param service
* the service to set
*/
public void setCMISService(CMISService cmisService)
public void setCMISService(CMISServices cmisService)
{
this.cmisService = cmisService;
}

View File

@@ -1,84 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
/**
* A CMIS result set
*
* @author andyh
*
*/
public interface CMISResultSet extends Iterable<CMISResultSetRow>
{
/**
* Get the result set meta-data.
* @return
*/
public CMISResultSetMetaData getMetaData();
/**
* Get the start point for this results set in the overall
* set of rows that match the query - this will be equal to the skip count
* set when executing the query.
* @return
*/
public int getStart();
/**
* Get the number of rows in this result set.
*
* This will be less than or equal to the maximum number of rows requested or
* the full length if no restriction on length is specified.
*
* If a skip count is given, the length represents the number of results
* after the skip count and does not include the items skipped.
*
* @return
*/
public int getLength();
/**
* Close the result set and release any resources held/
* The result set is also bound to the transaction and will auto close at
* the end of the transaction.
*/
public void close();
/**
* Was this result set curtailed - are there more pages to the result set?
* @return
*/
public boolean hasMore();
/**
* Get the given row
* @param i -the position in this result set - start + i gives the position in the overall result set
* @return
*/
public CMISResultSetRow getRow(int i);
}

View File

@@ -1,55 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import org.alfresco.cmis.CMISDataTypeEnum;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
/**
* The column meta data for a result set
*
* @author andyh
*
*/
public interface CMISResultSetColumn
{
/**
* The column name
* @return - the column name
*/
public String getName();
/**
* The property definition if there is one for the column
* @return - the property definition or null if it does not make sense for the column
*/
public CMISPropertyDefinition getPropertyDefinition();
/**
* The type of the column
* @return - the CMIS type for the column
*/
public CMISDataTypeEnum getPropertyType();
}

View File

@@ -25,7 +25,8 @@
package org.alfresco.cmis.search;
import org.alfresco.cmis.CMISDataTypeEnum;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
import org.alfresco.cmis.CMISPropertyDefinition;
import org.alfresco.cmis.CMISResultSetColumn;
/**
* @author andyh

View File

@@ -31,7 +31,11 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISQueryOptions;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.cmis.CMISResultSetMetaData;
import org.alfresco.cmis.CMISResultSetRow;
import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;

View File

@@ -1,78 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
/**
* The meta data associated with a result set
*
* @author andyh
*
*/
public interface CMISResultSetMetaData
{
/**
* The selector meta-data.
* @return - the selector meta-data.
*/
public CMISResultSetSelector[] getSelectors();
/**
* The column meta-data.
* @return - the column meta-data.
*/
public CMISResultSetColumn[] getColumns();
/**
* Get the query options used to create this result set
* @return the query options
*/
public CMISQueryOptions getQueryOptions();
/**
* Get the names of the selectors.
* @return - the selector names.
*/
public String[] getSelectorNames();
/**
* Get the column names.
* @return - the names of the columns.
*/
public String[] getColumnNames();
/**
* Get the selector meta-data by name.
* @param name
* @return - the selector meta-data.
*/
public CMISResultSetSelector getSelector(String name);
/**
* Get the column meta-data by column name.
* @param name
* @return - the column meta-data.
*/
public CMISResultSetColumn getColumn(String name);
}

View File

@@ -28,9 +28,13 @@ import java.util.LinkedHashMap;
import java.util.Map;
import org.alfresco.cmis.CMISDataTypeEnum;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISPropertyDefinition;
import org.alfresco.cmis.CMISQueryOptions;
import org.alfresco.cmis.CMISResultSetColumn;
import org.alfresco.cmis.CMISResultSetMetaData;
import org.alfresco.cmis.CMISResultSetSelector;
import org.alfresco.cmis.CMISTypeDefinition;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
import org.alfresco.repo.search.impl.querymodel.Query;

View File

@@ -1,98 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import java.io.Serializable;
import java.util.Map;
import org.alfresco.service.cmr.repository.NodeRef;
/**
* A row in a CMISResultSet
*
* @author andyh
*
*/
public interface CMISResultSetRow
{
/**
* Get all the column data.
* @return - a map of serializable column values with teh column name as the key
*/
public Map<String, Serializable> getValues();
/**
* Get the data for a single column
* @param columnName
* @return the value
*/
public Serializable getValue(String columnName);
/**
* Get the overall score.
*
* @return
*/
public float getScore();
/**
* Get the scores .
* @return a map of selector name to score.
*/
public Map<String, Float> getScores();
/**
* Get the score related to the named selector.
* @param selectorName
* @return - the score.
*/
public float getScore(String selectorName);
/**
* Gets the node refs
* @return a map of selector name to node ref
*/
public Map<String, NodeRef> getNodeRefs();
/**
* Gets the node ref related to the named selector
* @param selectorName
* @return the node ref
*/
public NodeRef getNodeRef(String selectorName);
/**
* Get the index of this result set in the result set
* If you want the overall position in paged reults you have to add the skipCount fo the result set.
* @return
*/
public int getIndex();
/**
* Get the result set for which this row is a member.
* @return - the result set.
*/
public CMISResultSet getResultSet();
}

View File

@@ -28,7 +28,9 @@ import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.cmis.CMISResultSetRow;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.service.cmr.repository.NodeRef;

View File

@@ -26,6 +26,9 @@ package org.alfresco.cmis.search;
import java.util.ListIterator;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.cmis.CMISResultSetRow;
/**
* @author andyh
*/

View File

@@ -1,49 +0,0 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.cmis.search;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
/**
* The meta-data for a result set selector.
*
* @author andyh
*
*/
public interface CMISResultSetSelector
{
/**
* The name of the selector
* @return - the selector name
*/
public String getName();
/**
* Get the type definition for the selector.
* @return - the CMIS type definition.
*/
public CMISTypeDefinition getTypeDefinition();
}

View File

@@ -24,7 +24,8 @@
*/
package org.alfresco.cmis.search;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.CMISResultSetSelector;
import org.alfresco.cmis.CMISTypeDefinition;
/**
* @author andyh

View File

@@ -28,8 +28,8 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
import org.alfresco.cmis.CMISDictionaryService;
import org.alfresco.cmis.CMISPropertyDefinition;
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.PredicateMode;

View File

@@ -34,10 +34,15 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.alfresco.cmis.dictionary.BaseCMISTest;
import org.alfresco.cmis.dictionary.CMISDictionaryModel;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.search.CMISQueryOptions.CMISQueryMode;
import org.alfresco.cmis.CMISDictionaryModel;
import org.alfresco.cmis.CMISQueryException;
import org.alfresco.cmis.CMISQueryOptions;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.cmis.CMISResultSetMetaData;
import org.alfresco.cmis.CMISResultSetRow;
import org.alfresco.cmis.CMISTypeDefinition;
import org.alfresco.cmis.CMISQueryOptions.CMISQueryMode;
import org.alfresco.cmis.mapping.BaseCMISTest;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.search.impl.parsers.CMISLexer;
import org.alfresco.repo.search.impl.parsers.CMISParser;