You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2006/02/27 09:58:20 UTC
svn commit: r381292 - in /incubator/jackrabbit/trunk/jackrabbit:
applications/test/repository/nodetypes/
src/main/java/org/apache/jackrabbit/core/query/lucene/
src/test/java/org/apache/jackrabbit/core/query/
Author: mreutegg
Date: Mon Feb 27 00:58:19 2006
New Revision: 381292
URL: http://svn.apache.org/viewcvs?rev=381292&view=rev
Log:
JCR-327: Mixins as supertypes do not appear to be queryable
- also search for mixins that extend the mixin of the element test
Added:
incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java (with props)
Modified:
incubator/jackrabbit/trunk/jackrabbit/applications/test/repository/nodetypes/custom_nodetypes.xml
incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
Modified: incubator/jackrabbit/trunk/jackrabbit/applications/test/repository/nodetypes/custom_nodetypes.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/applications/test/repository/nodetypes/custom_nodetypes.xml?rev=381292&r1=381291&r2=381292&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/applications/test/repository/nodetypes/custom_nodetypes.xml (original)
+++ incubator/jackrabbit/trunk/jackrabbit/applications/test/repository/nodetypes/custom_nodetypes.xml Mon Feb 27 00:58:19 2006
@@ -244,5 +244,17 @@
</childNodeDefinition>
</nodeType>
+
+ <!-- ======================================================== -->
+ <!-- Node type definitions only required for jackrabbit core -->
+ <!-- (internal) test cases. -->
+ <!-- ======================================================== -->
+
+ <!-- Defines a mixin node type that extends mix:referenceable -->
+ <nodeType isMixin="true" name="test:referenceable" hasOrderableChildNodes="false" primaryItemName="">
+ <supertypes>
+ <supertype>mix:referenceable</supertype>
+ </supertypes>
+ </nodeType>
</nodeTypes>
Modified: incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java?rev=381292&r1=381291&r2=381292&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java Mon Feb 27 00:58:19 2006
@@ -271,16 +271,20 @@
NodeTypeIterator allTypes = ntMgr.getAllNodeTypes();
while (allTypes.hasNext()) {
NodeType nt = allTypes.nextNodeType();
- // only interested in types that can be used to create nodes
- if (nt.isMixin()) {
- continue;
- }
NodeType[] superTypes = nt.getSupertypes();
if (Arrays.asList(superTypes).contains(base)) {
String ntName = nsMappings.translatePropertyName(nt.getName(),
session.getNamespaceResolver());
- Term t = new Term(FieldNames.PROPERTIES,
- FieldNames.createNamedValue(primaryTypeField, ntName));
+ Term t;
+ if (nt.isMixin()) {
+ // search on jcr:mixinTypes
+ t = new Term(FieldNames.PROPERTIES,
+ FieldNames.createNamedValue(mixinTypesField, ntName));
+ } else {
+ // search on jcr:primaryType
+ t = new Term(FieldNames.PROPERTIES,
+ FieldNames.createNamedValue(primaryTypeField, ntName));
+ }
terms.add(t);
}
}
Added: incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java?rev=381292&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java Mon Feb 27 00:58:19 2006
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core.query;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import java.io.ByteArrayInputStream;
+import java.util.Calendar;
+
+/**
+ * Tests if mixin types are queried correctly when using element test: element()
+ */
+public class MixinTest extends AbstractQueryTest {
+
+ public void testBuiltInMixin() throws RepositoryException {
+ // nt:resoure is referenceable by its node type definition
+ Node n1 = testRootNode.addNode("n1", "nt:resource");
+ n1.setProperty("jcr:data", new ByteArrayInputStream("hello world".getBytes()));
+ n1.setProperty("jcr:lastModified", Calendar.getInstance());
+ n1.setProperty("jcr:mimeType", "application/octet-stream");
+
+ // assign mix:referenceable to arbitrary node
+ Node n2 = testRootNode.addNode("n2");
+ n2.addMixin("mix:referenceable");
+
+ // make node referenceable using a mixin that extends from mix:referenceable
+ Node n3 = testRootNode.addNode("n3");
+ n3.addMixin("test:referenceable");
+
+ testRootNode.save();
+
+ String query = testPath + "//element(*, mix:referenceable)";
+ executeXPathQuery(query, new Node[]{n1, n2, n3});
+ }
+
+}
Propchange: incubator/jackrabbit/trunk/jackrabbit/src/test/java/org/apache/jackrabbit/core/query/MixinTest.java
------------------------------------------------------------------------------
svn:eol-style = native