blob: e9cde3c5742106918e7e4ef1a71f99693e776942 [file] [log] [blame]
Pierre De Rop6b4a6c42010-04-25 22:57:56 +00001This sample illustrates the usage of the new DependencyManager annotations.
2
3Sample description:
4
Pierre De Ropcf7d7a62010-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 Rop2b71cb12010-07-03 21:56:18 +00007 existence. The SpellChecker class has a required/multiple (1..N) dependency over every available
Pierre De Ropcf7d7a62010-06-21 09:46:37 +00008 "DictionaryService" services, which are internally used by the SpellChecker command, when checking
Pierre De Rop047d5ec2010-07-03 22:25:18 +00009 word existence.
Pierre De Ropa97580d2010-05-24 21:42:18 +000010
11 A DictionaryService is defined using a FactoryConfigurationAdapterService annotation, allowing to
Pierre De Ropcf7d7a62010-06-21 09:46:37 +000012 instantiate many "DictionaryService" service instances from webconsole. This annotation actually
13 registers a ManagedServiceFactory into the Registry, and you can specify some meta type
14 informations in the annotation, allowing to display the configuration parameters from WebConsole.
Pierre De Rop2b71cb12010-07-03 21:56:18 +000015 Each time you instantiate a factory configuration whose factory pid is "Dictionary Services",
16 then a corresponding "DictionaryService" service is instantiated and is then injected
Pierre De Ropcf7d7a62010-06-21 09:46:37 +000017 into the SpellChecker service. So, before testing, you first have to go to webconsole
Pierre De Rop2b71cb12010-07-03 21:56:18 +000018 Configuration panel, and specify some dictionaries (see the "Dictionary Services" Factory PID).
Pierre De Ropcf7d7a62010-06-21 09:46:37 +000019 Then, go to the felix GOGO shell, and you will then see the "spellcheck" command (when typing
20 "help").
Pierre De Ropa97580d2010-05-24 21:42:18 +000021
22 Notice that in the sample, you will also find a DictionaryAspect Service (DictionaryAspect.java), which
23 decorates the EnglishDictionary service, by adding some additional words to *all* provided
Pierre De Rop047d5ec2010-07-03 22:25:18 +000024 DictionaryService services. The DictionaryAspect also shows how to use a ConfigurationDependency annotation,
25 allowing to configure some words from webconsole. A ConfigurationDependency actually registers a ManagedService
Pierre De Rop2b71cb12010-07-03 21:56:18 +000026 object in the Registry, which also implements a MetaTypeProvider service for metatype support.
Pierre De Rop6b4a6c42010-04-25 22:57:56 +000027
28How to test:
29
30 1) Install the following bundles:
31
32 org.apache.felix.configadmin
33 org.apache.felix.metatype
Pierre De Rop2b71cb12010-07-03 21:56:18 +000034 org.apache.felix.http.jetty (from trunk, because the latest released version seems to have a problem)
Pierre De Rop6b4a6c42010-04-25 22:57:56 +000035 org.apache.felix.webconsole
36
37 org.apache.felix.dependencymanager
38 org.apache.felix.dependencymanager.shell
39 org.apache.felix.dependencymanager.runtime
40 org.apache.felix.dependencymanager.samples.annotation
41
42 2) Start felix
Pierre De Rop047d5ec2010-07-03 22:25:18 +000043 3) Go to web console: in the Configuration panel, edit the "Dictionary Services"
Pierre De Ropcf7d7a62010-06-21 09:46:37 +000044 Configuration, add some dictionaries. By default, an English dictionary is displayed. Just
45 click on "save", then click on your refresh web browser: you will see a new dictionary service
46 instance. At this point, a DictionaryService service will be enabled (with the service property "lang=en"),
47 and the SpellCheck component will be injected with it. Then you should see the "spellcheck"
Pierre De Rop2b71cb12010-07-03 21:56:18 +000048 command, when typing "help" on the gogo shell.
Pierre De Rop6b4a6c42010-04-25 22:57:56 +000049
50 5) Just type "spellcheck hello", and the command should reply a fantastic message, like "word hello is correct".
Pierre De Rop6b4a6c42010-04-25 22:57:56 +000051
Pierre De Ropa97580d2010-05-24 21:42:18 +000052 6) You can also click on the "Aspect Dictionary" button, in order to decorate *all* Dictionaries using some custom words.
53 By default, the "aspect" word is pre configured, but you can click on the "+" button in order to add more words.
54 Then click on Save. At this point, all DictionaryService instances will be decorated with the aspect service.
55 So, now, if you type "spellcheck aspect", then the message: "word aspect is correct" should be displayed.