Package org.apache.pluto.container.impl

Source Code of org.apache.pluto.container.impl.JaxBDescriptorServiceImplTest

/*
* 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.pluto.container.impl;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import junit.framework.Assert;
import junit.framework.TestCase;

import org.apache.pluto.container.impl.PortletAppDescriptorServiceImpl;
import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
import org.apache.pluto.container.om.portlet.PortletDefinition;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
* Testclass for testing jaxb xml 2 java binding (portlet.xml)
* @author <a href="mailto:chrisra@cs.uni-jena.de">Christian Raschka</a>
*/
public class JaxBDescriptorServiceImplTest extends TestCase{
 
  private StringBuffer xmlBegin286 = new StringBuffer();
  private StringBuffer portlet286 = new StringBuffer();
  private StringBuffer attrs286 = new StringBuffer();
  private StringBuffer xmlEnd = new StringBuffer();
 
  private StringBuffer xmlBegin168 = new StringBuffer();
  private StringBuffer portlet168 = new StringBuffer();
  private StringBuffer attrs168 = new StringBuffer();

    private StringBuffer portlet286NoCache = new StringBuffer();
    private StringBuffer portlet168NoCache = new StringBuffer();
    private StringBuffer portletNoCache = new StringBuffer();

    PortletAppDescriptorServiceImpl jaxb = new PortletAppDescriptorServiceImpl();

