Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1480

Couldn't create property conduits for generic interfaces

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.2
    • Fix Version/s: 5.4
    • Component/s: tapestry-ioc
    • Labels:

      Description

      Couldn't create property conduits for generic interfaces.

      public class TestTapestry {
      @Test
      public void test()

      { final PropertyAccess access = new PropertyAccessImpl(); final ClassPropertyAdapter adapter = access.getAdapter(NamedEntity.class); }

      public static interface Entity<T extends Serializable>

      { T getId(); }

      public static interface NamedEntity extends Entity<Long>

      { String getName(); }

      }

      This test will throw an exception:

      Caused by: java.lang.NullPointerException
      at org.apache.tapestry5.ioc.internal.util.GenericsUtils.extractActualType(GenericsUtils.java:143)
      at org.apache.tapestry5.ioc.internal.util.GenericsUtils.extractActualTypeAsClass(GenericsUtils.java:174)
      at org.apache.tapestry5.ioc.internal.util.GenericsUtils.extractGenericReturnType(GenericsUtils.java:40)
      at org.apache.tapestry5.ioc.internal.services.ClassPropertyAdapterImpl.<init>(ClassPropertyAdapterImpl.java:50)
      at org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:99)
      ... 33 more

      It is thrown because of this lines (GenericsUtils:140-143)

      final Class descendantClass = asClass(descendant);
      final ParameterizedType parameterizedType = (ParameterizedType) descendantClass.getGenericSuperclass();
      extractedType = parameterizedType.getActualTypeArguments()[typeArgumentIndex];

      It gets generic superclass, but it is null, there are only interfaces.

      So it makes impossible to create property bindings for such beans.

        Attachments

          Activity

            People

            • Assignee:
              thiagohp Thiago H. de Paula Figueiredo
              Reporter:
              sody Ivan Khalopik
            • Votes:
              2 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: