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 2017/12/16 19:03:44 UTC
[jspwiki] 03/04: JSPWIKI-1064 - Link to non-existing page doesn't
change if linked page is created
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 f13a30804bd9ba88a9565c0947f1b3c968867a19
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Dec 16 20:02:45 2017 +0100
JSPWIKI-1064 - Link to non-existing page doesn't change if linked page is created
---
.../org/apache/wiki/render/RenderingManager.java | 75 ++++++++++++----------
1 file changed, 40 insertions(+), 35 deletions(-)
diff --git a/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java b/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
index 466961a..a8dd7fd 100644
--- a/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
+++ b/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.StringReader;
import java.lang.reflect.Constructor;
import java.util.Collection;
-import java.util.Iterator;
import java.util.Properties;
import org.apache.log4j.Logger;
@@ -38,6 +37,7 @@ import org.apache.wiki.modules.InternalModule;
import org.apache.wiki.parser.JSPWikiMarkupParser;
import org.apache.wiki.parser.MarkupParser;
import org.apache.wiki.parser.WikiDocument;
+import org.apache.wiki.providers.WikiPageProvider;
import org.apache.wiki.util.ClassUtil;
import net.sf.ehcache.Cache;
@@ -173,7 +173,7 @@ public class RenderingManager implements WikiEventListener, InternalModule
}
/**
- * Returns the default Paxt
+ * Returns the wiki Parser
* @param pagedata the page data
* @return A MarkupParser instance.
*/
@@ -195,46 +195,49 @@ public class RenderingManager implements WikiEventListener, InternalModule
* @throws IOException If rendering cannot be accomplished
*/
// FIXME: The cache management policy is not very good: deleted/changed pages should be detected better.
- protected WikiDocument getRenderedDocument(WikiContext context, String pagedata) throws IOException {
+ protected WikiDocument getRenderedDocument( WikiContext context, String pagedata ) throws IOException {
String pageid = context.getRealPage().getName() + VERSION_DELIMITER + context.getRealPage().getVersion();
- if (m_useCache) {
- Element element = m_documentCache.get(pageid);
- if (element != null) {
+ if( useCache( context ) ) {
+ Element element = m_documentCache.get( pageid );
+ if ( element != null ) {
WikiDocument doc = (WikiDocument) element.getObjectValue();
//
// This check is needed in case the different filters have actually changed the page data.
// FIXME: Figure out a faster method
- if (pagedata.equals(doc.getPageData())) {
- if (log.isDebugEnabled()) log.debug("Using cached HTML for page " + pageid);
+ if( pagedata.equals( doc.getPageData() ) ) {
+ if( log.isDebugEnabled() ) {
+ log.debug( "Using cached HTML for page " + pageid );
+ }
return doc;
}
- } else {
- if (log.isDebugEnabled()) log.debug("Re-rendering and storing " + pageid);
+ } else if( log.isDebugEnabled() ) {
+ log.debug( "Re-rendering and storing " + pageid );
}
}
- //
+
// Refresh the data content
//
- try
- {
+ try {
MarkupParser parser = getParser( context, pagedata );
WikiDocument doc = parser.parse();
doc.setPageData( pagedata );
- if (m_useCache) {
- m_documentCache.put(new Element(pageid, doc));
+ if( useCache( context ) ) {
+ m_documentCache.put( new Element( pageid, doc ) );
}
return doc;
- }
- catch( IOException ex )
- {
- log.error("Unable to parse",ex);
+ } catch( IOException ex ) {
+ log.error( "Unable to parse", ex );
}
return null;
}
+ boolean useCache( WikiContext context ) {
+ return m_useCache && WikiContext.VIEW.equals( context.getRequestContext() );
+ }
+
/**
* Simply renders a WikiDocument to a String. This version does not get the document
* from the cache - in fact, it does not cache the document at all. This is
@@ -335,30 +338,32 @@ public class RenderingManager implements WikiEventListener, InternalModule
}
/**
- * Flushes the document cache in response to a POST_SAVE_BEGIN event.
+ * {@inheritDoc}
+ *
+ * <p>Flushes the document cache in response to a POST_SAVE_BEGIN event.
*
* @see org.apache.wiki.event.WikiEventListener#actionPerformed(org.apache.wiki.event.WikiEvent)
- * @param event {@inheritDoc}
*/
@Override
- public void actionPerformed(WikiEvent event) {
- if (m_useCache) {
- if ((event instanceof WikiPageEvent) && (event.getType() == WikiPageEvent.POST_SAVE_BEGIN)) {
- if (m_documentCache != null) {
- String pageName = ((WikiPageEvent) event).getPageName();
- m_documentCache.remove(pageName);
- Collection<String> referringPages = m_engine.getReferenceManager().findReferrers(pageName);
+ public void actionPerformed( WikiEvent event ) {
+ log.debug( "event received: " + event.toString() );
+ if( m_useCache ) {
+ if( ( event instanceof WikiPageEvent ) && ( event.getType() == WikiPageEvent.POST_SAVE_BEGIN ) ) {
+ if( m_documentCache != null ) {
+ String pageName = ( ( WikiPageEvent ) event ).getPageName();
+ m_documentCache.remove( pageName );
+ Collection< String > referringPages = m_engine.getReferenceManager().findReferrers( pageName );
//
// Flush also those pages that refer to this page (if an nonexistent page
- // appears; we need to flush the HTML that refers to the now-existent page
+ // appears, we need to flush the HTML that refers to the now-existent page)
//
- if (referringPages != null) {
- Iterator<String> i = referringPages.iterator();
- while (i.hasNext()) {
- String page = i.next();
- if (log.isDebugEnabled()) log.debug("Flushing " + page);
- m_documentCache.remove(page);
+ if( referringPages != null ) {
+ for( String page : referringPages ) {
+ if( log.isDebugEnabled() ) {
+ log.debug( "Flushing latest version of " + page );
+ }
+ m_documentCache.remove( page + VERSION_DELIMITER + WikiPageProvider.LATEST_VERSION );
}
}
}
--
To stop receiving notification emails like this one, please contact
"commits@jspwiki.apache.org" <co...@jspwiki.apache.org>.