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/28 21:05:38 UTC

svn commit: r759566 - /incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java

Author: jalkanen
Date: Sat Mar 28 20:05:38 2009
New Revision: 759566

URL: http://svn.apache.org/viewvc?rev=759566&view=rev
Log:
Removed unused code.

Modified:
    incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java

Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java?rev=759566&r1=759565&r2=759566&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/providers/AbstractFileProvider.java Sat Mar 28 20:05:38 2009
@@ -20,21 +20,6 @@
  */
 package org.apache.wiki.providers;
 
-import java.io.*;
-import java.util.*;
-
-import org.apache.wiki.*;
-import org.apache.wiki.api.WikiPage;
-import org.apache.wiki.content.PageAlreadyExistsException;
-import org.apache.wiki.content.WikiName;
-import org.apache.wiki.log.Logger;
-import org.apache.wiki.log.LoggerFactory;
-import org.apache.wiki.search.QueryItem;
-import org.apache.wiki.search.SearchMatcher;
-import org.apache.wiki.search.SearchResult;
-import org.apache.wiki.search.SearchResultComparator;
-import org.apache.wiki.util.FileUtil;
-import org.apache.wiki.util.TextUtil;
 
 
 /**
@@ -50,15 +35,7 @@
  *
  */
 public abstract class AbstractFileProvider
