[jboss-dev-forums] [Design of JBoss ESB] - Re: Webservice - SOAP - JAXB Introductions

Sylvia Isler do-not-reply at jboss.com
Fri Aug 10 12:15:21 EDT 2007


I think this is a great idea also. But I am having trouble getting it to work.
I wrote the following class:
public class UnitPrice {
  | 	public double value;
  | 	UnitPrice(double value){
  | 		this.value=value;
  | 	}
  | 	UnitPrice()
  | 	{
  | 		
  | 	}
  | 	public double getValue()
  | 	{
  | 		return this.value;
  | 	}
  |    
  | }

with the following config file: (note I've tried the XmlAttribute and the commented out XmlElement for presenting a UnitPrice and its value.)

  | <?xml version = "1.0" encoding = "UTF-8"?>
  | <jaxb-intros xmlns="http://www.jboss.org/xsd/jaxb/intros">
  |  <Class name="junit.prices.UnitPrice">
  |     <XmlType name = "UnitPrice"/>
  |     <Field name="value">
  |     <!--  XmlElement name="value" nillable="true"  /-->
  |        <XmlAttribute name="value" required="true" /> 
  |     </Field>  
  |   </Class>
  | </jaxb-intros>
  |  

and the following xml file for unmarshalling:

<?xml version="1.0" encoding="UTF-8"?> 
  | <UnitPrice  value="40.0" xsi:noNamespaceSchemaLocation="C:\UnitPrice.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  | 

I then used the following code to test the unmarshalling of the above XML.
 	JaxbIntros config = IntroductionsConfigParser.parseConfig(getClass().getResourceAsStream("UnitConfig.xml"));
  | 	 	 
  | 	 	 
  | 	 	ClassIntroConfig classIntroConfig = config.getClazz().get(0); 
  |         assertEquals(UnitPrice.class.getName(), classIntroConfig.getName());
  |     	IntroductionsAnnotationReader reader = new IntroductionsAnnotationReader(config);
  |     	 
  |     	Map<String, Object> jaxbConfig= new HashMap<String, Object>();   
  |     	jaxbConfig.put(JAXBRIContext.ANNOTATION_READER, reader); 
  |     	JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] {UnitPrice.class}, jaxbConfig);
  |        
  |     	Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); 
  |     	JAXBElement jbe = null;
  |     	UnitPrice order =null;
  |     	 
  |     	StreamSource ss = new StreamSource(getClass().getResourceAsStream("UsdUnitPrice1.xml"));
  |     		 
  |     	jbe = unmarshaller.unmarshal(ss, UnitPrice.class);
  |    
  |     	order =(UnitPrice)jbe.getValue();
  |         try{
  |         	assertEquals("get double value error", 40.0, order.getValue());
  |         } catch (Exception e) {
  | 		fail(e.getMessage());
  | }
  | 

a UnitPrice instance is instantiated. However, the above test code fails because the value attribute of the unmarshalled UnitPrice instance is 0.0 instead of 40.0.

Does anyone see any problems with the JAXB Intros config file above that would cause JAXB to fail to properly unmarshall the above XML file?



Thanks, 


Sylvia



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4073112#4073112

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4073112



More information about the jboss-dev-forums mailing list