You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2012/02/28 08:30:10 UTC

svn commit: r1294498 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/query/ test/java/org/apache/chemistry/opencmis/inmemory/query/

Author: jens
Date: Tue Feb 28 07:30:10 2012
New Revision: 1294498

URL: http://svn.apache.org/viewvc?rev=1294498&view=rev
Log:
Fix NPE in order by on a system property for query [CMIS-510]

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java?rev=1294498&r1=1294497&r2=1294498&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java Tue Feb 28 07:30:10 2012
@@ -183,8 +183,11 @@ public class InMemoryQueryProcessor {
 
                 if (sel instanceof ColumnReference) {
                     String propId = ((ColumnReference) sel).getPropertyId();
-                    Object propVal1 = so1.getProperties().get(propId).getFirstValue();
-                    Object propVal2 = so2.getProperties().get(propId).getFirstValue();
+                    PropertyDefinition<?> pd = ((ColumnReference) sel).getPropertyDefinition();
+                    
+                    Object propVal1 = PropertyUtil.getProperty(so1, propId, pd);
+                    Object propVal2 = PropertyUtil.getProperty(so2, propId, pd);
+
                     if (propVal1 == null && propVal2 == null) {
                         result = 0;
                     } else if (propVal1 == null) {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java?rev=1294498&r1=1294497&r2=1294498&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java Tue Feb 28 07:30:10 2012
@@ -473,7 +473,19 @@ public class EvalQueryTest extends Abstr
         assertTrue(resultContainsAtPos("alpha", 2, res) || resultContainsAtPos("alpha", 1, res) || resultContainsAtPos("alpha", 0, res));
         assertTrue(resultContainsAtPos("gamma", 2, res) || resultContainsAtPos("gamma", 1, res) || resultContainsAtPos("gamma", 0, res));
         assertTrue(resultContainsAtPos("delta", 2, res) || resultContainsAtPos("delta", 1, res) || resultContainsAtPos("delta", 0, res));
-}
+    }
+    
+    // reported JIRA issue CMIS-510
+    @Test
+    public void testOrderBySystemProperties() {
+        String statement = "SELECT * from cmis:document ORDER BY "+ PropertyIds.NAME;
+        ObjectList res = doQuery(statement);
+        assertEquals(5, res.getObjects().size());
+        statement = "SELECT * from cmis:document ORDER BY " + PropertyIds.CREATION_DATE + " ASC";
+        assertEquals(5, res.getObjects().size());
+        statement = "SELECT * from cmis:document ORDER BY " + PropertyIds.LAST_MODIFICATION_DATE + " DESC";
+        assertEquals(5, res.getObjects().size());
+    }
 
     @Test
     public void testIsNull() {