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 as...@apache.org on 2018/04/11 18:35:21 UTC

portals-pluto git commit: PLUTO-693 PortletURLImpl.setBeanParameter(PortletSerializable bean) does not attempt to determine the name of the specified bean

Repository: portals-pluto
Updated Branches:
  refs/heads/master 539a77b20 -> 349aa3318


PLUTO-693 PortletURLImpl.setBeanParameter(PortletSerializable bean) does not attempt to determine the name of the specified bean


Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/349aa331
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/349aa331
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/349aa331

Branch: refs/heads/master
Commit: 349aa33181700411cd580a39ba1b2c26be3c8879
Parents: 539a77b
Author: Neil Griffin <ne...@gmail.com>
Authored: Wed Apr 11 14:34:24 2018 -0400
Committer: Neil Griffin <ne...@gmail.com>
Committed: Wed Apr 11 14:34:24 2018 -0400

----------------------------------------------------------------------
 .../processor/PortletStateScopedBeanHolder.java |  6 ++-
 .../processor/PortletStateScopedConfig.java     |  2 +-
 .../pluto/container/impl/PortletURLImpl.java    | 51 +++++++++++++++-----
 3 files changed, 46 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/349aa331/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedBeanHolder.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedBeanHolder.java b/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedBeanHolder.java
index 49d4f41..4b3f9d5 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedBeanHolder.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedBeanHolder.java
@@ -208,7 +208,11 @@ public class PortletStateScopedBeanHolder implements Serializable {
   
       return (T) bi.instance;
    }
-   
+
+   public String getParameterName(Class<?> beanClass) {
+      return config.getParamName(beanClass);
+   }
+
    /**
     * Removes & destroys the given bean
     * @param bean

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/349aa331/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedConfig.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedConfig.java b/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedConfig.java
index c454f23..de2db57 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedConfig.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/bean/processor/PortletStateScopedConfig.java
@@ -178,7 +178,7 @@ public class PortletStateScopedConfig  implements Serializable {
       for (Contextual<?> b : context2Anno.keySet()) {
          if (b instanceof Bean) {
             Bean<?> bean = (Bean<?>)b;
-            if (beanClass.isAssignableFrom(bean.getBeanClass())) {
+            if (beanClass.isAssignableFrom(bean.getBeanClass()) || bean.getBeanClass().isAssignableFrom(beanClass)) {
                name = context2Anno.get(b).paramName;
                break;
             }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/349aa331/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
index 0940130..82774c3 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
@@ -18,6 +18,7 @@ package org.apache.pluto.container.impl;
 
 import java.util.Enumeration;
 
+import javax.enterprise.inject.spi.Bean;
 import javax.portlet.MimeResponse.Copy;
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletMode;
@@ -26,9 +27,11 @@ import javax.portlet.PortletURL;
 import javax.portlet.WindowState;
 import javax.portlet.WindowStateException;
 import javax.portlet.annotations.PortletSerializable;
+import javax.portlet.annotations.RenderStateScoped;
 
 import org.apache.pluto.container.PortletResponseContext;
 import org.apache.pluto.container.PortletURLProvider;
+import org.apache.pluto.container.bean.processor.PortletStateScopedBeanHolder;
 import org.apache.pluto.container.om.portlet.CustomPortletMode;
 import org.apache.pluto.container.om.portlet.PortletDefinition;
 import org.apache.pluto.container.om.portlet.Supports;
@@ -145,28 +148,54 @@ public abstract class PortletURLImpl extends BaseURLImpl implements PortletURL {
    
    @SuppressWarnings("unused")
    @Override
-   public void setBeanParameter(PortletSerializable bean) {
-      if (bean == null) {
+   public void setBeanParameter(PortletSerializable portletSerializable) {
+      if (portletSerializable == null) {
          StringBuilder txt = new StringBuilder(128);
          txt.append("Required parameter is null.");
-         txt.append(", bean: ").append(bean);
+         txt.append(", portletSerializable: ").append(portletSerializable);
          LOGGER.info(txt.toString());
          throw new IllegalArgumentException(txt.toString());
       }
-      
-      // TODO: must be fixed when the bean implementation is integrated!!
-      String name = "Bob";
-      //String name = PortletStateScopedBeanHolder.getParameterName(bean.getClass());
-      
+
+      PortletStateScopedBeanHolder portletStateScopedBeanHolder =
+          PortletStateScopedBeanHolder.getBeanHolder();
+      Class<? extends PortletSerializable> beanClass = portletSerializable.getClass();
+      String name;
+
+      if (portletStateScopedBeanHolder == null) {
+         RenderStateScoped renderStateScoped = beanClass.getAnnotation(RenderStateScoped.class);
+         if (renderStateScoped == null) {
+            StringBuilder txt = new StringBuilder(128);
+            txt.append("Given portletSerializable is not @RenderStateScoped.");
+            txt.append(", portletSerializable: ").append(portletSerializable);
+            LOGGER.info(txt.toString());
+            throw new IllegalArgumentException(txt.toString());
+         }
+
+         name = renderStateScoped.paramName();
+
+         if ((name == null) || (name.trim().length() == 0)) {
+            StringBuilder txt = new StringBuilder(128);
+            txt.append("@RenderStateScoped portletSerializable does not have a paramName.");
+            txt.append(", portletSerializable: ").append(portletSerializable);
+            LOGGER.info(txt.toString());
+            throw new IllegalArgumentException(txt.toString());
+         }
+      }
+      else {
+         beanClass = portletSerializable.getClass();
+         name = portletStateScopedBeanHolder.getParameterName(beanClass);
+      }
+
       if (name == null) {
          StringBuilder txt = new StringBuilder(128);
-         txt.append("Given bean is not @RenderStateScoped.");
-         txt.append(", bean: ").append(bean);
+         txt.append("Given portletSerializable is not @RenderStateScoped.");
+         txt.append(", portletSerializable: ").append(portletSerializable);
          LOGGER.info(txt.toString());
          throw new IllegalArgumentException(txt.toString());
       }
       
-      getRenderParameters().setValues(name, bean.serialize());
+      getRenderParameters().setValues(name, portletSerializable.serialize());
       
    }