Hi,

Still wondering about this.  Will JiBX do what I want it to do?

David


David Ezzio wrote:
Hi,

I still don't have the answer to my question. I am hoping that a change to the binding specification file will correct the problem that I am dealing with, but I don't know what the change should be.

I get the error message during enhancement, when the enhancer looks for a method Route.addFlight(Object). I would think it would be simple enough for it to look for Route.addFlight(Flight), but it doesn't.

TIA,

David

David Ezzio wrote:

Hi,

I've got JiBX working with a modified version of the TimeSchedule example. But I've got one issue that I would like some help with. All of my collection add methods must take an Object parameter type, when I would like them to take the element's type.

For example, here's what the relevant portions of the metadata look like:

<mapping class="jxml.Route" name="route" >
  <collection item-type="jxml.Flight" iter-method="iterateFlights"
      add-method="addFlight" />
  <value ident="ref" style="attribute" name="from"
      get-method="getFrom" set-method="setFrom" />
  <value ident="ref" style="attribute" name="to" get-method="getTo"
      set-method="setTo" />
</mapping>
<mapping class="jxml.Flight" name="flight" >
  <value ident="ref" name="carrier" style="attribute"
      get-method="getCarrier" set-method="setCarrier" />
  <value name="number" style="attribute" get-method="getNumber"
      set-method="setNumber" />
  <value name="depart" style="attribute" get-method="getDepart"
      set-method="setDepart"/>
  <value name="arrive" style="attribute" get-method="getArrive"
      set-method="setArrive" />
</mapping>

Here's what the data file looks like:

<?xml version="1.0" encoding="UTF-8"?>
<schedule>
  <carriers>
    <carrier code="NL">
      <url>http://www.northleft.com</url>
      <name>Northleft Airlines</name>
    </carrier>
    <carrier code="CL">
      <url>http://www.classyskylines.com</url>
      <name>Classy Skylines</name>
    </carrier>
  </carriers>
  <airports>
    <airport code="BOS">
      <location>Boston, MA</location>
      <name>Logan International Airport</name>
    </airport>
    <airport code="SEA">
      <location>Seattle, WA</location>
      <name>Seattle-Tacoma International Airport</name>
    </airport>
    <airport code="LAX">
      <location>Los Angeles, CA</location>
      <name>Los Angeles International Airport</name>
    </airport>
  </airports>
  <routes>
    <route from="BOS" to="SEA">
      <flight carrier="CL" number="796" depart="4:12a" arrive="1:26a"/>
      <flight carrier="NL" number="328" depart="2:54a" arrive="1:29a"/>
      <flight carrier="CL" number="401" depart="4:12a" arrive="1:25a"/>
    </route>
    <route from="SEA" to="BOS">
      <flight carrier="CL" number="634" depart="7:43a" arrive="9:13a"/>
      <flight carrier="NL" number="508" depart="4:38p" arrive="6:12p"/>
      <flight carrier="CL" number="687" depart="1:38p" arrive="3:08p"/>
    </route>
  </routes>
</schedule>

And here's what the relevant portion of the Route class looks like:

package jxml;

public class Route
   {
   private Airport from;
   private Airport to;
   private ArrayList flightList = new ArrayList();

   public Route(ArrayList flightList, Airport from, Airport to)
      { ... }

   public void addFlight(Flight flight)
      { ... }

   public Iterator iterateFlights()
      { ... }

   public Airport getFrom()
      { ... }

   public void setFrom(Airport from)
      { ... }

   public Airport getTo()
      { ... }

   public void setTo(Airport to)
      { ... }

   protected Route()
      { ... }
   }

If I enhance as is, I get the following error message:

org.jibx.runtime.JiBXException: Add method addFlight not found in collection type jxml.Route at tag "collection"(line 26, col 95, in jxml/binding.xml)
at org.jibx.runtime.impl.UnmarshallingContext.throwStartTagException(UnmarshallingContext.java:2725)


at org.jibx.binding.def.BindingBuilder.unmarshalStructure(BindingBuilder.java:1153)

at org.jibx.binding.def.BindingBuilder.unmarshalStructureChildren(BindingBuilder.java:837)

at org.jibx.binding.def.BindingBuilder.unmarshalMapping(BindingBuilder.java:1531)

at org.jibx.binding.def.BindingBuilder.unmarshalMappings(BindingBuilder.java:963)

at org.jibx.binding.def.BindingBuilder.unmarshalBindingDefinition(BindingBuilder.java:1597)

    at org.jibx.binding.Utility.loadBinding(Utility.java:228)
    at org.jibx.binding.Utility.loadFileBinding(Utility.java:254)
    at org.jibx.binding.Compile.compile(Compile.java:291)
    at org.jibx.binding.Compile.main(Compile.java:367)

On the other hand, if I change the parameter of addFlight to "Object flight" everything is fine.

Is it possible to configure so that the parameter type of addFlight is Flight?

Thanks,

David Ezzio



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/
_______________________________________________
jibx-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users








-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/
_______________________________________________
jibx-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users








-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/
_______________________________________________
jibx-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to