You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ogryb <ol...@gryb.info> on 2008/02/28 03:07:47 UTC

Re: Serialization of XML includes an abstract elemt and not one of the possible substitutions

http://www.nabble.com/file/p15728080/authz.wsdl authz.wsdl 
http://www.nabble.com/file/p15728080/info_gryb_xacml_config.xml
info_gryb_xacml_config.xml 
Gaurav,

I've just downloaded the nightly build as you suggested and updated my
M2_REPO with new jars using 'mvn install:file-install ...', but have the
same problem as Mads: substitutionGroup doesn't work correctly.

I've attached WSDL with all schemas and input XML. I use the following code
to deserialize Config object:

				XMLInputFactory factory = XMLInputFactory.newInstance(); 
				XMLStreamReader 	xmlReader = factory.createXMLStreamReader(rs); 
				Config cf = new Config();
				Config.Factory.parse(xmlReader);
				
				log.debug("Read config file successfully");
				if (cf.getPolicySet() != null)
					log.debug("Policy set description: " +
cf.getPolicySet().getDescription());
				ret = cf;

I got "Unexpected subelement" exception. Please look into code that
wsdl2code has generated:

ConditionType.Factory.parse:

.....
                             if (reader.isStartElement() && new
javax.xml.namespace.QName("urn:oasis:names:tc:xacml:2.0:policy:schema:os","Expression").equals(reader.getName())){
                                
                                     
object.setExpression(os.schema.policy._0._2.xacml.tc.names.oasis.ExpressionType.Factory.parse(reader));
                                      
                                        reader.next();
                                    
                              }  // End of if for expected property start
element
                                
                                else{
                                    // A start element we are not expecting
indicates an invalid parameter was passed
                                    throw new
org.apache.axis2.databinding.ADBException("Unexpected subelement " +
reader.getLocalName());
                                }

The problem with this code is that:

new
javax.xml.namespace.QName("urn:oasis:names:tc:xacml:2.0:policy:schema:os","Expression").equals(reader.getName())

will NEVER return true becuase "Expression" is an abstract element that will
never be present in an input XML. That's why it throws the exception in
spite of the fact that I pass an element that does belong to "Expression"
substitution group.

PS. It's actually about de-serialization code. Was it fixed as well?


Hi Mads -

Axis2 nightly build has changes in the way which serialization is done in
axis2 ,it uses the xml bean serialization instead of axion, you might want
to try generating the wsdl2code using the latest nightly build.

Thanks
Gaurav


-- 
View this message in context: http://www.nabble.com/Serialization-of-XML-includes-an-abstract-elemt-and-not-one-of-the-possible-substitutions-tp14921340p15728080.html
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Serialization of XML includes an abstract elemt and not one of the possible substitutions

Posted by ogryb <ol...@gryb.info>.
I just want to let you know that I switched from ADB to xmlbeans (wdl2java -d
xmlbeans...) that work correctly for this WSDL, so I'm going to stick to
xmlbeans.




http://www.nabble.com/file/p15728080/authz.wsdl authz.wsdl 
http://www.nabble.com/file/p15728080/info_gryb_xacml_config.xml
info_gryb_xacml_config.xml 
Gaurav,

I've just downloaded the nightly build as you suggested and updated my
M2_REPO with new jars using 'mvn install:file-install ...', but have the
same problem as Mads: substitutionGroup doesn't work correctly.

I've attached WSDL with all schemas and input XML. I use the following code
to deserialize Config object:

				XMLInputFactory factory = XMLInputFactory.newInstance(); 
				XMLStreamReader 	xmlReader = factory.createXMLStreamReader(rs); 
				Config cf = new Config();
				Config.Factory.parse(xmlReader);
				
				log.debug("Read config file successfully");
				if (cf.getPolicySet() != null)
					log.debug("Policy set description: " +
cf.getPolicySet().getDescription());
				ret = cf;

I got "Unexpected subelement" exception. Please look into code that
wsdl2code has generated:

ConditionType.Factory.parse:

.....
                             if (reader.isStartElement() && new
javax.xml.namespace.QName("urn:oasis:names:tc:xacml:2.0:policy:schema:os","Expression").equals(reader.getName())){
                                
                                     
object.setExpression(os.schema.policy._0._2.xacml.tc.names.oasis.ExpressionType.Factory.parse(reader));
                                      
                                        reader.next();
                                    
                              }  // End of if for expected property start
element
                                
                                else{
                                    // A start element we are not expecting
indicates an invalid parameter was passed
                                    throw new
org.apache.axis2.databinding.ADBException("Unexpected subelement " +
reader.getLocalName());
                                }

The problem with this code is that:

new
javax.xml.namespace.QName("urn:oasis:names:tc:xacml:2.0:policy:schema:os","Expression").equals(reader.getName())

will NEVER return true becuase "Expression" is an abstract element that will
never be present in an input XML. That's why it throws the exception in
spite of the fact that I pass an element that does belong to "Expression"
substitution group.

PS. It's actually about de-serialization code. Was it fixed as well?


gaurav lall wrote:
> 
> Hi Mads -
> 
> Axis2 nightly build has changes in the way which serialization is done in
> axis2 ,it uses the xml bean serialization instead of axion, you might want
> to try generating the wsdl2code using the latest nightly build.
> 
> Thanks
> Gaurav
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Serialization-of-XML-includes-an-abstract-elemt-and-not-one-of-the-possible-substitutions-tp14921340p15773050.html
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org