/* * 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.axis2.transport.udp; import org.apache.axiom.om.OMElement; import org.apache.axis2.Constants; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.ConfigurationContextFactory; import org.apache.axis2.description.AxisService; import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.description.TransportOutDescription; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.transport.AbstractTransportTest; import org.apache.axis2.transport.CustomAxisConfigurator; import org.apache.axis2.transport.UtilsTransportServer; /** * Test case for {@link UDPListener} and {@link UDPSender}. */ public class UDPTest extends AbstractTransportTest { @Override protected UtilsTransportServer createServer() throws Exception { return new UtilsUDPServer(); } public void testSoapOverUdpWithEchoService() throws Exception { Options options = new Options(); options.setTo(new EndpointReference("udp://127.0.0.1:3333?contentType=text/xml+soap")); options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement"); options.setUseSeparateListener(true); options.setTimeOutInMilliSeconds(Long.MAX_VALUE); ServiceClient serviceClient = new ServiceClient(getClientCfgCtx(), null); serviceClient.setOptions(options); // We need to set up the anonymous service Axis uses to get the response AxisService clientService = serviceClient.getServiceContext().getAxisService(); clientService.addParameter(UDPConstants.PORT_KEY, 4444); clientService.addParameter(UDPConstants.CONTENT_TYPE_KEY, "text/xml+soap"); OMElement response = serviceClient.sendReceive(createPayload()); assertEchoResponse(response); } public ConfigurationContext getClientCfgCtx() throws Exception { ConfigurationContext cfgCtx = ConfigurationContextFactory.createConfigurationContext(new CustomAxisConfigurator()); AxisConfiguration axisCfg = cfgCtx.getAxisConfiguration(); axisCfg.engageModule("addressing"); TransportInDescription trpInDesc = new TransportInDescription("udp"); trpInDesc.setReceiver(new UDPListener()); axisCfg.addTransportIn(trpInDesc); TransportOutDescription trpOutDesc = new TransportOutDescription("udp"); trpOutDesc.setSender(new UDPSender()); axisCfg.addTransportOut(trpOutDesc); return cfgCtx; } }