Ok.
Added the following:
for (QueryResult queryResult : query) {
System.out.println("- " +
queryResult.getPropertyValueById("cmis:objectId"));
}
System.out.println("Total results: " + query.getTotalNumItems());
Results:
0.2.0:
------
- workspace://SpacesStore/586dbf3c-dc8d-4b5a-a331-7f04c5b9d7ad
Total results: 1
0.3.0:
------
Total results: 0
And the links to the Wireshark packets:
http://dl.dropbox.com/u/623463/alf/OpenCMIS-0.2.0-debug.txt
http://dl.dropbox.com/u/623463/alf/OpenCMIS-0.3.0-debug.txt
The POST url looks identical... very strange.
Kind regards,
Geert
----- Original Message -----
From: "Florian Müller" <[email protected]>
To: [email protected], "Geert Vanheusden" <[email protected]>
Sent: Wednesday, April 20, 2011 2:05:37 PM
Subject: Re: Different result with same query but other OpenCMIS version
Could you please iterate through all results - even though getTotalNumItems()
returns 0 - and count the results?
Would it be possible to capture the network traffic?
Florian
On 20/04/2011 12:30, Geert Vanheusden wrote:
> Ok, I extracted some code in a separate application.
>
> -------------------------------------
>
> package be.idewe.park;
>
> import java.util.HashMap;
> import java.util.Map;
>
> import org.apache.chemistry.opencmis.client.api.ItemIterable;
> import org.apache.chemistry.opencmis.client.api.QueryResult;
> import org.apache.chemistry.opencmis.client.api.Session;
> import org.apache.chemistry.opencmis.client.api.SessionFactory;
> import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
> import org.apache.chemistry.opencmis.commons.SessionParameter;
> import org.apache.chemistry.opencmis.commons.enums.BindingType;
>
> public class TestQuery {
>
> /**
> * @param args
> */
> public static void main(String[] args) {
> TestQuery testQuery = new TestQuery();
>
> Session session = testQuery.getSession();
> ItemIterable<QueryResult> query = session.query("SELECT
> DOCUMENT.*, EMPLOYEEDOCUMENT.* FROM park:document AS DOCUMENT JOIN
> park:employeeDocument AS EMPLOYEEDOCUMENT ON DOCUMENT.cmis:objectId =
> EMPLOYEEDOCUMENT.cmis:objectId WHERE
> (EMPLOYEEDOCUMENT.employeeDoc:currentEmployeeName LIKE '%VANHEUSDEN%')",
> false);
>
> System.out.println(query.getTotalNumItems());
>
> }
>
> public Session getSession() {
> // default factory implementation of client runtime
> SessionFactory f = SessionFactoryImpl.newInstance();
> Map<String, String> parameter = new HashMap<String, String>();
>
> // user credentials
> parameter.put(SessionParameter.USER, "admin");
> parameter.put(SessionParameter.PASSWORD, "admin");
>
> // connection settings
> parameter.put(SessionParameter.ATOMPUB_URL,
> "http://localhost:7070/alfresco/s/cmis");
> parameter.put(SessionParameter.BINDING_TYPE,
> BindingType.ATOMPUB.value());
>
> // session locale
> parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY, "be");
> parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "nl");
> parameter.put(SessionParameter.LOCALE_VARIANT, "");
>
> parameter.put(SessionParameter.OBJECT_FACTORY_CLASS,
> "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");
>
> return f.getRepositories(parameter).get(0).createSession();
> }
>
> }
> ----------------------------
>
> And here a POM snippet:
>
> <dependencies>
> <!-- OpenCMIS -->
> <dependency>
> <groupId>org.apache.chemistry.opencmis</groupId>
> <artifactId>chemistry-opencmis-client-impl</artifactId>
> <version>0.3.0</version>
> </dependency>
> <dependency>
> <groupId>org.alfresco.cmis.client</groupId>
> <artifactId>alfresco-opencmis-extension</artifactId>
> <version>0.2</version>
> </dependency>
> </dependencies>
>
> ---------------------------
>
> So when I execute this code I get "0" (incorrect). If I replace the
> dependency with "0.2.0-incubating" it returns "1".
>
> Kind regards,
>
> Geert
>
>
> ----- Original Message -----
> From: "Florian Müller"<[email protected]>
> To: [email protected]
> Sent: Wednesday, April 20, 2011 12:44:01 PM
> Subject: Re: Different result with same query but other OpenCMIS version
>
> No, Alfresco uses a different parser.
> If the CMIS query didn't change and the repository implementation didn't
> change, only the interpretation of the results can be different on the client
> side. But we haven't touched that code for quite a while.
>
> Florian
>
>
> On 20/04/2011 11:37, Jens Hübel wrote:
>> Does the Alfresco implementation use the opencmis query parser? Even that
>> should not have been changed with the exception of a few minor patches. Is
>> there a chance to find out what native queries are generated from the CMIS
>> one?
>>
>> Jens
>>
>>
>> -----Original Message-----
>> From: Geert Vanheusden [mailto:[email protected]]
>> Sent: Mittwoch, 20. April 2011 11:41
>> To: dev
>> Subject: Different result with same query but other OpenCMIS version
>>
>> Dear,
>>
>> I just upgraded to OpenCMIS 0.3.0 (coming from 0.2.0-incubating) and I
>> noticed that the same query I used before returns an incorrect result.
>>
>> I have a custom document type (park:document) and a park:employeeDocument
>> aspect.
>>
>> When I execute the following query using OpenCMIS 0.2.0-incubating I have
>> one document as a result (correct). If I execute the same query using
>> OpenCMIS 0.3.0 then there are no documents returned.
>>
>> cmisSession.query("
>> SELECT DOCUMENT.*, EMPLOYEEDOCUMENT.*
>> FROM park:document AS DOCUMENT
>> JOIN park:employeeDocument AS EMPLOYEEDOCUMENT
>> ON DOCUMENT.cmis:objectId = EMPLOYEEDOCUMENT.cmis:objectId
>> WHERE (EMPLOYEEDOCUMENT.employeeDoc:currentEmployeeName LIKE '%VANHEUSDEN%')
>> ", false)
>>
>> I am using the alfresco-opencmis-extension 0.2 and querying against an
>> Alfreso enterprise 3.4.
>> If I execute the same query in the latest version of the OpenCMIS workbench
>> I have also one document as a result (correct).
>>
>> Any ideas? Maybe a bug in OpenCMIS 0.3.0?
>>
>> Kind regards,
>>
>> Geert Vanheusden
>>
>>
>> _________________________________________________
>>
>> We published a new company movie featuring YOU!
>> See http://www.aca-it.be/movie
>> _________________________________________________
>