| This sample illustrates the usage of the new DependencyManager annotations. |
| |
| Sample description: |
| |
| This sample shows a basic "SpellChecker" application which provides a Felix "spellcheck" shell |
| command. The SpellChecker class is a Felix Shell command (it provides a "Command" service), |
| which accepts a string as parameter. So, when you type a string, the command just says if the |
| specified string has been found from one of its injected dictionaries. The SpellChecker class has a |
| required/multiple (1..N) dependency over any available DictionaryService. |
| |
| A DictionaryService is defined using a FactoryConfigurationAdapterService annotation, allowing to |
| instantiate many DictionaryService service instances from webconsole. This annotation actually registers |
| a ManagedServiceFactory into the Registry, and you can specify the meta type informations regarding |
| the properties metadata. |
| |
| So, before testing, you first have to go to webconsole Configuration panel, and specify some |
| dictionaries (see the DictionaryService Factory PID). |
| Then, go to the felix shell, and you will then see the "spellcheck" command (when typing "help"). |
| |
| Notice that in the sample, you will also find a DictionaryAspect Service (DictionaryAspect.java), which |
| decorates the EnglishDictionary service, by adding some additional words to *all* provided |
| DictionaryService services. The DictionaryAspect also show how to use a ConfigurationDependency annotation, |
| allowing to configure the words from webconsole. A ConfigurationDependency actually registers a ManagedService object |
| in the Registry, which also implements a MetaTypeProvider service for metatype support. |
| |
| How to test: |
| |
| 1) Install the following bundles: |
| |
| org.apache.felix.configadmin |
| org.apache.felix.metatype |
| org.apache.felix.http.jetty |
| org.apache.felix.webconsole |
| |
| org.apache.felix.dependencymanager |
| org.apache.felix.dependencymanager.shell |
| org.apache.felix.dependencymanager.runtime |
| org.apache.felix.dependencymanager.samples.annotation |
| |
| 2) Start felix |
| 3) Go to web console, in the Configuration pannel |
| 4) Edit the "Dictionary Services" Configuration, add some dictionaries. By default, an English dictionary is |
| displayed. Just click on "save", then click on your refresh web browser: you will see a new dictionary service |
| instance. At this point, a DictionaryService service will be enabled (with the service property "lang=en"), |
| and the SpellCheck component will be injected with it. Then you should see the "spellcheck" command, when typing |
| "help" on the shell. |
| |
| 5) Just type "spellcheck hello", and the command should reply a fantastic message, like "word hello is correct". |
| |
| 6) You can also click on the "Aspect Dictionary" button, in order to decorate *all* Dictionaries using some custom words. |
| By default, the "aspect" word is pre configured, but you can click on the "+" button in order to add more words. |
| Then click on Save. At this point, all DictionaryService instances will be decorated with the aspect service. |
| So, now, if you type "spellcheck aspect", then the message: "word aspect is correct" should be displayed. |
| |