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 2012/09/24 11:24:40 UTC
svn commit: r1389256 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/lucene/
main/java/org/apache/jackrabbit/oak/spi/query/
test/java/org/apache/jackrabbit/oak/plugins/lucene/
Author: alexparvulescu
Date: Mon Sep 24 09:24:40 2012
New Revision: 1389256
URL: http://svn.apache.org/viewvc?rev=1389256&view=rev
Log:
OAK-334 Add read-only lucene directory
Added:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadOnlyOakDirectory.java
- copied, changed from r1388383, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/OakDirectory.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java (with props)
Removed:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/OakDirectory.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndex.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndexProvider.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/IndexUtils.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/AbstractLuceneQueryTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditorTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditor.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditor.java Mon Sep 24 09:24:40 2012
@@ -31,6 +31,7 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.query.IndexDefinition;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
@@ -40,6 +41,7 @@ import org.apache.lucene.analysis.standa
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
@@ -78,9 +80,15 @@ class LuceneEditor implements CommitHook
@Override
public NodeState processCommit(NodeStore store, NodeState before,
NodeState after) throws CommitFailedException {
- try {
- OakDirectory directory = new OakDirectory(store, after, path);
+ NodeBuilder rootBuilder = store.getBuilder(after);
+ NodeBuilder builder = rootBuilder;
+ for (String name : path) {
+ builder = builder.getChildBuilder(name);
+ }
+ Directory directory = new ReadWriteOakDirectory(builder,
+ store.getValueFactory());
+ try {
IndexWriter writer = new IndexWriter(directory, config);
try {
LuceneDiff diff = new LuceneDiff(writer, "");
@@ -90,8 +98,7 @@ class LuceneEditor implements CommitHook
} finally {
writer.close();
}
-
- return directory.getRoot();
+ return rootBuilder.getNodeState();
} catch (IOException e) {
e.printStackTrace();
throw new CommitFailedException(
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndex.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndex.java Mon Sep 24 09:24:40 2012
@@ -31,12 +31,13 @@ import java.util.List;
import org.apache.jackrabbit.oak.query.index.IndexRowImpl;
import org.apache.jackrabbit.oak.spi.query.Cursor;
import org.apache.jackrabbit.oak.spi.query.Filter;
+import org.apache.jackrabbit.oak.spi.query.Filter.PropertyRestriction;
import org.apache.jackrabbit.oak.spi.query.IndexDefinition;
import org.apache.jackrabbit.oak.spi.query.IndexRow;
import org.apache.jackrabbit.oak.spi.query.QueryIndex;
-import org.apache.jackrabbit.oak.spi.query.Filter.PropertyRestriction;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
@@ -50,20 +51,22 @@ import org.apache.lucene.search.TermQuer
import org.apache.lucene.search.TermRangeQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This index uses internally runs a query against a Lucene index.
*/
public class LuceneIndex implements QueryIndex, LuceneIndexConstants {
- private final NodeStore store;
+ private static final Logger LOG = LoggerFactory
+ .getLogger(LuceneIndex.class);
private final IndexDefinition index;
private final String[] indexDataPath;
- public LuceneIndex(NodeStore store, IndexDefinition indexDefinition) {
- this.store = store;
+ public LuceneIndex(IndexDefinition indexDefinition) {
this.index = indexDefinition;
this.indexDataPath = split(indexDefinition.getPath(),
INDEX_DATA_CHILD_NAME);
@@ -86,8 +89,15 @@ public class LuceneIndex implements Quer
@Override
public Cursor query(Filter filter, String revisionId, NodeState root) {
+
+ NodeBuilder builder = new ReadOnlyBuilder(root);
+ for (String name : indexDataPath) {
+ builder = builder.getChildBuilder(name);
+ }
+ Directory directory = new ReadOnlyOakDirectory(builder);
+ long s = System.currentTimeMillis();
+
try {
- Directory directory = new OakDirectory(store, root, indexDataPath);
try {
IndexReader reader = DirectoryReader.open(directory);
try {
@@ -108,7 +118,8 @@ public class LuceneIndex implements Quer
}
}
}
-
+ LOG.debug("query via {} took {} ms.", this,
+ System.currentTimeMillis() - s);
return new PathCursor(paths);
} finally {
reader.close();
@@ -216,4 +227,9 @@ public class LuceneIndex implements Quer
}
+ @Override
+ public String toString() {
+ return "LuceneIndex [index=" + index + "]";
+ }
+
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndexProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndexProvider.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndexProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneIndexProvider.java Mon Sep 24 09:24:40 2012
@@ -25,7 +25,6 @@ import org.apache.jackrabbit.oak.spi.que
import org.apache.jackrabbit.oak.spi.query.IndexUtils;
import org.apache.jackrabbit.oak.spi.query.QueryIndex;
import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,14 +50,11 @@ public class LuceneIndexProvider impleme
LOG.warn("index path is not valid {}", indexPath);
return Collections.<QueryIndex> emptyList();
}
- NodeBuilder builder = IndexUtils.getChildBuilder(store, indexPath);
List<QueryIndex> tempIndexes = new ArrayList<QueryIndex>();
for (IndexDefinition child : IndexUtils.buildIndexDefinitions(
store.getRoot(), indexPath, TYPE)) {
- // add :data node
- builder.getChildBuilder(child.getName()).getChildBuilder(
- INDEX_DATA_CHILD_NAME);
- tempIndexes.add(new LuceneIndex(store, child));
+ LOG.debug("found a lucene index definition {}", child);
+ tempIndexes.add(new LuceneIndex(child));
}
return tempIndexes;
}
Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadOnlyOakDirectory.java (from r1388383, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/OakDirectory.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadOnlyOakDirectory.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadOnlyOakDirectory.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/OakDirectory.java&r1=1388383&r2=1389256&rev=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/OakDirectory.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadOnlyOakDirectory.java Mon Sep 24 09:24:40 2012
@@ -16,19 +16,15 @@
*/
package org.apache.jackrabbit.oak.plugins.lucene;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
-import javax.annotation.Nonnull;
+import javax.jcr.UnsupportedRepositoryOperationException;
import org.apache.jackrabbit.oak.api.CoreValue;
-import org.apache.jackrabbit.oak.api.CoreValueFactory;
import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
@@ -38,32 +34,17 @@ import org.apache.lucene.store.NoLockFac
import com.google.common.collect.Iterables;
/**
- * An implementation of the Lucene directory (a flat list of files) that allows
- * to store Lucene index content in an Oak repository.
+ * A read-only implementation of the Lucene {@link Directory} (a flat list of
+ * files) that only allows reading of the Lucene index content stored in an Oak
+ * repository.
*/
-class OakDirectory extends Directory {
+class ReadOnlyOakDirectory extends Directory {
- private final CoreValueFactory factory;
+ protected final NodeBuilder directoryBuilder;
- private final NodeBuilder rootBuilder;
-
- private final NodeBuilder directoryBuilder;
-
- public OakDirectory(NodeStore store, NodeState root, String... path) {
+ public ReadOnlyOakDirectory(NodeBuilder directoryBuilder) {
this.lockFactory = NoLockFactory.getNoLockFactory();
- this.factory = store.getValueFactory();
- this.rootBuilder = store.getBuilder(root);
-
- NodeBuilder builder = rootBuilder;
- for (String name : path) {
- builder = builder.getChildBuilder(name);
- }
- this.directoryBuilder = builder;
- }
-
- @Nonnull
- NodeState getRoot() {
- return rootBuilder.getNodeState();
+ this.directoryBuilder = directoryBuilder;
}
@Override
@@ -96,12 +77,11 @@ class OakDirectory extends Directory {
return property.getValue().length();
}
-
@Override
public IndexOutput createOutput(String name, IOContext context)
throws IOException {
- return new OakIndexOutput(name);
+ throw new IOException(new UnsupportedRepositoryOperationException());
}
@Override
@@ -120,7 +100,7 @@ class OakDirectory extends Directory {
// do nothing
}
- private byte[] readFile(String name) throws IOException {
+ protected byte[] readFile(String name) throws IOException {
if (!fileExists(name)) {
return new byte[0];
}
@@ -152,86 +132,6 @@ class OakDirectory extends Directory {
}
}
- private final class OakIndexOutput extends IndexOutput {
-
- private final String name;
-
- private byte[] buffer;
-
- private int size;
-
- private int position;
-
- public OakIndexOutput(String name) throws IOException {
- this.name = name;
- this.buffer = readFile(name);
- this.size = buffer.length;
- this.position = 0;
- }
-
- @Override
- public long length() {
- return size;
- }
-
- @Override
- public long getFilePointer() {
- return position;
- }
-
- @Override
- public void seek(long pos) throws IOException {
- if (pos < 0 || pos > Integer.MAX_VALUE) {
- throw new IOException("Invalid file position: " + pos);
- }
- this.position = (int) pos;
- }
-
- @Override
- public void writeBytes(byte[] b, int offset, int length) {
- while (position + length > buffer.length) {
- byte[] tmp = new byte[Math.max(4096, buffer.length * 2)];
- System.arraycopy(buffer, 0, tmp, 0, size);
- buffer = tmp;
- }
-
- System.arraycopy(b, offset, buffer, position, length);
-
- position += length;
- if (position > size) {
- size = position;
- }
- }
-
- @Override
- public void writeByte(byte b) {
- writeBytes(new byte[] { b }, 0, 1);
- }
-
- @Override
- public void flush() throws IOException {
- byte[] data = buffer;
- if (data.length > size) {
- data = new byte[size];
- System.arraycopy(buffer, 0, data, 0, size);
- }
-
- NodeBuilder fileBuilder =
- directoryBuilder.getChildBuilder(name);
- fileBuilder.setProperty(
- "jcr:lastModified",
- factory.createValue(System.currentTimeMillis()));
- fileBuilder.setProperty(
- "jcr:data",
- factory.createValue(new ByteArrayInputStream(data)));
- }
-
- @Override
- public void close() throws IOException {
- flush();
- }
- }
-
private final class OakIndexInput extends IndexInput {
private final byte[] data;
Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java?rev=1389256&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java Mon Sep 24 09:24:40 2012
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.oak.plugins.lucene;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import org.apache.jackrabbit.oak.api.CoreValueFactory;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexOutput;
+
+/**
+ * A red-write implementation of the Lucene {@link Directory} (a flat list of
+ * files) that allows to store Lucene index content in an Oak repository.
+ */
+public class ReadWriteOakDirectory extends ReadOnlyOakDirectory {
+
+ private final CoreValueFactory factory;
+
+ public ReadWriteOakDirectory(NodeBuilder directoryBuilder,
+ CoreValueFactory vf) {
+ super(directoryBuilder);
+ this.factory = vf;
+ }
+
+ @Override
+ public IndexOutput createOutput(String name, IOContext context)
+ throws IOException {
+ return new OakIndexOutput(name);
+ }
+
+ private final class OakIndexOutput extends IndexOutput {
+
+ private final String name;
+
+ private byte[] buffer;
+
+ private int size;
+
+ private int position;
+
+ public OakIndexOutput(String name) throws IOException {
+ this.name = name;
+ this.buffer = readFile(name);
+ this.size = buffer.length;
+ this.position = 0;
+ }
+
+ @Override
+ public long length() {
+ return size;
+ }
+
+ @Override
+ public long getFilePointer() {
+ return position;
+ }
+
+ @Override
+ public void seek(long pos) throws IOException {
+ if (pos < 0 || pos > Integer.MAX_VALUE) {
+ throw new IOException("Invalid file position: " + pos);
+ }
+ this.position = (int) pos;
+ }
+
+ @Override
+ public void writeBytes(byte[] b, int offset, int length) {
+ while (position + length > buffer.length) {
+ byte[] tmp = new byte[Math.max(4096, buffer.length * 2)];
+ System.arraycopy(buffer, 0, tmp, 0, size);
+ buffer = tmp;
+ }
+
+ System.arraycopy(b, offset, buffer, position, length);
+
+ position += length;
+ if (position > size) {
+ size = position;
+ }
+ }
+
+ @Override
+ public void writeByte(byte b) {
+ writeBytes(new byte[] { b }, 0, 1);
+ }
+
+ @Override
+ public void flush() throws IOException {
+ byte[] data = buffer;
+ if (data.length > size) {
+ data = new byte[size];
+ System.arraycopy(buffer, 0, data, 0, size);
+ }
+
+ NodeBuilder fileBuilder = directoryBuilder.getChildBuilder(name);
+ fileBuilder.setProperty("jcr:lastModified",
+ factory.createValue(System.currentTimeMillis()));
+ fileBuilder.setProperty("jcr:data",
+ factory.createValue(new ByteArrayInputStream(data)));
+ }
+
+ @Override
+ public void close() throws IOException {
+ flush();
+ }
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/lucene/ReadWriteOakDirectory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/IndexUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/IndexUtils.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/IndexUtils.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/IndexUtils.java Mon Sep 24 09:24:40 2012
@@ -120,7 +120,7 @@ public class IndexUtils {
List<IndexDefinition> defs = new ArrayList<IndexDefinition>();
for (ChildNodeEntry c : definitions.getChildNodeEntries()) {
- IndexDefinition def = IndexUtils.getDefinition(indexConfigPath, c);
+ IndexDefinition def = getDefinition(indexConfigPath, c);
if (def == null
|| (typeFilter != null && !typeFilter.equals(def.getType()))) {
continue;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/AbstractLuceneQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/AbstractLuceneQueryTest.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/AbstractLuceneQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/AbstractLuceneQueryTest.java Mon Sep 24 09:24:40 2012
@@ -19,10 +19,7 @@ package org.apache.jackrabbit.oak.plugin
import static org.apache.jackrabbit.oak.spi.query.IndexUtils.DEFAULT_INDEX_HOME;
import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.AbstractOakTest;
import org.apache.jackrabbit.oak.api.ContentRepository;
@@ -31,17 +28,10 @@ import org.apache.jackrabbit.oak.api.Cor
import org.apache.jackrabbit.oak.api.Result;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.SessionQueryEngine;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.core.ContentRepositoryImpl;
-import org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.name.NamespaceValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.type.DefaultTypeEditor;
-import org.apache.jackrabbit.oak.plugins.type.TypeValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.value.ConflictValidatorProvider;
-import org.apache.jackrabbit.oak.spi.commit.CommitHook;
-import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
-import org.apache.jackrabbit.oak.spi.commit.CompositeValidatorProvider;
-import org.apache.jackrabbit.oak.spi.commit.ValidatingHook;
-import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
+import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
import org.junit.Before;
@@ -54,7 +44,6 @@ public abstract class AbstractLuceneQuer
protected static final String SQL2 = "JCR-SQL2";
- protected MicroKernel mk;
protected ContentSession session;
protected CoreValueFactory vf;
protected SessionQueryEngine qe;
@@ -68,34 +57,33 @@ public abstract class AbstractLuceneQuer
root = session.getLatestRoot();
vf = session.getCoreValueFactory();
qe = session.getQueryEngine();
+ createIndexNode();
}
@Override
protected ContentRepository createRepository() {
- mk = new MicroKernelImpl();
QueryIndexProvider indexer = new LuceneIndexProvider(DEFAULT_INDEX_HOME);
QueryIndexProvider qip = new CompositeQueryIndexProvider(indexer);
- return new ContentRepositoryImpl(mk, qip, buildDefaultCommitHook());
+ return new ContentRepositoryImpl(new MicroKernelImpl(), qip,
+ new LuceneHook(DEFAULT_INDEX_HOME));
}
- private CommitHook buildDefaultCommitHook() {
- List<CommitHook> hooks = new ArrayList<CommitHook>();
- hooks.add(new DefaultTypeEditor());
- hooks.add(new ValidatingHook(createDefaultValidatorProvider()));
- hooks.add(new LuceneHook(DEFAULT_INDEX_HOME));
- return new CompositeHook(hooks);
- }
-
- private static ValidatorProvider createDefaultValidatorProvider() {
- List<ValidatorProvider> providers = new ArrayList<ValidatorProvider>();
- providers.add(new NameValidatorProvider());
- providers.add(new NamespaceValidatorProvider());
- providers.add(new TypeValidatorProvider());
- providers.add(new ConflictValidatorProvider());
- return new CompositeValidatorProvider(providers);
+ private void createIndexNode() throws Exception {
+ Tree index = root.getTree("/");
+ for (String p : PathUtils.elements(DEFAULT_INDEX_HOME)) {
+ if (index.hasChild(p)) {
+ index = index.getChild(p);
+ } else {
+ index = index.addChild(p);
+ }
+ }
+ index.addChild("test-lucene").setProperty("type",
+ vf.createValue("lucene"));
+ root.commit(DefaultConflictHandler.OURS);
}
protected Result executeQuery(String statement) throws ParseException {
- return qe.executeQuery(statement, SQL2, Long.MAX_VALUE, 0, null, session.getLatestRoot(), null);
+ return qe.executeQuery(statement, SQL2, Long.MAX_VALUE, 0, null,
+ session.getLatestRoot(), null);
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditorTest.java?rev=1389256&r1=1389255&r2=1389256&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/lucene/LuceneEditorTest.java Mon Sep 24 09:24:40 2012
@@ -54,7 +54,7 @@ public class LuceneEditorTest implements
tree.setProperty("foo", MemoryValueFactory.INSTANCE.createValue("bar"));
root.commit(DefaultConflictHandler.OURS);
- QueryIndex index = new LuceneIndex(store, testID);
+ QueryIndex index = new LuceneIndex(testID);
FilterImpl filter = new FilterImpl(null);
filter.restrictPath("/", Filter.PathRestriction.EXACT);
filter.restrictProperty("foo", Operator.EQUAL,