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