exception when using fromXML

68 views
Skip to first unread message

jxstanford

unread,
Mar 30, 2012, 12:25:07 PM3/30/12
to sca...@googlegroups.com
Hi Eugene,

I'm getting an exception that I don't understand when I call fromXML.  I've attached my sbt project since the schema is spread across several files, and it might be useful to see the build params.  Basically, I have this body:

<?xml version="1.0" encoding="UTF-8"?>
<AdminCatalog xmlns="http://www.vmware.com/vcloud/v1.5" name="testCatalog" id="urn:vcloud:catalog:6e36a026-35c6-4755-82eb-e5a6bde8552d" type="application/vnd.vmware.admin.catalog+xml" href="https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://172.16.200.220/api/v1.5/schema/master.xsd">
    <Link rel="up" type="application/vnd.vmware.admin.organization+xml" href="https://172.16.200.220/api/admin/org/cdd276fd-c837-441c-9d87-3e5b10b09ce5"/>
    <Link rel="alternate" type="application/vnd.vmware.vcloud.catalog+xml" href="https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d"/>
    <Link rel="down" type="application/vnd.vmware.vcloud.owner+xml" href="https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/owner"/>
    <Link rel="add" type="application/vnd.vmware.vcloud.catalogItem+xml" href="https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/catalogItems"/>
    <Link rel="edit" type="application/vnd.vmware.admin.catalog+xml" href="https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d"/>
    <Link rel="publish" type="application/vnd.vmware.admin.publishCatalogParams+xml" href="https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/action/publish"/>
    <Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/metadata"/>
    <Tasks>
        <Task status="running" startTime="2012-03-30T12:05:31.252-04:00" operationName="catalogCreateCatalog" operation="Creating Catalog testCatalog(6e36a026-35c6-4755-82eb-e5a6bde8552d)" expiryTime="2012-06-28T12:05:31.252-04:00" name="task" id="urn:vcloud:task:7b088680-d532-440c-b872-5a6f1a394e45" type="application/vnd.vmware.vcloud.task+xml" href="https://172.16.200.220/api/task/7b088680-d532-440c-b872-5a6f1a394e45">
            <Owner type="application/vnd.vmware.admin.catalog+xml" name="testCatalog" href="https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d"/>
            <User type="application/vnd.vmware.admin.user+xml" name="cloudadmin" href="https://172.16.200.220/api/admin/user/78dac396-68b5-43e6-983a-9011e0834f44"/>
            <Organization type="application/vnd.vmware.vcloud.org+xml" name="vcimTest-2b9d45d1-7a82-11e1-8ef1-68a86d51bb72" href="https://172.16.200.220/api/org/cdd276fd-c837-441c-9d87-3e5b10b09ce5"/>
        </Task>
    </Tasks>
    <CatalogItems/>
    <IsPublished>false</IsPublished>
</AdminCatalog>


And when I get to this line:

val b = fromXML[AdminCatalogType](XML.loadString(msg.body.get))

I get the following exception:

java.lang.NoSuchMethodError: scala.collection.generic.GenericTraversableTemplate.flatten(Lscala/Function1;)Lscala/collection/Traversable;
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTaskTypeFormat$$anonfun$parser$1194.apply(xmlprotocol.scala:17137)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTaskTypeFormat$$anonfun$parser$1194.apply(xmlprotocol.scala:17115)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:108)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:107)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:183)
at scala.util.parsing.combinator.Parsers$$anon$2.apply(Parsers.scala:754)
at scalaxb.ElemNameParser$class.parse(scalaxb.scala:673)
at com.vmware.api.vcloud.XMLProtocol$$anon$247.parse(xmlprotocol.scala:363)
at scalaxb.ElemNameParser$class.reads(scalaxb.scala:653)
at com.vmware.api.vcloud.XMLProtocol$$anon$247.reads(xmlprotocol.scala:363)
at scalaxb.package$.fromXML(scalaxb.scala:12)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTasksInProgressTypeFormat$$anonfun$parser$881$$anonfun$apply$2319.apply(xmlprotocol.scala:11323)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTasksInProgressTypeFormat$$anonfun$parser$881$$anonfun$apply$2319.apply(xmlprotocol.scala:11323)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at scala.collection.immutable.List.map(List.scala:45)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTasksInProgressTypeFormat$$anonfun$parser$881.apply(xmlprotocol.scala:11323)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudTasksInProgressTypeFormat$$anonfun$parser$881.apply(xmlprotocol.scala:11321)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:108)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:107)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:183)
at scala.util.parsing.combinator.Parsers$$anon$2.apply(Parsers.scala:754)
at scalaxb.ElemNameParser$class.parse(scalaxb.scala:673)
at com.vmware.api.vcloud.XMLProtocol$$anon$160.parse(xmlprotocol.scala:266)
at scalaxb.ElemNameParser$class.reads(scalaxb.scala:653)
at com.vmware.api.vcloud.XMLProtocol$$anon$160.reads(xmlprotocol.scala:266)
at scalaxb.package$.fromXML(scalaxb.scala:12)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudAdminCatalogTypeFormat$$anonfun$parser$249$$anonfun$apply$549.apply(xmlprotocol.scala:2549)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudAdminCatalogTypeFormat$$anonfun$parser$249$$anonfun$apply$549.apply(xmlprotocol.scala:2549)
at scala.Option.map(Option.scala:133)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudAdminCatalogTypeFormat$$anonfun$parser$249.apply(xmlprotocol.scala:2549)
at com.vmware.api.vcloud.XMLProtocol$DefaultVcloudAdminCatalogTypeFormat$$anonfun$parser$249.apply(xmlprotocol.scala:2545)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:108)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:107)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:204)
at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:183)
at scala.util.parsing.combinator.Parsers$$anon$2.apply(Parsers.scala:754)
at scalaxb.ElemNameParser$class.parse(scalaxb.scala:673)
at com.vmware.api.vcloud.XMLProtocol$$anon$37.parse(xmlprotocol.scala:65)
at scalaxb.ElemNameParser$class.reads(scalaxb.scala:653)
at com.vmware.api.vcloud.XMLProtocol$$anon$37.reads(xmlprotocol.scala:65)
at scalaxb.package$.fromXML(scalaxb.scala:12)
at com.vmware.cse.VcdProxySpec$$anonfun$1$$anonfun$apply$mcV$sp$8.apply$mcV$sp(VcdClientTest.scala:129)


