You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by cd...@apache.org on 2008/10/06 10:39:12 UTC

svn commit: r702005 - in /portals/pluto/branches/2.0-spi-refactoring: pluto-container/src/main/java/org/apache/pluto/core/ pluto-container/src/main/java/org/apache/pluto/internal/impl/ pluto-portal-driver/src/main/java/org/apache/pluto/driver/ pluto-po...

Author: cdoremus
Date: Mon Oct  6 01:39:11 2008
New Revision: 702005

URL: http://svn.apache.org/viewvc?rev=702005&view=rev
Log:
Applied PLUTO-501_patch2.diff in PLUTO-501.

Modified:
    portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/Configuration.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalStartupListener.java
    portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java Mon Oct  6 01:39:11 2008
@@ -17,6 +17,7 @@
 package org.apache.pluto.core;
 
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.util.Map;
 
 import javax.portlet.ActionRequest;
@@ -178,11 +179,32 @@
     	
     	ensureInitialized();
     	
+    	
+    	ServletContext srvCtx = null;
+    	
+    	try
+    	{
+    		srvCtx = PortletContextManager.getPortletContext(servletContext,
+                    portletWindow.getContextPath());
+    		
+    	} catch(PortletContainerException ex)
+    	{
+    		LOG.error("Can get portlet context for: " + portletWindow.getContextPath(), ex); 		
+    	}
+    
+    	if (srvCtx == null) 
+		{
+    		PrintWriter writer=null;
+    		writer = response.getWriter();
+    		writer.write("<div class=\"portlet-msg-error\">Portlet '" + portletWindow.getContextPath() + "' cannot be loaded because of problems getting servlet context. Pleae check your configuration.</div>");
+    		return; // Can't get portlet context!
+		}
+    		
+    	
+    	
         InternalPortletWindow internalPortletWindow =
-        	new InternalPortletWindowImpl(
-		                    PortletContextManager.getPortletContext(servletContext,
-		                        portletWindow.getContextPath()),
-		                    portletWindow);
+        	new InternalPortletWindowImpl(srvCtx, portletWindow);
+        
         debugWithName("Render request received for portlet: "
         		+ portletWindow.getPortletName());
         

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java Mon Oct  6 01:39:11 2008
@@ -125,12 +125,16 @@
 	    ServletContext servletContext = config.getServletContext();
         String applicationId = getContextPath(servletContext);
         if (!portletContexts.containsKey(applicationId)) {
+        	PortletDescriptorRegistry portletRegistry = PortletDescriptorRegistry.getRegistry();
 
-            PortletApp portletApp = PortletDescriptorRegistry.getRegistry().getPortletAppDD(servletContext);
+            PortletApp portletApp = portletRegistry.getPortletAppDD(servletContext);
             portletApp.setId(applicationId);
             portletApp.setName(applicationId.substring(1));
 
             InternalPortletContext portletContext = new PortletContextImpl(servletContext, portletApp);
+            if (portletContext.getApplicationId() == null) {
+                throw new IllegalStateException("Unable to resolve unique identifier for portlet context.");
+            }
 
             portletContexts.put(applicationId, portletContext);
 

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java Mon Oct  6 01:39:11 2008
@@ -23,11 +23,14 @@
 import javax.portlet.Portlet;
 import javax.portlet.PortletException;
 import javax.portlet.ResourceServingPortlet;
+import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.Constants;
 import org.apache.pluto.PortletContainerException;
 import org.apache.pluto.PortletWindow;
@@ -61,6 +64,9 @@
 
     // Private Member Variables ------------------------------------------------
 
+    /** Internal Logger. */
+    private static final Log LOG = LogFactory.getLog(PortletServlet.class);    
+
     /**
      * The portlet name as defined in the portlet app descriptor.
      */
@@ -108,11 +114,18 @@
         // Retrieve the associated internal portlet context.
         PortletContextManager mgr = PortletContextManager.getManager();
         try {
-            String applicationId = mgr.register(getServletConfig());
+        	ServletConfig sConfig = getServletConfig();
+        	if (sConfig == null) {
+        		String msg = "Problem obtaining servlet configuration(getServletConfig() returns null).";
+        		throw new PortletContainerException(msg);
+        	}
+        	
+            String applicationId = mgr.register(sConfig);
             portletContext = (InternalPortletContext) mgr.getPortletContext(applicationId);
             portletConfig = (InternalPortletConfig) mgr.getPortletConfig(applicationId, portletName);
 
         } catch (PortletContainerException ex) {
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
         }
 
@@ -127,16 +140,16 @@
             initializeEventPortlet();
             initializeResourceServingPortlet();
         } catch (ClassNotFoundException ex) {
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
         } catch (IllegalAccessException ex) {
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
         } catch (InstantiationException ex) {
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
         } catch (PortletException ex) {
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
         }
     }
