Package org.apache.jetspeed.page.document.psml

Source Code of org.apache.jetspeed.page.document.psml.TestCastorFileSystemDocumentHandler

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.page.document.psml;

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

import junit.framework.Test;
import junit.framework.TestSuite;

import net.sf.ehcache.CacheManager;

import org.apache.jetspeed.om.page.Document;
import org.apache.jetspeed.om.folder.psml.FolderMetaDataImpl;
import org.apache.jetspeed.page.document.DocumentHandlerFactory;
import org.apache.jetspeed.page.document.psml.DocumentHandlerFactoryImpl;
import org.apache.jetspeed.test.JetspeedTestCase;
import org.apache.jetspeed.cache.file.FileCache;
import org.apache.jetspeed.cache.impl.EhCacheImpl;

/**
* <p>
* TestCastorFileSystemDocumentHandler
* </p>
* <p>
*
* </p>
*
* @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
* @version $Id$
*/
public class TestCastorFileSystemDocumentHandler extends JetspeedTestCase
{
    protected FileCache cache;
    protected CastorFileSystemDocumentHandler folderMetaDataDocumentHandler;

    /*
     * (non-Javadoc)
     *
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception
    {
        super.setUp();

        cache = new FileCache(new EhCacheImpl(CacheManager.getInstance().getEhcache("pageFileCache")), 10);
       
        folderMetaDataDocumentHandler = new CastorFileSystemDocumentHandler(
            "/JETSPEED-INF/castor/page-mapping.xml",
            "folder.metadata",
            FolderMetaDataImpl.class,
            getBaseDir()+"src/test/testdata/pages",
            cache);
           
        Map handlerMap = new HashMap();
        handlerMap.put("folder.metadata", folderMetaDataDocumentHandler);
        DocumentHandlerFactory handlerFactory = new DocumentHandlerFactoryImpl(handlerMap);
        folderMetaDataDocumentHandler.setHandlerFactory(handlerFactory);
    }

    /*
     * (non-Javadoc)
     *
     * @see junit.framework.TestCase#tearDown
     */
    protected void tearDown() throws Exception
    {
        super.tearDown();

        cache.evictAll();
        folderMetaDataDocumentHandler.shutdown();
    }

    /**
     * Defines the testcase name for JUnit.
     *
     * @param name
     *            the testcase's name.
     */
    public TestCastorFileSystemDocumentHandler( String name )
    {
        super(name);
    }

    /**
     * Start the tests.
     *
     * @param args
     *            the arguments. Not used
     */
    public static void main( String args[] )
    {
        junit.awtui.TestRunner.main(new String[]{TestCastorFileSystemDocumentHandler.class.getName()});
    }

    /**
     * Creates the test suite.
     *
     * @return a test suite (<code>TestSuite</code>) that includes all
     *         methods starting with "test"
     */
    public static Test suite()
    {
        // All methods starting with "test" will be executed in the test suite.
        return new TestSuite(TestCastorFileSystemDocumentHandler.class);
    }
   
    public void testFolderMetaData() throws Exception
    {
        Document doc = folderMetaDataDocumentHandler.getDocument("/folder1/folder.metadata", false);
        assertNotNull(doc);
        String title = doc.getTitle();
        assertEquals("Default Title for Folder 1", title);
    }

    public void testFolderMetaDataInParallel() throws Exception
    {
        Thread [] threads = new Thread[10];
        int i;
        final List exceptions = new ArrayList(10);
       
        for (i = 0; i < threads.length; i++)
        {
            threads[i] = new Thread(new Runnable()
                {
                    public void run()
                    {
                        try
                        {
                            Document doc = folderMetaDataDocumentHandler.getDocument("/folder1/folder.metadata", false);
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace(System.out);
                            exceptions.add(e);
                        }
                    }
                });
        }
       
        for (i = 0; i < threads.length; i++)
        {
            threads[i].start();
        }
       
        for (i = 0; i < threads.length; i++)
        {
            threads[i].join();
        }
       
        assertTrue("folderMetaDataDocumentHandler.getDocument() is not thread-safe!", exceptions.size() == 0);
    }

}
TOP

Related Classes of org.apache.jetspeed.page.document.psml.TestCastorFileSystemDocumentHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.