XML-описание сущностей «сообщения».Как определить реализацию интерфейса в xStream?
<Message id="11600005" name="some_name">
<sourcePartitionId>11600</sourcePartitionId>
<destPartitionId>11700</destPartitionId>
<payloadId>1300005</payloadId>
<sourceUdp>1045</sourceUdp>
<destUdp>1046</destUdp>
<sourceIp>10.4.48.0</sourceIp>
<destIp>10.4.49.0</destIp>
<sourcePort id="1045" name="sp_q_1045_11600_11700_005">
<type>Queuing</type>
<maxMessageSize>8192</maxMessageSize>
<characteristic>1</characteristic>
</sourcePort>
<destPort id="1046" name="dp_q_1045_1046_11600_11700_005">
<type>Queuing</type>
<maxMessageSize>8192</maxMessageSize>
<characteristic>1</characteristic>
</destPort>
</Message>
В полях sourcePort
и destPort
описал объект, который реализует интерфейс ComPort
:
public interface ComPort {
enum PortType {Sampling, Queuing}
enum PortDirection {Rx,Tx}
public PortType getPortType();
public PortDirection getPortDirection();
public int getMaxMessageSize();
public int getPortCharacteristic();
В интерфейсе есть две реализации: SamplingPort
и QueuingPort
. И основное отличие - характеристическое поле. Скажите мне, как сделать xstream на основе тега <type>
, создает экземпляр соответствующей реализации?
Важно: Также необходимо учитывать, что при sourcePort
тег - направление поля Tx
, а когда destPort
тег - направление поля Rx