testmarshallregistry.java

来自「jetspeed源代码」· Java 代码 · 共 545 行 · 第 1/2 页

JAVA
545
字号
/*
 * Copyright 2000-2001,2004 The Apache Software Foundation.
 * 
 * Licensed 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.services.registry;

import java.io.File;
import java.io.FileReader;

import java.util.Vector;
import java.util.Iterator;
import java.util.HashMap;
import java.util.Map;

// Junit imports
import junit.framework.Test;
import junit.framework.TestSuite;

//castor support
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.mapping.Mapping;
import org.xml.sax.InputSource;

// Jetspeed imports
import org.apache.jetspeed.test.JetspeedTestCase;
import org.apache.jetspeed.om.registry.CachedParameter;
import org.apache.jetspeed.om.registry.Category;
import org.apache.jetspeed.om.registry.ContentURL;
import org.apache.jetspeed.om.registry.MetaInfo;
import org.apache.jetspeed.om.registry.Parameter;
import org.apache.jetspeed.om.registry.PortletEntry;
import org.apache.jetspeed.om.registry.SecurityAccess;
import org.apache.jetspeed.om.registry.SecurityAllow;
import org.apache.jetspeed.om.registry.SecurityEntry;
import org.apache.jetspeed.om.SecurityReference;

// Turbine imports
import org.apache.turbine.util.TurbineConfig;
import org.apache.turbine.util.StringUtils;

/**
 * TestMarshallRegistry
 *
 * @author <a href="taylor@apache.org">David Sean Taylor</a>
 * @version $Id: TestMarshallRegistry.java,v 1.1 2004/04/07 22:02:42 jford Exp $
 */

