java.lang.IllegalStateException: Unable to obtain nested generic from ? at level 1

Spring JIRA | Edge Dalmacio | 3 years ago
tip
Your exception is missing from the Samebug knowledge base.
Here are the best solutions we found on the Internet.
Click on the to mark the helpful solution and get rewards for you help.
  1. 0

    I'm trying to set an entry of a Map thru BeanWrapper via the code below. But I'm getting an IllegalStateException. This used to work back in 3.2.x, but doesn't work on 4.0.x. I've attached a sample project to show the issue. Simply switch to Spring 3.2.x to see that it works. {code:java} public interface Context<D> { D getData(); } ... public class ContextImpl<D> implements Context<D> { private final D data; public ContextImpl(D data) { this.data = data; } public D getData() { return this.data; } } ... BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(context); bw.setPropertyValue("data['message']", "it works!"); ... {code} {noformat} java.lang.IllegalStateException: Unable to obtain nested generic from ? at level 1 at org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:704) at org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:676) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1040) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:902) at typedescriptor.issue.ContextImplTest.setProperty(ContextImplTest.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) {noformat}

    Spring JIRA | 3 years ago | Edge Dalmacio
    java.lang.IllegalStateException: Unable to obtain nested generic from ? at level 1
  2. 0

    I'm trying to set an entry of a Map thru BeanWrapper via the code below. But I'm getting an IllegalStateException. This used to work back in 3.2.x, but doesn't work on 4.0.x. I've attached a sample project to show the issue. Simply switch to Spring 3.2.x to see that it works. {code:java} public interface Context<D> { D getData(); } ... public class ContextImpl<D> implements Context<D> { private final D data; public ContextImpl(D data) { this.data = data; } public D getData() { return this.data; } } ... BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(context); bw.setPropertyValue("data['message']", "it works!"); ... {code} {noformat} java.lang.IllegalStateException: Unable to obtain nested generic from ? at level 1 at org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:704) at org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:676) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1040) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:902) at typedescriptor.issue.ContextImplTest.setProperty(ContextImplTest.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) {noformat}

    Spring JIRA | 3 years ago | Edge Dalmacio
    java.lang.IllegalStateException: Unable to obtain nested generic from ? at level 1

    Root Cause Analysis

    1. java.lang.IllegalStateException

      Unable to obtain nested generic from ? at level 1

      at org.springframework.core.convert.TypeDescriptor.nested()
    2. Spring Core
      TypeDescriptor.nested
      1. org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:704)
      2. org.springframework.core.convert.TypeDescriptor.nested(TypeDescriptor.java:676)
      2 frames
    3. Spring Beans
      BeanWrapperImpl.setPropertyValue
      1. org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1040)
      2. org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:902)
      2 frames
    4. typedescriptor.issue
      ContextImplTest.setProperty
      1. typedescriptor.issue.ContextImplTest.setProperty(ContextImplTest.java:25)
      1 frame
    5. Java RT
      Method.invoke
      1. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      2. sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      3. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      4. java.lang.reflect.Method.invoke(Method.java:606)
      4 frames
    6. JUnit
      ParentRunner.run
      1. org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      2. org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      3. org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      4. org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      5. org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      6. org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      7. org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      8. org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      9. org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      10. org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      11. org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      12. org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      13. org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      13 frames
    7. JUnit4 Runner
      JUnit4TestReference.run
      1. org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
      1 frame
    8. JUnit3 Runner
      RemoteTestRunner.main
      1. org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      2. org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
      3. org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
      4. org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
      5. org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
      5 frames