This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit 7e07181cf489b879dcee79b73f776e5615b361ab
Author: juanpablo <[email protected]>
AuthorDate: Tue Apr 14 22:21:36 2020 +0200

    add WikiPageEvent#PAGE_REINDEX to signal that a given Page needs to be 
reindexed
---
 .../java/org/apache/wiki/event/WikiPageEvent.java     |  3 +++
 .../org/apache/wiki/pages/DefaultPageManager.java     |  3 +--
 .../org/apache/wiki/search/DefaultSearchManager.java  | 19 +++++++++++++------
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/jspwiki-event/src/main/java/org/apache/wiki/event/WikiPageEvent.java 
b/jspwiki-event/src/main/java/org/apache/wiki/event/WikiPageEvent.java
index e5c1ec4..c9e28a1 100644
--- a/jspwiki-event/src/main/java/org/apache/wiki/event/WikiPageEvent.java
+++ b/jspwiki-event/src/main/java/org/apache/wiki/event/WikiPageEvent.java
@@ -160,6 +160,9 @@ public class WikiPageEvent extends WikiEvent {
      * @since 2.4.65 */
     public static final int PAGE_DELETED         = 27;
 
+    /** Indicates a wiki page reindex event (a page was changed when requested 
to a provided) */
+    public static final int PAGE_REINDEX         = 28;
+
     private String m_pagename;
 
     // ............
diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java 
b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
index 3cade26..54c9c2d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/DefaultPageManager.java
@@ -45,7 +45,6 @@ import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.event.WikiSecurityEvent;
 import org.apache.wiki.providers.RepositoryModifiedException;
 import org.apache.wiki.references.ReferenceManager;
-import org.apache.wiki.search.SearchManager;
 import org.apache.wiki.tasks.TasksManager;
 import org.apache.wiki.ui.CommandResolver;
 import org.apache.wiki.util.ClassUtil;
@@ -188,7 +187,7 @@ public class DefaultPageManager implements PageManager {
             final Page p = m_provider.getPageInfo( pageName, version );
 
             m_engine.getManager( ReferenceManager.class ).updateReferences( p 
);
-            m_engine.getManager( SearchManager.class ).reindexPage( p );
+            fireEvent( WikiPageEvent.PAGE_REINDEX, p.getName() );
             text = m_provider.getPageText( pageName, version );
         }
 
diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java 
b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
index fd00d44..8ac4c81 100644
--- 
a/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
+++ 
b/jspwiki-main/src/main/java/org/apache/wiki/search/DefaultSearchManager.java
@@ -74,7 +74,7 @@ public class DefaultSearchManager extends BasePageFilter 
implements SearchManage
      */
     public DefaultSearchManager( final Engine engine, final Properties 
properties ) throws FilterException {
         initialize( engine, properties );
-        WikiEventManager.getInstance().addWikiEventListener( 
m_engine.getManager( PageManager.class ), this );
+        WikiEventManager.addWikiEventListener( m_engine.getManager( 
PageManager.class ), this );
 
         // TODO: Replace with custom annotations. See JSPWIKI-566
         WikiAjaxDispatcherServlet.registerServlet( JSON_SEARCH, new 
JSONSearch() );
@@ -261,12 +261,19 @@ public class DefaultSearchManager extends BasePageFilter 
implements SearchManage
     /** {@inheritDoc} */
     @Override
     public void actionPerformed( final WikiEvent event ) {
-        if( event instanceof WikiPageEvent && event.getType() == 
WikiPageEvent.PAGE_DELETE_REQUEST ) {
+        if( event instanceof WikiPageEvent ) {
             final String pageName = ( ( WikiPageEvent ) event ).getPageName();
-
-            final Page p = m_engine.getManager( PageManager.class ).getPage( 
pageName );
-            if( p != null ) {
-                pageRemoved( p );
+            if( event.getType() == WikiPageEvent.PAGE_DELETE_REQUEST ) {
+                final Page p = m_engine.getManager( PageManager.class 
).getPage( pageName );
+                if( p != null ) {
+                    pageRemoved( p );
+                }
+            }
+            if( event.getType() == WikiPageEvent.PAGE_REINDEX ) {
+                final Page p = m_engine.getManager( PageManager.class 
).getPage( pageName );
+                if( p != null ) {
+                    reindexPage( p );
+                }
             }
         }
     }

Reply via email to