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

Couldn't create property conduits for generic interfaces

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.2
    • 5.4
    • tapestry-ioc

    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

            thiagohp Thiago Henrique De Paula Figueiredo
            sody Ivan Khalopik
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: