View Javadoc

1   /*
2    * Copyright (c) 2004, RV Test Team
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10   *
11   * Redistributions in binary form must reproduce the above copyright notice,
12   * this list of conditions and the following disclaimer in the documentation
13   * and/or other materials provided with the distribution.
14   *
15   * Neither the name of the "RV Test Team" nor the names of its contributors may
16   * be used to endorse or promote products derived from this software without
17   * specific prior written permission.
18   *
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
29   * THE POSSIBILITY OF SUCH DAMAGE.
30   *
31   */
32  /*
33   * Created on Aug 30, 2004
34   *
35   */
36  package com.reuters.msgtest.message;
37  
38  import com.reuters.msgtest.Creator;
39  import com.tibco.tibrv.TibrvMsg;
40  import com.tibco.tibrv.TibrvMsgField;
41  import com.tibco.tibrv.TibrvXml;
42  import org.w3c.dom.Document;
43  import java.io.File;
44  import java.io.StringWriter;
45  import java.util.Collections;
46  import javax.xml.parsers.DocumentBuilder;
47  import javax.xml.parsers.DocumentBuilderFactory;
48  import javax.xml.transform.Transformer;
49  import javax.xml.transform.TransformerFactory;
50  import javax.xml.transform.dom.DOMSource;
51  import javax.xml.transform.stream.StreamResult;
52  
53  
54  /***
55   * @author Peter Ryan
56   *
57   */
58  public class XMLFormatFileMessageCreator implements Creator {
59      public Object create(Object object) {
60          String location = (String) object;
61          TibrvMsg tibrvMsg = new TibrvMsg();
62          StringWriter sw = null;
63  
64          try {
65              DocumentBuilder builder = DocumentBuilderFactory.newInstance()
66                                                              .newDocumentBuilder();
67              File file = new File(location);
68              Document document = builder.parse(file);
69              Transformer transformer = TransformerFactory.newInstance()
70                                                          .newTransformer();
71              sw = new StringWriter();
72  
73              StreamResult result = new StreamResult(sw);
74              transformer.transform(new DOMSource(document), result);
75  
76              TibrvXml xmlField = new TibrvXml(sw.toString().getBytes());
77              TibrvMsgField field = new TibrvMsgField("xml", xmlField);
78              tibrvMsg.addField(field);
79  
80              // TODO Resolve a mechanism for setting the subject - look at the digester
81              return Collections.singletonList(tibrvMsg);
82          } catch (Exception e) {
83              throw new RuntimeException(
84                  "Unable to build list TibrvMsg from xmlformatfile: " +
85                  location, e);
86          }
87      }
88  }