@@ -282,7 +295,7 @@
 
 
         } catch (javax.portlet.UnavailableException ex) {
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             /*
             if (e.isPermanent()) {
                 throw new UnavailableException(e.getMessage());
@@ -294,6 +307,7 @@
             try {
                 portlet.destroy();
             } catch (Throwable th) {
+        		LOG.error(th.getMessage(), th);   
                 // Don't care for Exception
             }
             
@@ -302,7 +316,7 @@
             
         } catch (PortletException ex) {
             notify(event, false, ex);
-            ex.printStackTrace();
+    		LOG.error(ex.getMessage(), ex);   
             throw new ServletException(ex);
             
         } finally {
@@ -347,7 +361,10 @@
        if (portlet instanceof ResourceServingPortlet) {
                resourceServingPortlet = (ResourceServingPortlet) portlet;
        }
-       else{
+       else {
+    	   if (LOG.isDebugEnabled()) {
+        	   LOG.debug("Not resource serving portlet.");    		   
+    	   }
     	   resourceServingPortlet = new NullPortlet();
        }
     }

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/Configuration.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/Configuration.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/Configuration.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/Configuration.java Mon Oct  6 01:39:11 2008
@@ -45,6 +45,7 @@
                 String test = BUNDLE.getString(PREVENT_UNECESSARY_CROSS_CONTEXT);
                 prevent = new Boolean(test);
             } catch (MissingResourceException mre) {
+            	LOG.warn(mre.getMessage());
                 prevent = Boolean.FALSE;
             }
         }

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java Mon Oct  6 01:39:11 2008
@@ -66,7 +66,6 @@
     /** Character encoding and content type of the response */
     private String contentType = "";
 
-
     // HttpServlet Impl --------------------------------------------------------
     
     public String getServletInfo() {
@@ -99,6 +98,9 @@
      */
     public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
+        if (LOG.isDebugEnabled()) {
+        	LOG.debug("Start of PortalDriverServlet.doGet() to process portlet request . . .");
+        }
 
         if ( contentType != "" ) {
             response.setContentType( contentType );
@@ -107,7 +109,15 @@
         PortalRequestContext portalRequestContext =
             new PortalRequestContext(getServletContext(), request, response);
 
-        PortalURL portalURL = portalRequestContext.getRequestedPortalURL();
+        PortalURL portalURL = null;
+        
+        try {
+        	portalURL = portalRequestContext.getRequestedPortalURL();
+        } catch(Exception ex) {
+        	String msg = "Cannot handle request for portal URL. Problem: "  + ex.getMessage();
+        	LOG.error(msg, ex);
+        	throw new ServletException(msg, ex);
+        }
         String actionWindowId = portalURL.getActionWindow();
         String resourceWindowId = portalURL.getResourceWindow();
         
@@ -116,8 +126,7 @@
         
 		if (resourceWindowId != null){
 			resourceWindowConfig = PortletWindowConfig.fromId(resourceWindowId);
-		}
-		else if(actionWindowId != null){
+		} else if(actionWindowId != null){
 			 actionWindowConfig = PortletWindowConfig.fromId(actionWindowId);
 		}
 
@@ -132,8 +141,10 @@
             try {
                 container.doAction(portletWindow, request, response);
             } catch (PortletContainerException ex) {
+            	LOG.error(ex.getMessage(), ex);
                 throw new ServletException(ex);
             } catch (PortletException ex) {
+            	LOG.error(ex.getMessage(), ex);
                 throw new ServletException(ex);
             }
             if (LOG.isDebugEnabled()) {
@@ -146,7 +157,8 @@
         		if (request.getParameterNames().hasMoreElements())
         			setPublicRenderParameter(request, portalURL, portalURL.getResourceWindow());
 			} catch (PortletContainerException e) {
-				LOG.warn(e);
+				LOG.error(e);
+				throw new ServletException(e);
 			}
             PortletWindowImpl portletWindow = new PortletWindowImpl(container,
                                resourceWindowConfig, portalURL);
@@ -157,12 +169,14 @@
             try {
                 container.doServeResource(portletWindow, request, response);
             } catch (PortletContainerException ex) {
+            	LOG.error(ex.getMessage(), ex);
                 throw new ServletException(ex);
             } catch (PortletException ex) {
+            	LOG.error(ex.getMessage(), ex);
                 throw new ServletException(ex);
             }
             if (LOG.isDebugEnabled()) {
-               LOG.debug("Action request processed.\n\n");
+               LOG.debug("Resource serving request processed.\n\n");
             }
         }
         // Otherwise (actionWindowConfig == null), handle the render request.
@@ -173,8 +187,10 @@
             PageConfig pageConfig = portalURL.getPageConfig(servletContext);
             if (pageConfig == null)
             {
-                // TODO Shouldn't we throw an exception here?
-                LOG.error("PageConfig for render path [" + portalURL.getRenderPath() + "] could not be found.");
+            	String renderPath = (portalURL == null ? "" : portalURL.getRenderPath());
+                String msg = "PageConfig for render path [" + renderPath + "] could not be found.";
+                LOG.error(msg);
+                throw new ServletException(msg);
             }
             
             request.setAttribute(AttributeKeys.CURRENT_PAGE, pageConfig);

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalStartupListener.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalStartupListener.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalStartupListener.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalStartupListener.java Mon Oct  6 01:39:11 2008
@@ -95,9 +95,18 @@
 
         ServletContext servletContext = event.getServletContext();
 
-        WebApplicationContext springContext = (WebApplicationContext)
-                servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
-
+        WebApplicationContext springContext = null;
+        
+        try {
+        	springContext = (WebApplicationContext)
+        		servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
+        	
+        } catch (RuntimeException ex) {
+        	String msg = "Problem getting Spring context: " + ex.getMessage();
+        	LOG.error(msg, ex);
+        	throw ex;
+        }
+     
         LOG.debug(" [1a] Loading DriverConfiguration. . . ");
         DriverConfiguration driverConfiguration = (DriverConfiguration)
                 springContext.getBean("DriverConfiguration");

Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java?rev=702005&r1=702004&r2=702005&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java Mon Oct  6 01:39:11 2008
@@ -20,6 +20,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.driver.AttributeKeys;
 import org.apache.pluto.driver.config.DriverConfiguration;
 import org.apache.pluto.driver.url.PortalURL;
@@ -36,6 +38,9 @@
  */
 public class PortalRequestContext {
 
+    /** Internal Logger. */
+    private static final Log LOG = LogFactory.getLog(PortalRequestContext.class);    
+
     /**
      * The attribute key to bind the portal environment instance to servlet
      * request.
@@ -109,8 +114,14 @@
         if(requestedPortalURL == null) {
             DriverConfiguration config = (DriverConfiguration)
                 servletContext.getAttribute(AttributeKeys.DRIVER_CONFIG);
-            PortalURLParser parser = config.getPortalUrlParser();
-            requestedPortalURL = parser.parse(request);
+            if (config != null) {
+            	PortalURLParser parser = config.getPortalUrlParser();
+            	requestedPortalURL = parser.parse(request);
+            } else {
+            	String msg = "Driver configuration not found while parsing portal URL!";
+            	LOG.error(msg);
+            	throw new IllegalStateException(msg);
+            }
         }
         return requestedPortalURL;
     }