You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2020/01/09 22:17:21 UTC

[jspwiki] 11/32: JSPWIKI-120: move getPureText methods to PageManager

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 8081873f58ca62ce4d4748de587e25e4a74eb099
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Jan 4 18:44:11 2020 +0100

    JSPWIKI-120: move getPureText methods to PageManager
---
 .../src/main/java/org/apache/wiki/WikiEngine.java  | 69 +++-------------------
 .../apache/wiki/auth/acl/DefaultAclManager.java    | 24 ++++----
 .../apache/wiki/content/DefaultPageRenamer.java    |  4 +-
 .../apache/wiki/diff/DefaultDifferenceManager.java |  4 +-
 .../java/org/apache/wiki/filters/SpamFilter.java   | 25 ++++----
 .../org/apache/wiki/pages/DefaultPageManager.java  | 35 +++++++++--
 .../java/org/apache/wiki/pages/PageManager.java    | 35 ++++++++++-
 .../main/java/org/apache/wiki/plugin/IfPlugin.java |  2 +-
 .../java/org/apache/wiki/plugin/InsertPage.java    | 12 ++--
 .../org/apache/wiki/plugin/TableOfContents.java    | 27 ++++-----
 .../java/org/apache/wiki/plugin/WeblogPlugin.java  | 10 +---
 .../wiki/references/DefaultReferenceManager.java   |  2 +-
 .../java/org/apache/wiki/rss/RSSGenerator.java     |  2 +-
 .../apache/wiki/search/LuceneSearchProvider.java   |  2 +-
 .../java/org/apache/wiki/tags/PageSizeTag.java     | 32 ++++------
 .../java/org/apache/wiki/xmlrpc/RPCHandler.java    | 13 ++--
 .../org/apache/wiki/xmlrpc/RPCHandlerUTF8.java     | 32 +++-------
 .../org/apache/wiki/content/PageRenamerTest.java   | 16 ++---
 .../apache/wiki/render/RenderingManagerTest.java   | 15 ++---
 .../apache/wiki/stress/MassiveRepositoryTest.java  |  2 +-
 .../wiki/stress/StressTestVersioningProvider.java  |  2 +-
 21 files changed, 160 insertions(+), 205 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
