You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/04/22 17:03:34 UTC
svn commit: r650539 - in
/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
./ query/ query/lucene/
Author: jukka
Date: Tue Apr 22 08:03:24 2008
New Revision: 650539
URL: http://svn.apache.org/viewvc?rev=650539&view=rev
Log:
1.4: Merged revisions 648691 and 648707 (JCR-1492)
Added:
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java
- copied, changed from r648691, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java
Modified:
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryHandler.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandlerContext.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=650539&r1=650538&r2=650539&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Tue Apr 22 08:03:24 2008
@@ -624,7 +624,7 @@
SystemSession defSysSession = getSystemSession(wspName);
systemSearchMgr = new SearchManager(repConfig.getSearchConfig(),
nsReg, ntReg, defSysSession.getItemStateManager(),
- SYSTEM_ROOT_NODE_ID, null, null);
+ vMgr.getPersistenceManager(), SYSTEM_ROOT_NODE_ID, null, null);
ObservationManager obsMgr = defSysSession.getWorkspace().getObservationManager();
obsMgr.addEventListener(systemSearchMgr, Event.NODE_ADDED
| Event.NODE_REMOVED | Event.PROPERTY_ADDED
@@ -1614,6 +1614,7 @@
nsReg,
ntReg,
itemStateMgr,
+ persistMgr,
rootNodeId,
getSystemSearchManager(getName()),
SYSTEM_ROOT_NODE_ID);
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java?rev=650539&r1=650538&r2=650539&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java Tue Apr 22 08:03:24 2008
@@ -35,6 +35,7 @@
import org.apache.jackrabbit.core.state.ItemStateManager;
import org.apache.jackrabbit.core.state.NodeState;
import org.apache.jackrabbit.core.state.NodeStateIterator;
+import org.apache.jackrabbit.core.persistence.PersistenceManager;
import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
import org.apache.jackrabbit.spi.Path;
import org.slf4j.Logger;
@@ -128,6 +129,11 @@
private final ItemStateManager itemMgr;
/**
+ * The underlying persistence manager.
+ */
+ private final PersistenceManager pm;
+
+ /**
* Storage for search index
*/
private final FileSystem fs;
@@ -180,22 +186,24 @@
/**
* Creates a new <code>SearchManager</code>.
*
- * @param config the search configuration.
- * @param nsReg the namespace registry.
- * @param ntReg the node type registry.
- * @param itemMgr the shared item state manager.
+ * @param config the search configuration.
+ * @param nsReg the namespace registry.
+ * @param ntReg the node type registry.
+ * @param itemMgr the shared item state manager.
+ * @param pm the underlying persistence manager.
* @param rootNodeId the id of the root node.
- * @param parentMgr the parent search manager or <code>null</code> if
- * there is no parent search manager.
+ * @param parentMgr the parent search manager or <code>null</code> if
+ * there is no parent search manager.
* @param excludedNodeId id of the node that should be excluded from
- * indexing. Any descendant of that node will also
- * be excluded from indexing.
+ * indexing. Any descendant of that node will also be
+ * excluded from indexing.
* @throws RepositoryException if the search manager cannot be initialized
*/
public SearchManager(SearchConfig config,
final NamespaceRegistryImpl nsReg,
NodeTypeRegistry ntReg,
ItemStateManager itemMgr,
+ PersistenceManager pm,
NodeId rootNodeId,
SearchManager parentMgr,
NodeId excludedNodeId) throws RepositoryException {
@@ -208,6 +216,7 @@
this.ntReg = ntReg;
this.nsReg = nsReg;
this.itemMgr = itemMgr;
+ this.pm = pm;
this.rootNodeId = rootNodeId;
this.parentHandler = (parentMgr != null) ? parentMgr.handler : null;
this.excludedNodeId = excludedNodeId;
@@ -568,7 +577,7 @@
try {
handler = (QueryHandler) config.newInstance();
QueryHandlerContext context
- = new QueryHandlerContext(fs, itemMgr, rootNodeId,
+ = new QueryHandlerContext(fs, itemMgr, pm, rootNodeId,
ntReg, nsReg, parentHandler, excludedNodeId);
handler.init(context);
} catch (Exception e) {
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryHandler.java?rev=650539&r1=650538&r2=650539&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryHandler.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryHandler.java Tue Apr 22 08:03:24 2008
@@ -38,6 +38,11 @@
private QueryHandlerContext context;
/**
+ * The {@link OnWorkspaceInconsistency} handler. Defaults to 'fail'.
+ */
+ private OnWorkspaceInconsistency owi = OnWorkspaceInconsistency.FAIL;
+
+ /**
* Initializes this query handler by setting all properties in this class
* with appropriate parameter values.
*
@@ -65,7 +70,7 @@
}
/**
- * This default implementation calls the individual {@link #deleteNode(NodeId)}
+ * This default implementation calls the individual {@link #deleteNode(org.apache.jackrabbit.core.NodeId)}
* and {@link #addNode(org.apache.jackrabbit.core.state.NodeState)} methods
* for each entry in the iterators. First the nodes to remove are processed
* then the nodes to add.
@@ -97,4 +102,34 @@
throw new UnsupportedOperationException(
"This query handler does not support prepared queries");
}
+
+ /**
+ * @return the {@link OnWorkspaceInconsistency} handler.
+ */
+ public OnWorkspaceInconsistency getOnWorkspaceInconsistencyHandler() {
+ return owi;
+ }
+
+ //--------------------------< properties >----------------------------------
+
+ /**
+ * Sets the {@link OnWorkspaceInconsistency} handler with the given name.
+ * Currently the only valid name is:
+ * <ul>
+ * <li><code>fail</code></li>
+ * </ul>
+ *
+ * @param name the name of a {@link OnWorkspaceInconsistency} handler.
+ */
+ public void setOnWorkspaceInconsistency(String name) {
+ owi = OnWorkspaceInconsistency.fromString(name);
+ }
+
+ /**
+ * @return the name of the currently set {@link OnWorkspaceInconsistency}.
+ */
+ public String getOnWorkspaceInconsistency() {
+ return owi.getName();
+ }
+
}
Copied: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java (from r648691, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java)
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java?p2=jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java&p1=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java&r1=648691&r2=650539&rev=650539&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/OnWorkspaceInconsistency.java Tue Apr 22 08:03:24 2008
@@ -77,9 +77,9 @@
private final String name;
/**
- * Private constructor.
+ * Protected constructor.
*/
- private OnWorkspaceInconsistency(String name) {
+ protected OnWorkspaceInconsistency(String name) {
this.name = name;
}
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandlerContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandlerContext.java?rev=650539&r1=650538&r2=650539&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandlerContext.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandlerContext.java Tue Apr 22 08:03:24 2008
@@ -21,6 +21,7 @@
import org.apache.jackrabbit.core.state.ItemStateManager;
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.NamespaceRegistryImpl;
+import org.apache.jackrabbit.core.persistence.PersistenceManager;
/**
* Acts as an argument for the {@link QueryHandler} to keep the interface
@@ -40,6 +41,11 @@
private final ItemStateManager stateMgr;
/**
+ * The underlying persistence manager.
+ */
+ private final PersistenceManager pm;
+
+ /**
* The node type registry of the repository
*/
private final NodeTypeRegistry ntRegistry;
@@ -77,6 +83,7 @@
* <code>FileSystem</code> has been configured
* <code>fs</code> is <code>null</code>.
* @param stateMgr provides persistent item states.
+ * @param pm the underlying persistence manager.
* @param rootId the id of the root node.
* @param ntRegistry the node type registry.
* @param nsRegistry the namespace registry.
@@ -88,6 +95,7 @@
*/
public QueryHandlerContext(FileSystem fs,
ItemStateManager stateMgr,
+ PersistenceManager pm,
NodeId rootId,
NodeTypeRegistry ntRegistry,
NamespaceRegistryImpl nsRegistry,
@@ -95,6 +103,7 @@
NodeId excludedNodeId) {
this.fs = fs;
this.stateMgr = stateMgr;
+ this.pm = pm;
this.rootId = rootId;
this.ntRegistry = ntRegistry;
this.nsRegistry = nsRegistry;
@@ -113,6 +122,13 @@
*/
public ItemStateManager getItemStateManager() {
return stateMgr;
+ }
+
+ /**
+ * @return the underlying persistence manager.
+ */
+ public PersistenceManager getPersistenceManager() {
+ return pm;
}
/**
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?rev=650539&r1=650538&r2=650539&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Tue Apr 22 08:03:24 2008
@@ -29,8 +29,6 @@
import org.apache.jackrabbit.spi.Path;
import org.apache.jackrabbit.spi.PathFactory;
import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
-import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.lucene.document.Document;
@@ -1043,20 +1041,12 @@
NodeState.ChildNodeEntry child = (NodeState.ChildNodeEntry) it.next();
Path childPath = PATH_FACTORY.create(path, child.getName(),
child.getIndex(), false);
- NodeState childState;
+ NodeState childState = null;
try {
childState = (NodeState) stateMgr.getItemState(child.getId());
} catch (NoSuchItemStateException e) {
- NamePathResolver resolver = new DefaultNamePathResolver(
- handler.getContext().getNamespaceRegistry());
- log.error("Node {} ({}) has missing child '{}' ({})",
- new Object[]{
- resolver.getJCRPath(path),
- node.getNodeId().getUUID().toString(),
- resolver.getJCRName(child.getName()),
- child.getId().getUUID().toString()
- });
- throw e;
+ handler.getOnWorkspaceInconsistencyHandler().handleMissingChildNode(
+ e, handler, path, node, child);
}
if (childState != null) {
createIndex(childState, childPath, stateMgr);