package org.apache.axis2.jaxws.description.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import javax.jws.WebService; import javax.xml.namespace.QName; import org.apache.axis2.jaxws.description.DescriptionFactory; import org.apache.axis2.jaxws.description.ServiceDescription; import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite; import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite; import org.apache.axis2.jaxws.description.builder.converter.JavaClassToDBCConverter; import junit.framework.TestCase; public class PostRI216MethodRetrieverImplTests extends TestCase { public void testMethodRetriever(){ //Create DBC for implicit SEI JavaClassToDBCConverter converter = new JavaClassToDBCConverter(EchoMessageService.class); HashMap<String, DescriptionBuilderComposite> dbcMap = converter.produceDBC(); assertNotNull(dbcMap); DescriptionBuilderComposite dbc = dbcMap.get(EchoMessageService.class.getName()); //create EndpointDescription List<ServiceDescription> serviceDescList = DescriptionFactory.createServiceDescriptionFromDBCMap(dbcMap); ServiceDescription sd = serviceDescList.get(0); EndpointInterfaceDescriptionImpl eid = new EndpointInterfaceDescriptionImpl(dbc, new EndpointDescriptionImpl(null, new QName("http://nonanonymous.complextype.test.org","EchoMessagePort"), (ServiceDescriptionImpl)sd)); //Lets make sure correct MDC's where created. List<MethodDescriptionComposite> mdcList = dbc.getMethodDescriptionsList(); assertTrue("Expecting 3 methods in MDC found"+mdcList.size(), mdcList.size()==4); //Lets make sure static and final modifiers are set on MDC as expected. for(MethodDescriptionComposite mdc:mdcList){ if(mdc.getMethodName().contains("staticMethod")){ assertTrue(mdc.isStatic()); } if(mdc.getMethodName().contains("finalMethod")){ assertTrue(mdc.isFinal()); } } //Let make sure static and final methods are not exposed as webservice. PostRI216MethodRetrieverImpl mr = new PostRI216MethodRetrieverImpl(dbc, eid); Iterator<MethodDescriptionComposite> iter =mr.retrieveMethods(); List<MethodDescriptionComposite> list = new ArrayList<MethodDescriptionComposite>(); while(iter.hasNext()){ list.add(iter.next()); } assertEquals(list.size(), 2); MethodDescriptionComposite mdc = list.get(0); assertEquals("echoMessage", mdc.getMethodName()); mdc = list.get(1); assertEquals("<init>", mdc.getMethodName()); } @WebService(serviceName = "EchoMessageService", portName = "EchoMessagePort", targetNamespace = "http://nonanonymous.complextype.test.org", wsdlLocation = "") public static class EchoMessageService { public String echoMessage(String arg) { return arg; } public static String staticMethod(String arg){ return arg; } public final String finalMethod(String arg){ return arg; } } }