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>

任何关于如何通过推土机映射这两个的指针都会非常有帮助。

4

1 回答 1

0

我非常了解 DocuSign 的 API,但从未使用过推土机,我认为您需要了解推土机的人的帮助。

但是,对您发布的内容进行视觉扫描,我想尝试一下。我在源代码中看到您列出了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 与 ArrayOfCompositeTemplate 的顺序颠倒了。这可能是您的问题的原因吗?

于 2013-07-29T17:34:51.017 回答