You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ja...@apache.org on 2008/09/18 00:01:35 UTC

svn commit: r696486 - in /incubator/jspwiki/trunk: ./ src/com/ecyrd/jspwiki/ src/com/ecyrd/jspwiki/content/ tests/com/ecyrd/jspwiki/ tests/com/ecyrd/jspwiki/content/

Author: jalkanen
Date: Wed Sep 17 15:01:34 2008
New Revision: 696486

URL: http://svn.apache.org/viewvc?rev=696486&view=rev
Log:
Fixed the failing unit tests for PageRenamer.  The problem was caused by the wrong order in the renaming; the attachments were asked for *after* the page had been moved, so the references were never ok.

Also, self-references were not counted by ReferenceManager.  This was probably some old leftover code; so added a new test and modified some old ones to make sure everything is accounted for.

Modified:
    incubator/jspwiki/trunk/ChangeLog
    incubator/jspwiki/trunk/ReleaseNotes
    incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/ReferenceManager.java
    incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/Release.java
    incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/content/PageRenamer.java
    incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java
    incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/TestEngine.java
    incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java

Modified: incubator/jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ChangeLog (original)
+++ incubator/jspwiki/trunk/ChangeLog Wed Sep 17 15:01:34 2008
@@ -1,3 +1,9 @@
+2008-09-18  Janne Jalkanen <ja...@apache.org>
+
+        * 2.8.0-beta-2
+        
+        * Fixed the failing unit tests for PageRenamer.
+        
 2008-09-05  Janne Jalkanen <ja...@apache.org>
 
         * 2.8.0-beta-1

Modified: incubator/jspwiki/trunk/ReleaseNotes
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ReleaseNotes?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ReleaseNotes (original)
+++ incubator/jspwiki/trunk/ReleaseNotes Wed Sep 17 15:01:34 2008
@@ -19,7 +19,8 @@
 * Simplified Chinese, Dutch and Italian localizations added!
 
 * There is no more need for JAAS files!  Hooray!  This has
-  been replaced with custom jspwiki properties.
+  been replaced with custom jspwiki properties.  Please see
+  the UPGRADING document.
 
 * Massive improvements to the default template, like
   section editing.
@@ -31,6 +32,12 @@
 
 * German language corepages
 
+* Support for the UniversalEditButton (http://universaleditbutton.org/).
+
+* Password hashes are now salted.  This means you can't share the passwords
+  if you have JSPWiki 2.6 instances, as the passwords are upgraded
+  transparently.
+
 The full log of any issues fixed can be found at:
 
 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310732&styleName=Html&version=12312864
@@ -61,15 +68,14 @@
   authentication/permissions scheme.  Therefore, if you have very
   sensitive data in your wiki, you might not want to enable it.
 
-* Not all old plugins work.  Specifically, plugins from 2.2, which
-  1) use com.ecyrd.jspwiki package, will fail because they are not
-     signed with the same key as jspwiki.jar, and
-  2) any plugin, which constructs new WikiPages will fail because
-     of the constructor has been changed.
+* Not all old plugins work.  Specifically any plugins, which construct 
+  new WikiPages will fail because of the constructor has been changed.
+
+* The PageFilter API was changed in 2.6
 
 * Our documentation simply sucks at this point.  Please forgive us,
   and point where those fixes are needed.  We will improve upon
-  this during our progress towards a stable.
+  based your input.
 
 * The ShortURLConstructor does not work reliably.  Please use
   ShortViewURLConstructor, or Apache mod_rewrite.

