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