[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [sisu-users] Sisu documentation
|
On 27 Sep 2012, at 18:12, Gernot Kvas wrote:
> Hi Stuart,
>
> Many thanks for your extensive answer.
>
> My use case is rather simple I believe, and as far as I understand, fits
> quite well with the current capabilities of Sisu.
>
> I've a quite large RCP application, and despite the use of OSGi, the
> bundles are quite statically wired, a lot of "Required Bundle" rather
> than "import". Bundles are logically grouped in components by namespace
> and dependency. Within such multi-bundle components, I'd like to use a
> very light-weighed DI approach for wiring a lot of classes together.
>
> The "components" currently expose declarative services to be linked
> together. My second (and secondary) use case would be to also replace
> this with annotation based DI.
One of the original use-cases for Sisu was wiring up an RCP application, so this is definitely in scope (though there are still some rough edges to smooth out).
> Wrt. bootstrapping. Given an RCP application, the "start" method of the
> IApplication would be the right place to have a
> "SisuGuice.inject(MyClass.class)" ?
The SisuGuice.inject method expects an existing instance that needs field/setter injection (btw, this class is expected to change in the API cleanup).
To ask Sisu to construct (and inject) a component you can use the SisuGuice.lookup method, which takes a Guice key such as Key.get( MyClass.class ).
One of the other tasks on the road-map is to reduce this dependency/use of Guice-specific types to make it easier to re-use the code elsewhere.
> Cheers,
>
> Gernot
>
> On Thu, 2012-09-27 at 17:32 +0100, Stuart McCulloch wrote:
>> Hi Gernot,
>>
>> Documentation is on our roadmap (http://wiki.eclipse.org/Sisu/Roadmap) and I'll be working on it over the next months.
>> Note that the API/SPI cleanup is still in progress, so any classes under org.eclipse.sisu.* may change in the near future.
>>
>> However, you can use Sisu in OSGi by only depending on JSR330 (ie. @Inject, @Named, etc.) in your components.
>>
>> When deployed in OSGi Sisu will:
>>
>> * Scan bundles that use JSR330 for classes tagged with @Named
>> * Bind missing @Inject dependencies to the dynamic Sisu locator
>> * Create an injector (per-bundle) with bindings for those components
>> * Register the bundle injectors with the OSGi service registry
>> * Lookup components dynamically across all registered injectors
>>
>> ( Note that fine-grained service imports/exports, like in peaberry, to interact with other frameworks like
>> Declarative Services is in the plan - but at the moment Sisu shares whole injectors between bundles )
>>
>> So, for example you could have a bundle with:
>>
>> @Named
>> public class MyFoo implements Foo {
>> // etc...
>> }
>>
>> and in another bundle you could have:
>>
>> @Named
>> public class Test {
>> @Inject
>> public Test( Foo foo ) {
>> // can also use field/setter injection
>> }
>> }
>>
>> and it will inject MyFoo into test - specifically it will inject the highest-ranked Foo (default ranking is to put 'Default' implementations before others).
>>
>> You could also @Inject List<Foo>, or @Inject Map<Named, Foo>, or even @Inject Map<String, Foo> if you wanted to see all Foo implementations.
>> These injected collections are fully dynamic and thread-safe, so as you start/stop bundles the contents could change as components come and go.
>>
>> Wrt. bootstrapping, at the moment you'd either use the SisuGuice static utility to lookup the root component, or tag it with @EagerSingleton.
>>
>> There is an old example over at:
>>
>> https://github.com/sonatype/sisu/tree/master/sisu-examples/guice-swing
>>
>> which demos some of the dynamics.
>>
>> Use "mvn clean install" to build, and "java -jar guice-swing-main/target/main.jar osgi" to start the framework (try starting/stopping the checkbox bundle).
>>
>> Anyway, watch out for some simpler examples over the coming weeks - is there any specific feature or example you'd be interested in?
>>
>> --
>> Cheers, Stuart
>>
>> On 26 Sep 2012, at 23:01, Gernot Kvas wrote:
>>
>>> Hi,
>>>
>>> I'd like to give Sisu a try, but I'm desperate to find some
>>> documentation. As I understand, the project is still somewhat in the
>>> transition from sonatype to eclipse. I've found some traces
>>> (http://sisu.sonatype.org/quick-guide.html), but this is just a redirect
>>> to the new Eclipse project page. Any chance to get some pointers about
>>> deployment, usage, maybe a small, intuitive example ;-)?
>>>
>>> Thanks in advance,
>>>
>>> Gernot
>>>
>>> _______________________________________________
>>> sisu-users mailing list
>>> sisu-users@xxxxxxxxxxx
>>> http://dev.eclipse.org/mailman/listinfo/sisu-users
>>
>> _______________________________________________
>> sisu-users mailing list
>> sisu-users@xxxxxxxxxxx
>> http://dev.eclipse.org/mailman/listinfo/sisu-users
>
>
> _______________________________________________
> sisu-users mailing list
> sisu-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/sisu-users