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 dd...@apache.org on 2007/02/22 05:27:15 UTC

svn commit: r510390 - in /portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto: core/PortletContextManager.java core/PortletServlet.java spi/optional/PortletRegistryService.java

Author: ddewolf
Date: Wed Feb 21 20:27:15 2007
New Revision: 510390

URL: http://svn.apache.org/viewvc?view=rev&rev=510390
Log:
PLUTO-315; Providing access to portlet configs

Modified:
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletRegistryService.java

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java?view=diff&rev=510390&r1=510389&r2=510390
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContextManager.java Wed Feb 21 20:27:15 2007
@@ -20,16 +20,22 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.PortletContainerException;
 import org.apache.pluto.descriptors.portlet.PortletAppDD;
+import org.apache.pluto.descriptors.portlet.PortletDD;
 import org.apache.pluto.internal.InternalPortletContext;
 import org.apache.pluto.internal.PortletDescriptorRegistry;
 import org.apache.pluto.internal.Configuration;
+import org.apache.pluto.internal.InternalPortletConfig;
 import org.apache.pluto.internal.impl.PortletContextImpl;
+import org.apache.pluto.internal.impl.PortletConfigImpl;
 import org.apache.pluto.spi.optional.PortletRegistryEvent;
 import org.apache.pluto.spi.optional.PortletRegistryListener;
 import org.apache.pluto.spi.optional.PortletRegistryService;
 
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletConfig;
 import javax.portlet.PortletContext;
+import javax.portlet.PortletConfig;
 import java.lang.reflect.Method;
 import java.net.URL;
 import java.net.MalformedURLException;
@@ -69,6 +75,10 @@
      */
     private Map portletContexts = new HashMap();
 
+
+    private Map portletConfigs = new HashMap();
+    
+
     /**
      * The registered listeners that should be notified upon
      * registry events.
@@ -99,10 +109,35 @@
      * Retrieves the PortletContext associated with the given ServletContext.
      * If one does not exist, it is created.
      *
-     * @param servletContext the servlet context.
+     * @param config the servlet config.
      * @return the InternalPortletContext associated with the ServletContext.
      * @throws PortletContainerException
      */
+    public String register(ServletConfig config) throws PortletContainerException {
+        InternalPortletContext portletContext = register(config.getServletContext());
+
+         PortletAppDD portletAppDD =
+            portletContext.getPortletApplicationDefinition();
+        PortletDD portletDD = null;
+
+        for (Iterator it = portletAppDD.getPortlets().iterator(); it.hasNext();) {
+            portletDD = (PortletDD) it.next();
+            portletConfigs.put(
+                portletContext.getApplicationId() + "/" + portletDD.getPortletName(),
+                new PortletConfigImpl(config, portletContext, portletDD)
+            );
+        }
+
+        return portletContext.getApplicationId();
+    }
+
+    /**
+     *
+     * @param servletContext
+     * @return
+     * @throws PortletContainerException
+     * @deprecated Use {@link #register(ServletConfig)}
+     */
     public InternalPortletContext register(ServletContext servletContext)
         throws PortletContainerException {
         String applicationId = getContextPath(servletContext);
@@ -118,6 +153,7 @@
                 throw new IllegalStateException("Unable to resolve unique identifier for portletContext.");
             }
             portletContexts.put(applicationId, portletContext);
+
             fireRegistered(portletContext);
         }
         return (InternalPortletContext)portletContexts.get(applicationId);
@@ -146,6 +182,19 @@
     public PortletContext getPortletContext(String applicationId)
     throws PortletContainerException {
         return (InternalPortletContext) portletContexts.get(applicationId);
+    }
+
+    public PortletConfig getPortletConfig(String applicationId, String portletName) {
+        return (InternalPortletConfig) portletConfigs.get(applicationId + "/" + portletName); 
+    }
+
+    public PortletDD getPortletDescriptor(String applicationId, String portletName) {
+        InternalPortletConfig ipc = (InternalPortletConfig) portletConfigs.get(applicationId + "/" + portletName);
+        if(ipc != null) {
+            return ipc.getPortletDefinition();
+        }
+        return null;
+
     }
 
     public PortletAppDD getPortletApplicationDescriptor(String applicationId) throws PortletContainerException {

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java?view=diff&rev=510390&r1=510389&r2=510390
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java Wed Feb 21 20:27:15 2007
@@ -1,9 +1,9 @@
 /*
- * 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
+ * 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
@@ -95,35 +95,17 @@
         portletName = getInitParameter("portlet-name");
 
         // Retrieve the associated internal portlet context.
-        ServletContext servletContext = getServletContext();
+        PortletContextManager mgr = PortletContextManager.getManager();
         try {
-            portletContext = PortletContextManager.getManager()
-                .register(servletContext);
+            String applicationId = mgr.register(getServletConfig());
+            portletContext = (InternalPortletContext) mgr.getPortletContext(applicationId);
+            portletConfig =  (InternalPortletConfig) mgr.getPortletConfig(applicationId, portletName);
 
         } catch (PortletContainerException ex) {
             throw new ServletException(ex);
         }
 
-        // Retrieve the portletDD and create portlet config.
-        PortletDD portletDD = null;
-        PortletAppDD portletAppDD =
-            portletContext.getPortletApplicationDefinition();
-        for (Iterator it = portletAppDD.getPortlets().iterator();
-             it.hasNext();) {
-            PortletDD currentDD = (PortletDD) it.next();
-            if (currentDD.getPortletName().equals(portletName)) {
-                portletDD = currentDD;
-                break;
-            }
-        }
-        if (portletDD == null) {
-            throw new ServletException("Unable to resolve portlet '"
-                + portletName + "'");
-        }
-        portletConfig = new PortletConfigImpl(getServletConfig(),
-            portletContext,
-            portletDD);
-
+        PortletDD portletDD = portletConfig.getPortletDefinition();
         // Create and initialize the portlet wrapped in the servlet.
         try {
             ClassLoader loader = Thread.currentThread().getContextClassLoader();

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletRegistryService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletRegistryService.java?view=diff&rev=510390&r1=510389&r2=510390
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletRegistryService.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletRegistryService.java Wed Feb 21 20:27:15 2007
@@ -17,10 +17,12 @@
 package org.apache.pluto.spi.optional;
 
 import org.apache.pluto.descriptors.portlet.PortletAppDD;
+import org.apache.pluto.descriptors.portlet.PortletDD;
 import org.apache.pluto.PortletContainerException;
 import org.apache.pluto.internal.InternalPortletContext;
 
 import javax.portlet.PortletContext;
+import javax.portlet.PortletConfig;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -79,7 +81,13 @@
      * @throws PortletContainerException
      */
     PortletContext getPortletContext(String applicationId)
-    throws PortletContainerException;
+        throws PortletContainerException;
+
+    PortletDD getPortletDescriptor(String applicationId, String portletName)
+        throws PortletContainerException;
+
+    PortletConfig getPortletConfig(String applicationId, String portletName)
+        throws PortletContainerException;
 
     /**
      * Add a listener which will recieve notifications of newly