-    implements WikiPageProvider
 {
-    private static final Logger   log = LoggerFactory.getLogger(AbstractFileProvider.class);
-    private String m_pageDirectory = "/tmp/";
-    
-    protected String m_encoding;
-    
-    protected WikiEngine m_engine;
-
     /**
      *  Name of the property that defines where page directories are.
      */
@@ -74,455 +51,4 @@
     /** The default encoding. */
     public static final String DEFAULT_ENCODING = "ISO-8859-1";
 
-    private boolean m_windowsHackNeeded = false;
-    
-    /**
-     *  {@inheritDoc}
-     *  @throws FileNotFoundException If the specified page directory does not exist.
-     *  @throws IOException In case the specified page directory is a file, not a directory.
-     */
-    public void initialize( WikiEngine engine, Properties properties )
-        throws NoRequiredPropertyException,
-               IOException, FileNotFoundException
-    {
-        log.debug("Initing FileSystemProvider");
-        m_pageDirectory = WikiEngine.getRequiredProperty( properties, PROP_PAGEDIR );
-
-        File f = new File(m_pageDirectory);
-
-        if( !f.exists() )
-        {
-            if( !f.mkdirs() )
-            {
-                throw new IOException( "Failed to create page directory " + f.getAbsolutePath() + " , please check property "
-                                       + PROP_PAGEDIR );
-            }
-        }
-        else
-        {
-            if( !f.isDirectory() )
-            {
-                throw new IOException( "Page directory is not a directory: " + f.getAbsolutePath() );
-            }
-            if( !f.canWrite() )
-            {
-                throw new IOException( "Page directory is not writable: " + f.getAbsolutePath() );
-            }
-        }
-        
-        m_engine = engine;
-
-        m_encoding = properties.getProperty( WikiEngine.PROP_ENCODING, 
-                                             DEFAULT_ENCODING );
-
-        String os = System.getProperty( "os.name" ).toLowerCase();
-        
-        if( os.startsWith("windows") || os.equals("nt") )
-        {
-            m_windowsHackNeeded = true;
-        }
-        
-        log.info( "Wikipages are read from '" + m_pageDirectory + "'" );
-    }
-
-
-    String getPageDirectory()
-    {
-        return m_pageDirectory;
-    }
-
-    private static final String[] WINDOWS_DEVICE_NAMES =
-    {
-        "con", "prn", "nul", "aux", "lpt1", "lpt2", "lpt3", "lpt4", "lpt5", "lpt6", "lpt7", "lpt8", "lpt9",
-        "com1", "com2", "com3", "com4", "com5", "com6", "com7", "com8", "com9"
-    };
-    
-    /**
-     *  This makes sure that the queried page name
-     *  is still readable by the file system.  For example, all XML entities
-     *  and slashes are encoded with the percent notation.
-     *  
-     *  @param pagename The name to mangle
-     *  @return The mangled name.
-     */
-    protected String mangleName( String pagename )
-    {
-        pagename = TextUtil.urlEncode( pagename, m_encoding );
-        
-        pagename = TextUtil.replaceString( pagename, "/", "%2F" );
-
-        //
-        //  Names which start with a dot must be escaped to prevent problems.
-        //  Since we use URL encoding, this is invisible in our unescaping.
-        //
-        if( pagename.startsWith( "." ) )
-        {
-            pagename = "%2E" + pagename.substring( 1 );
-        }
-        
-        if( m_windowsHackNeeded )
-        {
-            String pn = pagename.toLowerCase();
-            for( int i = 0; i < WINDOWS_DEVICE_NAMES.length; i++ )
-            {
-                if( WINDOWS_DEVICE_NAMES[i].equals(pn) )
-                {
-                    pagename = "$$$" + pagename;
-                }
-            }
-        }
-        
-        return pagename;
-    }
-
-    /**
-     *  This makes the reverse of mangleName.
-     *  
-     *  @param filename The filename to unmangle
-     *  @return The unmangled name.
-     */
-    protected String unmangleName( String filename )
-    {
-        // The exception should never happen.
-        try
-        {
-            if( m_windowsHackNeeded && filename.startsWith( "$$$") && filename.length() > 3 )
-            {
-                filename = filename.substring(3);
-            }
-            
-            return TextUtil.urlDecode( filename, m_encoding );
-        }
-        catch( UnsupportedEncodingException e ) 
-        {
-            throw new InternalWikiException("Faulty encoding; should never happen");
-        }
-    }
-    
-    /**
-     *  Finds a Wiki page from the page repository.
-     *  
-     *  @param page The name of the page.
-     *  @return A File to the page.  May be null.
-     */
-    protected File findPage( String page )
-    {
-        return new File( m_pageDirectory, mangleName(page)+FILE_EXT );
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public boolean pageExists( String page )
-    {
-        File pagefile = findPage( page );
-
-        return pagefile.exists();        
-    }
-
-    /**
-     *  This implementation just returns the current version, as filesystem
-     *  does not provide versioning information for now.
-     *  
-     *  @param page {@inheritDoc}
-     *  @param version {@inheritDoc}
-     *  @throws {@inheritDoc}
-     */
-    public String getPageText( String page, int version )
-        throws ProviderException
-    {
-        return getPageText( page );
-    }
-
-    /**
-     *  Read the text directly from the correct file.
-     */
-    private String getPageText( String page )
-    {
-        String result  = null;
-        InputStream in = null;
-
-        File pagedata = findPage( page );
-
-        if( pagedata.exists() )
-        {
-            if( pagedata.canRead() )
-            {
-                try
-                {          
-                    in = new FileInputStream( pagedata );
-                    result = FileUtil.readContents( in, m_encoding );
-                }
-                catch( IOException e )
-                {
-                    log.error("Failed to read", e);
-                }
-                finally
-                {
-                    try
-                    {
-                        if( in  != null ) in.close();
-                    }
-                    catch( Exception e ) 
-                    {
-                        log.error("Closing failed",e);
-                    }
-                }
-            }
-            else
-            {
-                log.warn("Failed to read page '"+page+"' from '"+pagedata.getAbsolutePath()+"', possibly a permissions problem");
-            }
-        }
-        else
-        {
-            // This is okay.
-            log.info("New page '"+page+"'");
-        }
-
-        return result;
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public void putPageText( WikiPage page, String text )        
-        throws ProviderException
-    {
-        File file = findPage( page.getName() );
-        PrintWriter out = null;
-
-        try
-        {
-            out = new PrintWriter(new OutputStreamWriter( new FileOutputStream( file ),
-                                                          m_encoding ));
-
-            out.print( text );
-        }
-        catch( IOException e )
-        {
-            log.error( "Saving failed" );
-        }
-        finally
-        {
-            if( out != null ) out.close();
-        }
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public Collection getAllPages()
-        throws ProviderException
-    {
-        log.debug("Getting all pages...");
-
-        ArrayList<WikiPage> set = new ArrayList<WikiPage>();
-
-        File wikipagedir = new File( m_pageDirectory );
-
-        File[] wikipages = wikipagedir.listFiles( new WikiFileFilter() );
-
-        if( wikipages == null )
-        {
-            log.error("Wikipages directory '" + m_pageDirectory + "' does not exist! Please check " + PROP_PAGEDIR + " in jspwiki.properties.");
-            throw new InternalWikiException("Page directory does not exist");
-        }
-
-        for( int i = 0; i < wikipages.length; i++ )
-        {
-            String wikiname = wikipages[i].getName();
-            int cutpoint = wikiname.lastIndexOf( FILE_EXT );
-
-            WikiPage page = getPageInfo( unmangleName(wikiname.substring(0,cutpoint)),
-                                         WikiPageProvider.LATEST_VERSION );
-            if( page == null )
-            {
-                // This should not really happen.
-                // FIXME: Should we throw an exception here?
-                log.error("Page "+wikiname+" was found in directory listing, but could not be located individually.");
-                continue;
-            }
-            
-            set.add( page );
-        }
-
-        return set;        
-    }
-
-    /**
-     *  Does not work.
-     *  
-     *  @param date {@inheritDoc}
-     *  @return {@inheritDoc}
-     */
-    public Collection getAllChangedSince( Date date )
-    {
-        return new ArrayList(); // FIXME
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public int getPageCount()
-    {
-        File wikipagedir = new File( m_pageDirectory );
-
-        File[] wikipages = wikipagedir.listFiles( new WikiFileFilter() );
-
-        return wikipages.length;
-    }
-
-    /**
-     * Iterates through all WikiPages, matches them against the given query,
-     * and returns a Collection of SearchResult objects.
-     * 
-     * @param query {@inheritDoc}
-     * @return {@inheritDoc}
-     */
-    public Collection findPages( QueryItem[] query )
-    {
-        File wikipagedir = new File( m_pageDirectory );
-        TreeSet<SearchResult> res = new TreeSet<SearchResult>( new SearchResultComparator() );
-        SearchMatcher matcher = new SearchMatcher( m_engine, query );
-
-        File[] wikipages = wikipagedir.listFiles( new WikiFileFilter() );
-
-        for( int i = 0; i < wikipages.length; i++ )
-        {
-            FileInputStream input = null;
-
-            // log.debug("Searching page "+wikipages[i].getPath() );
-
-            String filename = wikipages[i].getName();
-            int cutpoint    = filename.lastIndexOf( FILE_EXT );
-            String wikiname = filename.substring( 0, cutpoint );
-
-            wikiname = unmangleName( wikiname );
-
-            try
-            {
-                input = new FileInputStream( wikipages[i] );
-                String pagetext = FileUtil.readContents( input, m_encoding );
-                SearchResult comparison = matcher.matchPageContent( wikiname, pagetext );
-                if( comparison != null )
-                {
-                    res.add( comparison );
-                }
-            }
-            catch( IOException e )
-            {
-                log.error( "Failed to read " + filename, e );
-            }
-            finally
-            {
-                try
-                {
-                    if( input != null ) input.close();
-                }
-                catch( IOException e ) {} // It's fine to fail silently.
-            }
-        }
-
-        return res;
-    }
-
-    /**
-     *  Always returns the latest version, since FileSystemProvider
-     *  does not support versioning.
-     *  
-     *  @param page {@inheritDoc}
-     *  @param version {@inheritDoc}
-     *  @return {@inheritDoc}
-     *  @throws {@inheritDoc}
-     */
-    public WikiPage getPageInfo( String page, int version )
-        throws ProviderException
-    {
-        File file = findPage( page );
-
-        if( !file.exists() )
-        {
-            return null;
-        }
-
-        WikiPage p;
-        try
-        {
-            p = m_engine.createPage( WikiName.valueOf( page ) );
-        }
-        catch( PageAlreadyExistsException e )
-        {
-            throw new ProviderException( e.getMessage() );
-        }
-        p.setLastModified( new Date(file.lastModified()) );
-
-        return p;
-    }
-
-    /**
-     *  The FileSystemProvider provides only one version.
-     *  
-     *  @param page {@inheritDoc}
-     *  @throws {@inheritDoc}
-     *  @return {@inheritDoc}
-     */
-    public List getVersionHistory( String page )
-        throws ProviderException
-    {
-        ArrayList<WikiPage> list = new ArrayList<WikiPage>();
-
-        list.add( getPageInfo( page, WikiPageProvider.LATEST_VERSION ) );
-
-        return list;
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public String getProviderInfo()
-    {
-        return "";
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public void deleteVersion( String pageName, int version )
-        throws ProviderException
-    {
-        if( version == WikiProvider.LATEST_VERSION )
-        {
-            File f = findPage( pageName );
-
-            f.delete();
-        }
-    }
-
-    /**
-     *  {@inheritDoc}
-     */
-    public void deletePage( String pageName )
-        throws ProviderException
-    {
-        File f = findPage( pageName );
-
-        f.delete();
-    }
-
-    /**
-     *  A simple filter which filters only those filenames which correspond to the
-     *  file extension used.
-     */
-    public static class WikiFileFilter
-        implements FilenameFilter
-    {
-        /**
-         *  {@inheritDoc}
-         */
-        public boolean accept( File dir, String name )
-        {
-            return name.endsWith( FILE_EXT );
-        }
-    }
 }