  /**
   * @throws java.lang.Exception
   */
  @Before
  public void setUp() throws Exception {
    xmlBegin286.append("" +
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
        "<portlet-app id=\"id1\"\n" +
        "xmlns=\"http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd\"\n" +
        "version=\"2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
        "xmlns:portlet=\"http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd\"\n" +
        "xsi:schemaLocation=\"http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd\n" +
        "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd\">\n ");
    portlet286.append(""+
        "<portlet id=\"id2\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<portlet-name>portlet286</portlet-name>\n" +
        "<display-name xml:lang=\"de\">display-name</display-name>\n" +
        "<portlet-class>portlet-class</portlet-class>\n" +
        "<init-param id=\"init1\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<name>name</name>\n" +
        "<value>value</value>\n" +
        "</init-param>\n" +
        "<expiration-cache>100</expiration-cache>\n" +
        "<cache-scope>private</cache-scope>\n" +
        " <supports id=\"sup1\">\n" +
        "<mime-type>mime-type</mime-type>\n" +
        "<portlet-mode>portlet-mode</portlet-mode>\n" +
        "</supports>\n" +
        " <supports id=\"sup2\">\n" +
        "<mime-type>mime-type2</mime-type>\n" +
        "<portlet-mode>portlet-mode2</portlet-mode>\n" +
        "</supports>\n" +
        " <supports id=\"sup3\">\n" +
        "<mime-type>mime-type3</mime-type>\n" +
        "<portlet-mode>portlet-mode3</portlet-mode>\n" +
        "</supports>\n" +
        "<supported-locale>supported-locale</supported-locale>\n" +
        "<resource-bundle>resource-bundle</resource-bundle>\n" +
        "<portlet-info id=\"info1\">\n" +
        "<title>title</title>\n" +
        "<short-title>short-title</short-title>\n" +
        "<keywords>keywords</keywords>\n" +
        "</portlet-info>\n" +
        "<portlet-preferences id=\"prefs\">\n" +
        "<preference id=\"pref1\">\n" +
        "<name>name</name>\n" +
        "<value>value</value>\n" +
        "<read-only>true</read-only>\n" +
        "</preference>\n" +
        "<preferences-validator>preferences-validator</preferences-validator>\n" +
        "</portlet-preferences>\n" +
        "<security-role-ref id=\"sec1\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<role-name>NMTOKEN</role-name>\n" +
        "<role-link>role-link</role-link>\n" +
        "</security-role-ref>\n" +
        "<supported-processing-event><name>supported-processing-event</name></supported-processing-event>\n" +
        "<supported-publishing-event><qname xmlns:x=\"http://test.com\">supported-publishing-event</qname></supported-publishing-event>\n" +
        "<supported-public-render-parameter>supported-public-render-parameter</supported-public-render-parameter>\n" +
        "<container-runtime-option><name>Runtime-Option</name><value>true</value></container-runtime-option>\n" +
        "</portlet>\n" );
    attrs286.append("" +
        "<custom-portlet-mode id=\"mode1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<portlet-mode>portlet-mode</portlet-mode>\n" +
        "</custom-portlet-mode>\n" +
        "<custom-window-state id=\"state1\">\n" +
         "<description xml:lang=\"de\">description</description>\n" +
          "<window-state>window-state</window-state>\n" +
        "</custom-window-state>\n" +
        "<user-attribute id=\"att1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<name>name</name>\n" +
        "</user-attribute>\n" +
        "<security-constraint id=\"cons1\">\n" +
          "<display-name xml:lang=\"de\">display-name</display-name>\n" +
          "<portlet-collection>\n" +
           "<portlet-name>portlet-name</portlet-name>\n" +
         "</portlet-collection>\n" +
          "<user-data-constraint id=\"data1\">\n" +
            "<description xml:lang=\"de\">description</description>\n" +
            "<transport-guarantee>NONE</transport-guarantee>\n" +
          "</user-data-constraint>\n" +
        "</security-constraint>\n" +
        "<resource-bundle>resource-bundle</resource-bundle>\n" +
        "<filter>\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<display-name xml:lang=\"de\">display-name</display-name>\n" +
          "<filter-name>filter-name</filter-name>\n" +
          "<filter-class>filter-class</filter-class>\n" +
          "<lifecycle>lifecycle</lifecycle>\n" +
          "<init-param id=\"init2\">\n" +
            "<description xml:lang=\"de\">description</description>\n" +
            "<name>name</name>\n" +
            "<value>value</value>\n" +
          "</init-param>\n" +
        "</filter>\n" +
        "<filter-mapping>\n" +
          "<filter-name>filter-name</filter-name>\n" +
          "<portlet-name>portlet-name</portlet-name>\n" +        
        "</filter-mapping>\n" +
        "<event-definition id=\"event1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<name>QName</name>\n" +
          "<alias>QName</alias>\n" +
          "<value-type>java-class</value-type>\n" +
        "</event-definition>\n" +
        "<public-render-parameter id=\"public1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<identifier>identifier</identifier>\n" +
          "<qname>QName</qname>\n" +
        "</public-render-parameter>\n" +
        "<public-render-parameter id=\"public2\">\n" +
          "<description xml:lang=\"de\">description2</description>\n" +
          "<identifier>identifier2</identifier>\n" +
          "<name>Name</name>\n" +
        "</public-render-parameter>\n" +
        "<container-runtime-option><name>Runtime-Option-Portlet-App</name><value>false</value></container-runtime-option>\n" +
        "" );
    xmlEnd.append("" +
        "</portlet-app>" );
   
    // test old jsr 168 portlet.xml
    xmlBegin168.append("" +
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
        "<portlet-app id=\"id1\"\n" +
        "xmlns=\"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\"\n" +
        "version=\"1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
        "xmlns:portlet=\"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\"\n" +
        "xsi:schemaLocation=\"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\n" +
        "http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\">\n ");
    portlet168.append(""+
        "<portlet id=\"id2\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<portlet-name>portlet168</portlet-name>\n" +
        "<display-name xml:lang=\"de\">display-name</display-name>\n" +
        "<portlet-class>portlet-class</portlet-class>\n" +
        "<init-param id=\"init1\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<name>name</name>\n" +
        "<value>value</value>\n" +
        "</init-param>\n" +
        "<expiration-cache>50</expiration-cache>\n" +
        " <supports id=\"sup1\">\n" +
        "<mime-type>mime-type</mime-type>\n" +
        "<portlet-mode>portlet-mode</portlet-mode>\n" +
        "</supports>\n" +
        " <supports id=\"sup2\">\n" +
        "<mime-type>mime-type2</mime-type>\n" +
        "<portlet-mode>portlet-mode2</portlet-mode>\n" +
        "</supports>\n" +
        " <supports id=\"sup3\">\n" +
        "<mime-type>mime-type3</mime-type>\n" +
        "<portlet-mode>portlet-mode3</portlet-mode>\n" +
        "</supports>\n" +
        "<supported-locale>supported-locale</supported-locale>\n" +
        "<resource-bundle>resource-bundle</resource-bundle>\n" +
        "<portlet-info id=\"info1\">\n" +
        "<title>title</title>\n" +
        "<short-title>short-title</short-title>\n" +
        "<keywords>keywords</keywords>\n" +
        "</portlet-info>\n" +
        "<portlet-preferences id=\"prefs\">\n" +
        "<preference id=\"pref1\">\n" +
        "<name>name</name>\n" +
        "<value>value</value>\n" +
        "<read-only>true</read-only>\n" +
        "</preference>\n" +
        "<preferences-validator>preferences-validator</preferences-validator>\n" +
        "</portlet-preferences>\n" +
        "<security-role-ref id=\"sec1\">\n" +
        "<description xml:lang=\"de\">description</description>\n" +
        "<role-name>NMTOKEN</role-name>\n" +
        "<role-link>role-link</role-link>\n" +
        "</security-role-ref>\n" +
        "</portlet>\n" );
    attrs168.append("" +
        "<custom-portlet-mode id=\"mode1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<portlet-mode>portlet-mode</portlet-mode>\n" +
        "</custom-portlet-mode>\n" +
        "<custom-window-state id=\"state1\">\n" +
         "<description xml:lang=\"de\">description</description>\n" +
          "<window-state>window-state</window-state>\n" +
        "</custom-window-state>\n" +
        "<user-attribute id=\"att1\">\n" +
          "<description xml:lang=\"de\">description</description>\n" +
          "<name>name</name>\n" +
        "</user-attribute>\n" +
        "<security-constraint id=\"cons1\">\n" +
          "<display-name xml:lang=\"de\">display-name</display-name>\n" +
          "<portlet-collection>\n" +
           "<portlet-name>portlet-name</portlet-name>\n" +
         "</portlet-collection>\n" +
          "<user-data-constraint id=\"data1\">\n" +
            "<description xml:lang=\"de\">description</description>\n" +
            "<transport-guarantee>NONE</transport-guarantee>\n" +
          "</user-data-constraint>\n" +
        "</security-constraint>\n" +
    "" );

        portletNoCache.append(
            "<portlet>"+
            "<description>AboutPortletDescription</description>"+
            "<portlet-name>AboutPortlet</portlet-name>"+
            "<display-name>About Portlet</display-name>"+
            "<display-name xml:lang=\"fr\">About Portlet</display-name>"+
            "<portlet-class>org.apache.pluto.driver.portlets.AboutPortlet</portlet-class>"+
            "        <init-param>\n" +
            "            <description>a</description>\n" +
            "            <name>b</name>\n" +
            "            <value>v</value>\n" +
            "        </init-param>" +
            "<supports>"+
            "<mime-type>text/html</mime-type>"+
            "<portlet-mode>VIEW</portlet-mode>"+
            "<portlet-mode>EDIT</portlet-mode>"+
            "<portlet-mode>HELP</portlet-mode>"+
            "</supports>"+
            "<supported-locale>en</supported-locale>"+
            "<portlet-info>"+
            "<title>About Apache Pluto</title>"+
            "</portlet-info>"+
            "</portlet>"
            );

        portlet286NoCache.append( xmlBegin286 ).append( portletNoCache ).append( attrs286 ).append( xmlEnd );
        portlet168NoCache.append( xmlBegin168 ).append( portletNoCache ).append( attrs168 ).append( xmlEnd );
    }

