Repository: cayenne Updated Branches: refs/heads/master 01a50fd76 -> 469ad0e41
mentioning DI decorators Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/469ad0e4 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/469ad0e4 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/469ad0e4 Branch: refs/heads/master Commit: 469ad0e41f02d23b1a60d2e01c4b172280f34e16 Parents: 01a50fd Author: aadamchik <[email protected]> Authored: Wed Mar 18 21:40:41 2015 +0300 Committer: aadamchik <[email protected]> Committed: Wed Mar 18 21:40:41 2015 +0300 ---------------------------------------------------------------------- .../upgrade-guide/src/docbkx/new-features.xml | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/469ad0e4/docs/docbook/upgrade-guide/src/docbkx/new-features.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/upgrade-guide/src/docbkx/new-features.xml b/docs/docbook/upgrade-guide/src/docbkx/new-features.xml index 256b46f..e91c097 100644 --- a/docs/docbook/upgrade-guide/src/docbkx/new-features.xml +++ b/docs/docbook/upgrade-guide/src/docbkx/new-features.xml @@ -41,6 +41,34 @@ <para>ServerRuntime can now be started without any ORM mapping at all. This is useful in situations when Cayenne is used as a stack to execute raw SQL, in unit tests, etc.</para> </section> + <section> + <title>DI Container Decorators</title> + <para>In addition to overriding services in DI container, Cayenne now allows to supply + decorators. True to the "smallest-footprint" DI philosophy, decorator approach is + very simple and does not require proxies or class enhancement. Just implement the + decorated interface and provide a constructor that takes a delegate instance being + decorated:<programlisting>public class MyInterfaceDecorator implements MyInterface { + + private MyInterface delegate; + + public MockInterface1_Decorator3(@Inject MyInterface delegate) { + this.delegate = delegate; + } + + @Override + public String getName() { + return "<" + delegate.getName() + ">"; + } +} + +Module module = new Module() { + + @Override + public void configure(Binder binder) { + binder.decorate(MyInterface.class).before(MyInterfaceDecorator.class); + } +};</programlisting></para> + </section> </section> <section xml:id="framework-api"> <title>Framework API</title>
