001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.commons.proxy.invoker; 019 020 import junit.extensions.TestSetup; 021 import junit.framework.Protectable; 022 import junit.framework.Test; 023 import junit.framework.TestCase; 024 import junit.framework.TestResult; 025 import junit.framework.TestSuite; 026 import org.apache.commons.proxy.exception.InvokerException; 027 import org.apache.commons.proxy.factory.cglib.CglibProxyFactory; 028 import org.apache.commons.proxy.util.Echo; 029 import org.apache.commons.proxy.util.EchoImpl; 030 import org.apache.xmlrpc.WebServer; 031 import org.apache.xmlrpc.XmlRpcClient; 032 import org.apache.xmlrpc.XmlRpcClientLite; 033 034 /** 035 * @author James Carman 036 */ 037 public class TestXmlRpcInvoker extends TestCase 038 { 039 private static WebServer server; 040 private static XmlRpcClient client; 041 042 public static Test suite() 043 { 044 return new TestSetup( new TestSuite( TestXmlRpcInvoker.class ) ) 045 { 046 public void run( final TestResult testResult ) 047 { 048 Protectable p = new Protectable() 049 { 050 public void protect() throws Throwable 051 { 052 try 053 { 054 setUp(); 055 basicRun( testResult ); 056 } 057 finally 058 { 059 tearDown(); 060 } 061 } 062 }; 063 testResult.runProtected( this, p ); 064 } 065 066 protected void setUp() throws Exception 067 { 068 server = new WebServer( 9999 ); 069 server.addHandler( "echo", new EchoImpl() ); 070 server.start(); 071 client = new XmlRpcClientLite( "http://localhost:9999/RPC2" ); 072 } 073 074 protected void tearDown() throws Exception 075 { 076 server.shutdown(); 077 } 078 }; 079 } 080 081 public void testInvalidHandlerName() 082 { 083 final XmlRpcInvoker handler = new XmlRpcInvoker( client, "invalid" ); 084 final Echo echo = ( Echo ) new CglibProxyFactory() 085 .createInvokerProxy( handler, new Class[]{ Echo.class } ); 086 try 087 { 088 echo.echoBack( "Hello" ); 089 fail(); 090 } 091 catch( InvokerException e ) 092 { 093 } 094 } 095 096 public void testValidInvocation() throws Exception 097 { 098 final XmlRpcInvoker handler = new XmlRpcInvoker( client, "echo" ); 099 final Echo echo = ( Echo ) new CglibProxyFactory() 100 .createInvokerProxy( handler, new Class[]{ Echo.class } ); 101 assertEquals( "Hello", echo.echoBack( "Hello" ) ); 102 103 } 104 }