You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Olivier NOUGUIER (JIRA)" <ji...@apache.org> on 2015/01/02 23:10:34 UTC
[jira] [Created] (FELIX-4745) Support for aspectj advice static
method
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)