Index: src/org/apache/wiki/plugin/PageViewPlugin.java
===================================================================
--- src/org/apache/wiki/plugin/PageViewPlugin.java	(revision 1416256)
+++ src/org/apache/wiki/plugin/PageViewPlugin.java	(working copy)
@@ -43,6 +43,7 @@
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiPageEvent;
+import org.apache.wiki.event.WikiPageRenameEvent;
 import org.apache.wiki.plugin.InitializablePlugin;
 import org.apache.wiki.plugin.PluginException;
 import org.apache.wiki.plugin.PluginManager;
@@ -289,6 +290,17 @@
                     handleShutdown();
                 }
             } 
+            else if( (event instanceof WikiPageRenameEvent) && (event.getType() == WikiPageRenameEvent.PAGE_RENAMED) )
+            {
+                 String oldPageName = ((WikiPageRenameEvent) event).getOldPageName();
+                 String newPageName = ((WikiPageRenameEvent) event).getNewPageName();
+                 m_storage.remove(oldPageName);
+                 Counter oldCounter = m_counters.get( oldPageName );
+                 m_counters.put( newPageName, oldCounter );
+                 m_storage.setProperty( newPageName, oldCounter.toString() );
+                 m_counters.remove(oldPageName);
+                 m_dirty = true;
+            }
             else if( (event instanceof WikiPageEvent) && (event.getType() == WikiPageEvent.PAGE_DELETED) )
             {
                  String pageName = ((WikiPageEvent) event).getPageName();
@@ -406,6 +418,13 @@
                     else if( PARAM_COUNT.equals( show ) )
                     {
                         // show page count
+                        if( counter == null )
+                        {
+                            counter = new Counter();
+                            m_counters.put( pagename, counter );
+                            m_storage.setProperty( pagename, counter.toString() );
+                            m_dirty = true;
+                        }
                         result = counter.toString();
 
                     }
Index: src/org/apache/wiki/event/WikiPageRenameEvent.java
===================================================================
--- src/org/apache/wiki/event/WikiPageRenameEvent.java	(revision 1416256)
+++ src/org/apache/wiki/event/WikiPageRenameEvent.java	(working copy)
@@ -86,7 +86,7 @@
      */
     public static boolean isValidType( int type )
     {
-        return type >= PAGE_LOCK && type <= PAGE_RENAMED;
+        return type == PAGE_RENAMED;
     }
 
 
Index: src/org/apache/wiki/WikiEngine.java
===================================================================
--- src/org/apache/wiki/WikiEngine.java	(revision 1416256)
+++ src/org/apache/wiki/WikiEngine.java	(working copy)
@@ -49,6 +49,7 @@
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiPageEvent;
+import org.apache.wiki.event.WikiPageRenameEvent;
 import org.apache.wiki.filters.FilterException;
 import org.apache.wiki.filters.FilterManager;
 import org.apache.wiki.i18n.InternationalizationManager;
@@ -2278,7 +2279,9 @@
                               boolean changeReferrers)
         throws WikiException
     {
-        return m_pageRenamer.renamePage(context, renameFrom, renameTo, changeReferrers);
+        String newPageName = m_pageRenamer.renamePage(context, renameFrom, renameTo, changeReferrers);
+        firePageRenameEvent(renameFrom, newPageName);
+        return newPageName;
     }
 
     /**
@@ -2425,6 +2428,19 @@
     }
 
     /**
+     * Fires a WikiPageRenameEvent to all registered listeners.
+     * @param oldName the former page name
+     * @param newName the new page name
+     */
+    protected final void firePageRenameEvent(String oldName, String newName )
+    {
+        if ( WikiEventManager.isListening(this) )
+        {
+            WikiEventManager.fireEvent(this,new WikiPageRenameEvent(this,oldName,newName));
+        }
+    }
+
+    /**
      * Adds an attribute to the engine for the duration of this engine.  The
      * value is not persisted.
      *

