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 7782b72af40871cf08414c90d8df99247c182f8a Author: juanpablo <[email protected]> AuthorDate: Tue Jan 28 21:16:15 2020 +0100 remove WikiEventUtils as it was barely used and it basically was a synonym for WikiEventManager.getInstance().addWikiEventListener( client, listener ). While at it, on SearchManager we apply formatting and fixes from intellij --- .../java/org/apache/wiki/event/WikiEventUtils.java | 135 ------------------ .../wiki/references/DefaultReferenceManager.java | 4 +- .../wiki/render/DefaultRenderingManager.java | 4 +- .../java/org/apache/wiki/search/SearchManager.java | 151 ++++++++++----------- 4 files changed, 74 insertions(+), 220 deletions(-) diff --git a/jspwiki-main/src/main/java/org/apache/wiki/event/WikiEventUtils.java b/jspwiki-main/src/main/java/org/apache/wiki/event/WikiEventUtils.java deleted file mode 100644 index 4d54d7c..0000000 --- a/jspwiki-main/src/main/java/org/apache/wiki/event/WikiEventUtils.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - 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.wiki.event; - -import org.apache.wiki.WikiEngine; - -/** - * A utility class that adds some JSPWiki-specific functionality to the WikiEventManager (which is really a general-purpose event manager). - * - * @since 2.4.20 - */ -public class WikiEventUtils { - - /** - * This ungainly convenience method adds a WikiEventListener to the appropriate component of the provided client Object, to listen - * for events of the provided type (or related types, see the table below). - * <p> - * If the type value is valid but does not match any WikiEvent type known to this method, this will just attach the listener to the - * client Object. This may mean that the Object never fires events of the desired type; type-to-client matching is left to you to - * guarantee. Silence is golden, but not if you want those events. - * </p> - * <p> - * Most event types expect a WikiEngine as the client, with the rest attaching the listener directly to the supplied source object, as - * described below: - * </p> - * <table border="1" cellpadding="4"> - * <tr><th>WikiEvent Type(s) </th><th>Required Source Object </th><th>Actually Attached To </th></tr> - * <tr><td>any WikiEngineEvent </td><td>WikiEngine </td><td>WikiEngine </td></tr> - * <tr><td>WikiPageEvent.PAGE_LOCK, - * WikiPageEvent.PAGE_UNLOCK </td><td>WikiEngine or PageManager </td><td>PageManager </td></tr> - * <tr><td>WikiPageEvent.PAGE_REQUESTED, - * WikiPageEvent.PAGE_DELIVERED </td><td>WikiServletFilter </td><td>WikiServletFilter </td></tr> - * <tr><td>WikiPageEvent (<a href="#pbeTypes">phase - * boundary event</a>)</td><td>WikiEngine </td><td>FilterManager </td></tr> - * <tr><td>WikiPageEvent (<a href="#ipeTypes">in-phase - * event</a>)</td><td>WikiEngine </td><td>WikiEngine </td></tr> - * <tr><td>WikiPageEvent (in-phase event) </td><td>any </td><td>source object </td></tr> - * <tr><td>WikiSecurityEvent </td><td>any </td><td>source object </td></tr> - * <tr><td>any other valid type </td><td>any </td><td>source object </td></tr> - * <tr><td>any invalid type </td><td>any </td><td>nothing </td></tr> - * </table> - * - * <p id="pbeTypes"><small><b>phase boundary event types:</b> - * <tt>WikiPageEvent.PRE_TRANSLATE_BEGIN</tt>, <tt>WikiPageEvent.PRE_TRANSLATE_END</tt>, <tt>WikiPageEvent.POST_TRANSLATE_BEGIN</tt>, - * <tt>WikiPageEvent.POST_TRANSLATE_END</tt>, <tt>WikiPageEvent.PRE_SAVE_BEGIN</tt>, <tt>WikiPageEvent.PRE_SAVE_END</tt>, - * <tt>WikiPageEvent.POST_SAVE_BEGIN</tt>, and <tt>WikiPageEvent.POST_SAVE_END</tt>. - * </small></p> - * <p id="ipeTypes"><small><b>in-phase event types:</b> - * <tt>WikiPageEvent.PRE_TRANSLATE</tt>, <tt>WikiPageEvent.POST_TRANSLATE</tt>, <tt>WikiPageEvent.PRE_SAVE</tt>, and - * <tt>WikiPageEvent.POST_SAVE</tt>. - * </small></p> - * - * <p> - * <b>Note:</b> The <i>Actually Attached To</i> column may also be considered as the class(es) that fire events of the type(s) - * shown in the <i>WikiEvent Type</i> column. - * </p> - * - * @see org.apache.wiki.event.WikiEvent - * @see org.apache.wiki.event.WikiEngineEvent - * @see org.apache.wiki.event.WikiPageEvent - * @see org.apache.wiki.event.WikiSecurityEvent - * @throws ClassCastException if there is a type mismatch between certain event types and the client Object - */ - public static synchronized void addWikiEventListener( final Object client, final int type, final WikiEventListener listener ) { - // Make sure WikiEventManager exists - WikiEventManager.getInstance(); - - // first, figure out what kind of event is expected to be generated this does - // tie us into known types, but WikiEvent.isValidType() will return true so - // long as the type was set to any non-ERROR or non-UNKNOWN value - - if( WikiEngineEvent.isValidType( type ) ) { - // add listener directly to WikiEngine - WikiEventManager.addWikiEventListener( client, listener ); - } else if( WikiPageEvent.isValidType( type ) ) { - // add listener to one of several options - if( type == WikiPageEvent.PAGE_LOCK - || type == WikiPageEvent.PAGE_UNLOCK ) { - // attach to PageManager - if( client instanceof WikiEngine ) { - WikiEventManager.addWikiEventListener( ((WikiEngine)client).getPageManager(), listener ); - } else { - // client instanceof PageManager - WikiEventManager.addWikiEventListener( client, listener ); - } - } else if( type == WikiPageEvent.PAGE_REQUESTED - || type == WikiPageEvent.PAGE_DELIVERED ) { - // attach directly to WikiServletFilter - WikiEventManager.addWikiEventListener( client, listener ); - } - else if( type == WikiPageEvent.PRE_TRANSLATE_BEGIN - || type == WikiPageEvent.PRE_TRANSLATE_END - || type == WikiPageEvent.POST_TRANSLATE_BEGIN - || type == WikiPageEvent.POST_TRANSLATE_END - || type == WikiPageEvent.PRE_SAVE_BEGIN - || type == WikiPageEvent.PRE_SAVE_END - || type == WikiPageEvent.POST_SAVE_BEGIN - || type == WikiPageEvent.POST_SAVE_END ) { - // attach to FilterManager - WikiEventManager.addWikiEventListener( ((WikiEngine)client).getFilterManager(), listener ); - } else { //if ( type == WikiPageEvent.PRE_TRANSLATE - // || type == WikiPageEvent.POST_TRANSLATE - // || type == WikiPageEvent.PRE_SAVE - // || type == WikiPageEvent.POST_SAVE ) // attach to client - WikiEventManager.addWikiEventListener( client, listener ); - } - } else if( WikiSecurityEvent.isValidType( type ) ) { - // currently just attach it to the client (we are ignorant of other options) - WikiEventManager.addWikiEventListener( client, listener ); - } else if( WikiEvent.isValidType( type ) ) { - // we don't know what to do - WikiEventManager.addWikiEventListener( client, listener ); - } else { - // is error or unknown, why are we being called with this? - } - } - -} diff --git a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java index e073b7f..5ebe5cc 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java @@ -30,7 +30,7 @@ import org.apache.wiki.api.exceptions.ProviderException; import org.apache.wiki.api.filters.BasicPageFilter; import org.apache.wiki.attachment.Attachment; import org.apache.wiki.event.WikiEvent; -import org.apache.wiki.event.WikiEventUtils; +import org.apache.wiki.event.WikiEventManager; import org.apache.wiki.event.WikiPageEvent; import org.apache.wiki.providers.WikiPageProvider; import org.apache.wiki.util.TextUtil; @@ -234,7 +234,7 @@ public class DefaultReferenceManager extends BasicPageFilter implements Referenc sw.stop(); log.info( "Cross reference scan done in "+sw ); - WikiEventUtils.addWikiEventListener( m_engine.getPageManager(), WikiPageEvent.PAGE_DELETED, this ); + WikiEventManager.getInstance().addWikiEventListener( m_engine.getPageManager(), this ); } /** diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java index cd1117a..c260455 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java @@ -33,7 +33,7 @@ import org.apache.wiki.api.exceptions.WikiException; import org.apache.wiki.attachment.Attachment; import org.apache.wiki.event.WikiEvent; import org.apache.wiki.event.WikiEventListener; -import org.apache.wiki.event.WikiEventUtils; +import org.apache.wiki.event.WikiEventManager; import org.apache.wiki.event.WikiPageEvent; import org.apache.wiki.pages.PageManager; import org.apache.wiki.parser.JSPWikiMarkupParser; @@ -128,7 +128,7 @@ public class DefaultRenderingManager implements RenderingManager { log.info( "Rendering content with " + renderImplName + "." ); - WikiEventUtils.addWikiEventListener(m_engine, WikiPageEvent.POST_SAVE_BEGIN, this); + WikiEventManager.getInstance().addWikiEventListener( m_engine.getFilterManager(),this ); } private Constructor< ? > initRenderer( final String renderImplName, final Class< ? >[] rendererParams ) throws WikiException { diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchManager.java b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchManager.java index ac256fe..2d975f4 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/search/SearchManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/search/SearchManager.java @@ -33,7 +33,7 @@ import org.apache.wiki.api.exceptions.ProviderException; import org.apache.wiki.api.filters.BasicPageFilter; import org.apache.wiki.event.WikiEvent; import org.apache.wiki.event.WikiEventListener; -import org.apache.wiki.event.WikiEventUtils; +import org.apache.wiki.event.WikiEventManager; import org.apache.wiki.event.WikiPageEvent; import org.apache.wiki.modules.InternalModule; import org.apache.wiki.parser.MarkupParser; @@ -59,18 +59,16 @@ import java.util.Set; */ public class SearchManager extends BasicPageFilter implements InternalModule, WikiEventListener { - private static final Logger log = Logger.getLogger(SearchManager.class); + private static final Logger log = Logger.getLogger( SearchManager.class ); private static final String DEFAULT_SEARCHPROVIDER = "org.apache.wiki.search.LuceneSearchProvider"; /** Property name for setting the search provider. Value is <tt>{@value}</tt>. */ - public static final String PROP_SEARCHPROVIDER = "jspwiki.searchProvider"; + public static final String PROP_SEARCHPROVIDER = "jspwiki.searchProvider"; private SearchProvider m_searchProvider; - /** - * The name of the JSON object that manages search. - */ + /** The name of the JSON object that manages search. */ public static final String JSON_SEARCH = "search"; /** @@ -80,13 +78,9 @@ public class SearchManager extends BasicPageFilter implements InternalModule, Wi * @param properties The list of Properties. * @throws FilterException If it cannot be instantiated. */ - public SearchManager( WikiEngine engine, Properties properties ) - throws FilterException - { + public SearchManager( final WikiEngine engine, final Properties properties ) throws FilterException { initialize( engine, properties ); - - WikiEventUtils.addWikiEventListener(m_engine.getPageManager(), - WikiPageEvent.PAGE_DELETE_REQUEST, this); + WikiEventManager.getInstance().addWikiEventListener( m_engine.getPageManager(), this ); //TODO: Replace with custom annotations. See JSPWIKI-566 WikiAjaxDispatcherServlet.registerServlet( JSON_SEARCH, new JSONSearch() ); @@ -95,57 +89,54 @@ public class SearchManager extends BasicPageFilter implements InternalModule, Wi /** * Provides a JSON RPC API to the JSPWiki Search Engine. */ - public class JSONSearch implements WikiAjaxServlet - { - public static final String AJAX_ACTION_SUGGESTIONS = "suggestions"; - public static final String AJAX_ACTION_PAGES = "pages"; - public static final int DEFAULT_MAX_RESULTS = 20; - public int maxResults = DEFAULT_MAX_RESULTS; - - @Override - public String getServletMapping() { - return JSON_SEARCH; - } - - @Override - public void service(HttpServletRequest req, HttpServletResponse resp, String actionName, List<String> params) - throws ServletException, IOException { - String result = ""; - if (StringUtils.isNotBlank(actionName)) { - if (params.size()<1) { - return; - } - String itemId = params.get(0); - log.debug("itemId="+itemId); - if (params.size()>1) { - String maxResultsParam = params.get(1); - log.debug("maxResultsParam="+maxResultsParam); - if (StringUtils.isNotBlank(maxResultsParam) && StringUtils.isNumeric(maxResultsParam)) { - maxResults = Integer.parseInt(maxResultsParam); - } - } - - if (actionName.equals(AJAX_ACTION_SUGGESTIONS)) { - List<String> callResults = new ArrayList<>(); - log.debug("Calling getSuggestions() START"); - callResults = getSuggestions(itemId, maxResults); - log.debug("Calling getSuggestions() DONE. "+callResults.size()); - result = AjaxUtil.toJson(callResults); - } else if (actionName.equals(AJAX_ACTION_PAGES)) { - final List< Map< String, Object > > callResults; - log.debug("Calling findPages() START"); - final WikiContext wikiContext = new WikiContext( m_engine, req, WikiContext.VIEW ); - if( wikiContext == null ) { - throw new ServletException( "Could not create a WikiContext from the request " + req ); - } - callResults = findPages(itemId, maxResults, wikiContext); - log.debug("Calling findPages() DONE. "+callResults.size()); - result = AjaxUtil.toJson(callResults); - } - } - log.debug("result="+result); - resp.getWriter().write(result); - } + public class JSONSearch implements WikiAjaxServlet { + + public static final String AJAX_ACTION_SUGGESTIONS = "suggestions"; + public static final String AJAX_ACTION_PAGES = "pages"; + public static final int DEFAULT_MAX_RESULTS = 20; + public int maxResults = DEFAULT_MAX_RESULTS; + + @Override + public String getServletMapping() { + return JSON_SEARCH; + } + + @Override + public void service( final HttpServletRequest req, + final HttpServletResponse resp, + final String actionName, + final List< String > params ) throws ServletException, IOException { + String result = ""; + if( StringUtils.isNotBlank( actionName ) ) { + if( params.size() < 1 ) { + return; + } + final String itemId = params.get( 0 ); + log.debug( "itemId=" + itemId ); + if( params.size() > 1 ) { + final String maxResultsParam = params.get( 1 ); + log.debug( "maxResultsParam=" + maxResultsParam ); + if( StringUtils.isNotBlank( maxResultsParam ) && StringUtils.isNumeric( maxResultsParam ) ) { + maxResults = Integer.parseInt( maxResultsParam ); + } + } + + if( actionName.equals( AJAX_ACTION_SUGGESTIONS ) ) { + log.debug( "Calling getSuggestions() START" ); + final List< String > callResults = getSuggestions( itemId, maxResults ); + log.debug( "Calling getSuggestions() DONE. " + callResults.size() ); + result = AjaxUtil.toJson( callResults ); + } else if( actionName.equals( AJAX_ACTION_PAGES ) ) { + log.debug("Calling findPages() START"); + final WikiContext wikiContext = new WikiContext( m_engine, req, WikiContext.VIEW ); + final List< Map< String, Object > > callResults = findPages( itemId, maxResults, wikiContext ); + log.debug( "Calling findPages() DONE. " + callResults.size() ); + result = AjaxUtil.toJson( callResults ); + } + } + log.debug( "result=" + result ); + resp.getWriter().write( result ); + } /** * Provides a list of suggestions to use for a page name. Currently the algorithm just looks into the value parameter, @@ -155,16 +146,15 @@ public class SearchManager extends BasicPageFilter implements InternalModule, Wi * @param maxLength maximum number of suggestions * @return the suggestions */ - public List<String> getSuggestions( String wikiName, final int maxLength ) { + public List< String > getSuggestions( String wikiName, final int maxLength ) { final StopWatch sw = new StopWatch(); sw.start(); final List< String > list = new ArrayList<>( maxLength ); if( wikiName.length() > 0 ) { - // split pagename and attachment filename String filename = ""; - int pos = wikiName.indexOf("/"); + final int pos = wikiName.indexOf("/"); if( pos >= 0 ) { filename = wikiName.substring( pos ).toLowerCase(); wikiName = wikiName.substring( 0, pos ); @@ -175,7 +165,7 @@ public class SearchManager extends BasicPageFilter implements InternalModule, Wi final Set< String > allPages = m_engine.getReferenceManager().findCreated(); int counter = 0; - for( Iterator< String > i = allPages.iterator(); i.hasNext() && counter < maxLength; ) { + for( final Iterator< String > i = allPages.iterator(); i.hasNext() && counter < maxLength; ) { final String p = i.next(); final String pp = p.toLowerCase(); if( pp.startsWith( cleanWikiName) || pp.startsWith( oldStyleName ) ) { @@ -199,39 +189,38 @@ public class SearchManager extends BasicPageFilter implements InternalModule, Wi * @param maxLength How many hits to return * @return the pages found */ - public List<Map<String,Object>> findPages( String searchString, int maxLength, WikiContext wikiContext ) - { - StopWatch sw = new StopWatch(); + public List< Map< String, Object > > findPages( final String searchString, final int maxLength, final WikiContext wikiContext ) { + final StopWatch sw = new StopWatch(); sw.start(); - List<Map<String,Object>> list = new ArrayList<>(maxLength); - + final List< Map< String, Object > > list = new ArrayList<>( maxLength ); if( searchString.length() > 0 ) { try { - Collection< SearchResult > c; + final Collection< SearchResult > c; if( m_searchProvider instanceof LuceneSearchProvider ) { - c = ((LuceneSearchProvider)m_searchProvider).findPages( searchString, 0, wikiContext ); + c = ( ( LuceneSearchProvider )m_searchProvider ).findPages( searchString, 0, wikiContext ); } else { c = m_searchProvider.findPages( searchString, wikiContext ); } int count = 0; - for( Iterator< SearchResult > i = c.iterator(); i.hasNext() && count < maxLength; count++ ) - { - SearchResult sr = i.next(); - HashMap<String,Object> hm = new HashMap<>(); + for( final Iterator< SearchResult > i = c.iterator(); i.hasNext() && count < maxLength; count++ ) { + final SearchResult sr = i.next(); + final HashMap< String, Object > hm = new HashMap<>(); hm.put( "page", sr.getPage().getName() ); hm.put( "score", sr.getScore() ); list.add( hm ); } - } catch(Exception e) { - log.info("AJAX search failed; ",e); + } catch( final Exception e ) { + log.info( "AJAX search failed; ", e ); } } sw.stop(); - if( log.isDebugEnabled() ) log.debug("AJAX search complete in "+sw); + if( log.isDebugEnabled() ) { + log.debug( "AJAX search complete in " + sw ); + } return list; } }