index 387ce65..56b5e33 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java
@@ -1198,9 +1198,8 @@ public class WikiEngine  {
      * @param version  Version of the page to fetch
      * @return WikiText.
      */
-    public String getText( String page, int version )
-    {
-        String result = getPureText( page, version );
+    public String getText( final String page, final int version ) {
+        final String result = getPageManager().getPureText( page, version );
 
         //
         //  Replace ampersand first, or else all quotes and stuff
@@ -1210,9 +1209,7 @@ public class WikiEngine  {
         result = TextUtil.replaceString( result, "&", "&amp;" );
         */
 
-        result = TextUtil.replaceEntities( result );
-
-        return result;
+        return TextUtil.replaceEntities( result );
     }
 
     /**
@@ -1229,65 +1226,13 @@ public class WikiEngine  {
      *  @param context The WikiContext
      *  @param page    A page reference (not an attachment)
      *  @return The page content as HTMLized String.
-     *  @see   #getPureText(WikiPage)
+     *  @see PageManager#getPureText(WikiPage)
      */
-    public String getText( WikiContext context, WikiPage page )
+    public String getText( final WikiContext context, final WikiPage page )
     {
         return getText( page.getName(), page.getVersion() );
     }
 
-
-    /**
-     *  Returns the pure text of a page, no conversions.  Use this
-     *  if you are writing something that depends on the parsing
-     *  of the page.  Note that you should always check for page
-     *  existence through pageExists() before attempting to fetch
-     *  the page contents.
-     *
-     *  @param page    The name of the page to fetch.
-     *  @param version If WikiPageProvider.LATEST_VERSION, then uses the
-     *  latest version.
-     *  @return The page contents.  If the page does not exist,
-     *          returns an empty string.
-     */
-    // FIXME: Should throw an exception on unknown page/version?
-    public String getPureText( String page, int version )
-    {
-        String result = null;
-
-        try
-        {
-            result = m_pageManager.getPageText( page, version );
-        }
-        catch( ProviderException e )
-        {
-            // FIXME
-        }
-        finally
-        {
-            if( result == null )
-                result = "";
-        }
-
-        return result;
-    }
-
-    /**
-     *  Returns the pure text of a page, no conversions.  Use this
-     *  if you are writing something that depends on the parsing
-     *  the page. Note that you should always check for page
-     *  existence through pageExists() before attempting to fetch
-     *  the page contents.
-     *
-     *  @param page A handle to the WikiPage
-     *  @return String of WikiText.
-     *  @since 2.1.13.
-     */
-    public String getPureText( final WikiPage page )
-    {
-        return getPureText( page.getName(), page.getVersion() );
-    }
-
     /**
      *  Returns the converted HTML of the page using a different
      *  context than the default context.
@@ -1297,7 +1242,7 @@ public class WikiEngine  {
      *  @return HTML-rendered version of the page.
      */
     public String getHTML( final WikiContext context, final WikiPage page ) {
-        final String pagedata = getPureText( page.getName(), page.getVersion() );
+        final String pagedata = getPageManager().getPureText( page.getName(), page.getVersion() );
         return textToHTML( context, pagedata );
     }
 
@@ -1500,7 +1445,7 @@ public class WikiEngine  {
     public void saveText( WikiContext context, String text ) throws WikiException {
         // Check if page data actually changed; bail if not
         WikiPage page = context.getPage();
-        String oldText = getPureText( page );
+        String oldText = getPageManager().getPureText( page );
         String proposedText = TextUtil.normalizePostData( text );
         if ( oldText != null && oldText.equals( proposedText ) ) {
             return;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
index 8cdad24..860eafa 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
@@ -205,24 +205,24 @@ public class DefaultAclManager implements AclManager {
      * @throws WikiSecurityException of the Acl cannot be set
      * @since 2.5
      */
-    public void setPermissions(WikiPage page, Acl acl) throws WikiSecurityException {
-        PageManager pageManager = m_engine.getPageManager();
+    public void setPermissions( final WikiPage page, final Acl acl ) throws WikiSecurityException {
+        final PageManager pageManager = m_engine.getPageManager();
 
         // Forcibly expire any page locks
-        PageLock lock = pageManager.getCurrentLock(page);
-        if (lock != null) {
-            pageManager.unlockPage(lock);
+        final PageLock lock = pageManager.getCurrentLock( page );
+        if( lock != null ) {
+            pageManager.unlockPage( lock );
         }
 
         // Remove all of the existing ACLs.
-        String pageText = m_engine.getPureText(page);
-        Matcher matcher = DefaultAclManager.ACL_PATTERN.matcher(pageText);
-        String cleansedText = matcher.replaceAll("");
-        String newText = DefaultAclManager.printAcl(page.getAcl()) + cleansedText;
+        final String pageText = m_engine.getPageManager().getPureText( page );
+        final Matcher matcher = DefaultAclManager.ACL_PATTERN.matcher( pageText );
+        final String cleansedText = matcher.replaceAll("" );
+        final String newText = DefaultAclManager.printAcl( page.getAcl() ) + cleansedText;
         try {
-            pageManager.putPageText(page, newText);
-        } catch (ProviderException e) {
-            throw new WikiSecurityException("Could not set Acl. Reason: ProviderExcpetion " + e.getMessage(), e);
+            pageManager.putPageText( page, newText );
+        } catch( final ProviderException e ) {
+            throw new WikiSecurityException( "Could not set Acl. Reason: ProviderExcpetion " + e.getMessage(), e );
         }
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/content/DefaultPageRenamer.java b/jspwiki-main/src/main/java/org/apache/wiki/content/DefaultPageRenamer.java
index e15de8c..e586d45 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/content/DefaultPageRenamer.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/content/DefaultPageRenamer.java
@@ -110,7 +110,7 @@ public class DefaultPageRenamer implements PageRenamer {
         }
         toPage.setAttribute( WikiPage.CHANGENOTE, fromPage.getName() + " ==> " + toPage.getName() );
         toPage.setAuthor( context.getCurrentUser().getName() );
-        engine.getPageManager().putPageText( toPage, engine.getPureText( toPage ) );
+        engine.getPageManager().putPageText( toPage, engine.getPageManager().getPureText( toPage ) );
 
         //  Update the references
         engine.getReferenceManager().pageRemoved( fromPage );
@@ -173,7 +173,7 @@ public class DefaultPageRenamer implements PageRenamer {
             
             final WikiPage p = engine.getPageManager().getPage( pageName );
 
-            final String sourceText = engine.getPureText( p );
+            final String sourceText = engine.getPageManager().getPureText( p );
             String newText = replaceReferrerString( context, sourceText, fromPage.getName(), toPage.getName() );
 
             m_camelCase = TextUtil.getBooleanProperty( engine.getWikiProperties(), JSPWikiMarkupParser.PROP_CAMELCASELINKS, m_camelCase );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
index c9c6c6a..62229b9 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/diff/DefaultDifferenceManager.java
@@ -113,8 +113,8 @@ public class DefaultDifferenceManager implements DifferenceManager {
      */
     public String getDiff( final WikiContext context, final int version1, final int version2 ) {
         final String page = context.getPage().getName();
-        String page1 = context.getEngine().getPureText( page, version1 );
-        final String page2 = context.getEngine().getPureText( page, version2 );
+        String page1 = context.getEngine().getPageManager().getPureText( page, version1 );
+        final String page2 = context.getEngine().getPageManager().getPureText( page, version2 );
 
         // Kludge to make diffs for new pages to work this way.
         if( version1 == WikiPageProvider.LATEST_VERSION ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
index 4dd287d..bc1acc7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
@@ -862,27 +862,26 @@ public class SpamFilter extends BasicPageFilter {
      *  @param newText
      *  @return Empty string, if there is no change.
      */
-    private static Change getChange( WikiContext context, String newText ) {
-        WikiPage page = context.getPage();
-        StringBuffer change = new StringBuffer();
-        WikiEngine engine = context.getEngine();
+    private static Change getChange( final WikiContext context, final String newText ) {
+        final WikiPage page = context.getPage();
+        final StringBuffer change = new StringBuffer();
+        final WikiEngine engine = context.getEngine();
         // Get current page version
 
-        Change ch = new Change();
+        final Change ch = new Change();
         
         try {
-            String oldText = engine.getPureText( page.getName(), WikiProvider.LATEST_VERSION );
-
-            String[] first  = Diff.stringToArray( oldText );
-            String[] second = Diff.stringToArray( newText );
-            Revision rev = Diff.diff( first, second, new MyersDiff() );
+            final String oldText = engine.getPageManager().getPureText( page.getName(), WikiProvider.LATEST_VERSION );
+            final String[] first  = Diff.stringToArray( oldText );
+            final String[] second = Diff.stringToArray( newText );
+            final Revision rev = Diff.diff( first, second, new MyersDiff() );
 
             if( rev == null || rev.size() == 0 ) {
                 return ch;
             }
             
             for( int i = 0; i < rev.size(); i++ ) {
-                Delta d = rev.getDelta( i );
+                final Delta d = rev.getDelta( i );
 
                 if( d instanceof AddDelta ) {
                     d.getRevised().toString( change, "", "\r\n" );
@@ -896,14 +895,14 @@ public class SpamFilter extends BasicPageFilter {
                     ch.m_removals++;
                 }
             }
-        } catch( DifferentiationFailedException e ) {
+        } catch( final DifferentiationFailedException e ) {
             log.error( "Diff failed", e );
         }
 
         //
         //  Don't forget to include the change note, too
         //
-        String changeNote = ( String )page.getAttribute( WikiPage.CHANGENOTE );
+        final String changeNote = ( String )page.getAttribute( WikiPage.CHANGENOTE );
 
         if( changeNote != null ) {
             change.append( "\r\n" );
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 5d605ed..3d5248e 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
@@ -139,7 +139,8 @@ public class DefaultPageManager extends ModuleManager implements PageManager {
 
     }
 
-    /* (non-Javadoc)
+    /**
+     * {@inheritDoc}
      * @see org.apache.wiki.pages.PageManager#getProvider()
      */
     @Override
@@ -147,7 +148,8 @@ public class DefaultPageManager extends ModuleManager implements PageManager {
         return m_provider;
     }
 
-    /* (non-Javadoc)
+    /**
+     * {@inheritDoc}
      * @see org.apache.wiki.pages.PageManager#getAllPages()
      */
     @Override
@@ -155,18 +157,19 @@ public class DefaultPageManager extends ModuleManager implements PageManager {
         return m_provider.getAllPages();
     }
 
-    /* (non-Javadoc)
+    /**
+     * {@inheritDoc}
      * @see org.apache.wiki.pages.PageManager#getPageText(java.lang.String, int)
      */
     @Override
-    public String getPageText( final String pageName, final int version) throws ProviderException {
+    public String getPageText( final String pageName, final int version ) throws ProviderException {
         if (pageName == null || pageName.length() == 0) {
-            throw new ProviderException("Illegal page name");
+            throw new ProviderException( "Illegal page name" );
         }
         String text;
 
         try {
-            text = m_provider.getPageText(pageName, version);
+            text = m_provider.getPageText( pageName, version );
         } catch ( final RepositoryModifiedException e ) {
             //  This only occurs with the latest version.
             LOG.info( "Repository has been modified externally while fetching page " + pageName );
@@ -184,6 +187,26 @@ public class DefaultPageManager extends ModuleManager implements PageManager {
 
     /**
      * {@inheritDoc}
+     * @see org.apache.wiki.pages.PageManager#getPureText(String, int)
+     */
+    public String getPureText( final String page, final int version ) {
+        String result = null;
+
+        try {
+            result = getPageText( page, version );
+        } catch( final ProviderException e ) {
+            LOG.error( "ProviderException getPureText for page " + page + " [version " + version + "]", e );
+        } finally {
+            if( result == null ) {
+                result = "";
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
      * @see org.apache.wiki.pages.PageManager#getEngine()
      */
     @Override
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
index c7a9674..6ff9dcd 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/pages/PageManager.java
@@ -56,9 +56,8 @@ public interface PageManager extends WikiEventListener {
     Collection< WikiPage > getAllPages() throws ProviderException;
 
     /**
-     * Fetches the page text from the repository.  This method also does some sanity checks,
-     * like checking for the pageName validity, etc.  Also, if the page repository has been
-     * modified externally, it is smart enough to handle such occurrences.
+     * Fetches the page text from the repository.  This method also does some sanity checks, like checking for the pageName validity, etc.
+     * Also, if the page repository has been modified externally, it is smart enough to handle such occurrences.
      *
      * @param pageName The name of the page to fetch.
      * @param version  The version to find
@@ -68,6 +67,36 @@ public interface PageManager extends WikiEventListener {
     String getPageText( String pageName, int version ) throws ProviderException;
 
     /**
+     *  Returns the pure text of a page, no conversions.  Use this if you are writing something that depends on the parsing
+     *  of the page. Note that you should always check for page existence through pageExists() before attempting to fetch
+     *  the page contents.
+     *
+     *  This method is pretty similar to {@link #getPageText(String, int)}, except that it doesn't throw {@link ProviderException},
+     *  it logs and swallows them.
+     *
+     *  @param page The name of the page to fetch.
+     *  @param version If WikiPageProvider.LATEST_VERSION, then uses the latest version.
+     *  @return The page contents.  If the page does not exist, returns an empty string.
+     */
+    String getPureText( String page, int version );
+
+    /**
+     *  Returns the pure text of a page, no conversions.  Use this if you are writing something that depends on the parsing
+     *  the page. Note that you should always check for page existence through pageExists() before attempting to fetch
+     *  the page contents.
+     *
+     *  This method is pretty similar to {@link #getPageText(String, int)}, except that it doesn't throw {@link ProviderException},
+     *  it logs and swallows them.
+     *
+     *  @param page A handle to the WikiPage
+     *  @return String of WikiText.
+     *  @since 2.1.13, moved to PageManager on 2.11.0.
+     */
+    default String getPureText( final WikiPage page ) {
+        return getPureText( page.getName(), page.getVersion() );
+    }
+
+    /**
      * Returns the WikiEngine to which this PageManager belongs to.
      *
      * @return The WikiEngine object.
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
index 2275b94..a4902f7 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/IfPlugin.java
@@ -172,7 +172,7 @@ public class IfPlugin implements WikiPlugin
         include |= checkIP(context, ip);
 
         if( page != null ) {
-            final String content = context.getEngine().getPureText(page, WikiProvider.LATEST_VERSION).trim();
+            final String content = context.getEngine().getPageManager().getPureText(page, WikiProvider.LATEST_VERSION).trim();
             include |= checkContains(content,contains);
             include |= checkIs(content,is);
             include |= checkExists(context,page,exists);
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
index 3c92e9f..e34e990 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/InsertPage.java
@@ -183,17 +183,13 @@ public class InsertPage
                 WikiContext includedContext = (WikiContext) context.clone();
                 includedContext.setPage( page );
 
-                String pageData = engine.getPureText( page );
+                String pageData = engine.getPageManager().getPureText( page );
                 String moreLink = "";
 
-                if( section != -1 )
-                {
-                    try
-                    {
+                if( section != -1 ) {
+                    try {
                         pageData = TextUtil.getSection( pageData, section );
-                    }
-                    catch( IllegalArgumentException e )
-                    {
+                    } catch( final IllegalArgumentException e ) {
                         throw new PluginException( e.getMessage() );
                     }
                 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
index e7a4f9c..ff21a4b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/TableOfContents.java
@@ -18,10 +18,6 @@
  */
 package org.apache.wiki.plugin;
 
-import java.io.IOException;
-import java.util.Map;
-import java.util.ResourceBundle;
-
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WikiContext;
@@ -36,6 +32,10 @@ import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.util.TextUtil;
 
+import java.io.IOException;
+import java.util.Map;
+import java.util.ResourceBundle;
+
 /**
  *  Provides a table of contents.
  *  <p>Parameters : </p>
@@ -214,17 +214,16 @@ public class TableOfContents
             m_lastLevel = Heading.HEADING_LARGE;
         }
 
-        try
-        {
-            String wikiText = engine.getPureText( page );
-            boolean runFilters = "true".equals( engine.getVariableManager().getValue( context, WikiEngine.PROP_RUNFILTERS, "true" ) );
+        try {
+            String wikiText = engine.getPageManager().getPureText( page );
+            final boolean runFilters = "true".equals( engine.getVariableManager().getValue( context, WikiEngine.PROP_RUNFILTERS, "true" ) );
 
             if( runFilters ) {
 				try {
-					FilterManager fm = engine.getFilterManager();
+					final FilterManager fm = engine.getFilterManager();
 					wikiText = fm.doPreTranslateFiltering(context, wikiText);
 
-				} catch (Exception e) {
+				} catch( final Exception e ) {
 					log.error("Could not construct table of contents: Filter Error", e);
 					throw new PluginException("Unable to construct table of contents (see logs)");
 				}
@@ -232,14 +231,12 @@ public class TableOfContents
 
             context.setVariable( VAR_ALREADY_PROCESSING, "x" );
 
-            MarkupParser parser = engine.getRenderingManager().getParser( context, wikiText );
+            final MarkupParser parser = engine.getRenderingManager().getParser( context, wikiText );
             parser.addHeadingListener( this );
             parser.parse();
 
-            sb.append( "<ul>\n"+m_buf.toString()+"</ul>\n" );
-        }
-        catch( IOException e )
-        {
+            sb.append( "<ul>\n" ).append( m_buf.toString() ).append( "</ul>\n" );
+        } catch( final IOException e ) {
             log.error("Could not construct table of contents", e);
             throw new PluginException("Unable to construct table of contents (see logs)");
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
index 214a265..63e3cd8 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/plugin/WeblogPlugin.java
@@ -450,13 +450,9 @@ public class WeblogPlugin
         buffer.append("</div>\n");
     }
 
-    private int guessNumberOfComments( WikiEngine engine, String commentpage )
-        throws ProviderException
-    {
-        String pagedata = engine.getPureText( commentpage, WikiProvider.LATEST_VERSION );
-
-        if( pagedata == null || pagedata.trim().length() == 0 )
-        {
+    private int guessNumberOfComments( final WikiEngine engine, final String commentpage ) {
+        final String pagedata = engine.getPageManager().getPureText( commentpage, WikiProvider.LATEST_VERSION );
+        if( pagedata == null || pagedata.trim().length() == 0 ) {
             return 0;
         }
 
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 6c69498..8d867cb 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
@@ -501,7 +501,7 @@ public class DefaultReferenceManager extends BasicPageFilter implements Referenc
      *  @param page wiki page for which references should be updated
      */
     public void updateReferences( final WikiPage page ) {
-        final String pageData = m_engine.getPureText( page.getName(), WikiProvider.LATEST_VERSION );
+        final String pageData = m_engine.getPageManager().getPureText( page.getName(), WikiProvider.LATEST_VERSION );
         updateReferences( page.getName(), scanWikiLinks( page, pageData ) );
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java
index 1c21260..174f0b6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java
@@ -519,7 +519,7 @@ public class RSSGenerator {
             //  Title
             //
 
-            String pageText = m_engine.getPureText(page.getName(), WikiProvider.LATEST_VERSION );
+            String pageText = m_engine.getPageManager().getPureText(page.getName(), WikiProvider.LATEST_VERSION );
 
             String title = "";
             int firstLine = pageText.indexOf('\n');
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
index 2815e37..e6e4711 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
@@ -478,7 +478,7 @@ public class LuceneSearchProvider implements SearchProvider {
             if( page instanceof Attachment ) {
                 text = getAttachmentContent( (Attachment) page );
             } else {
-                text = m_engine.getPureText( page );
+                text = m_engine.getPageManager().getPureText( page );
             }
 
             if( text != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
index 1caf82e..617a7ad 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/PageSizeTag.java
@@ -18,47 +18,39 @@
  */
 package org.apache.wiki.tags;
 
-import java.io.IOException;
-
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.ProviderException;
 
+import java.io.IOException;
+
 /**
  *  Returns the currently requested page or attachment size.
  *
  *  @since 2.0
  */
-public class PageSizeTag
-    extends WikiTagBase
-{
+public class PageSizeTag extends WikiTagBase {
+
     private static final long serialVersionUID = 0L;
     private static final Logger log = Logger.getLogger( PageSizeTag.class );
     
-    public final int doWikiStartTag()
-        throws IOException
-    {
-        WikiEngine engine = m_wikiContext.getEngine();
-        WikiPage   page   = m_wikiContext.getPage();
+    public final int doWikiStartTag() throws IOException {
+        final WikiEngine engine = m_wikiContext.getEngine();
+        final WikiPage page = m_wikiContext.getPage();
 
-        try
-        {
-            if( page != null )
-            {
+        try {
+            if( page != null ) {
                 long size = page.getSize();
 
-                if( size == -1 && engine.pageExists(page) ) // should never happen with attachments
-                {
-                    size = engine.getPureText( page.getName(), page.getVersion() ).length();
+                if( size == -1 && engine.pageExists(page) ) { // should never happen with attachments
+                    size = engine.getPageManager().getPureText( page.getName(), page.getVersion() ).length();
                     page.setSize( size );
                 }
 
                 pageContext.getOut().write( Long.toString(size) );
             }
-        }
-        catch( ProviderException e )
-        {
+        } catch( final ProviderException e ) {
             log.warn("Providers did not work: ",e);
             pageContext.getOut().write("Error determining page size: "+e.getMessage());
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
index 0dc2359..3cb0a83 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandler.java
@@ -210,13 +210,8 @@ public class RPCHandler
         return encodeWikiPage( m_engine.getPageManager().getPage( pagename, version ) );
     }
 
-    public byte[] getPage( String pagename )
-        throws XmlRpcException
-    {
-        pagename = parsePageCheckCondition( pagename );
-
-        String text = m_engine.getPureText( pagename, -1 );
-
+    public byte[] getPage( final String pagename ) throws XmlRpcException {
+        final String text = m_engine.getPageManager().getPureText( parsePageCheckCondition( pagename ), -1 );
         return toRPCBase64( text );
     }
 
@@ -225,7 +220,7 @@ public class RPCHandler
     {
         pagename = parsePageCheckCondition( pagename );
 
-        return toRPCBase64( m_engine.getPureText( pagename, version ) );
+        return toRPCBase64( m_engine.getPageManager().getPureText( pagename, version ) );
     }
 
     public byte[] getPageHTML( String pagename )
@@ -250,7 +245,7 @@ public class RPCHandler
         pagename = parsePageCheckCondition( pagename );
 
         WikiPage page = m_engine.getPageManager().getPage( pagename );
-        String pagedata = m_engine.getPureText( page );
+        String pagedata = m_engine.getPageManager().getPureText( page );
 
         LinkCollector localCollector = new LinkCollector();
         LinkCollector extCollector   = new LinkCollector();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
index 3b5cff0..9444453 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/xmlrpc/RPCHandlerUTF8.java
@@ -109,7 +109,7 @@ public class RPCHandlerUTF8
         checkPermission( PagePermission.VIEW );
 
         Collection< WikiPage > pages = m_engine.getRecentChanges();
-        Vector<Hashtable<String, Object>> result = new Vector<Hashtable<String, Object>>();
+        Vector<Hashtable<String, Object>> result = new Vector<>();
 
         Calendar cal = Calendar.getInstance();
         cal.setTime( since );
@@ -171,30 +171,16 @@ public class RPCHandlerUTF8
         return encodeWikiPage( m_engine.getPageManager().getPage( pagename, version ) );
     }
 
-    public String getPage( String pagename )
-        throws XmlRpcException
-    {
-        pagename = parsePageCheckCondition( pagename );
-
-        String text = m_engine.getPureText( pagename, -1 );
-
-        return text;
+    public String getPage( final String pagename ) throws XmlRpcException {
+        return m_engine.getPageManager().getPureText( parsePageCheckCondition( pagename ), -1 );
     }
 
-    public String getPageVersion( String pagename, int version )
-        throws XmlRpcException
-    {
-        pagename = parsePageCheckCondition( pagename );
-
-        return m_engine.getPureText( pagename, version );
+    public String getPageVersion( final String pagename, final int version ) throws XmlRpcException {
+        return m_engine.getPageManager().getPureText( parsePageCheckCondition( pagename ), version );
     }
 
-    public String getPageHTML( String pagename )
-        throws XmlRpcException
-    {
-        pagename = parsePageCheckCondition( pagename );
-
-        return m_engine.getHTML( pagename );
+    public String getPageHTML( final String pagename ) throws XmlRpcException  {
+        return m_engine.getHTML( parsePageCheckCondition( pagename ) );
     }
 
     public String getPageHTMLVersion( String pagename, int version )
@@ -211,7 +197,7 @@ public class RPCHandlerUTF8
         pagename = parsePageCheckCondition( pagename );
 
         WikiPage page = m_engine.getPageManager().getPage( pagename );
-        String pagedata = m_engine.getPureText( page );
+        String pagedata = m_engine.getPageManager().getPureText( page );
 
         LinkCollector localCollector = new LinkCollector();
         LinkCollector extCollector   = new LinkCollector();
@@ -226,7 +212,7 @@ public class RPCHandlerUTF8
                              extCollector,
                              attCollector );
 
-        Vector<Hashtable<String, String>> result = new Vector<Hashtable<String, String>>();
+        Vector<Hashtable<String, String>> result = new Vector<>();
 
         // FIXME: Contains far too much common with RPCHandler.  Refactor!
 
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
index d6d2fb1..6bd2659 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/content/PageRenamerTest.java
@@ -107,7 +107,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "TestPage", "FooTest", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION);
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION);
 
         Assertions.assertEquals( "[FooTest]", data.trim(), "no rename" );
 
@@ -133,7 +133,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "TestPage", "FooTest", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION);
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION);
 
         Assertions.assertEquals( "FooTest", data.trim(), "no rename" );
         Collection< String > refs = m_engine.getReferenceManager().findReferrers("TestPage");
@@ -158,7 +158,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "TestPage", "FooTest", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION);
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION);
 
         Assertions.assertEquals( "[FooTest#heading1]", data.trim(), "no rename" );
         Collection< String > refs = m_engine.getReferenceManager().findReferrers("TestPage");
@@ -183,7 +183,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "TestPage", "FooTest", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION);
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION);
 
         Assertions.assertEquals( "[FooTest] [FooTest] [linktext|FooTest] FooTest [linktext|FooTest] [FooTest#Anchor] [FooTest] FooTest [FooTest]",
                                  data.trim(), 
@@ -211,7 +211,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "Test", "TestPage", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION );
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION );
 
         Assertions.assertEquals( "[TestPage] [TestPage#anchor] test Test [TestPage] [link|TestPage] [link|TestPage]", data.trim(), "wrong data" );
     }
@@ -231,7 +231,7 @@ public class PageRenamerTest
 
         m_engine.getPageRenamer().renamePage(context, "TestPage", "FooTest", true);
 
-        String data = m_engine.getPureText("TestPage2", WikiProvider.LATEST_VERSION);
+        String data = m_engine.getPageManager().getPureText("TestPage2", WikiProvider.LATEST_VERSION);
 
         Assertions.assertEquals( "[FooTest/foo.txt] [linktext|FooTest/bar.jpg]", data.trim(), "no rename" );
 
@@ -481,7 +481,7 @@ public class PageRenamerTest
 
         rename( "TestPageReferred", "TestPageReferredNew" );
 
-        String data = m_engine.getPureText( "TestPageReferring", WikiProvider.LATEST_VERSION );
+        String data = m_engine.getPageManager().getPureText( "TestPageReferring", WikiProvider.LATEST_VERSION );
         Assertions.assertEquals( "[Test Page Referred|TestPageReferredNew]", data.trim(), "page not renamed" );
 
         Collection< String > refs = m_engine.getReferenceManager().findReferrers( "TestPageReferred" );
@@ -502,7 +502,7 @@ public class PageRenamerTest
 
         rename( "Link one", "Link uno" );
 
-        String data = m_engine.getPureText( "RenameTest", WikiProvider.LATEST_VERSION );
+        String data = m_engine.getPageManager().getPureText( "RenameTest", WikiProvider.LATEST_VERSION );
         Assertions.assertEquals( "[link one|Link uno] [link two]", data.trim(), "page not renamed" );
 
         Collection< String > refs = m_engine.getReferenceManager().findReferrers( "Link one" );
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/render/RenderingManagerTest.java b/jspwiki-main/src/test/java/org/apache/wiki/render/RenderingManagerTest.java
index 06962d9..35e2948 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/render/RenderingManagerTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/render/RenderingManagerTest.java
@@ -59,7 +59,7 @@ public class RenderingManagerTest {
         for( int i = 0; i < 300; i++ )
         {
             WikiPage page = m_engine.getPageManager().getPage( "TestPage" );
-            String pagedata = m_engine.getPureText( page );
+            String pagedata = m_engine.getPageManager().getPureText( page );
 
             WikiContext context = new WikiContext( m_engine, page );
 
@@ -79,14 +79,11 @@ public class RenderingManagerTest {
         sw.reset();
         sw.start();
 
-        for( int i = 0; i < 300; i++ )
-        {
-            WikiPage page = m_engine.getPageManager().getPage( "TestPage" );
-            String pagedata = m_engine.getPureText( page );
-
-            WikiContext context = new WikiContext( m_engine, page );
-
-            String html = m_manager.getHTML( context, pagedata );
+        for( int i = 0; i < 300; i++ ) {
+            final WikiPage page = m_engine.getPageManager().getPage( "TestPage" );
+            final String pagedata = m_engine.getPageManager().getPureText( page );
+            final WikiContext context = new WikiContext( m_engine, page );
+            final String html = m_manager.getHTML( context, pagedata );
 
             Assertions.assertNotNull("cached got null response",html);
         }
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/stress/MassiveRepositoryTest.java b/jspwiki-main/src/test/java/org/apache/wiki/stress/MassiveRepositoryTest.java
index 08c65f0..0957019 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/stress/MassiveRepositoryTest.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/stress/MassiveRepositoryTest.java
@@ -134,7 +134,7 @@ public class MassiveRepositoryTest {
         {
             String page = getName( random.nextInt( numPages ) );
             
-            String content = engine.getPureText( page, WikiProvider.LATEST_VERSION );
+            String content = engine.getPageManager().getPureText( page, WikiProvider.LATEST_VERSION );
             
             content = TextUtil.replaceString( content, "X", "XX" );
             
diff --git a/jspwiki-main/src/test/java/org/apache/wiki/stress/StressTestVersioningProvider.java b/jspwiki-main/src/test/java/org/apache/wiki/stress/StressTestVersioningProvider.java
index 20ed0ac..dd81de0 100644
--- a/jspwiki-main/src/test/java/org/apache/wiki/stress/StressTestVersioningProvider.java
+++ b/jspwiki-main/src/test/java/org/apache/wiki/stress/StressTestVersioningProvider.java
@@ -106,7 +106,7 @@ public class StressTestVersioningProvider {
         mark.start();
 
         for( WikiPage page : pages ) {
-            String foo = engine.getPureText( page );
+            String foo = engine.getPageManager().getPureText( page );
             Assertions.assertNotNull( foo );
         }
         mark.stop();