Coverage Report - org.mule.transport.soap.axis.wsdl.AxisWsdlMessageDispatcher
 
Classes in this File Line Coverage Branch Coverage Complexity
AxisWsdlMessageDispatcher
0%
0/26
0%
0/10
4
 
 1  
 /*
 2  
  * $Id: AxisWsdlMessageDispatcher.java 19191 2010-08-25 21:05:23Z tcarlson $
 3  
  * --------------------------------------------------------------------------------------
 4  
  * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 5  
  *
 6  
  * The software in this package is published under the terms of the CPAL v1.0
 7  
  * license, a copy of which has been included with this distribution in the
 8  
  * LICENSE.txt file.
 9  
  */
 10  
 
 11  
 package org.mule.transport.soap.axis.wsdl;
 12  
 
 13  
 import org.mule.api.MuleEvent;
 14  
 import org.mule.api.endpoint.OutboundEndpoint;
 15  
 import org.mule.module.cxf.SoapConstants;
 16  
 import org.mule.transport.soap.axis.AxisMessageDispatcher;
 17  
 
 18  
 import java.util.ArrayList;
 19  
 import java.util.Iterator;
 20  
 import java.util.List;
 21  
 import java.util.Map;
 22  
 import java.util.Vector;
 23  
 
 24  
 import javax.xml.namespace.QName;
 25  
 
 26  
 import org.apache.axis.client.AxisClient;
 27  
 import org.apache.axis.client.Service;
 28  
 import org.apache.axis.wsdl.gen.Parser;
 29  
 import org.apache.axis.wsdl.symbolTable.ServiceEntry;
 30  
 import org.apache.axis.wsdl.symbolTable.SymTabEntry;
 31  
 
 32  
 /**
 33  
  * Creates and Axis client services from WSDL and invokes it.
 34  
  */
 35  
 public class AxisWsdlMessageDispatcher extends AxisMessageDispatcher
 36  
 {
 37  
 
 38  
     public AxisWsdlMessageDispatcher(OutboundEndpoint endpoint)
 39  
     {
 40  0
         super(endpoint);
 41  0
     }
 42  
 
 43  
     protected Service createService(MuleEvent event) throws Exception
 44  
     {
 45  0
         String wsdlUrl = event.getEndpoint().getEndpointURI().getAddress();
 46  
         // Parse the wsdl
 47  0
         Parser parser = new Parser();
 48  0
         if (event.getEndpoint().getEndpointURI().getUserInfo() != null)
 49  
         {
 50  0
             parser.setUsername(event.getEndpoint().getEndpointURI().getUser());
 51  0
             parser.setPassword(event.getEndpoint().getEndpointURI().getPassword());
 52  
         }
 53  0
         parser.run(wsdlUrl);
 54  
         // Retrieves the defined services
 55  0
         Map map = parser.getSymbolTable().getHashMap();
 56  0
         List entries = new ArrayList();
 57  0
         for (Iterator it = map.entrySet().iterator(); it.hasNext();)
 58  
         {
 59  0
             Map.Entry entry = (Map.Entry)it.next();
 60  0
             Vector v = (Vector)entry.getValue();
 61  0
             for (Iterator it2 = v.iterator(); it2.hasNext();)
 62  
             {
 63  0
                 SymTabEntry e = (SymTabEntry)it2.next();
 64  0
                 if (ServiceEntry.class.isInstance(e))
 65  
                 {
 66  0
                     entries.add(entry.getKey());
 67  
                 }
 68  0
             }
 69  0
         }
 70  
         // Currently, only one service should be defined
 71  0
         if (entries.size() != 1)
 72  
         {
 73  0
             throw new Exception("Need one and only one service entry, found " + entries.size());
 74  
         }
 75  
         // Create the axis service
 76  0
         Service service = new Service(parser, (QName)entries.get(0));
 77  
 
 78  0
         service.setEngineConfiguration(clientConfig);
 79  0
         service.setEngine(new AxisClient(clientConfig));
 80  
 
 81  
         // Really the Axis Client service should set this stuff
 82  0
         event.getMessage().setOutboundProperty(SoapConstants.METHOD_NAMESPACE_PROPERTY,
 83  
                                                parser.getCurrentDefinition().getTargetNamespace());
 84  
         // Todo how can we autogenerate the named params from the WSDL?
 85  0
         return service;
 86  
     }
 87  
 }