So, it seems like there is a problem handling some one of the nested complex type.  Any help would be greatly appreciated!

Thanks,
John

vcloud-schema.tar.gz

eugene yokota

unread,
Mar 31, 2012, 2:12:45 AM3/31/12
to sca...@googlegroups.com
Hi John,

The tar ball didn't include plugin.sbt, but which version of scalaxb are you running?
I just ran it with the latest 0.7.0:

  import scalaxb._
  import com.vmware.api.vcloud._
  val b = fromXML[AdminCatalogType](x)
  println(b)

and got the following:

[info] Running Main 
AdminCatalogType(List(),List(LinkType(List(),https://172.16.200.220/api/admin/org/cdd276fd-c837-441c-9d87-3e5b10b09ce5,None,Some(application/vnd.vmware.admin.organization+xml),None,up,Map()), LinkType(List(),https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d,None,Some(application/vnd.vmware.vcloud.catalog+xml),None,alternate,Map()), LinkType(List(),https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/owner,None,Some(application/vnd.vmware.vcloud.owner+xml),None,down,Map()), LinkType(List(),https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/catalogItems,None,Some(application/vnd.vmware.vcloud.catalogItem+xml),None,add,Map()), LinkType(List(),https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d,None,Some(application/vnd.vmware.admin.catalog+xml),None,edit,Map()), LinkType(List(),https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d,None,None,None,remove,Map()), LinkType(List(),https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/action/publish,None,Some(application/vnd.vmware.admin.publishCatalogParams+xml),None,publish,Map()), LinkType(List(),https://172.16.200.220/api/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d/metadata,None,Some(application/vnd.vmware.vcloud.metadata+xml),None,down,Map())),None,Some(TasksInProgressType(List(),List(TaskType(List(),List(LinkType(List(),https://172.16.200.220/api/task/7b088680-d532-440c-b872-5a6f1a394e45/action/cancel,None,None,None,task:cancel,Map())),None,None,Some(ReferenceType(List(),https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d,None,Some(application/vnd.vmware.admin.catalog+xml),Some(testCatalog),Map())),None,Some(ReferenceType(List(),https://172.16.200.220/api/admin/user/78dac396-68b5-43e6-983a-9011e0834f44,None,Some(application/vnd.vmware.admin.user+xml),Some(cloudadmin),Map())),Some(ReferenceType(List(),https://172.16.200.220/api/org/cdd276fd-c837-441c-9d87-3e5b10b09ce5,None,Some(application/vnd.vmware.vcloud.org+xml),Some(vcimTest-2b9d45d1-7a82-11e1-8ef1-68a86d51bb72),Map())),None,None,Map(@href -> DataRecord(https://172.16.200.220/api/task/7b088680-d532-440c-b872-5a6f1a394e45), @type -> DataRecord(application/vnd.vmware.vcloud.task+xml), @name -> DataRecord(task), @id -> DataRecord(urn:vcloud:task:7b088680-d532-440c-b872-5a6f1a394e45), @status -> DataRecord(running), @operation -> DataRecord(Creating Catalog testCatalog(6e36a026-35c6-4755-82eb-e5a6bde8552d)), @operationName -> DataRecord(catalogCreateCatalog), @startTime -> DataRecord(2012-03-30T12:05:31.252-04:00), @expiryTime -> DataRecord(2012-06-28T12:05:31.252-04:00)))),Map())),None,Some(CatalogItemsType(List(),List(),Map())),Some(false),Some(https://172.16.200.220/api/admin/catalog/6e36a026-35c6-4755-82eb-e5a6bde8552d),Some(application/vnd.vmware.admin.catalog+xml),testCatalog,Some(urn:vcloud:catalog:6e36a026-35c6-4755-82eb-e5a6bde8552d),Map(@{http://www.w3.org/2001/XMLSchema-instance}schemaLocation -> DataRecord({http://www.w3.org/2001/XMLSchema-instance}schemaLocation,http://www.vmware.com/vcloud/v1.5 http://172.16.200.220/api/v1.5/schema/master.xsd)))

One of the bugs that's fixed in 0.7.0 was about scalaxb mistakenly detecting inner simple types as duplicates, so maybe you were hitting that.

-eugene

jxstanford

unread,
Apr 1, 2012, 7:04:20 PM4/1/12
to sca...@googlegroups.com
HI Eugene,

Indeed, I was using 0.6.8. I updated to 0.7.0, and the issue has gone away.

Thanks again!

John
Reply all
Reply to author
Forward
0 new messages