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 2009/03/29 21:36:49 UTC

svn commit: r759761 - in /incubator/jspwiki/trunk: src/java/org/apache/wiki/ src/java/org/apache/wiki/content/ tests/etc/ tests/java/org/apache/wiki/ tests/java/org/apache/wiki/parser/ tests/java/org/apache/wiki/rss/ tests/java/stress/

Author: jalkanen
Date: Sun Mar 29 19:36:49 2009
New Revision: 759761

URL: http://svn.apache.org/viewvc?rev=759761&view=rev
Log:
Added some hacks to attempt to make Jackrabbit clean up properly upon shutdown (lock issue :-()

Generic unit test fixes so that they follow the actual function of the code now.

Modified:
    incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java
    incubator/jspwiki/trunk/src/java/org/apache/wiki/content/ContentManager.java
    incubator/jspwiki/trunk/tests/etc/jspwiki.properties.tmpl
    incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java
    incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java
    incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java
    incubator/jspwiki/trunk/tests/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java
    incubator/jspwiki/trunk/tests/java/org/apache/wiki/rss/RSSGeneratorTest.java
    incubator/jspwiki/trunk/tests/java/stress/MassiveRepositoryTest.java

Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/WikiEngine.java Sun Mar 29 19:36:49 2009
@@ -371,7 +371,15 @@
     public WikiEngine( Properties properties )
         throws WikiException
     {
-        initialize( properties );
+        try
+        {
+            initialize( properties );
+        }
+        catch( WikiException e )
+        {
+            shutdown();
+            throw e;
+        }
     }
 
     /**
@@ -422,6 +430,7 @@
             {
                 context.log( msg );
             }
+            shutdown();
             throw new WikiException( msg );
         }
     }
@@ -1566,9 +1575,9 @@
     public void shutdown()
     {
         fireEvent( WikiEngineEvent.SHUTDOWN );
-        m_filterManager.destroy();
+        if( m_filterManager != null ) m_filterManager.destroy();
         LoggerFactory.unRegisterAllLoggerMBeans();
-        m_contentManager.release();
+        if( m_contentManager != null ) m_contentManager.shutdown();
     }
 
     /**

Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/content/ContentManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/content/ContentManager.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/content/ContentManager.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/content/ContentManager.java Sun Mar 29 19:36:49 2009
@@ -20,6 +20,8 @@
  */
 package org.apache.wiki.content;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.security.Permission;
 import java.security.Principal;
 import java.util.*;
@@ -224,7 +226,7 @@
             {
                 try
                 {
-                    Class<Repository> jackrabbitRepo = (Class<Repository>) Class.forName( "org.apache.jackrabbit.TransientRepository" );
+                    Class<Repository> jackrabbitRepo = (Class<Repository>) Class.forName( "org.apache.jackrabbit.core.TransientRepository" );
                     m_repository = jackrabbitRepo.newInstance();
                 }
                 catch( ClassNotFoundException e1 )
@@ -306,7 +308,57 @@
     {
         m_sessionManager.releaseSession();
     }
+    
+    public void shutdown()
+    {
+        release();
         
+        //
+        //  If this is a Jackrabbit Repository, we'll call it's shutdown() method
+        //  to make sure it's really shut down.
+        //
+        try
+        {
+            Class jcrRepoClass = Class.forName( "org.apache.jackrabbit.core.JackrabbitRepository" );
+            if( m_repository.getClass().isAssignableFrom(jcrRepoClass) )
+            {
+                log.info( "Shutting down Jackrabbit repository..." );
+                Method m = jcrRepoClass.getMethod( "shutdown" );
+                
+                m.invoke( m_repository );
+            }
+        }
+        catch( ClassNotFoundException e )
+        {
+            // Fine.
+        }
+        catch( SecurityException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        catch( NoSuchMethodException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        catch( IllegalArgumentException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        catch( IllegalAccessException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        catch( InvocationTargetException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+    
     /**
      *  Returns the current JCR Session.  If there is no Session, a new
      *  one is created.
@@ -359,7 +411,7 @@
         
             QueryManager mgr = session.getWorkspace().getQueryManager();
             
-            Query q = mgr.createQuery( "/jcr:root/"+JCR_PAGES_NODE+"/"+((space != null) ? space : "")+"/*", Query.XPATH );
+            Query q = mgr.createQuery( "/jcr:root/"+JCR_PAGES_NODE+((space != null) ? ("/"+space) : "")+"/*", Query.XPATH );
             
             QueryResult qr = q.execute();
             
@@ -1037,7 +1089,7 @@
         
             Node nd = session.getRootNode().addNode( getJCRPath(path) );
             
-            nd.addMixin( "mix:versionable" );
+            //nd.addMixin( "mix:versionable" );
             nd.addMixin( "mix:referenceable" );
 
             JCRWikiPage page = new JCRWikiPage(m_engine, nd);
@@ -1304,8 +1356,11 @@
         public void releaseSession()
         {
             Session session = m_currentSession.get();
-            session.logout();
-            m_currentSession.set(null);            
+            if( session != null )
+            {
+                session.logout();
+                m_currentSession.set(null);
+            }
         }
         
         /**

Modified: incubator/jspwiki/trunk/tests/etc/jspwiki.properties.tmpl
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/etc/jspwiki.properties.tmpl?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/etc/jspwiki.properties.tmpl (original)
+++ incubator/jspwiki/trunk/tests/etc/jspwiki.properties.tmpl Sun Mar 29 19:36:49 2009
@@ -9,22 +9,18 @@
 #
 jspwiki.pageProvider = org.apache.wiki.providers.FileSystemProvider
 
-jspwiki.usePageCache = true
-#
-#  Determines where wiki files are kept.
-#
-jspwiki.fileSystemProvider.pageDir = @tests.pagedir@
 jspwiki.workDir = @tests.workdir@
 
 jspwiki.translatorReader.camelCaseLinks = true
 
+jspwiki.repository = priha
+
 jspwiki.breakTitleWithSpaces = true
 
 jspwiki.translatorReader.matchEnglishPlurals = true
 jspwiki.translatorReader.useOutlinkImage = false
 
 jspwiki.attachmentProvider = BasicAttachmentProvider
-jspwiki.basicAttachmentProvider.storageDir = @tests.pagedir@
 
 jspwiki.encoding = ISO-8859-1
 

Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/ReferenceManagerTest.java Sun Mar 29 19:36:49 2009
@@ -66,13 +66,6 @@
             File refmgrfile = new File( workDir, "refmgr.ser" );
             if( refmgrfile.exists() ) refmgrfile.delete();
         }
-
-        String fileDir = props.getProperty( AbstractFileProvider.PROP_PAGEDIR );
-        
-        if( fileDir != null )
-        {
-            TestEngine.deleteAll( new File(fileDir) );
-        }
         
         engine = new TestEngine(props);
 

Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/TestEngine.java Sun Mar 29 19:36:49 2009
@@ -21,6 +21,7 @@
 
 package org.apache.wiki;
 import java.io.*;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -187,7 +188,17 @@
         }
         catch( IOException e ) {} // Fine
     }
-
+    
+    public void emptyRepository() throws ProviderException
+    {
+        Collection<WikiPage> pages = getContentManager().getAllPages( null );
+        
+        for( WikiPage p : pages )
+        {
+            getContentManager().deletePage( p );
+        }
+    }
+    
     public static final InputStream findTestProperties()
     {
         return findTestProperties( "/jspwiki.properties" );

Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/WikiEngineTest.java Sun Mar 29 19:36:49 2009
@@ -69,17 +69,10 @@
         m_engine = new TestEngine(props);
     }
 
-    public void tearDown()
+    public void tearDown() throws Exception
     {
-        String files = props.getProperty( AbstractFileProvider.PROP_PAGEDIR );
-
-        if( files != null )
-        {
-            File f = new File( files );
-
-            TestEngine.deleteAll( f );
-        }
-
+        m_engine.emptyRepository();
+        
         TestEngine.emptyWorkDir();
         
         m_engine.shutdown();

Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/parser/JSPWikiMarkupParserTest.java Sun Mar 29 19:36:49 2009
@@ -65,12 +65,12 @@
 
         props.setProperty( "jspwiki.translatorReader.matchEnglishPlurals", "true" );
         testEngine = new TestEngine( props );
-        testEngine.deletePage( PAGE_NAME );
+        testEngine.emptyRepository();
     }
 
-    public void tearDown()
+    public void tearDown() throws Exception
     {
-        deleteCreatedPages();
+        testEngine.emptyRepository();
         
         testEngine.shutdown();
     }

Modified: incubator/jspwiki/trunk/tests/java/org/apache/wiki/rss/RSSGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/org/apache/wiki/rss/RSSGeneratorTest.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/org/apache/wiki/rss/RSSGeneratorTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/org/apache/wiki/rss/RSSGeneratorTest.java Sun Mar 29 19:36:49 2009
@@ -66,7 +66,7 @@
 
     protected void tearDown() throws Exception
     {
-        TestEngine.deleteAll( new File(props.getProperty( AbstractFileProvider.PROP_PAGEDIR )) );
+        m_testEngine.emptyRepository();
         
         m_testEngine.shutdown();
     }

Modified: incubator/jspwiki/trunk/tests/java/stress/MassiveRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/tests/java/stress/MassiveRepositoryTest.java?rev=759761&r1=759760&r2=759761&view=diff
==============================================================================
--- incubator/jspwiki/trunk/tests/java/stress/MassiveRepositoryTest.java (original)
+++ incubator/jspwiki/trunk/tests/java/stress/MassiveRepositoryTest.java Sun Mar 29 19:36:49 2009
@@ -46,27 +46,13 @@
         props.load( TestEngine.findTestProperties("/jspwiki_vers.properties") );
         props.setProperty( CachingProvider.PROP_CACHECAPACITY, "1000" );
 
-        
-        String files = props.getProperty( AbstractFileProvider.PROP_PAGEDIR );
-
-        // Remove file
-        File f = new File( files );
-
-        TestEngine.deleteAll(f);
-
         engine = new TestEngine(props);
     }
 
     protected void tearDown() throws Exception
     {
+        engine.emptyRepository();
         super.tearDown();
-        
-        String files = props.getProperty( AbstractFileProvider.PROP_PAGEDIR );
-
-        // Remove file
-        File f = new File( files );
-
-        TestEngine.deleteAll(f);
     }
 
     private String getName( int i )