  /**
   * @throws java.lang.Exception
   */
  @After
  public void tearDown() throws Exception {
  }

  /**
   * Test method for {@link org.apache.pluto.descriptors.services.jaxb.JaxBDescriptorServiceImpl#read(java.net.URL)}.
   */
  @Test
  public void testRead() {
   
    try {
     
      StringBuffer xml286 = new StringBuffer()
        .append(xmlBegin286).append(portlet286)
        .append(attrs286).append(xmlEnd);
     
      StringBuffer xml168 = new StringBuffer()
      .append(xmlBegin168).append(portlet168)
      .append(attrs168).append(xmlEnd);
     
          InputStream in = new ByteArrayInputStream(xml286.toString().getBytes());
         
      PortletApplicationDefinition portletApp286 = jaxb.read("test", "/test", in);
     
      in = new ByteArrayInputStream(xml168.toString().getBytes());
      PortletApplicationDefinition portletApp168 = jaxb.read("test", "/test", in);
     
      // test if portlet has the right params:
     
      // test jsr168 compliant portlets
      PortletDefinition portlet168 = (PortletDefinition)portletApp168.getPortlets().get(0);
      assertTrue(portlet168.getExpirationCache()==50);
      assertEquals(portlet168.getPortletName(),"portlet168");
      assertEquals(portlet168.getInitParams().get(0).getParamValue(),"value");
      assertEquals(portlet168.getSecurityRoleRefs().get(0).getRoleLink(), "role-link");
      assertEquals(portletApp168.getCustomPortletModes().get(0).getPortletMode(), "portlet-mode");
      assertEquals(portletApp168.getCustomWindowStates().get(0).getWindowState(), "window-state");
      assertEquals(portletApp168.getUserAttributes().get(0).getName(), "name" );
      assertEquals(portletApp168.getSecurityConstraints().get(0).getPortletNames().get(0), "portlet-name");
      assertEquals(portlet168.getExpirationCache(), 50);
      // id (isn't supported yet)
//      assertFalse(portletApp.getId().equals("id2"));
//      assertTrue(portletApp.getId().equals("id1"));
     
      jaxb.write(portletApp168, System.out);
      // portlet id
      PortletDefinition portlet286 = (PortletDefinition)portletApp286.getPortlets().get(0);
//      assertTrue(portlet1.getId().equals("id2"));
     
      // portlet class
      assertTrue(portlet286.getPortletClass().equals("portlet-class"));
     
      // portlet info
      // id isn't supported yet
//      assertTrue(portlet1.getPortletInfo().getId().equals("info1"));
      assertTrue(portlet286.getPortletInfo().getTitle().equals("title"));
     
      assertEquals("supports size should be 3", 3, portlet286.getSupports().size());
     
      assertEquals(portletApp286.getCustomPortletModes().get(0).getPortletMode(), "portlet-mode");
      assertEquals(portletApp286.getCustomWindowStates().get(0).getWindowState(), "window-state");
      assertEquals(portletApp286.getUserAttributes().get(0).getName(), "name" );
      assertEquals(portletApp286.getSecurityConstraints().get(0).getPortletNames().get(0), "portlet-name");
      assertEquals(portletApp286.getEventDefinitions().get(0).getValueType(), "java-class");
//      assertEquals(portletApp286.getRender().get(0).getName(), "QName");
      assertEquals(portletApp286.getFilters().get(0).getLifecycles().get(0), "lifecycle");
      assertEquals(portletApp286.getFilterMappings().get(0).getPortletNames().get(0), "portlet-name");
      assertEquals(portletApp286.getResourceBundle(), "resource-bundle");
      assertEquals(portletApp286.getVersion(), "2.0");
     
      // test container runtime options
      assertEquals(portletApp286.getContainerRuntimeOptions().size(),1);
      assertEquals(portletApp286.getContainerRuntimeOptions().get(0).getName(),"Runtime-Option-Portlet-App");
      assertEquals(portletApp286.getContainerRuntimeOptions().get(0).getValues().get(0),"false");
     
      assertEquals(portlet286.getContainerRuntimeOptions().size(),1);
      assertEquals(portlet286.getContainerRuntimeOptions().get(0).getName(),"Runtime-Option");
      assertEquals(portlet286.getContainerRuntimeOptions().get(0).getValues().get(0),"true");
            assertEquals(portlet286.getExpirationCache(), 100);
     
            jaxb.write(portletApp286, System.out);
     
    } catch (IOException e) {
      fail("exception was thrown");
    }
  }

  /**
   * Test method for {@link org.apache.pluto.descriptors.services.jaxb.JaxBDescriptorServiceImpl#writePortletApp(com.sun.java.xml.ns.portlet.portlet_app_2_0_xsd.PortletAppType, java.io.OutputStream)}.
   */
  @Test
  public void testWrite() {
    //fail("Not yet implemented");
  }
 
  public void testReadNullDescriptor() {
    try {
      Assert.assertNull("Null descriptor did not return null", jaxb.read("test", "/test", null));
      fail("exception should be thrown");
    } catch (IOException ioe){
     
    }
    }

    public void testParseNoExpirationCache168() throws IOException {
        InputStream inputStream = new ByteArrayInputStream(portlet168NoCache.toString().getBytes());
        PortletApplicationDefinition portletDD = jaxb.read( "test", "/test", inputStream );

        assertEquals( "1.0", portletDD.getVersion() );
        assertEquals( 1, portletDD.getPortlets().size() );

        PortletDefinition pd = (PortletDefinition) portletDD.getPortlets().get( 0 );
        assertEquals( pd.getExpirationCache(), 0 );
    }

    public void testParseNoExpirationCache286() throws IOException {
        InputStream inputStream = new ByteArrayInputStream(portlet286NoCache.toString().getBytes());
        PortletApplicationDefinition portletDD = jaxb.read( "test", "/test", inputStream );

        assertEquals( "2.0", portletDD.getVersion() );
        assertEquals( 1, portletDD.getPortlets().size() );

        PortletDefinition pd = (PortletDefinition) portletDD.getPortlets().get( 0 );
        assertEquals( pd.getExpirationCache(), 0 );
    }

}
TOP

Related Classes of org.apache.pluto.container.impl.JaxBDescriptorServiceImplTest

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.