You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by me...@apache.org on 2009/03/29 15:00:25 UTC
svn commit: r759675 - in /incubator/jspwiki/trunk: ./
src/java/org/apache/wiki/ src/java/org/apache/wiki/action/
src/java/org/apache/wiki/tags/
Author: metskem
Date: Sun Mar 29 13:00:24 2009
New Revision: 759675
URL: http://svn.apache.org/viewvc?rev=759675&view=rev
Log:
3.0.0-svn-89 JSPWIKI-487 don't show deleted and renamed pages in the breadcrumbs, reported by Bruno Peeters
Modified:
incubator/jspwiki/trunk/ChangeLog
incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/action/AbstractPageActionBean.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/action/DeleteActionBean.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RenameActionBean.java
incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/BreadcrumbsTag.java
Modified: incubator/jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ChangeLog (original)
+++ incubator/jspwiki/trunk/ChangeLog Sun Mar 29 13:00:24 2009
@@ -1,3 +1,10 @@
+2009-03-29 Harry Metske <me...@apache.org>
+
+ * 3.0.0-svn-89
+
+ * JSPWIKI-487 don't show deleted and renamed pages in the breadcrumbs
+ reported by Bruno Peeters
+
2009-03-28 Janne Jalkanen <ja...@apache.org>
* 3.0.0-svn-88
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java Sun Mar 29 13:00:24 2009
@@ -77,7 +77,7 @@
* <p>
* If the build identifier is empty, it is not added.
*/
- public static final String BUILD = "88";
+ public static final String BUILD = "89";
/**
* This is the generic version string you should use
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/AbstractPageActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/AbstractPageActionBean.java?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/AbstractPageActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/AbstractPageActionBean.java Sun Mar 29 13:00:24 2009
@@ -21,9 +21,13 @@
package org.apache.wiki.action;
+import javax.servlet.http.HttpSession;
+
import net.sourceforge.stripes.validation.Validate;
import org.apache.wiki.api.WikiPage;
+import org.apache.wiki.tags.BreadcrumbsTag;
+import org.apache.wiki.tags.BreadcrumbsTag.FixedQueue;
/**
* Abstract {@link WikiActionBean} subclass used by all ActionBeans that use and
@@ -68,4 +72,23 @@
getContext().setPage( page );
}
+ /**
+ * Removes the deleted page from the breadCrumb trail
+ *
+ * @param pageName the pageName to be removed from the breadcrumb
+ */
+ void deleteFromBreadCrumb( String pageName )
+ {
+ HttpSession session = getContext().getRequest().getSession( false );
+ if( session != null )
+ {
+ FixedQueue trail = (FixedQueue) session.getAttribute( BreadcrumbsTag.BREADCRUMBTRAIL_KEY );
+ if( trail != null )
+ {
+ trail.removeItem( pageName );
+ session.setAttribute( BreadcrumbsTag.BREADCRUMBTRAIL_KEY, trail );
+ }
+ }
+ }
+
}
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/DeleteActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/DeleteActionBean.java?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/DeleteActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/DeleteActionBean.java Sun Mar 29 13:00:24 2009
@@ -48,7 +48,7 @@
@UrlBinding( "/Delete.jsp" )
public class DeleteActionBean extends AbstractPageActionBean
{
- private Logger log = LoggerFactory.getLogger( DeleteActionBean.class );
+ private static final Logger log = LoggerFactory.getLogger( DeleteActionBean.class );
private int m_version = Integer.MIN_VALUE;
@@ -76,8 +76,9 @@
log.info( "Deleting page " + pageName + ". User=" + request.getRemoteUser() + ", host="
+ request.getRemoteAddr() );
engine.deletePage( pageName );
+
+ deleteFromBreadCrumb( pageName );
}
-
// Just delete a single version
else
{
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RenameActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RenameActionBean.java?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RenameActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RenameActionBean.java Sun Mar 29 13:00:24 2009
@@ -121,6 +121,8 @@
log.info( "Page rename request for page '" + renameFrom + "' to new name '" + m_renameTo + "' from "
+ request.getRemoteAddr() + " by " + request.getRemoteUser() );
String renamedTo = engine.renamePage( getContext(), renameFrom, m_renameTo, m_changeReferences );
+
+ deleteFromBreadCrumb( renameFrom );
log.info( "Page successfully renamed to '" + renamedTo + "'" );
return new RedirectResolution( ViewActionBean.class ).addParameter( "page", renamedTo );
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/BreadcrumbsTag.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/BreadcrumbsTag.java?rev=759675&r1=759674&r2=759675&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/BreadcrumbsTag.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/BreadcrumbsTag.java Sun Mar 29 13:00:24 2009
@@ -55,7 +55,9 @@
private static final long serialVersionUID = 0L;
private static final Logger log = LoggerFactory.getLogger(BreadcrumbsTag.class);
- private static final String BREADCRUMBTRAIL_KEY = "breadCrumbTrail";
+
+ /** The name of the session attribute representing the breadcrumbtrail */
+ public static final String BREADCRUMBTRAIL_KEY = "breadCrumbTrail";
private int m_maxQueueSize = 11;
private String m_separator = ", ";
@@ -113,37 +115,44 @@
/**
* {@inheritDoc}
*/
- @SuppressWarnings("unchecked")
@Override
public int doWikiStartTag() throws IOException
{
HttpSession session = pageContext.getSession();
- FixedQueue<String> trail = (FixedQueue<String>) session.getAttribute(BREADCRUMBTRAIL_KEY);
+ FixedQueue trail = (FixedQueue) session.getAttribute(BREADCRUMBTRAIL_KEY);
String page = m_wikiContext.getPage().getName();
if( trail == null )
{
- trail = new FixedQueue<String>(m_maxQueueSize);
+ trail = new FixedQueue(m_maxQueueSize);
}
if( m_wikiContext.getRequestContext().equals( WikiContext.VIEW ) )
{
- if( trail.isEmpty() )
+ if( m_wikiContext.getEngine().pageExists( page ) )
{
- trail.pushItem(page);
+ if( trail.isEmpty() )
+ {
+ trail.pushItem( page );
+ }
+ else
+ {
+ //
+ // Don't add the page to the queue if the page was just
+ // refreshed
+ //
+ if( !trail.getLast().equals( page ) )
+ {
+ trail.pushItem( page );
+ log.debug( "added page: " + page );
+ }
+ log.debug( "didn't add page because of refresh" );
+ }
}
else
{
- //
- // Don't add the page to the queue if the page was just refreshed
- //
- if( !trail.getLast().equals(page) )
- {
- trail.pushItem(page);
- log.debug("added page: " + page);
- }
- log.debug("didn't add page because of refresh");
+ log.debug( "didn't add page because it doesn't exist: " + page );
}
}
@@ -182,8 +191,8 @@
/**
* Extends the LinkedList class to provide a fixed-size queue implementation
*/
- public static class FixedQueue<T>
- extends LinkedList<T>
+ public static class FixedQueue
+ extends LinkedList<String>
implements Serializable
{
private int m_size;
@@ -194,16 +203,30 @@
m_size = size;
}
- T pushItem(T o)
+ String pushItem(String pageName)
{
- add(o);
+ add(pageName);
if( size() > m_size )
{
return removeFirst();
}
-
return null;
}
+
+ /**
+ * @param pageName the page to be deleted from the breadcrumb
+ */
+ public void removeItem( String pageName )
+ {
+ for( int i = 0; i < size(); i++ )
+ {
+ String page = get( i );
+ if( page != null && page.equals( pageName ) )
+ {
+ remove( page );
+ }
+ }
+ }
}
}