| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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.camel.component.cxf; |
| |
| import javax.xml.parsers.DocumentBuilderFactory; |
| import javax.xml.ws.Endpoint; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| import org.apache.camel.test.spring.CamelSpringTestSupport; |
| import org.apache.hello_world_soap_http.GreeterImpl; |
| import org.junit.After; |
| import org.junit.Before; |
| |
| |
| /** |
| * Base class for testing arbitrary payload |
| */ |
| public abstract class CxfDispatchTestSupport extends CamelSpringTestSupport { |
| protected static final String DISPATCH_NS = "http://camel.apache.org/cxf/jaxws/dispatch"; |
| protected static final String INVOKE_NAME = "Invoke"; |
| protected static final String INVOKE_ONEWAY_NAME = "InvokeOneWay"; |
| |
| protected static final String PAYLOAD_TEMPLATE = "<ns1:greetMe xmlns:ns1=\"http://apache.org/hello_world_soap_http/types\"><ns1:requestType>%s</ns1:requestType></ns1:greetMe>"; |
| protected static final String PAYLOAD_ONEWAY_TEMPLATE = "<ns1:greetMeOneWay xmlns:ns1=\"http://apache.org/hello_world_soap_http/types\"><ns1:requestType>%s</ns1:requestType></ns1:greetMeOneWay>"; |
| protected static final String MESSAGE_TEMPLATE = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>" |
| + PAYLOAD_TEMPLATE |
| + "</soap:Body></soap:Envelope>"; |
| protected static final String MESSAGE_ONEWAY_TEMPLATE = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body>" |
| + PAYLOAD_ONEWAY_TEMPLATE |
| + "</soap:Body></soap:Envelope>"; |
| private static DocumentBuilderFactory documentBuilderFactory; |
| |
| protected Endpoint endpoint; |
| private int port = CXFTestSupport.getPort1(); |
| @Override |
| public boolean isCreateCamelContextPerClass() { |
| return true; |
| } |
| |
| @Before |
| public void startService() { |
| Object implementor = new GreeterImpl(); |
| String address = "http://localhost:" + port + "/" |
| + getClass().getSimpleName() + "/SoapContext/GreeterPort"; |
| endpoint = Endpoint.publish(address, implementor); |
| } |
| |
| @After |
| public void stopService() { |
| if (endpoint != null) { |
| endpoint.stop(); |
| } |
| } |
| |
| protected static String getResponseType(Element node) { |
| NodeList nodes = node.getElementsByTagNameNS("http://apache.org/hello_world_soap_http/types", "responseType"); |
| if (nodes != null && nodes.getLength() == 1) { |
| Node c = nodes.item(0).getFirstChild(); |
| if (c != null) { |
| return c.getNodeValue(); |
| } |
| } |
| return null; |
| } |
| |
| protected static synchronized DocumentBuilderFactory getDocumentBuilderFactory() { |
| if (documentBuilderFactory == null) { |
| documentBuilderFactory = DocumentBuilderFactory.newInstance(); |
| documentBuilderFactory.setNamespaceAware(true); |
| documentBuilderFactory.setIgnoringElementContentWhitespace(true); |
| documentBuilderFactory.setIgnoringComments(true); |
| } |
| return documentBuilderFactory; |
| } |
| |
| } |