Modified: incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/ReferenceManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/ReferenceManager.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/ReferenceManager.java (original)
+++ incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/ReferenceManager.java Wed Sep 17 15:01:34 2008
@@ -843,11 +843,12 @@
     private void updateReferredBy( String page, String referrer )
     {
         // We're not really interested in first level self-references.
+        /*
         if( page.equals( referrer ) )
         {
             return;
         }
-
+        */
         // Neither are we interested if plural forms refer to each other.
         if( m_matchEnglishPlurals )
         {

Modified: incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/Release.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/Release.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/Release.java (original)
+++ incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/Release.java Wed Sep 17 15:01:34 2008
@@ -77,7 +77,7 @@
      *  <p>
      *  If the build identifier is empty, it is not added.
      */
-    public static final String     BUILD         = "1";
+    public static final String     BUILD         = "2";
     
     /**
      *  This is the generic version string you should use

Modified: incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/content/PageRenamer.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/content/PageRenamer.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/content/PageRenamer.java (original)
+++ incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/content/PageRenamer.java Wed Sep 17 15:01:34 2008
@@ -112,7 +112,9 @@
         m_camelCase = TextUtil.getBooleanProperty( engine.getWikiProperties(), 
                                                    JSPWikiMarkupParser.PROP_CAMELCASELINKS, 
                                                    m_camelCase );
-        
+
+        Set<String> referrers = getReferencesToChange( fromPage, engine );
+
         //
         //  Do the actual rename by changing from the frompage to the topage, including
         //  all of the attachments
@@ -138,7 +140,7 @@
         toPage.setAuthor( context.getCurrentUser().getName() );
         
         engine.getPageManager().putPageText( toPage, engine.getPureText( toPage ) );
-        
+
         //
         //  Update the references
         //
@@ -147,11 +149,11 @@
         engine.updateReferences( toPage );
 
         //
-        //  Update referrers first
+        //  Update referrers
         //
         if( changeReferrers )
         {
-            updateReferrers( context, fromPage, toPage );
+            updateReferrers( context, fromPage, toPage, referrers );
         }
 
 
@@ -170,36 +172,21 @@
      *  @param toPage The new page
      */
     @SuppressWarnings("unchecked")
-    private void updateReferrers( WikiContext context, WikiPage fromPage, WikiPage toPage )
+    private void updateReferrers( WikiContext context, WikiPage fromPage, WikiPage toPage, Set<String>referrers )
     {
         WikiEngine engine = context.getEngine();
-        Set<String> referrers = new TreeSet<String>();
-        
-        Collection<String> r = engine.getReferenceManager().findReferrers( fromPage.getName() );
-        if( r != null ) referrers.addAll( r );
-        
-        try
-        {
-            Collection<Attachment> attachments = engine.getAttachmentManager().listAttachments( fromPage );
-
-            for( Attachment att : attachments  )
-            {
-                Collection<String> c = engine.getReferenceManager().findReferrers(att.getName());
-
-                if( c != null ) referrers.addAll(c);
-            }
-        }
-        catch( ProviderException e )
-        {
-            // We will continue despite this error
-            log.error( "Provider error while fetching attachments for rename", e );
-        }
-
         
         if( referrers.isEmpty() ) return; // No referrers
         
         for( String pageName : referrers )
         {
+            //  In case the page was just changed from under us, let's do this
+            //  small kludge.
+            if( pageName.equals( fromPage.getName() ) )
+            {
+                pageName = toPage.getName();
+            }
+            
             WikiPage p = engine.getPage( pageName );
             
             String sourceText = engine.getPureText( p );
@@ -231,6 +218,32 @@
         }
     }
 
+    private Set<String> getReferencesToChange( WikiPage fromPage, WikiEngine engine )
+    {
+        Set<String> referrers = new TreeSet<String>();
+        
+        Collection<String> r = engine.getReferenceManager().findReferrers( fromPage.getName() );
+        if( r != null ) referrers.addAll( r );
+        
+        try
+        {
+            Collection<Attachment> attachments = engine.getAttachmentManager().listAttachments( fromPage );
+
+            for( Attachment att : attachments  )
+            {
+                Collection<String> c = engine.getReferenceManager().findReferrers(att.getName());
+
+                if( c != null ) referrers.addAll(c);
+            }
+        }
+        catch( ProviderException e )
+        {
+            // We will continue despite this error
+            log.error( "Provider error while fetching attachments for rename", e );
+        }
+        return referrers;
+    }
+
     /**
      *  Replaces camelcase links.
      */
@@ -274,14 +287,19 @@
     {
         StringBuilder sb = new StringBuilder( sourceText.length()+32 );
         
+        //
+        //  This monstrosity just looks for a JSPWiki link pattern.  But it is pretty
+        //  cool for a regexp, isn't it?  If you can understand this in a single reading,
+        //  you have way too much time in your hands.
+        //
         Pattern linkPattern = Pattern.compile( "([\\[\\~]?)\\[([^\\|\\]]*)(\\|)?([^\\|\\]]*)(\\|)?([^\\|\\]]*)\\]" );
         
         Matcher matcher = linkPattern.matcher( sourceText );
         
         int start = 0;
         
-        //System.out.println("====");
-        //System.out.println("SRC="+sourceText.trim());
+        // System.out.println("====");
+        // System.out.println("SRC="+sourceText.trim());
         while( matcher.find(start) )
         {
             char charBefore = (char)-1;
@@ -308,7 +326,7 @@
             System.out.println("   text="+text);
             System.out.println("   link="+link);
             System.out.println("   attr="+attr);
-             */
+            */
             if( link.length() == 0 )
             {
                 text = replaceSingleLink( context, text, from, to );

Modified: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java Wed Sep 17 15:01:34 2008
@@ -148,14 +148,14 @@
         assertNull( "TestPage referrers", c );
 
         c = mgr.findReferrers( "Foobar" );
-        assertTrue( "Foobar referrers", c.size()==1 && ((String) c.iterator().next()).equals("TestPage") );
+        assertTrue( "Foobar referrers", c.size()==2  );
 
         c = mgr.findReferrers( "Foobar2" );
         assertTrue( "Foobar2 referrers", c.size()==1 && ((String) c.iterator().next()).equals("Foobar") );
 
         c = mgr.findReferrers( "Foobars" );
-        assertEquals( "Foobars referrers", 1, c.size() );
-        assertEquals( "Foobars referrer 'TestPage'", "TestPage", (String) c.iterator().next() );
+        assertEquals( "Foobars referrers", 2, c.size() );
+        //assertEquals( "Foobars referrer 'TestPage'", "TestPage", (String) c.iterator().next() );
     }
 
     public void testRefersTo()
@@ -202,8 +202,7 @@
         Iterator it = c.iterator();
         String s1 = (String)it.next();
         assertTrue( "Foobar referrers", 
-                    c.size()==1 && 
-                    s1.equals("TestPage") );
+                    c.size()==2 );
     }
 
 
@@ -227,8 +226,8 @@
     {
         engine.saveText( "Foobars", "qwertz" );
         Collection c = mgr.findReferrers( "Foobars" );
-        assertEquals( "Foobars referrers", 1, c.size() );
-        assertEquals( "Foobars referrer is not TestPage", "TestPage", ((String) c.iterator().next()) );
+        assertEquals( "Foobars referrers", 2, c.size() );
+        assertTrue( "Foobars referrer is not TestPage", c.contains( "TestPage" ) && c.contains("Foobar"));
     }
 
     public void testUpdateBothExist2()
@@ -238,13 +237,13 @@
         engine.saveText( "TestPage", "Reference to [Foobar], [Foobars]." );
         
         Collection c = mgr.findReferrers( "Foobars" );
-        assertEquals( "Foobars referrers count", 1, c.size() );
+        assertEquals( "Foobars referrers count", 2, c.size() );
 
         Iterator i = c.iterator();
         String first = (String) i.next();
 
         assertTrue( "Foobars referrers", 
-                    first.equals("TestPage") );
+                    c.contains("TestPage") && c.contains("Foobar"));
     }
 
     public void testCircularRefs()
