I am trying to marshal what is essentially a simple bean with some
contained classes. I am getting a null pointer exception in the
generated code and, since there is no source for this code, I am not
sure how to proceed. The following is an extract from my mapping file.
The class being marshaled is DateTimePeriod.

    <!-- Mapping for com.cisco.nm.acs.im.common.DateTimePeriod -->
    <mapping name="DateTimePeriod"
class="com.cisco.nm.acs.im.common.DateTimePeriod"
extends="com.cisco.nm.acs.im.common.PredefinedValueDefinition">
        <structure map-as="PredefinedValueDefinition.type"/>
        <value name="startImmediately" field="startImmediately"/>
        <value name="noEndTime" field="noEndTime"/>
        <value name="startDate" field="startDate"/>
        <value name="endDate" field="endDate"/>
        <structure name="dayDefinitions" usage="optional">
            <collection field="dayDefinitions"/>
        </structure>
    </mapping>

    <!-- Mapping for com.cisco.nm.acs.im.common.HourDefinition -->
    <mapping name="HourDefinition"
class="com.cisco.nm.acs.im.common.HourDefinition">
        <value name="hourNumber" field="hourNumber"/>
        <value name="id" field="id"/>
    </mapping>

    <!-- Mapping for com.cisco.nm.acs.im.common.DayDefinition -->
    <mapping name="DayDefinition"
class="com.cisco.nm.acs.im.common.DayDefinition">
        <value name="dayName" field="dayName"/>
        <value name="id" field="id"/>
        <structure name="hourDefinitions">
            <collection field="hourDefinitions"/>
        </structure>
    </mapping>
 
    <!-- Mapping for
com.cisco.nm.acs.im.common.PredefinedValueDefinition -->
    <mapping
class="com.cisco.nm.acs.im.common.PredefinedValueDefinition"
abstract="true" extends="com.cisco.nm.acs.im.InfoModelBase"
type-name="PredefinedValueDefinition.type">
        <structure map-as="com.cisco.nm.acs.im.InfoModelBase"/>
    </mapping>
    <mapping name="PredefinedValueDefinition"
class="com.cisco.nm.acs.im.common.PredefinedValueDefinition">
        <structure map-as="PredefinedValueDefinition.type"/>
    </mapping>

    <!-- Mapping for com.cisco.nm.acs.im.InfoModelBase -->
    <mapping class="com.cisco.nm.acs.im.InfoModelBase" abstract="true"
extends="com.cisco.nm.acs.im.ReferredObject">
        <structure map-as="com.cisco.nm.acs.im.ReferredObject"/>
        <value name="name" field="name"/>
        <value name="description" field="description" usage="optional"/>
        <value name="version" field="version"/>
    </mapping>
 

And here is the exception I am getting. 

java.lang.NullPointerException
            at
com.cisco.nm.acs.im.common.DayDefinition.JiBX_jibxBinding_marshal_1_0(Da
yDefinition.java)
            at
com.cisco.nm.acs.im.common.JiBX_jibxBindingDayDefinition_access.marshal(
)
            at
com.cisco.nm.acs.im.common.DayDefinition.marshal(DayDefinition.java)
            at
com.cisco.nm.acs.im.common.JiBX_MungeAdapter.JiBX_jibxBinding_marshal_1_
0()
            at
com.cisco.nm.acs.im.common.DateTimePeriod.JiBX_jibxBinding_marshal_4_0(D
ateTimePeriod.java)
            at
com.cisco.nm.acs.im.common.JiBX_jibxBindingDateTimePeriod_access.marshal
()
            at
com.cisco.nm.acs.im.common.DateTimePeriod.marshal(DateTimePeriod.java)
            at
org.jibx.runtime.impl.MarshallingContext.marshalRoot(MarshallingContext.
java:1044)
            at
org.jibx.runtime.impl.MarshallingContext.marshalDocument(MarshallingCont
ext.java:1070)
            at
com.cisco.nm.acs.mgmt.replication.RuntimeXMLTranslator.translateXML(Runt
imeXMLTranslator.java:70)
            at
com.cisco.nm.acs.mgmt.replication.RuntimeDispatcherNgTest.testTranslatio
n(RuntimeDispatcherNgTest.java:93)
...snip

 

Here is the code initialising the data in my test:

 

        DateTimePeriod dateTimePeriod = new DateTimePeriod();
        dateTimePeriod.setDescription("description");
        dateTimePeriod.setName("name");
        dateTimePeriod.setStartDate(new Date());
        dateTimePeriod.setEndDate(new Date());
        DayDefinition day = new DayDefinition();
        day.setDayName(DayOfWeek.FRIDAY);
        day.setId(4L);
        HourDefinition hour = new HourDefinition();
        hour.setHourNumber(4);
        hour.setId(5L);
        List<HourDefinition> hours = new ArrayList<HourDefinition>();
        hours.add(hour);
        day.setHourDefinitions(hours);
        List<DayDefinition> days = new ArrayList<DayDefinition>();
        days.add(day);
        dateTimePeriod.setDayDefinitions(days);
        dateTimePeriod.setVersion(1);
 

And here is a cut down version of the class that is causing the problem:

 

public class DayDefinition
    implements java.io.Serializable
{
    private com.cisco.nm.acs.im.common.DayOfWeek dayName;
    private java.lang.Long id;
    private com.cisco.nm.acs.im.common.DateTimePeriod
parentDateTimePeriod;
    private List <com.cisco.nm.acs.im.common.HourDefinition>
hourDefinitions;

    public DayDefinition()
    {
    }

    public DayDefinition(com.cisco.nm.acs.im.common.DayOfWeek dayName,
java.lang.Long id, List <com.cisco.nm.acs.im.common.HourDefinition>
hourDefinitions)
    {
        this.dayName = dayName;
        this.id = id;
            this.hourDefinitions= hourDefinitions;

    }

    public com.cisco.nm.acs.im.common.DayOfWeek getDayName(){
        return this.dayName;
    }

    public void setDayName(com.cisco.nm.acs.im.common.DayOfWeek
dayName){
        this.dayName = dayName;
    }

    public java.lang.Long getId(){
        return this.id;
    }

   public void setId(java.lang.Long id){
        this.id = id;
    }

    public List< com.cisco.nm.acs.im.common.HourDefinition >
getHourDefinitions(){
        return this.hourDefinitions;
    }

    public void setHourDefinitions(List<
com.cisco.nm.acs.im.common.HourDefinition > hourDefinitionsParam){
            // adding a check if it's the same instance as member ignore
the set operation
        if (this.hourDefinitions == hourDefinitionsParam){
            return;
        }
        // adding a check to avoid replacement of list
        // in the case hibernate populate it since the orphan will be
deleted     
        if (this.hourDefinitions == null){ 
            this.hourDefinitions = hourDefinitionsParam;
        }else{
            this.hourDefinitions.clear ();
            if (hourDefinitionsParam != null){
                        this.hourDefinitions.addAll
(hourDefinitionsParam);
            }
        }      
    }
}
 

Any help would be much appreciated.

 

Thanks,

 

Ian.

-------------------------------------------------------------------------
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