You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Nuno Ricardo Algarvio de Oliveira (JIRA)" <ji...@apache.org> on 2018/04/09 12:17:01 UTC

[jira] [Created] (WW-4932) Conversion fails when generic type is an interface

Nuno Ricardo Algarvio de Oliveira created WW-4932:
-----------------------------------------------------

             Summary: Conversion fails when generic type is an interface
                 Key: WW-4932
                 URL: https://issues.apache.org/jira/browse/WW-4932
             Project: Struts 2
          Issue Type: Improvement
          Components: Other
            Reporter: Nuno Ricardo Algarvio de Oliveira


Hi, I was asked to create this issue after exchanging some emails in the struts mailing list.

I had the following problem:
{noformat}
Hi,

I am having problems populating an action variable Set by request using
struts type conversion if the Set has the element type defined as an
interface.
I have a UserAction-conversion.properties file with the following
configuration using the class implementation:

KeyProperty_roles=id
Element_roles=path.to.class.Roles
CreateIfNull_roles=true

And UserAction has the collection Set<RolesInterface>. Roles obviously
implements RolesInterface.

If the Set element type <RolesInterface> is deleted it works just fine.
Am I doing something wrong or is this not possible?

Thanks{noformat}
And this was the response, which fixed my problem. :
{noformat}
I reproduced it and seems it's because it tries to instantiate a new
element but the interface cannot being instantiated. Please see [1] to
know why it tries to instantiate interface instead of class.

Annotating the getRoles or setRoles method with @Element(value =
path.to.class.Roles.class) may fix this issue. (shouldn't it be
path.to.class.Role instead? it seems Roles is a list not element)

Regards.

[1]
github.com/apache/struts/blob/05829e3faadd15cfa67eb234cd1775f2b98918cb/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java#L100{noformat}
After acknowledging the issue is fixed, the fix suggestion:
{noformat}
You're welcome :) glad to hear this. However, I think it's better that
Struts honor .properties file (where element class has been defined
strictly by user) before the generic parametrics [1]. Could you please
register an issue at [2] with title "conversion fails when generic type
is an interface" then paste these emails contents in it's description.

Thanks for your report!

[1]
github.com/apache/struts/blob/05829e3faadd15cfa67eb234cd1775f2b98918cb/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultObjectTypeDeterminer.java#L100
[2] issues.apache.org/jira/projects/WW/
{noformat}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)