Верблюд unmarshaller с поддержкой нескольких форматов данных - PullRequest
0 голосов
/ 11 апреля 2020

Можно ли использовать размагничиватель Camel для разархивирования из нескольких форматов данных (JSON, XML и т. Д. 1013 *), скажем, XML?

Этот «универсальный» unmarshaller будет использоваться, например, как:

<route id="myRoute">
  <from uri="file:test/input"/>
  <!-- The input can be in JSON or in XML -->
  <unmarshal ref="universalUnmarshallerToXML"/>
  <!-- The input payload is always in XML -->
    <choice >
      <when>
          <xpath>/order/customer/country = 'US'</xpath>
          <to uri="file:test/output/us"/>
      </when>
      <when>
          <xpath>/order/customer/country = 'UK'</xpath>
          <to uri="file:test/output/uk"/>
      </when>
      <otherwise>
          <to uri="file:test/output/others"/>
      </otherwise>
  </choice>
</route>

Существует ли этот универсальный unmarshaller (надеюсь, он существует), или я должен реализовать свой собственный?

Спасибо!

1 Ответ

0 голосов
/ 17 апреля 2020

Это не совсем универсальный unmarshaller , но похож на то, что вы просите:

Когда вы создаете REST-сервис, вы можете установить BindingMode, чтобы Camel был демаршал с JSON или XML автоматически, в зависимости от типа входящего контента:

restConfiguration()
    .bindingMode(RestBindingMode.auto) // can also be .xml, .json,....
    .component("servlet");

Но я пока не видел, чтобы эта функция использовалась или предоставлялась вне служб REST.

Реализация в RestBindingAdvice , если вам интересно.

...