Hi Norman,

that sounds like quite a tall order :) Especially, ordering configuration and 
JSR250 (or blueprint) lifecycle callbacks sounds like something blueprint is 
unlikely to support out of the box.

By the sounds of it for the level of control you want, you might want to use 
the org.apache.aries.blueprint.BeanProcessor extension point. This allows you 
to intercept beans during creation where you could the instanceof checks 
against LogEnabled and Configurable as well as look at annotations (assuming no 
other BeanProcessor proxied the bean previously).

Now, the BeanProcessor is on the far end of supported extensions in that it is 
more likely to change or be completely redesigned :)

Regards,

Valentin



On 18 Jun 2010, at 18:20, Norman Maurer wrote:

> Hi Lin,
> 
> not exactly. I want to implement 3 things..
> 
> 1) LogEnabled.
> Every component which is instanced by aries should get checked if it
> implement LogEnabled. If so it has a setLog(Log logger) method which
> should get called to inject a Log instance
> 
> 2) Configurable.
> Every component which is instanced by aries should get checked if it
> implement Configurable. If so it need to get the "right" configuration
> passed to its configure(HierachicalConfiguration config) methd.
> 
> 3) JSR250
> Check if the component which is instanced by aries has
> @Resource(name="example"), @PostConstruct, @PreDestroy annotations on
> methods. If so inject the service with name example to the setter.
> Then call method which is annotated by @PostConstruct.  On shutdown /
> undeploy etc the method annoted with @PreDestroy should get called.
> 
> I need to be sure that it is handled in the right order.
> 
> LogEnabled, Configurable, JSR250
> 
> Hope its now clear what I want todo :)
> 
> Thx,
> Norman
> 
> 
> 
> 2010/6/18 Lin Sun <[email protected]>:
>> Hi
>> 
>> Aries already has this bean Interceptor concept that allows you to
>> specify precall before the method is invoked and specify postCall
>> after the method is invoked, see the Interceptor interface.
>> 
>> Aries also has an example in transaction-blueprint project where it
>> specifies a custom name space for transaction blueprint and allow
>> users to intercept attribute with certain transaction attribute on
>> bean method invocations.
>> 
>> for example -
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>>    xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0";>
>>     <bean id="TestBeanImpl" class="org.apache.aries.simple.TestBeanImpl">
>>        <tx:transaction method="insertRow" value="required"/>
>>     </bean>
>> 
>> </blueprint>
>> 
>> basically asks the blueprint container to manage required transaction
>> attribute/strategy on insertRow method invocation.
>> 
>> Is this similar as what you want to do, except you want to do it with 
>> logging?
>> 
>> HTH
>> 
>> Lin
>> 
>> 
>> On Fri, Jun 18, 2010 at 12:19 PM, Norman Maurer <[email protected]> wrote:
>>> Hi all,
>>> 
>>> I'm very new to Aries and wonder if its possible to add some kind of
>>> "PostBeanProcessor" (this is how it get called in spring). We at JAMES
>>> use spring at the moment to wire up our application as standalone
>>> application. Now we are working on "osgify" JAMES. We need to
>>> implement some kind of lifecycle methods. For example if a "service"
>>> implements LogEnabled interface it need to get a Log injected. The
>>> same is true for other dependencies.. We use JSR250 annotations, so we
>>> would need to handle this kind of stuff. I did some tests with
>>> spring-dm the last weeks and it seems to work but aries looks very
>>> interesting too.
>>> 
>>> You know, Eat your own dogfood ;)
>>> 
>>> 
>>> Thx,
>>> Norman
>>> 
>> 

Reply via email to