public class TestMarshallRegistry extends JetspeedTestCase
{
    /**
     * Defines the testcase name for JUnit.
     *
     * @param name the testcase's name.
     */
    public TestMarshallRegistry(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[] { TestMarshallRegistry.class.getName() });
    }

    public void setup()
    {
        System.out.println("Setup: Testing marshalling of Registry");
     }

    /**
     * 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(TestMarshallRegistry.class);
    }

    private String getMappingFileName()
    {
        return "webapp/WEB-INF/conf/registry.xml";
    }

    /**
     * Tests unmarshaling registry fragment
     * @throws Exception
     */
    public void testUnmarshallRegistry() throws Exception
    {
        System.out.println("Testing marshalling of Registry");

        String xregFile = "webapp/WEB-INF/psml/test/testcase-2.xreg";

        Mapping mapping = null;
        String mapFile = getMappingFileName();
        File map = new File(mapFile);
        if (map.exists() && map.isFile() && map.canRead())
        {
            try
            {
                FileReader reader = new FileReader(xregFile);
                mapping = new Mapping();
                InputSource is = new InputSource(new FileReader(map));
                is.setSystemId(mapFile);
                mapping.loadMapping(is);
                Unmarshaller unmarshaller = new Unmarshaller(mapping);
                RegistryFragment fragment = (RegistryFragment) unmarshaller.unmarshal(reader);
                assertNotNull(fragment);
                Vector portlets = fragment.getPortlets();

                // test abstract

                PortletEntry rss = (PortletEntry) portlets.elementAt(1);
                assertNotNull(rss);
                assertTrue(rss.getName().equals("RSS"));
                assertTrue(!rss.isHidden());
                assertTrue(rss.getType().equals("abstract"));
                assertNull(rss.getParent());
                assertTrue(!rss.isApplication());
                assertTrue(rss.getClassname().equals("org.apache.jetspeed.portal.portlets.NewRSSPortlet"));
                // params
                Iterator it = rss.getParameterNames();
                HashMap mapParams = new HashMap();
                while (it.hasNext())
                {
                    String name = (String) it.next();
                    Parameter p = rss.getParameter(name);
                    assertNotNull(p);
                    //System.out.println("PARAM:" + p.getName() + " = " + p.getValue());
                    mapParams.put(p.getName(), p);
                }
                assertTrue(mapParams.containsKey("showtitle"));
                assertTrue(mapParams.containsKey("stylesheet"));
                assertTrue(mapParams.containsKey("itemdisplayed"));

                // test ref
                PortletEntry hack = (PortletEntry) portlets.elementAt(2);
                assertNotNull(hack);
                assertTrue(hack.getName().equals("XMLHack"));
                assertTrue(hack.isHidden());
                assertTrue(hack.getType().equals("ref"));
                assertTrue(hack.getParent().equals("RSS"));
                assertTrue(!hack.isApplication());
                assertTrue(hack.getTitle().equals("XMLHack Title"));
                assertTrue(hack.getDescription().equals("XMLHack Description"));
                assertTrue(hack.getMetaInfo().getTitle().equals("XMLHack Title"));
                assertTrue(hack.getMetaInfo().getDescription().equals("XMLHack Description"));
                assertTrue(hack.getClassname().equals("org.apache.jetspeed.portal.portlets.NewRSSPortlet"));

                mapParams.clear();
                it = hack.getParameterNames();
                while (it.hasNext())
                {
                    String name = (String) it.next();
                    Parameter p = hack.getParameter(name);
                    assertNotNull(p);
                    //System.out.println("HACK PARAM:" + p.getName() + " = " + p.getValue());
                    mapParams.put(p.getName(), p);
                }
                assertTrue(mapParams.containsKey("showtitle"));
                assertTrue(mapParams.containsKey("stylesheet"));
                assertTrue(mapParams.containsKey("itemdisplayed"));
                assertTrue(mapParams.containsKey("HACK"));
                Parameter p = (Parameter) mapParams.get("HACK");
                assertTrue(p.getValue().equals("hacker"));
                Parameter p2 = (Parameter) mapParams.get("showtitle");
                MetaInfo p2m = p2.getMetaInfo();
                assertTrue(p2m.getTitle().equals("Show title description ?"));
                assertTrue(p2.getTitle().equals("Show title description ?"));
                Map pMap = hack.getParameterMap();
                String v15 = (String) pMap.get("itemdisplayed");
                assertTrue(v15.equals("15"));

                // test falling back on meta info

                PortletEntry mp = (PortletEntry) portlets.elementAt(5);
                assertNotNull(mp);
                assertTrue(mp.getName().equals("MetaTest"));
                assertTrue(mp.getType().equals("ref"));
                assertTrue(mp.getParent().equals("AdminScreen"));
                assertTrue(mp.getClassname().equals("org.apache.jetspeed.portal.portlets.TurbineScreenPortlet"));
                String title = mp.getTitle();
                assertNotNull(title);
                assertTrue(title.equals("Turbine Screen in a portlet"));
                assertTrue(mp.getDescription().equals("We put the Admin Screen in a portlet."));
                MetaInfo meta = mp.getMetaInfo();
                assertNotNull(meta);
                assertTrue(mp.getMetaInfo().getTitle().equals("Turbine Screen in a portlet"));
                assertTrue(meta.getDescription().equals("We put the Admin Screen in a portlet."));

                // media type
                Iterator mpi = mp.listMediaTypes();
                assertNotNull(mpi);
                HashMap mpMap = new HashMap();
                while (mpi.hasNext())
                {
                    String s = (String) mpi.next();
                    mpMap.put(s, s);
                }
                assertTrue(mpMap.containsKey("html"));
                assertTrue(mpMap.containsKey("wml"));
                assertTrue(mpMap.containsKey("xml"));
                assertTrue(mp.hasMediaType("wml"));

                PortletEntry mt = (PortletEntry) portlets.elementAt(6);
                assertNotNull(mt);
                assertTrue(mt.getName().equals("NoMediaType"));
                assertTrue(mt.getType().equals("ref"));
                Iterator mti = mt.listMediaTypes();
                assertNotNull(mti);
                assertTrue(mti.hasNext());
                String s = (String) mti.next();
                assertTrue(s.equals("html"));

                assertTrue(hack.getURL().equals("http://www.xmlhack.com/rss.php"));
                assertTrue(hack.isCachedOnURL());

                PortletEntry keytest = (PortletEntry) portlets.elementAt(7);
                assertNotNull(keytest);
                assertTrue(keytest.getName().equals("KeyTest"));
                assertTrue(keytest.getType().equals("ref"));
                it = keytest.getParameterNames();
                mpMap.clear();
                while (it.hasNext())
                {
                    String name = (String) it.next();
                    CachedParameter cp = keytest.getCachedParameter(name);
                    mpMap.put(cp.getName(), cp);
                    //System.out.println("param = " + cp.getName() + "," + cp.getValue());
                    //System.out.println("keys = " + cp.isCachedOnName() + "," + cp.isCachedOnValue());

                }
                assertTrue(keytest.isCachedOnURL() == false);
                CachedParameter cp = (CachedParameter) mpMap.get("newsid");
                assertNotNull(cp);
                assertTrue(cp.isCachedOnName() == false);
                assertTrue(cp.isCachedOnValue() == true);
                cp = (CachedParameter) mpMap.get("sportsid");
                assertNotNull(cp);
                assertTrue(cp.isCachedOnName() == true);
                assertTrue(cp.isCachedOnValue() == false);
                cp = (CachedParameter) mpMap.get("contact2");
                assertNotNull(cp);
                assertTrue(cp.isCachedOnName() == true);
                assertTrue(cp.isCachedOnValue() == true);
                cp = (CachedParameter) mpMap.get("showtitle");
                assertNotNull(cp);
                assertTrue(cp.isCachedOnName() == true);
                assertTrue(cp.isCachedOnValue() == true);

                // categories
                PortletEntry feeder = (PortletEntry) portlets.elementAt(3);
                assertNotNull(feeder);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?