All good, just so long as you don't go out on a limb.  ;-)

  - Dennis

Dennis M. Sosnoski
SOA and Web Services in Java
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117



Linus Kamb wrote:
> Thanks Dennis.
>
> I was barking up the wrong tree.  Well, I was barking at the tree when I 
> should have 
> been looking at a branch.  It was a collection of Enums inside the 
> StationInfo that I 
> was doing wrong somehow.  Cleaning that all up made it happy.
>
> thanks,
> Linus
>
>
> Dennis Sosnoski wrote:
>   
>> Hi Linus,
>>
>> First off, let me point out that you don't need the List factory methods 
>> in these classes. You can instead use create-type="java.util.ArrayList" 
>> on the <collection> element of the binding. Note that you don't need to 
>> worry about generics for this - Java 5 generics are essentially only a 
>> source code artifact, and you can just use the base ArrayList type for JiBX.
>>
>> That said, I don't see why you'd be getting the exception here. But from 
>> the stack trace, the exception is occurring *inside* the unmarshalling 
>> of a StationInfo (since StationInfo.JiBX_binding_unmarshal_1_0 is one of 
>> the methods in the trace), so I think the problem is actually with a 
>> List inside the StationInfo class.
>>
>> Hope that helps,
>>
>>   - Dennis
>>
>> Dennis M. Sosnoski
>> SOA and Web Services in Java
>> Training and Consulting
>> http://www.sosnoski.com - http://www.sosnoski.co.nz
>> Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117
>>
>>
>>
>> Linus Kamb wrote:
>>     
>>> I wanted to switch over all my uses of [] arrays to collections.
>>>
>>> I'm doing what I think is the exact same thing in two different places, and 
>>> in one 
>>> case it's throwing an UnsupportedOperationException from AbstractList.add.  
>>> Maybe 
>>> someone can see where I'm messing up.
>>>
>>> This is using JiBX as databinding for an Axis2 web service client and 
>>> server.
>>>
>>> The situation that works:
>>>
>>> class:
>>> public class DataDiscoveryResponse
>>> {
>>>      public List<DataItem> dataItems = new ArrayList<DataItem>();
>>>
>>>      // The following is required for JiBX because we're using the List 
>>> interface.
>>>      private static List<DataItem> buildDataItems() {
>>>             return new ArrayList<DataItem>();
>>>      }
>>> }
>>> mapping:
>>>      <mapping type-name="esdp:DataDiscoveryResponseType" abstract="true"
>>>          class="edu.iris.ws.esdp.DataDiscoveryResponse">
>>>          <collection field="dataItems" usage="optional"
>>>              
>>> factory="edu.iris.ws.esdp.DataDiscoveryResponse.buildDataItems">
>>>          </collection>
>>>      </mapping>
>>> msg:
>>> <?xml version='1.0' encoding='UTF-8'?>
>>>     <soapenv:Envelope 
>>> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>>>        <soapenv:Body>
>>>           <esdp:listDataResponse xmlns:gml="http://www.opengis.net/gml"; 
>>> xmlns:esdp="http://portal.earthscope.org";>
>>>              <esdp:DataItem xmlns:ogc="http://www.opengis.net/ogc";>
>>>             [snip]
>>>              </esdp:DataItem>
>>>           </esdp:listDataResponse>
>>> etc.
>>>
>>> The situation that doesn't work:
>>>
>>> class:
>>> public class StationDiscoveryResponse
>>> {
>>>      public List<StationInfo> stations = new ArrayList<StationInfo>();
>>>
>>>      // required by JiBX
>>>      private static List<StationInfo>buildStations()
>>>      {
>>>             System.out.println("new station list.");
>>>             return new ArrayList<StationInfo>();
>>>      }
>>> }
>>> mapping:
>>> <mapping type-name="esdp:StationDiscoveryResponseType" abstract="true"
>>>          class="edu.iris.ws.esdp.StationDiscoveryResponse">
>>>          <structure name="Stations">
>>>              <collection field="stations" usage="optional" 
>>> factory="edu.iris.ws.esdp.StationDiscoveryResponse.buildStations">
>>>                  <structure name="Station" map-as="esdp:StationInfoType"/>
>>>              </collection>
>>>          </structure>
>>>      </mapping>
>>> msg:
>>> <?xml version='1.0' encoding='UTF-8'?>
>>>     <soapenv:Envelope 
>>> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>>>        <soapenv:Body>
>>>           <esdp:getStationsResponse xmlns:gml="http://www.opengis.net/gml"; 
>>> xmlns:esdp="http://portal.earthscope.org";>
>>>              <esdp:Stations>
>>>                 <esdp:Station>
>>>                 [snip]
>>>                 </esdp:Station>
>>>              </esdp:Stations>
>>> etc.
>>>
>>> The exception trace is:
>>>       [java] java.lang.UnsupportedOperationException
>>>       [java]        at java.util.AbstractList.add(AbstractList.java:151)
>>>       [java]        at java.util.AbstractList.add(AbstractList.java:89)
>>>       [java]        at 
>>> edu.iris.ws.esdp.JiBX_MungeAdapter.JiBX_binding_unmarshal_1_0()
>>>       [java]        at 
>>> edu.iris.ws.esdp.StationInfo.JiBX_binding_unmarshal_1_0(Unknown Source)
>>>       [java]        at 
>>> edu.iris.ws.esdp.JiBX_MungeAdapter.JiBX_binding_unmarshal_1_3()
>>>       [java]        at 
>>> edu.iris.ws.esdp.StationDiscoveryResponse.JiBX_binding_unmarshal_1_0(Unknown
>>>  Source)
>>>       [java]        at 
>>> edu.iris.ws.esdp.StationDiscoveryResponse.JiBX_binding_unmarshal_1_1(Unknown
>>>  Source)
>>>       [java]        at 
>>> edu.iris.ws.esdp.JiBX_bindingStationDiscoveryResponse_access.unmarshal()
>>>       [java]        at 
>>> org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(UnmarshallingContext.java:2512)
>>>       [java]        at 
>>> edu.iris.ws.esdp.ESPortalCDIStub.fromOM(ESPortalCDIStub.java:1222)
>>>       [java]        at 
>>> edu.iris.ws.esdp.ESPortalCDIStub.getStations(ESPortalCDIStub.java:231)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.performStationQuery(WebServiceClient.java:306)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.performStationQuery(WebServiceClient.java:341)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.main(WebServiceClient.java:421)
>>>       [java] org.apache.axis2.AxisFault
>>>       [java]        at 
>>> edu.iris.ws.esdp.ESPortalCDIStub.fromOM(ESPortalCDIStub.java:1225)
>>>       [java]        at 
>>> edu.iris.ws.esdp.ESPortalCDIStub.getStations(ESPortalCDIStub.java:231)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.performStationQuery(WebServiceClient.java:306)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.performStationQuery(WebServiceClient.java:341)
>>>       [java]        at 
>>> edu.iris.ws.esdp.WebServiceClient.main(WebServiceClient.java:421)
>>>
>>> The factory method is getting called, I can see.  So where is the 
>>> AbstractList coming 
>>> from?
>>>
>>> So the only difference that I can see is that the failing case is wrapped 
>>> in another 
>>> element.  I've tried both with the collection originally null and setting 
>>> it 
>>> explicitly to an ArrayList. I've tried using the create-type instead of 
>>> factory method.
>>>
>>>
>>> I'm using JiBX 1.1.5
>>>
>>> thanks a lot,
>>> Linus
>>>
>>> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by: Microsoft
>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>> _______________________________________________
>>> jibx-users mailing list
>>> jibx-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/jibx-users
>>>
>>>   
>>>       
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> jibx-users mailing list
>> jibx-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jibx-users
>>     
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> jibx-users mailing list
> jibx-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jibx-users
>
>   

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to