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 es...@apache.org on 2006/09/08 07:38:23 UTC
svn commit: r441381 - in
/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto:
PortletContainer.java core/PortletContainerImpl.java
Author: esm
Date: Thu Sep 7 22:38:22 2006
New Revision: 441381
URL: http://svn.apache.org/viewvc?view=rev&rev=441381
Log:
[PLUTO-256]: added getPortletApplicationDescriptor(String) to the PortletContainer interface and impl.
Modified:
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java?view=diff&rev=441381&r1=441380&r2=441381
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java Thu Sep 7 22:38:22 2006
@@ -15,11 +15,14 @@
*/
package org.apache.pluto;
+import java.io.IOException;
+
import javax.portlet.PortletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
+
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
/**
* The publicized entry point into Pluto. The base functionality of the portlet
@@ -43,6 +46,8 @@
* <p/>
* <TR><TD>{@link #destroy()}</TD> <TD>Destroy and remove container from
* service.</TD> <TD>Performed only once per container lifecylce</TD></TR>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:esm@apache.org">Elliot Metsger</a>
* @version $Id: PortletContainer.java 36010 2004-07-30 14:16:06Z ddewolf $
*/
public interface PortletContainer {
@@ -134,4 +139,20 @@
* @return the container services provided by either the portal or the defaults.
*/
public OptionalContainerServices getOptionalContainerServices();
+
+ /**
+ * Retrieve the {@link PortletAppDD} for the portlet
+ * located at the supplied context.
+ *
+ * Must not return null.
+ *
+ * @param context the context of the portlet
+ * @return the portlet application descriptor
+ * @throws PortletContainerException if the container has trouble obtaining
+ * the context of the portlet, or retrieving
+ * the <code>PortletAppDD</code>
+ */
+ public PortletAppDD getPortletApplicationDescriptor(String context)
+ throws PortletContainerException;
+
}
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java?view=diff&rev=441381&r1=441380&r2=441381
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java Thu Sep 7 22:38:22 2006
@@ -26,7 +26,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
import org.apache.pluto.internal.InternalPortletWindow;
+import org.apache.pluto.internal.PortletDescriptorRegistry;
import org.apache.pluto.internal.impl.ActionRequestImpl;
import org.apache.pluto.internal.impl.ActionResponseImpl;
import org.apache.pluto.internal.impl.PortletWindowImpl;
@@ -44,6 +46,7 @@
*
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
+ * @author <a href="mailto:esm@apache.org">Elliot Metsger</a>
* @version 1.0
* @since Sep 18, 2004
*/
@@ -282,6 +285,46 @@
return optionalContainerServices;
}
+ public PortletAppDD getPortletApplicationDescriptor(String context)
+ throws PortletContainerException {
+
+ // make sure the container has initialized
+ ensureInitialized();
+
+ // sanity check
+ if (context == null || context.trim().equals("")) {
+ final String msg = "Context was null or the empty string.";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ // obtain the context of the portlet
+ ServletContext portletCtx = servletContext.getContext(context);
+ if (portletCtx == null) {
+ final String msg = "Unable to obtain the servlet context for " +
+ "portlet context [" + context + "]. Ensure the portlet has " +
+ "been deployed and that cross context support is enabled.";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ // obtain the portlet application descriptor for the portlet
+ // context.
+ PortletAppDD portletAppDD = PortletDescriptorRegistry
+ .getRegistry()
+ .getPortletAppDD(portletCtx);
+
+ // we can't return null
+ if (portletAppDD == null) {
+ final String msg = "Obtained a null portlet application description for " +
+ "portlet context [" + context + "]";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ return portletAppDD;
+ }
+
// Private Methods ---------------------------------------------------------
@@ -314,6 +357,16 @@
if (LOG.isInfoEnabled()) {
LOG.info("Portlet Container [" + name + "]: " + message);
}
+ }
+
+ /**
+ * Prints a message at ERROR level with the container name prefix.
+ * @param message log message.
+ */
+ private void errorWithName(String message) {
+ if (LOG.isErrorEnabled()) {
+ LOG.info("Portlet Container [" + name + "]: " + message);
+ }
}
}