Nesting configuration elements

You can use metatype extensions to define configuration that can be expressed as nested XML elements in the server.xml file.

Examples

The following example shows how to support this user configuration in the server.xml file:
<family mother="jane" father="john">
  <child name="susie" age="8" />
  <child name="danny" age="5" />
</family>
The metatype XML uses ibm:type="pid" and ibm:reference as shown in following example:
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData
  xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0"
  xmlns:ibm="http://www.ibm.com/xmlns/appservers/osgi/metatype/v1.0.0">

  <OCD id="family" name="family">
    <AD id="mother" name="mother" type="String" default="Ma" />
    <AD id="father" name="father" type="String" default="Pa" />
    <AD id="child" name="child" ibm:type="pid" ibm:reference="child-pid"
      required="false" type="String" cardinality="6" />       
  </OCD>

  <Designate pid="family">
    <Object ocdref="family" />
  </Designate>
    
  <OCD id="child" name="child" >
    <AD id="name" name="name" type="String" />
    <AD id="age" name="age" type="Integer" />
  </OCD>

  <Designate factoryPid="child-pid">
    <Object ocdref="child" />
  </Designate>
  
</metatype:MetaData>
The following example show how the code that receives the family properties uses the ConfigurationAdmin service to obtain the child property sets:
public void updated(Dictionary<String, ?> properties)
  throws ConfigurationException {

  Set<String> pids = new HashSet<String>();
  String mother = "null";
  String father = "null";

  try {
    if (properties != null) {
      mother = (String) properties.get("mother");
      father = (String) properties.get("father");
      String[] children = (String[]) properties.get("child");
      if (children == null || children.length == 0) {	
        return;
      }

      // Get the configuration admin service
      ConfigurationAdmin configAdmin = null;
      ServiceReference configurationAdminReference = 
        bundleContext.getServiceReference(ConfigurationAdmin.class.getName());
		                   
      if (configurationAdminReference != null) {
        configAdmin = (ConfigurationAdmin)
          bundleContext.getService(configurationAdminReference);
      }	

      for (String childPid : children) {
        pids.add(childPid);
        Configuration config = configAdmin.getConfiguration(childPid);
        String name = (String) config.getProperties().get("name";
        Integer age = (Integer) config.getProperties().get("age");
      }
    }
  }

  catch (Exception e) {
    e.printStackTrace();
  }
}

Icon that indicates the type of topic Task topic

Terms and conditions for information centers | Feedback


Timestamp icon Last updated: Monday, 21 April 2014
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-nd-iseries&topic=twlp_nest_config_elem
File name: twlp_nest_config_elem.html