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 2007/01/20 02:10:48 UTC
svn commit: r498034 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
SearchManager.java observation/EventImpl.java
Author: jukka
Date: Fri Jan 19 17:10:47 2007
New Revision: 498034
URL: http://svn.apache.org/viewvc?view=rev&rev=498034
Log:
JCR-699: No need for path formatting when checking for excluded events.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java?view=diff&rev=498034&r1=498033&r2=498034
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java Fri Jan 19 17:10:47 2007
@@ -30,9 +30,8 @@
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.name.NoPrefixDeclaredException;
+import org.apache.jackrabbit.name.MalformedPathException;
import org.apache.jackrabbit.name.Path;
-import org.apache.jackrabbit.name.PathFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -268,21 +267,34 @@
return query;
}
+ /**
+ * Checks if the given event should be excluded based on the
+ * {@link #excludePath} setting.
+ *
+ * @param event observation event
+ * @return <code>true</code> if the event should be excluded,
+ * <code>false</code> otherwise
+ */
+ private boolean isExcluded(EventImpl event) {
+ try {
+ return excludePath != null
+ && excludePath.isAncestorOf(event.getQPath());
+ } catch (MalformedPathException ex) {
+ log.error("Error filtering events.", ex);
+ return false;
+ } catch (RepositoryException ex) {
+ log.error("Error filtering events.", ex);
+ return false;
+ }
+
+ }
+
//---------------< EventListener interface >--------------------------------
public void onEvent(EventIterator events) {
log.debug("onEvent: indexing started");
long time = System.currentTimeMillis();
- String exclude = "";
- if (excludePath != null) {
- try {
- exclude = PathFormat.format(excludePath, nsReg);
- } catch (NoPrefixDeclaredException e) {
- log.error("Error filtering events.", e);
- }
- }
-
// nodes that need to be removed from the index.
final Set removedNodes = new HashSet();
// nodes that need to be added to the index.
@@ -292,20 +304,15 @@
while (events.hasNext()) {
EventImpl e = (EventImpl) events.nextEvent();
- try {
- if (excludePath != null && e.getPath().startsWith(exclude)) {
- continue;
+ if (!isExcluded(e)) {
+ long type = e.getType();
+ if (type == Event.NODE_ADDED) {
+ addedNodes.put(e.getChildId(), e);
+ } else if (type == Event.NODE_REMOVED) {
+ removedNodes.add(e.getChildId());
+ } else {
+ propEvents.add(e);
}
- } catch (RepositoryException ex) {
- log.error("Error filtering events.", ex);
- }
- long type = e.getType();
- if (type == Event.NODE_ADDED) {
- addedNodes.put(e.getChildId(), e);
- } else if (type == Event.NODE_REMOVED) {
- removedNodes.add(e.getChildId());
- } else {
- propEvents.add(e);
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java?view=diff&rev=498034&r1=498033&r2=498034
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java Fri Jan 19 17:10:47 2007
@@ -19,9 +19,7 @@
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.name.MalformedPathException;
-import org.apache.jackrabbit.name.NoPrefixDeclaredException;
import org.apache.jackrabbit.name.Path;
-import org.apache.jackrabbit.name.PathFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,6 +70,8 @@
this.eventState = eventState;
}
+ //---------------------------------------------------------------< Event >
+
/**
* {@inheritDoc}
*/
@@ -83,27 +83,39 @@
* {@inheritDoc}
*/
public String getPath() throws RepositoryException {
+ return session.getJCRPath(getQPath());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getUserID() {
+ return eventState.getUserId();
+ }
+
+ //-----------------------------------------------------------< EventImpl >
+
+ /**
+ * Returns the qualified path of this event.
+ *
+ * @return qualified path
+ * @throws RepositoryException if the path can't be constructed
+ */
+ public Path getQPath() throws RepositoryException {
try {
- Path p;
- if (eventState.getChildRelPath().getIndex() > 0) {
- p = Path.create(eventState.getParentPath(), eventState.getChildRelPath().getName(),
- eventState.getChildRelPath().getIndex(), false);
+ Path parent = eventState.getParentPath();
+ Path.PathElement child = eventState.getChildRelPath();
+ int index = child.getIndex();
+ if (index > 0) {
+ return Path.create(parent, child.getName(), index, false);
} else {
- p = Path.create(eventState.getParentPath(), eventState.getChildRelPath().getName(), false);
+ return Path.create(parent, child.getName(), false);
}
- return session.getJCRPath(p);
} catch (MalformedPathException e) {
String msg = "internal error: malformed path for event";
log.debug(msg);
throw new RepositoryException(msg, e);
}
- }
-
- /**
- * {@inheritDoc}
- */
- public String getUserID() {
- return eventState.getUserId();
}
/**