I am attempting to initialise an instance of a class with one of two sets of data, specified in a hivemodule.xml file, defined as contributions attached to configuration points.

The code shows instantiating of the object. If the service point called is 'testConfig.address' the code runs ok, but if I call the service point 'testConfig.address2' which references the second contribution it fails with error:

Error at file:...../META-INF/hivemodule.xml, line 41, column 72: Unable to update property data of object [EMAIL PROTECTED]: java.lang.reflect.InvocationTargetException
org.apache.hivemind.ApplicationRuntimeException: Unable to update property data of object [EMAIL PROTECTED]: java.lang.reflect.InvocationTargetException

I am new to HiveMind and would appreciate any pointers as to what I'm doing wrong.

--Code

   public static void main(String[] args) {
       Registry registry = RegistryBuilder.constructDefaultRegistry();
       Address address = (Address)registry.getService("testConfig.address2", Address.class);
       System.out.print(address.getAddress());
   }

-- hivemodule.xml

<?xml version="1.0"?>
<module id="testConfig" version="1.0.0" package = "test.config">

   <configuration-point id="Address">
     <schema>
       <element name="datum">
         <attribute name="key" required="true"/>
           <attribute name="value" required="true"/>
         <conversion class="test.config.Datum"/>
       </element>
     </schema>
   </configuration-point>
   <configuration-point id="Address2" schema-id="Address" />
     <contribution configuration-id="Address">
     <datum key="road"     value="Temple Quay"/>
     <datum key="town"     value="Bristol"/>
     <datum key="postcode" value="BS1"/>
     <datum key="country"     value="UK"/>
   </contribution>
   <contribution configuration-id="Address2" >
     <datum key="road"     value="Pall Mall"/>
     <datum key="town"     value="London"/>
     <datum key="postcode" value="SW1"/>
     <datum key="country"     value="UK"/>
   </contribution>

 <service-point id="address" interface="test.config.Address">
   <invoke-factory>
     <construct class="test.config.AddressImpl">
         <set-configuration property="data" configuration-id="Address"/>
     </construct>
   </invoke-factory>
 </service-point>

<service-point id="address2" interface="test.config.Address">
   <invoke-factory>
     <construct class="test.config.AddressImpl">
         <set-configuration property="data" configuration-id="Address2"/>
     </construct>
   </invoke-factory>
 </service-point>

</module>

Regards
Martin Pike


Reply via email to