felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pde...@apache.org
Subject svn commit: r1664925 - /felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext
Date Sat, 07 Mar 2015 21:56:02 GMT
Author: pderop
Date: Sat Mar  7 21:56:01 2015
New Revision: 1664925

URL: http://svn.apache.org/r1664925
Log:
Use standard bnd metatype annotations.

Modified:
    felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext

Modified: felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext?rev=1664925&r1=1664924&r2=1664925&view=diff
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext
(original)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.mdtext
Sat Mar  7 21:56:01 2015
@@ -9,6 +9,7 @@ A configuration dependency is always req
 Annotation attributes:
 
 * *pid*: Returns the pid for a given service (by default, the pid is the service class name).
+* *pidClass*: Will the the name of the specified class as the the pid for a given service
(by default, the pid is the service class name).
 * *propagate*: Returns true if the configuration properties must be published along with
the service. Any additional service properties specified directly are merged with these.
 * *heading*: The label used to display the tab name (or section) where the properties are
displayed. Example: "Printer Service".
 * *description*: A human readable description of the PID this annotation is associated with.
Example: "Configuration for the PrinterService bundle".
@@ -29,33 +30,40 @@ In the following example, the "Printer"
         }
     }
 
-This other example shows how to specify a configuration dependency, as well as meta data
used to customize the WebConsole GUI. Using these meta data, you can specify for example the
default value for your configurations data, some descriptions, the cardinality of configuration
values, etc ...
-
-    :::java
-    package org.apache.felix.sample;
-    
-    @Component
-    public class Printer {
-        @ConfigurationDependency(
-            heading = "Printer Service",
-            description = "Declare here parameters used to configure the Printer service",
-            metadata = {
-                @PropertyMetaData(heading = "Ip Address",
-                                  description = "Enter the ip address for the Printer service",
-                                  defaults = { "127.0.0.1" },
-                                  type = String.class,
-                                  id = "IPADDR",
-                                  cardinality = 0),
-                @PropertyMetaData(heading = "Port Number",
-                                  description = "Enter the port number for the Printer service",
-                                  defaults = { "4444" },
-                                  type = Integer.class,
-                                  id = "PORTNUM",
-                                  cardinality = 0)
-                 }
-        )
-        void updated(Dictionary config) {
-            // load configuration from the provided dictionary.
-        }
-    }
-
+This other example shows how to specify a configuration dependency, as well as meta data
used to customize the 
+WebConsole GUI. Using these meta data, you can specify for example the default value for
your 
+configurations data, some descriptions, the cardinality of configuration values, etc ...
+(we use here standard bnd metatype annotations, [see bnd metatype documentation here](http://www.aqute.biz/Bnd/MetaType).
+
+ First, we define the configuration metadata, using standard bndtools metatatype annotations:
+
+     :::java
+     package sample;
+     import aQute.bnd.annotation.metatype.Meta.AD;
+     import aQute.bnd.annotation.metatype.Meta.OCD;
+
+     @OCD(description = "Declare here the Printer Configuration.")
+     public interface PrinterConfiguration {
+         @AD(description = "Enter the printer ip address")
+         String ipAddress();
+
+         @AD(description = "Enter the printer address port number.")
+         int portNumber();
+     }
+     
+ Next, we define our Printer service which instantiates the PrinterConfiguration using the
*Configurable" bndlib helper:
+
+     package sample;
+     import aQute.bnd.annotation.metatype.*;
+
+     @Component
+     public class Printer {
+         @ConfigurationDependency(pidClass = PrinterConfiguration.class) // Will use pid
"sample.PrinterConfiguration"
+         void updated(Dictionary props) {
+             // load configuration from the provided dictionary, or throw an exception of
any configuration error.
+             PrinterConfig cnf = Configurable.createConfigurable(PrinterConfig.class, props);
+             String ip = cnf.ipAddress();
+             int port = cnf.portNumber();
+             ...
+         }
+     }



Mime
View raw message