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 ta...@apache.org on 2006/12/22 00:49:55 UTC

svn commit: r489509 - /portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java

Author: taylor
Date: Thu Dec 21 15:49:55 2006
New Revision: 489509

URL: http://svn.apache.org/viewvc?view=rev&rev=489509
Log:
https://issues.apache.org/jira/browse/JS2-226
contribution from Woonsan Ko 
add a portlet app class loader, portlets are now (for the most part) aggregating from a unit test

NOTE:
We are working together on this task, committing often
Sorry if this is causing too much commit noise


Modified:
    portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java

Modified: portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java?view=diff&rev=489509&r1=489508&r2=489509
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java Thu Dec 21 15:49:55 2006
@@ -16,11 +16,11 @@
 package org.apache.jetspeed.aggregator;
 
 import java.io.File;
-import java.security.Principal;
+import java.net.URL;
+import java.net.URLClassLoader;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.security.auth.Subject;
@@ -31,6 +31,7 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.jetspeed.CommonPortletServices;
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.capabilities.Capabilities;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
@@ -47,7 +48,7 @@
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.request.RequestContextComponent;
 import org.apache.jetspeed.security.SecurityHelper;
-import org.apache.jetspeed.security.impl.UserPrincipalImpl;
+import org.apache.jetspeed.security.UserManager;
 import org.apache.jetspeed.testhelpers.SpringEngineHelper;
 
 import com.mockrunner.mock.web.MockHttpServletRequest;
@@ -77,6 +78,7 @@
     private ServletContext servletContext;
     private PortletRegistry portletRegistry;
     private RequestContextComponent rcc;
+    private UserManager userManager;
     
 
     /**
@@ -123,27 +125,14 @@
         portletFactory = (PortletFactory) engine.getComponentManager().getComponent("portletFactory");
         rcc = (RequestContextComponent) engine.getComponentManager().getComponent("org.apache.jetspeed.request.RequestContextComponent");
 
-        File paRootDir = new File("../../applications/j2-admin/src/webapp");
-        //File paRootDir = new File("../../applications/j2-admin/target/j2-admin");
-        ResourceLocatingServletContext j2adminContext = new ResourceLocatingServletContext(paRootDir);
-        MockServletConfig j2adminConfig = new MockServletConfig();
-        j2adminConfig.setServletContext(j2adminContext);
-        ((ResourceLocatingServletContext) servletContext).setContext("/j2-admin", j2adminContext);
-
-        paRootDir = new File("../../applications/demo/src/webapp");
-        //paRootDir = new File("../../applications/demo/target/demo");
-        ResourceLocatingServletContext demoContext = new ResourceLocatingServletContext(paRootDir);
-        MockServletConfig demoConfig = new MockServletConfig();
-        demoConfig.setServletContext(demoContext);
-        ((ResourceLocatingServletContext) servletContext).setContext("/demo", demoContext);
-
-        Iterator it = portletRegistry.getPortletApplications().iterator();
-        while (it.hasNext()) {
-            PortletApplication pa = (PortletApplication) it.next();
-            if (!portletFactory.isPortletApplicationRegistered(pa)) {
-                portletFactory.registerPortletApplication(pa, pa.getClass().getClassLoader());
-            }
-        }
+        initPA("demo", "/demo", new File("../../applications/demo/target/demo"));
+        ServletContext paContext = 
+            initPA("j2-admin", "/j2-admin", new File("../../applications/j2-admin/target/j2-admin"));
+
+        // j2-admin portlet needs user manager component, but the followings does not effect..
+        userManager = (UserManager) engine.getComponentManager().getComponent(UserManager.class);
+        paContext.setAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT, userManager);
+        assertEquals(userManager, paContext.getAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT));
     }
 
     public static Test suite()
@@ -176,6 +165,10 @@
         assertNotNull("profiler is null", profiler);
         assertNotNull("capabilities is null", capabilities);
         assertNotNull("navigational state component is null", navComponent);
+        assertNotNull("portal servlet config is null", servletConfig);
+        assertNotNull("portal servlet context is null", servletContext);
+        assertNotNull("portlet registry is null", portletRegistry);
+        assertNotNull("request context component is null", rcc);
 
         final RequestContext requestContext = initRequestContext();
         final Subject subject = SecurityHelper.createSubject("user");
@@ -228,8 +221,8 @@
 
         request.setSession(session);
 
-        Principal p = new UserPrincipalImpl("user");
-        request.setUserPrincipal(p);
+        //Principal p = new UserPrincipalImpl("user");
+        //request.setUserPrincipal(p);
 
         request.setScheme("http");
         request.setContextPath("/jetspeed");
@@ -242,6 +235,22 @@
         return rc;
     }
 
+    private ServletContext initPA(String paName, String paContextPath, File paRootDir) {
+        ResourceLocatingServletContext paContext = new ResourceLocatingServletContext(paRootDir);
+        MockServletConfig paConfig = new MockServletConfig();
+        paConfig.setServletContext(paContext);
+
+        ClassLoader paCl = createLocalPAClassLoader(paRootDir);
+        PortletApplication pa = portletRegistry.getPortletApplication(paName);
+        if (!portletFactory.isPortletApplicationRegistered(pa)) {
+            portletFactory.registerPortletApplication(pa, paCl);
+        }
+
+        ((ResourceLocatingServletContext) servletContext).setContext(paContextPath, paContext);
+
+        return paContext;
+    }
+
     protected String[] getBootConfigurations()
     {
         return new String[]
@@ -258,5 +267,40 @@
         confList.add("prefs.xml");
         return (String[]) confList.toArray(new String[1]);
     }
-    
+
+    protected ClassLoader createLocalPAClassLoader(File paDir)
+    {
+        ClassLoader localPAClassLoader = null;
+
+        ArrayList urls = new ArrayList();
+        File webInfClasses = null;
+
+        try {
+            webInfClasses = new File(paDir, ("WEB-INF/classes/"));
+            if (webInfClasses.exists())
+            {
+                urls.add(webInfClasses.toURL());
+            }
+            
+            File webInfLib = new File(paDir, "WEB-INF/lib");
+
+            if (webInfLib.exists())
+            {
+                File[] jars = webInfLib.listFiles();
+                
+                for (int i = 0; i < jars.length; i++)
+                {
+                    File jar = jars[i];
+                    urls.add(jar.toURL());
+                }
+            }
+            
+            localPAClassLoader = 
+                new URLClassLoader((URL[]) urls.toArray(new URL[urls.size()]), getClass().getClassLoader());
+        } catch (Exception e) {
+        }
+
+        return localPAClassLoader;
+    }
+
 }



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