blob: 8a598c4a7ecddd6c453410c1f461fe28e99fc1dc [file] [log] [blame]
Pierre De Rop804f4be2010-04-25 22:57:56 +00001This sample illustrates the usage of the new DependencyManager annotations.
2
3Sample description:
4
Pierre De Rop452f4382010-06-21 09:46:37 +00005 This sample shows a basic "SpellChecker" application which provides a Felix "spellcheck" GOGO shell
6 command. The GOGO "spellcheck" command accepts a string as parameter, which is checked for proper
Pierre De Rop7e98d672010-07-03 21:56:18 +00007 existence. The SpellChecker class has a required/multiple (1..N) dependency over every available
Pierre De Rop452f4382010-06-21 09:46:37 +00008 "DictionaryService" services, which are internally used by the SpellChecker command, when checking
Pierre De Rop4c138482010-07-03 22:25:18 +00009 word existence.
Pierre De Ropd9c4e3c2010-05-24 21:42:18 +000010
11 A DictionaryService is defined using a FactoryConfigurationAdapterService annotation, allowing to
Pierre De Rop10839cc2010-07-04 21:07:59 +000012 instantiate many "DictionaryService" instances from webconsole. This annotation actually
Pierre De Rop452f4382010-06-21 09:46:37 +000013 registers a ManagedServiceFactory into the Registry, and you can specify some meta type
Pierre De Rop10839cc2010-07-04 21:07:59 +000014 informations in the annotation, allowing to configure the DictionaryService words and language from
15 WebConsole.
16 Each time you instantiate a factory configuration whose factory pid equals "Dictionary Services",
Pierre De Rop7e98d672010-07-03 21:56:18 +000017 then a corresponding "DictionaryService" service is instantiated and is then injected
Pierre De Rop452f4382010-06-21 09:46:37 +000018 into the SpellChecker service. So, before testing, you first have to go to webconsole
Pierre De Rop7e98d672010-07-03 21:56:18 +000019 Configuration panel, and specify some dictionaries (see the "Dictionary Services" Factory PID).
Pierre De Rop452f4382010-06-21 09:46:37 +000020 Then, go to the felix GOGO shell, and you will then see the "spellcheck" command (when typing
21 "help").
Pierre De Ropd9c4e3c2010-05-24 21:42:18 +000022
23 Notice that in the sample, you will also find a DictionaryAspect Service (DictionaryAspect.java), which
Pierre De Rop10839cc2010-07-04 21:07:59 +000024 decorates the EnglishDictionary service, by adding some additional words to it.
25
Pierre De Rop804f4be2010-04-25 22:57:56 +000026How to test:
27
28 1) Install the following bundles:
29
30 org.apache.felix.configadmin
31 org.apache.felix.metatype
Pierre De Rop7e98d672010-07-03 21:56:18 +000032 org.apache.felix.http.jetty (from trunk, because the latest released version seems to have a problem)
Pierre De Rop804f4be2010-04-25 22:57:56 +000033 org.apache.felix.webconsole
34
35 org.apache.felix.dependencymanager
36 org.apache.felix.dependencymanager.shell
37 org.apache.felix.dependencymanager.runtime
38 org.apache.felix.dependencymanager.samples.annotation
39
40 2) Start felix
Pierre De Rop4c138482010-07-03 22:25:18 +000041 3) Go to web console: in the Configuration panel, edit the "Dictionary Services"
Pierre De Rop452f4382010-06-21 09:46:37 +000042 Configuration, add some dictionaries. By default, an English dictionary is displayed. Just
Pierre De Rop10839cc2010-07-04 21:07:59 +000043 click on "save", *then click on your refresh web browser*: you will see a new dictionary service
Pierre De Rop452f4382010-06-21 09:46:37 +000044 instance. At this point, a DictionaryService service will be enabled (with the service property "lang=en"),
45 and the SpellCheck component will be injected with it. Then you should see the "spellcheck"
Pierre De Rop7e98d672010-07-03 21:56:18 +000046 command, when typing "help" on the gogo shell.
Pierre De Rop804f4be2010-04-25 22:57:56 +000047
48 5) Just type "spellcheck hello", and the command should reply a fantastic message, like "word hello is correct".
Pierre De Rop804f4be2010-04-25 22:57:56 +000049
Pierre De Rop10839cc2010-07-04 21:07:59 +000050 6) You can also click on the "Aspect Dictionary" button, in order to decorate the english dictionary with some
51 custom words.
Pierre De Ropd9c4e3c2010-05-24 21:42:18 +000052 By default, the "aspect" word is pre configured, but you can click on the "+" button in order to add more words.
Pierre De Rop10839cc2010-07-04 21:07:59 +000053 Then click on Save. At this point, the English DictionaryService will be decorated with the aspect service.
Pierre De Ropd9c4e3c2010-05-24 21:42:18 +000054 So, now, if you type "spellcheck aspect", then the message: "word aspect is correct" should be displayed.