@@ -334,6 +333,14 @@
 
     }
 
+    public void testSelf() throws WikiException
+    {
+        engine.saveText( "BugOne", "BugOne" );
+        Collection ref = mgr.findReferrers( "BugOne" );
+        assertEquals("wrong size",1,ref.size());
+        assertEquals("ref", "BugOne", ref.iterator().next());
+    }
+    
     public static Test suite()
     {
         return new TestSuite( ReferenceManagerTest.class );

Modified: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/TestEngine.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/TestEngine.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/TestEngine.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/TestEngine.java Wed Sep 17 15:01:34 2008
@@ -221,6 +221,8 @@
 
             if( f.exists() )
                 f.delete();
+            
+            deleteAttachments( name );
         }
         catch( Exception e )
         {
@@ -231,11 +233,14 @@
     /**
      *  Deletes all attachments related to the given page.
      */
-    public void deleteAttachments( String page )
+    public static void deleteAttachments( String page )
     {
+        Properties properties = new Properties();
+
         try
         {
-            String files = getWikiProperties().getProperty( BasicAttachmentProvider.PROP_STORAGEDIR );
+            properties.load( findTestProperties() );
+            String files = properties.getProperty( BasicAttachmentProvider.PROP_STORAGEDIR );
 
             File f = new File( files, TextUtil.urlEncodeUTF8( page ) + BasicAttachmentProvider.DIR_EXTENSION );
 

Modified: incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java?rev=696486&r1=696485&r2=696486&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java (original)
+++ incubator/jspwiki/trunk/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java Wed Sep 17 15:01:34 2008
@@ -40,6 +40,10 @@
         TestEngine.deleteTestPage("Cdauth");
         TestEngine.deleteTestPage("TestPageReferring");
         TestEngine.deleteTestPage("TestPageReferredNew");
+        TestEngine.deleteTestPage("Main");
+        TestEngine.deleteTestPage("Main8887");
+        TestEngine.deleteTestPage("TestPage1234");
+        TestEngine.deleteTestPage("TestPageReferred");
 
         TestEngine.emptyWorkDir();
     }