Uploaded image for project: 'CDI Specification Issues'
  1. CDI Specification Issues
  2. CDI-686

Could InterceptionFactory accept an interface as type parameter

    XMLWordPrintable

Details

    • Clarification
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Done
    • 2.0 .Final
    • 2.0 .Final
    • None
    • None

    Description

      If you take this code:

          @Produces
          public List<Object> produceList(InterceptionFactory<List<Object>> interceptionFactory) {
              interceptionFactory.ignoreFinalMethods().configure().filterMethods((m) -> {
                  if (m.getJavaMember().getName().equals("add")
                          && m.getJavaMember().getParameterCount() == 1) {
                      return true;
                  }
                  return false;
              }).findFirst().get().add(Monitor.Literal.INSTANCE);
              return interceptionFactory.createInterceptedInstance(new ArrayList<>());
          }
      

      Parameterized type for injected InterceptionFactory is an interface List<Object>, so when calling configure(), user will work with an AnnotatedTypeConfigurator<List<Object>> to apply interceptor binding.

      In a standard interceptor usage, interceptor binding on interface are ignored (even if they have @Inherited annotation), so doing it with InterceptionFactory could be confusing for some user.

      Attachments

        Activity

          People

            asabotdu@redhat.com Antoine Sabot-Durand (Inactive)
            asabotdu@redhat.com Antoine Sabot-Durand (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: