felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Olivier NOUGUIER (JIRA)" <j...@apache.org>
Subject [jira] [Created] (FELIX-4745) Support for aspectj advice static method
Date Fri, 02 Jan 2015 22:10:34 GMT
Olivier NOUGUIER created FELIX-4745:
---------------------------------------

             Summary: Support for aspectj advice static method
                 Key: FELIX-4745
                 URL: https://issues.apache.org/jira/browse/FELIX-4745
             Project: Felix
          Issue Type: Bug
          Components: iPOJO
    Affects Versions: ipojo-manipulator-1.12.0
            Reporter: Olivier NOUGUIER
            Priority: Minor


When using aspectj to weave classes prior to iPojo packaging, injected advice are ignore by
iPojo bytecode manipulation.
Then NPE are thrown in the advice because of the lazy initialization mechanism of @Requires
services.

In my usecase, I want to weave @Transactional springframework aspect in iPojo component. 

Code generated:

static final String updateName_aroundBody0(SignupTestDao ajc$this, String name) {
  LOGGER.info(*ajc$this.testDao*);

  for (Test test : *ajc$this.testDao*.findAll()) {
    test.setName(name);
    *ajc$this.testDao*.update(test);
    if (name.equals("boom")) {
      throw new RuntimeException("boom");
    }
  }
  return "done";
}

Code expected:

static final String updateName_aroundBody0(SignupTestDao ajc$this, String name)
{
  LOGGER.info(*ajc$this.__gettestDao()*);

  for (Test test : *ajc$this.__gettestDao()*.findAll()) {
    test.setName(name);
    *ajc$this.__gettestDao()*.update(test);
    if (name.equals("boom")) {
      throw new RuntimeException("boom");
    }
  }
  return "done";
}

A naive fix is to apply iPojo bytecode manipulation to static methods... see the patch provided.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message