You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by we...@apache.org on 2005/06/13 20:05:47 UTC

svn commit: r190458 - /portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java

Author: weaver
Date: Mon Jun 13 11:05:46 2005
New Revision: 190458

URL: http://svn.apache.org/viewcvs?rev=190458&view=rev
Log: (empty)

Added:
    portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java

Added: portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java?rev=190458&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java (added)
+++ portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java Mon Jun 13 11:05:46 2005
@@ -0,0 +1,612 @@
+/*
+ * 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.components.portletentity;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.prefs.Preferences;
+
+import org.apache.jetspeed.aggregator.PortletContent;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.components.util.DatasourceEnabledSpringTestCase;
+import org.apache.jetspeed.om.common.SecurityConstraints;
+import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
+import org.apache.jetspeed.om.common.portlet.MutablePortletEntity;
+import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
+import org.apache.jetspeed.om.common.preference.PreferenceComposite;
+import org.apache.jetspeed.om.common.preference.PreferenceSetComposite;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.Property;
+//import org.apache.jetspeed.om.page.psml.ContentFragmentImpl;
+import org.apache.jetspeed.om.portlet.impl.PortletApplicationDefinitionImpl;
+import org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl;
+import org.apache.jetspeed.om.servlet.impl.WebApplicationDefinitionImpl;
+import org.apache.jetspeed.util.JetspeedObjectID;
+import org.apache.pluto.om.portlet.PortletApplicationDefinition;
+import org.apache.pluto.om.portlet.PortletDefinitionList;
+import org.jmock.Mock;
+import org.jmock.core.matcher.InvokeAtLeastOnceMatcher;
+import org.jmock.core.stub.ReturnStub;
+
+/**
+ * <p>
+ * TestPortletEntityDAO
+ * </p>
+ * <p>
+ *
+ * </p>
+ * @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
+ * @version $Id: TestPortletEntityDAO.java,v 1.3 2005/05/24 14:43:19 ate Exp $
+ *
+ */
+public class TestPortletEntityDAO extends DatasourceEnabledSpringTestCase
+{
+
+    // Dummy ContentFragment wrapper around Fragment as using the real ContentFragmentImpl
+    // would introduce a circular dependency between the registry and page-manager components.
+    // Probably should be replaced by a Mock but I don't know how to setup that quickly
+    // and the whole ContentFragment construction is bound to be replaced soon anyway...
+    
+    private static class ContentFragmentImpl implements Fragment, ContentFragment
+    {
+        private Fragment f;
+        
+        /**
+         * @param f
+         * @param list
+         */
+        public ContentFragmentImpl(Fragment f, HashMap list)
+        {
+            super();
+            this.f = f;
+        }
+        /**
+         * @param p
+         */
+        public void addProperty(Property p)
+        {
+            f.addProperty(p);
+        }
+        /**
+         * @param actions
+         * @throws SecurityException
+         */
+        public void checkAccess(String actions) throws SecurityException
+        {
+            f.checkAccess(actions);
+        }
+        /**
+         * @param actions
+         * @throws SecurityException
+         */
+        public void checkConstraints(String actions) throws SecurityException
+        {
+            f.checkConstraints(actions);
+        }
+        /**
+         * @param actions
+         * @throws SecurityException
+         */
+        public void checkPermissions(String actions) throws SecurityException
+        {
+            f.checkPermissions(actions);
+        }
+        /**
+         * @param layoutName
+         */
+        public void clearProperties(String layoutName)
+        {
+            f.clearProperties(layoutName);
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#equals(java.lang.Object)
+         */
+        public boolean equals(Object obj)
+        {
+            return f.equals(obj);
+        }
+        /**
+         * @return
+         */
+        public boolean getConstraintsEnabled()
+        {
+            return f.getConstraintsEnabled();
+        }
+        /**
+         * @return
+         */
+        public String getDecorator()
+        {
+            return f.getDecorator();
+        }
+        /**
+         * @return
+         */
+        public List getFragments()
+        {
+            return f.getFragments();
+        }
+        /**
+         * @return
+         */
+        public String getId()
+        {
+            return f.getId();
+        }
+        /**
+         * @return
+         */
+        public List getLayoutProperties()
+        {
+            return f.getLayoutProperties();
+        }
+        /**
+         * @return
+         */
+        public String getName()
+        {
+            return f.getName();
+        }
+        /**
+         * @return
+         */
+        public boolean getPermissionsEnabled()
+        {
+            return f.getPermissionsEnabled();
+        }
+        /**
+         * @param layoutName
+         * @return
+         */
+        public List getProperties(String layoutName)
+        {
+            return f.getProperties(layoutName);
+        }
+        /**
+         * @param layout
+         * @param propName
+         * @return
+         */
+        public String getPropertyValue(String layout, String propName)
+        {
+            return f.getPropertyValue(layout, propName);
+        }
+        /**
+         * @return
+         */
+        public SecurityConstraints getSecurityConstraints()
+        {
+            return f.getSecurityConstraints();
+        }
+        /**
+         * @return
+         */
+        public String getShortTitle()
+        {
+            return f.getShortTitle();
+        }
+        /**
+         * @return
+         */
+        public String getSkin()
+        {
+            return f.getSkin();
+        }
+        /**
+         * @return
+         */
+        public String getState()
+        {
+            return f.getState();
+        }
+        /**
+         * @return
+         */
+        public String getTitle()
+        {
+            return f.getTitle();
+        }
+        /**
+         * @return
+         */
+        public String getType()
+        {
+            return f.getType();
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#hashCode()
+         */
+        public int hashCode()
+        {
+            return f.hashCode();
+        }
+        /**
+         * @return
+         */
+        public boolean isReference()
+        {
+            return f.isReference();
+        }
+        /**
+         * @param p
+         */
+        public void removeProperty(Property p)
+        {
+            f.removeProperty(p);
+        }
+        /**
+         * @param decoratorName
+         */
+        public void setDecorator(String decoratorName)
+        {
+            f.setDecorator(decoratorName);
+        }
+        /**
+         * @param id
+         */
+        public void setId(String id)
+        {
+            f.setId(id);
+        }
+        /**
+         * @param name
+         */
+        public void setName(String name)
+        {
+            f.setName(name);
+        }
+        /**
+         * @param layout
+         * @param propName
+         * @param value
+         */
+        public void setPropertyValue(String layout, String propName, String value)
+        {
+            f.setPropertyValue(layout, propName, value);
+        }
+        /**
+         * @param constraints
+         */
+        public void setSecurityConstraints(SecurityConstraints constraints)
+        {
+            f.setSecurityConstraints(constraints);
+        }
+        /**
+         * @param title
+         */
+        public void setShortTitle(String title)
+        {
+            f.setShortTitle(title);
+        }
+        /**
+         * @param skinName
+         */
+        public void setSkin(String skinName)
+        {
+            f.setSkin(skinName);
+        }
+        /**
+         * @param state
+         */
+        public void setState(String state)
+        {
+            f.setState(state);
+        }
+        /**
+         * @param title
+         */
+        public void setTitle(String title)
+        {
+            f.setTitle(title);
+        }
+        /**
+         * @param type
+         */
+        public void setType(String type)
+        {
+            f.setType(type);
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#toString()
+         */
+        public String toString()
+        {
+            return f.toString();
+        }
+        
+        public Object clone() throws CloneNotSupportedException
+        {
+            return f.clone();
+        }
+        /* (non-Javadoc)
+         * @see org.apache.jetspeed.om.page.ContentFragment#getContentFragments()
+         */
+        public List getContentFragments()
+        {
+            // TODO Auto-generated method stub
+            return null;
+        }
+        /* (non-Javadoc)
+         * @see org.apache.jetspeed.om.page.ContentFragment#getRenderedContent()
+         */
+        public String getRenderedContent() throws IllegalStateException
+        {
+            // TODO Auto-generated method stub
+            return null;
+        }
+        /* (non-Javadoc)
+         * @see org.apache.jetspeed.om.page.ContentFragment#overrideRenderedContent(java.lang.String)
+         */
+        public void overrideRenderedContent(String contnent)
+        {
+            // TODO Auto-generated method stub
+            
+        }
+        /* (non-Javadoc)
+         * @see org.apache.jetspeed.om.page.ContentFragment#setPortletContent(org.apache.jetspeed.aggregator.PortletContent)
+         */
+        public void setPortletContent(PortletContent portletContent)
+        {
+            // TODO Auto-generated method stub
+            
+        }
+    }
+    
+    private static final String TEST_APP = "EntityTestApp";
+    private static final String TEST_PORTLET = "EntityTestPortlet";
+    private static final String TEST_ENTITY = "user5/entity-9";
+    private PortletEntityAccessComponent entityAccess = null;
+    private PortletRegistry registry;   
+ 
+    protected void setUp() throws Exception
+    {      
+        super.setUp();
+        this.entityAccess = (PortletEntityAccessComponent) ctx.getBean("portletEntityAccess");
+        this.registry = (PortletRegistry) ctx.getBean("portletRegistry");
+        teardownTestData();
+        setupTestData();
+    }
+    
+    protected void tearDown() throws Exception
+    {
+        teardownTestData();
+    }
+    
+    public void test1() throws Exception
+    {
+        assertNotNull(this.entityAccess);
+        assertNotNull(this.registry);
+    }
+
+    public void testEntities() throws Exception
+    {
+        
+       
+        
+        PortletApplicationDefinition pa = registry.getPortletApplication(TEST_APP);
+        assertNotNull("Portlet Application", pa);
+        System.out.println("pa = " + pa.getId());
+        PortletDefinitionList portlets = pa.getPortletDefinitionList(); //.get(JetspeedObjectID.createFromString(TEST_PORTLET));
+        Iterator pi = portlets.iterator();
+        PortletDefinitionComposite pd = null;
+        while (pi.hasNext())
+        {
+            pd = (PortletDefinitionComposite)pi.next();
+            assertTrue("Portlet Def not found", pd.getName().equals("EntityTestPortlet"));
+        }
+        assertNotNull("Portlet Def is null", pd);
+        
+        
+        
+        Mock mockf1 = new Mock(Fragment.class);
+        mockf1.expects(new InvokeAtLeastOnceMatcher()).method("getName").will(new ReturnStub(pd.getUniqueName()));
+        mockf1.expects(new InvokeAtLeastOnceMatcher()).method("getId").will(new ReturnStub(TEST_ENTITY));
+        ContentFragment f1 = new ContentFragmentImpl((Fragment) mockf1.proxy(), new HashMap());
+            
+        MutablePortletEntity entity = entityAccess.generateEntityFromFragment(new ContentFragmentImpl(f1, new HashMap()));
+        PreferenceSetComposite prefs = (PreferenceSetComposite) entity.getPreferenceSet();
+        prefs.remove("pref1");
+        assertNotNull(prefs);
+        assertNull(prefs.get("pref1"));
+        
+        // test adding a pref
+        prefs.add("pref1", Arrays.asList(new String[]{"1"}));
+        assertNotNull(prefs.get("pref1"));
+        
+        // Remove should return the deleted pref
+        assertNotNull(prefs.remove("pref1"));
+        
+        // Should be gone
+        assertNull(prefs.get("pref1"));        
+        
+        // Add it back so we can test tole back
+        prefs.add("pref1", Arrays.asList(new String[]{"1"}));
+    
+        entityAccess.storePortletEntity(entity);
+        
+        prefs = (PreferenceSetComposite) entity.getPreferenceSet();
+        
+        assertNotNull(prefs.get("pref1"));
+        
+        PreferenceComposite pref = (PreferenceComposite) prefs.get("pref1");
+        
+        assertEquals("1", pref.getValueAt(0));
+        
+        pref.setValueAt(0, "2");
+        
+        assertEquals("2", pref.getValueAt(0));
+        
+        entity.reset();
+        
+        pref = (PreferenceComposite) prefs.get("pref1");
+        
+        assertEquals("1", pref.getValueAt(0));
+        
+        prefs.remove(pref);       
+        
+        assertNull(prefs.get("pref1"));
+        
+        entity.reset();
+        
+        assertNotNull(prefs.get("pref1"));
+        
+        prefs.add("pref2", Arrays.asList(new String[]{"2", "3"}));
+        
+        entity.store();
+        
+        PreferenceComposite pref2 = (PreferenceComposite) prefs.get("pref2");
+        
+        assertNotNull(pref2);
+        
+        Iterator prefsValues = pref2.getValues();
+        int count = 0;
+        while(prefsValues.hasNext())
+        {
+            prefsValues.next();
+            count++;
+        }
+        
+        assertEquals(2, count);
+        
+        pref2.addValue("4");
+        prefsValues = pref2.getValues();
+        count = 0;
+        while(prefsValues.hasNext())
+        {
+            assertEquals(String.valueOf(count+2), prefsValues.next());
+            count++;
+        }
+        assertEquals(3, count);
+        
+        entity.reset();
+        
+        prefsValues = pref2.getValues();
+        count = 0;
+        while(prefsValues.hasNext())
+        {
+            assertEquals(String.valueOf(count+2), prefsValues.next());
+            count++;
+        }
+        assertEquals(2, count);
+        
+        MutablePortletEntity entity2 = entityAccess.getPortletEntityForFragment(f1);
+        assertTrue("entity id ", entity2.getId().toString().equals(TEST_ENTITY));
+        assertNotNull("entity's portlet ", entity2.getPortletDefinition());
+        mockf1.verify();
+        
+        
+        Mock mockf2 = new Mock(Fragment.class);
+        mockf2.expects(new InvokeAtLeastOnceMatcher()).method("getName").will(new ReturnStub(pd.getUniqueName()));
+        ContentFragment f2 = new ContentFragmentImpl((Fragment) mockf2.proxy(), new HashMap());
+        
+        MutablePortletEntity entity5 = entityAccess.newPortletEntityInstance(pd);
+        
+        System.out.println("before storing entity: "  + entity5.getId());
+        
+        entityAccess.storePortletEntity(entity5);
+        System.out.println("store done: " + entity5.getId());  
+        mockf2.expects(new InvokeAtLeastOnceMatcher()).method("getId").will(new ReturnStub( entity5.getId().toString()));
+    
+        MutablePortletEntity entity6 = entityAccess.getPortletEntityForFragment(f2);
+        assertNotNull(entity6);
+        System.out.println("reget : " + entity6.getId());        
+        
+        entityAccess.removePortletEntity(entity6);
+        
+                
+    }
+
+    private void teardownTestData()
+    throws Exception
+    {   
+        
+        
+        JetspeedObjectID objId = JetspeedObjectID.createFromString(TEST_ENTITY);
+        MutablePortletEntity entity = entityAccess.getPortletEntity(objId);
+        System.out.println("entity == " + entity);
+        
+        if (entity != null)
+        {
+            entityAccess.removePortletEntity(entity);
+        }
+        
+        PortletApplicationDefinition pa = registry.getPortletApplication(TEST_APP);
+        System.out.println("pa == " + pa);
+        if (pa != null)
+        {
+            registry.removeApplication(pa);
+        }
+        
+       
+        
+        if(Preferences.systemRoot().nodeExists(MutablePortletApplication.PREFS_ROOT))
+        {
+            Preferences.systemRoot().node(MutablePortletApplication.PREFS_ROOT).removeNode();
+        }
+        
+        if(Preferences.userRoot().nodeExists(PortletDefinitionComposite.PORTLETS_PREFS_ROOT))
+        {
+            Preferences.userRoot().node(PortletDefinitionComposite.PORTLETS_PREFS_ROOT).removeNode();
+        }        
+        
+        
+        if(Preferences.userRoot().nodeExists(MutablePortletEntity.PORTLET_ENTITY_ROOT))
+        {
+            Preferences.userRoot().node(MutablePortletEntity.PORTLET_ENTITY_ROOT).removeNode();
+        }
+
+    }
+
+    private void setupTestData()
+    throws Exception
+    {
+                
+        PortletApplicationDefinitionImpl app = new PortletApplicationDefinitionImpl();
+        app.setName(TEST_APP);
+        app.setApplicationIdentifier(TEST_APP);
+                
+        WebApplicationDefinitionImpl webApp = new WebApplicationDefinitionImpl();
+        webApp.setContextRoot("/app1");
+        webApp.addDescription(Locale.FRENCH, "Description: Le fromage est dans mon pantalon!");
+        webApp.addDisplayName(Locale.FRENCH, "Display Name: Le fromage est dans mon pantalon!");
+        
+        PortletDefinitionComposite portlet = new PortletDefinitionImpl();
+        portlet.setClassName("org.apache.Portlet");
+        portlet.setName(TEST_PORTLET);
+        portlet.addDescription(Locale.getDefault(),"Portlet description.");
+        portlet.addDisplayName(Locale.getDefault(),"Portlet display Name.");
+        
+        portlet.addInitParameter("testparam", "test value", "This is a test portlet parameter", Locale.getDefault());
+                        
+        app.addPortletDefinition(portlet);      
+    
+        app.setWebApplicationDefinition(webApp);
+        
+        PreferenceSetComposite prefSet = (PreferenceSetComposite) portlet.getPreferenceSet();
+        prefSet.add("pref1", Arrays.asList(new String[]{"1"}));
+        
+        registry.registerPortletApplication(app);           
+    }
+    
+    protected String[] getConfigurations()
+    {
+        return new String[] {"/META-INF/transaction.xml", "/META-INF/registry-dao.xml", "/META-INF/entity-dao.xml"};
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org