commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Dacek (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-1348) StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf
Date Sun, 24 Sep 2017 16:26:00 GMT

    [ https://issues.apache.org/jira/browse/LANG-1348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16178269#comment-16178269
] 

Mark Dacek commented on LANG-1348:
----------------------------------

I started poking into this. It's a sweet circular call. 
You wind up at TypeUtils, Line 1672. This calls typeVariableToString, into the if block.
This, line 1775, calls the appendToAll method. You will hit line 1846... which calls the same
toString function that you called in the first place. 

I don't have a remediation plan. But maybe that will help!

> StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf
> ---------------------------------------------------------------------------------------
>
>                 Key: LANG-1348
>                 URL: https://issues.apache.org/jira/browse/LANG-1348
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.reflect.*
>    Affects Versions: 3.6
>         Environment: Java 8 update 144
>            Reporter: Dmitry Ovchinnikov
>
> The following code
> {code:java}
> final Method method = Enum.class.getMethod("valueOf", Class.class, String.class);
> final String typeText = TypeUtils.toString(method.getGenericReturnType());
> {code}
> throws the following
> {code:none}
> Exception in thread "main" java.lang.StackOverflowError
> 	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:126)
> 	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:40)
> 	at org.apache.commons.lang3.reflect.TypeUtils.parameterizedTypeToString(TypeUtils.java:1790)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1666)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.typeVariableToString(TypeUtils.java:1775)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1672)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.parameterizedTypeToString(TypeUtils.java:1803)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1666)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.typeVariableToString(TypeUtils.java:1775)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1672)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.parameterizedTypeToString(TypeUtils.java:1803)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1666)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.typeVariableToString(TypeUtils.java:1775)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1672)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.parameterizedTypeToString(TypeUtils.java:1803)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1666)
> 	at org.apache.commons.lang3.reflect.TypeUtils.appendAllTo(TypeUtils.java:1846)
> 	at org.apache.commons.lang3.reflect.TypeUtils.typeVariableToString(TypeUtils.java:1775)
> 	at org.apache.commons.lang3.reflect.TypeUtils.toString(TypeUtils.java:1672)
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message