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());
}