You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2013/02/01 15:59:36 UTC
svn commit: r1441474 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/
oak-core/src/test/java/org/apache/jackrabbit/oak/api/
oak-core/src/test/java/org/apache/jackrabbit/oak/query/ oak-jcr/
Author: alexparvulescu
Date: Fri Feb 1 14:59:35 2013
New Revision: 1441474
URL: http://svn.apache.org/viewvc?rev=1441474&view=rev
Log:
OAK-476 QueryEngine ignores unknown node types
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/api/QueryTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java?rev=1441474&r1=1441473&r2=1441474&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java Fri Feb 1 14:59:35 2013
@@ -138,7 +138,7 @@ public class SelectorImpl extends Source
private Filter createFilter(boolean preparing) {
FilterImpl f = new FilterImpl(this, query.getStatement());
f.setPreparing(preparing);
- validateNodeType(nodeTypeName);
+ validateNodeType();
f.setNodeType(nodeTypeName);
if (joinCondition != null) {
joinCondition.restrict(f);
@@ -160,11 +160,20 @@ public class SelectorImpl extends Source
return f;
}
- private void validateNodeType(String nodeType) {
+ private void validateNodeType() {
// this looks a bit weird, but it should be correct - the code
// assumes that paths and node type names have the same format
// restrictions (characters such as "[" are not allowed and so on)
- query.validatePath(nodeType);
+ query.validatePath(nodeTypeName);
+
+ try {
+ // force init of node types, which will also check for the node
+ // type's existence
+ getNodeTypes();
+ } catch (RepositoryException e) {
+ throw new IllegalArgumentException("Unable to determine node type "
+ + nodeTypeName, e);
+ }
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/api/QueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/api/QueryTest.java?rev=1441474&r1=1441473&r2=1441474&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/api/QueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/api/QueryTest.java Fri Feb 1 14:59:35 2013
@@ -27,6 +27,7 @@ import javax.jcr.query.Query;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -42,7 +43,7 @@ public class QueryTest {
@Before
public void setUp() {
- repository = new Oak().createContentRepository();
+ repository = new Oak().with(new InitialContent()).createContentRepository();
}
@After
@@ -54,7 +55,7 @@ public class QueryTest {
public void queryOnStableRevision() throws Exception {
ContentSession s = repository.login(null, null);
Root r = s.getLatestRoot();
- Tree t = r.getTree("/");
+ Tree t = r.getTree("/").addChild("test");
t.addChild("node1").setProperty("jcr:primaryType", "nt:base");
t.addChild("node2").setProperty("jcr:primaryType", "nt:base");
t.addChild("node3").setProperty("jcr:primaryType", "nt:base");
@@ -63,11 +64,11 @@ public class QueryTest {
ContentSession s2 = repository.login(null, null);
Root r2 = s2.getLatestRoot();
- r.getTree("/").getChild("node2").remove();
+ r.getTree("/test").getChild("node2").remove();
r.commit();
Result result = r2.getQueryEngine().executeQuery(
- "//element(*, nt:base)",
+ "test//element(*, nt:base)",
Query.XPATH, Long.MAX_VALUE, 0,
Collections.<String, PropertyValue>emptyMap(),
NamePathMapper.DEFAULT);
@@ -75,7 +76,7 @@ public class QueryTest {
for (ResultRow rr : result.getRows()) {
paths.add(rr.getPath());
}
- assertEquals(new HashSet<String>(Arrays.asList("/", "/node1", "/node2", "/node3")), paths);
+ assertEquals(new HashSet<String>(Arrays.asList("/test/node1", "/test/node2", "/test/node3")), paths);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java?rev=1441474&r1=1441473&r2=1441474&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java Fri Feb 1 14:59:35 2013
@@ -167,7 +167,6 @@ public abstract class AbstractQueryTest
String got;
try {
got = c.convert(line);
- executeQuery(got, QueryEngineImpl.SQL2, null);
} catch (ParseException e) {
got = "invalid: " + e.getMessage().replace('\n', ' ');
} catch (Exception e) {
@@ -296,4 +295,4 @@ public abstract class AbstractQueryTest
.getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1441474&r1=1441473&r2=1441474&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Fri Feb 1 14:59:35 2013
@@ -202,7 +202,6 @@
org.apache.jackrabbit.test.api.query.SimpleSelectionTest#testSingleProperty <!-- OAK-323 -->
org.apache.jackrabbit.test.api.query.qom.ColumnTest#testExpandColumnsForNodeType <!-- OAK-323 -->
org.apache.jackrabbit.test.api.query.GetPropertyNamesTest#testGetPropertyNames <!-- OAK-323 -->
- org.apache.jackrabbit.test.api.query.qom.SelectorTest#testUnknownNodeType <!-- OAK-476 -->
org.apache.jackrabbit.test.api.query.qom.EquiJoinConditionTest#testRightOuterJoin1 <!-- bug in test case, see OAK-559 -->
org.apache.jackrabbit.test.api.query.qom.EquiJoinConditionTest#testLeftOuterJoin2 <!-- bug in test case, see OAK-559 -->
org.apache.jackrabbit.test.api.observation.EventTest#testGetUserId