2013-07-16 3 views
0

Я создаю обертку вокруг внешней службы docusign. Я пытаюсь использовать бульдозер для сопоставления объектов службы обертки для объектов docusign. Я пытаюсь сделать глубокую копию.отображение мыльного запроса от источника к цели с использованием бульдозера

В большинстве случаев я старался сохранить как исходные, так и целевые имена, но бульдозер не копирует за пределы первого уровня. В приведенном ниже примере у меня есть - после преобразования, я вижу, что узел compositeTemplates никогда не копировался из источника в цель. Может быть, потому что у него есть список внутри ?! я не знаю.

Мое отображение бульдозер:

<mapping map-null="false"> 
    <class-a>com.foo.wrapper.CreateEnvelopeFromTemplatesAndForms</class-a> 
    <class-b>com.foo.docusign.CreateEnvelopeFromTemplatesAndForms</class-b> 
</mapping> 

Затем я попытался указать имя поля в файле отображения - но я получаю исключения нулевого указателя. Любые указатели на это оцениваются.

<mapping map-null="false"> 
    <class-a>com.foo.wrapper.CreateEnvelopeFromTemplatesAndForms</class-a> 
    <class-b>com.foo.docusign.CreateEnvelopeFromTemplatesAndForms</class-b> 
    <field> 
    <a>ArrayOfCompositeTemplate</a> 
     <b>CompositeTemplate</b> 
</field>  

Источник:

<doc:initiateESign> 
    <InitiateEsignProcessRequest> 
     <doc:createEnvelopeFromTemplatesAndForms> 
      <doc:envelopeInformation> 
       <doc:subject></doc:subject> 
      </doc:envelopeInformation> 
      <doc:compositeTemplates> 
       <!--Zero or more repetitions:--> 
       <doc:ArrayOfCompositeTemplate> 
       <doc:inlineTemplates> 
        <!--Zero or more repetitions:--> 
        <doc:inlineTemplate> 
         <doc:envelope> 
          <doc:transactionID></doc:transactionID> 
          <doc:asynchronous></doc:asynchronous> 
          <doc:recipients> 
          <!--Zero or more repetitions:--> 
          <doc:recipient> 
           <doc:id></doc:id> 
          </doc:recipient> 
          </doc:recipients> 
         </doc:envelope> 
        </doc:inlineTemplate> 
       </doc:inlineTemplates> 
       <doc:document> 
        <doc:name></doc:name> 
       </doc:document> 
       </doc:ArrayOfCompositeTemplate> 
      </doc:compositeTemplates> 
      <doc:activateEnvelope></doc:activateEnvelope> 
     </doc:createEnvelopeFromTemplatesAndForms> 
    </InitiateEsignProcessRequest> 
    </doc:initiateESign> 

Цель:

<ns:CreateEnvelopeFromTemplatesAndForms> 
    <ns:EnvelopeInformation> 
     <ns:Subject></ns:Subject> 
    </ns:EnvelopeInformation> 
    <ns:CompositeTemplates> 
     <!--Zero or more repetitions:--> 
     <ns:CompositeTemplate> 
      <ns:InlineTemplates> 
       <!--Zero or more repetitions:--> 
       <ns:InlineTemplate> 
       <ns:Envelope> 
        <ns:TransactionID></ns:TransactionID> 
        <ns:Recipients> 
         <!--Zero or more repetitions:--> 
         <ns:Recipient> 
          <ns:ID></ns:ID> 
         </ns:Recipient> 
        </ns:Recipients> 
       </ns:Envelope> 
       </ns:InlineTemplate> 
      </ns:InlineTemplates> 
      <ns:Document> 
       <ns:Name></ns:Name> 
      </ns:Document> 
     </ns:CompositeTemplate> 
    </ns:CompositeTemplates> 
    <ns:ActivateEnvelope></ns:ActivateEnvelope> 
    </ns:CreateEnvelopeFromTemplatesAndForms> 

Любой указатель на то, как сопоставить эти два через бульдозер, будет очень полезен.

ответ

0

Я знаю API-интерфейс DocuSign довольно хорошо, но никогда не использовал бульдозер, я думаю, вам понадобится помощь от людей, которые знают о нем.

Однако, делая визуальную проверку того, что вы опубликовали, я хотел нанести удар. Я вижу в источнике вы перечислили порядок compositeTemplate элементов в

<doc:compositeTemplates> 
      <!--Zero or more repetitions:--> 
      <doc:ArrayOfCompositeTemplate> 

Но в вашей бульдозерной карте у вас есть

<mapping map-null="false"> 
<class-a>com.foo.wrapper.CreateEnvelopeFromTemplatesAndForms</class-a> 
<class-b>com.foo.docusign.CreateEnvelopeFromTemplatesAndForms</class-b> 
<field> 
<a>ArrayOfCompositeTemplate</a> 
    <b>CompositeTemplate</b> 

В карте у вас есть порядок CompositeTemplate vs ArrayOfCompositeTemplate отменено. Возможно, это может быть причиной вашей проблемы?