File: TestMessageProperty.java

package info (click to toggle)
axis 1.4-29
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 52,100 kB
  • sloc: java: 129,124; xml: 10,602; jsp: 983; sh: 84; cs: 36; makefile: 18
file content (85 lines) | stat: -rw-r--r-- 3,228 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package test.saaj;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.Text;

public class TestMessageProperty extends junit.framework.TestCase {
    public TestMessageProperty(String name) {
        super(name);
    }

    private static final String textValue = "\uc548\ub155\ud558\uc138\uc694";
    
    private SOAPMessage createTestMessage() throws Exception {
        MessageFactory mf = MessageFactory.newInstance();
        SOAPMessage msg = mf.createMessage();
        SOAPBody sb = msg.getSOAPBody();
        SOAPElement se1 = sb.addChildElement("echoString", "ns1", "http://tempuri.org");
        SOAPElement se2 = se1.addChildElement("string");
        se2.addTextNode(textValue);
        
        return msg;
    }
    
    
    public void testWriteXmlDeclPropertyTrue() throws Exception {
        testXmlDecl("true", "<?xml");        
    }
    
    public void testWriteXmlDeclPropertyFalse() throws Exception {
        testXmlDecl("false", "<soapenv:Envelope");
    }    
    
    public void testEncodingPropertyUTF16() throws Exception {
        testEncoding("UTF-16");               
    }        
        
    public void testEncodingPropertyUTF8() throws Exception {
        testEncoding("UTF-8");                
    }        
    
    private void testXmlDecl(String xmlDecl, String expected) throws Exception {
        SOAPMessage msg = createTestMessage();
        
        msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, xmlDecl);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        msg.writeTo(baos);
        String msgString = new String(baos.toByteArray(), "UTF-8");
        System.out.println("msgString =" + msgString);
        assertTrue(msgString.startsWith(expected));       
    }
    
    private void testEncoding(String encoding) throws Exception {
        SOAPMessage msg = createTestMessage();
        
        msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
        msg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, encoding);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        msg.writeTo(baos);
        
        String msgString = new String(baos.toByteArray(), encoding);
        System.out.println("msgString (" + encoding + ")=" + msgString);
        assertTrue(msgString.startsWith("<?xml version=\"1.0\" encoding=\"" + encoding + "\""));

        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        SOAPMessage msg1 = createMessageFromInputStream(bais);
        SOAPElement se1 = (SOAPElement) msg1.getSOAPBody().getChildElements().next();
        SOAPElement se2 = (SOAPElement) se1.getChildElements().next();
        Text text = (Text)se2.getChildElements().next();
        
	assertEquals(textValue, text.getValue());
    }

    private SOAPMessage createMessageFromInputStream(InputStream is) throws Exception {
        MessageFactory mf = MessageFactory.newInstance();
        return mf.createMessage(new MimeHeaders(), is);
    }
}