Castor - класс Java MappingException не может быть создан

При использовании Castor 1.3 при тестировании было получено следующее исключение:

org.exolab.castor.mapping.MappingException: The Java class com.company.sales.app.valueobjects.eai.ContactInformationValueObject$CommunicationPreference is not constructable -- it does not contain a default public constructor

Попытка использовать коллекцию общедоступного внутреннего класса в моем коде Java.

Примеры классов:

public class Car {
   public String color;
   public String make;
   public String model;
   public List<RoadTrip> roadTrips;

   public class RoadTrip {
      public String pointA;
      public String pointB;
   }
}

Сопоставление XML:

<class name="com.auto.Car" >
    <field name="color" type="java.lang.String"><bind-xml name="COLOR" /></field>
    <field name="make" type="java.lang.String"><bind-xml name="MAKE" /></field>
    <field name="model" type="java.lang.String"><bind-xml name="MODEL" /></field>
    <field name="roadTrips" type="com.auto.Car$RoadTrip"><bind-xml name="TRIP" /></field>
</class>
<class name="com.auto.Car$RoadTrip">
    <field name="pointA" type="java.lang.String"><bind-xml name="STARTING_POINT" /></field>
    <field name="pointB" type="java.lang.String"><bind-xml name="DESTINATION" /></field>
</class>

Пример XML

<AUTOMOBILE>
    <COLOR>LITTLE RED</COLOR>
    <MAKE>CHEVROLET</MAKE>
    <MODEL>CORVETTE</MODEL>
    <TRIP>
        <STARTING_POINT>DALLAS</STARTING_POINT>
        <DESTINATION>VEGAS</DESTINATION>
    </TRIP>
    <TRIP>
        <STARTING_POINT>SEATTLE</STARTING_POINT>
        <DESTINATION>PORTLAND</DESTINATION>
    </TRIP>
</AUTOMOBILE>

person Ryan D    schedule 12.05.2015    source источник


Ответы (1)


РЕШЕНО: Причина, по которой я получил исключение, заключается в том, что мне нужно было сделать мой внутренний класс Static, чтобы Castor мог с ним работать.

В Интернете довольно много сообщений, предлагающих использовать

verify-constructable="false"

но отсутствие статики во внутреннем классе было простой ошибкой. Надеюсь, это поможет кому-то еще!

public class Car {
   public String color;
   public String make;
   public String model;
   public List<RoadTrip> roadTrips;

   public static class RoadTrip {
      public String pointA;
      public String pointB;
   }
}

http://castor.codehaus.org/1.2/how-to-map-an-inner-class.html

person Ryan D    schedule 12.05.2015