summaryrefslogtreecommitdiffstats
path: root/sandbox/ant/tuscany-container-rhino/src/test/java/org/apache/tuscany/container/rhino/e4x/E4XInterceptorTestCase.java
blob: a5c778acf255006b8ed1b2b1e2759c2f0bc21814 (plain)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.tuscany.container.rhino.e4x;

import java.net.URL;

import javax.xml.namespace.QName;

import junit.framework.TestCase;

import org.apache.tuscany.core.message.Message;
import org.apache.tuscany.core.wire.Interceptor;
import org.apache.tuscany.core.wire.MessageChannel;
import org.apache.tuscany.core.wire.TargetInvoker;
import org.apache.tuscany.sdo.util.DataObjectUtil;
import org.apache.tuscany.sdo.util.SDOUtil;
import org.apache.xmlbeans.XmlObject;

import commonj.sdo.helper.TypeHelper;
import commonj.sdo.helper.XSDHelper;

/**
 * Tests for the E4XInterceptor
 */
public class E4XInterceptorTestCase extends TestCase {

    private E4XInterceptor interceptor;

    private Message msg;

    public E4XInterceptorTestCase() {
    }

    public void testFromXmlObject() {
        msg.setBody(new Object[] { "petra" });

        interceptor.toXmlObject(msg);
        assertTrue(((Object[])msg.getBody())[0] instanceof XmlObject);

        msg.setBody(((Object[])msg.getBody())[0]);
        interceptor.fromXmlObject(msg);
        assertEquals("petra", msg.getBody());
    }

    public void testToXmlObject() {
        msg.setBody(new Object[] { "petra" });
        interceptor.toXmlObject(msg);
        assertTrue(((Object[])msg.getBody())[0] instanceof XmlObject);
    }

    public void testInvoke() {
        msg.setBody(new Object[] { "petra" });
        interceptor.invoke(msg);
        assertEquals("petra", msg.getBody());
    }

    protected void setUp() throws Exception {
        super.setUp();
        DataObjectUtil.initRuntime();
        ClassLoader cl = Thread.currentThread().getContextClassLoader();
        try {
            Thread.currentThread().setContextClassLoader(getClass().getClassLoader());

            TypeHelper typeHelper = SDOUtil.createTypeHelper();
            XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);

            URL url = getClass().getResource("helloworld.wsdl");
            xsdHelper.define(url.openStream(), null);

            QName qn = new QName("http://integration.rhino.container.tuscany.apache.org", "getGreetings");
            this.interceptor = new E4XInterceptor(qn, typeHelper, getClass().getClassLoader());
            interceptor.setNext(new Interceptor() {
                public Message invoke(Message msg) {
                    msg.setBody(((Object[])msg.getBody())[0]);
                    return msg;
                }
                public void setNext(Interceptor next) {
                }});

            this.msg = createMessage();

        } finally {
            Thread.currentThread().setContextClassLoader(cl);
        }
    }

    private Message createMessage() {
        Message msg = new Message() {

            Object body;

            public Object getBody() {
                return body;
            }

            public void setBody(Object body) {
                this.body = body;
            }

            public void setTargetInvoker(TargetInvoker invoker) {
            }

            public TargetInvoker getTargetInvoker() {
                return null;
            }

            public MessageChannel getCallbackChannel() {
                return null;
            }

            public Message getRelatedCallbackMessage() {
                return null;
            }
        };
        return msg;
    }

}