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 ); + } } } }
