AW: Problems with update to WSIF nightly build (wsif-2.0.1_IB3)

"Lorenzi, Michael" <mlorenzi-oe7qfRrRQfdfcPYw/[email protected]>
Newsgroups gmane.comp.apache.webservices.wsif.user
Message-ID <[email protected]>
I simplified my program such that it works with the old wsif, but failes with the error I wrote before if I just replace the libraries.

the classes and the package used for the mapping in the line
sq.mapPackage(typesNS, "complextypes.GoogleSearch");
exist. The new version of wsif using axis-1.2 just can't find the classes. I saw there a lot of changes with all the WSIFMappingConvention etc. I couldn't find the place where the classes are actually loaded (the method was resolveMapping() in the old version)

Thank you
Michael 


package src;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.wsdl.Definition;
import javax.wsdl.Message;
import javax.wsdl.Part;
import javax.wsdl.PortType;
import javax.wsdl.Service;
import javax.xml.namespace.QName;

import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFMessage;
import org.apache.wsif.WSIFOperation;
import org.apache.wsif.WSIFPort;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.schema.Parser;
import org.apache.wsif.schema.SchemaType;
import org.apache.wsif.util.WSIFUtils;

public class Run {

	public static void main(String[] args) throws Exception {
		
		Definition def = WSIFUtils.readWSDL(null,"http://api.google.com/GoogleSearch.wsdl");
		Service service = def.getService(null);
		PortType porttype = def.getPortType(null);
		WSIFService sq = WSIFServiceFactory.newInstance().getService(def, service, porttype);

		WSIFPort port = sq.getPort();
		WSIFOperation operation = port.createOperation("doGoogleSearch");
		WSIFMessage input = operation.createInputMessage();
		WSIFMessage output = operation.createOutputMessage();
		WSIFMessage fault = operation.createFaultMessage();
		
		// Get the schema namespace
		ArrayList schemaTypes = new ArrayList();
		Parser.getAllSchemaTypes(def, schemaTypes, null);
		String typesNS;
		if (schemaTypes.isEmpty() != true) typesNS = ((SchemaType) schemaTypes.get(0)).getTypeName().getNamespaceURI();
		else typesNS = def.getTargetNamespace();
		sq.mapPackage(typesNS, "complextypes.GoogleSearch");
		
		Map InputMap = new HashMap();
		Map OutputMap = new HashMap();
		InputMap.put("filter",new Boolean("true"));
		InputMap.put("key","SwY/mvFQFHKePiGQHKMA4ww0YbP7pWiB");
		InputMap.put("maxResults", new Integer(10));
		InputMap.put("q","JOpera");
		InputMap.put("restrict","no");
		InputMap.put("safeSearch",new Boolean("true"));
		InputMap.put("start", new Integer(1));
		InputMap.put("lr","");
		InputMap.put("oe","");
		InputMap.put("ie","");
		
//		 Set Parameters for the Input Message from the Job Input Map
		String partName;
		Object partValue;
		Message in = input.getMessageDefinition();
		Iterator it = in.getParts().values().iterator();
		while (it.hasNext()) {
			Part p = (Part) it.next();
			partName = p.getName();
			partValue = InputMap.get(partName);
			InputMap.remove(partName);
			input.setObjectPart(partName, partValue);
		}
		
		if (InputMap.isEmpty() != true) {
			Iterator notused = InputMap.keySet().iterator();
			while (notused.hasNext()) {
				partName = (String) notused.next();
				partValue = InputMap.get(partName);
				input.setObjectPart(partName, partValue);
			}
		}
		
		try {
			//Invoke the Web Service
			Iterator partNames;
			if (operation.executeRequestResponseOperation(input, output, fault)) {
				//Put the Results of the Invocation to the Job Output Map
				partNames = output.getPartNames();
				while (partNames.hasNext()) {
					partName = (String) partNames.next();
					partValue = output.getObjectPart(partName);
					OutputMap.put(partName,partValue);
				}
			} else {
				// Print Fault Message
				Iterator i = fault.getPartNames();
				String partname = "";
				while (i.hasNext()) {
					partname =(String) i.next();
					System.err.println("Fault Message" + " - " + fault.getObjectPart(partname));
				}
			}
		} catch (WSIFException we) {
			System.err.println("Exception invoking the WS: " + we.getMessage());
			we.printStackTrace();
		}
	}
}


-----Ursprüngliche Nachricht-----
Von: Aleksander Slominski [mailto:[email protected]]
Gesendet: Fr 03.06.2005 19:21
An: [email protected]
Betreff: Re: Problems with update to WSIF nightly build (wsif-2.0.1_IB3)
 
Lorenzi, Michael wrote:

>hi all,
>
>I wanted to update to axis-1.2. Now, WSIF can't find my generated classes i use for the type-mapping.
>
>I made a custom ClassLoader and set it with setContextClassLoader() at the beginning. That works fine with the old WSIF. With the nightly build, i get the error:
>
>EXIT  WSIFDefaultMessage.getObjectPart(org.xml.sax.SAXException: Deserializing parameter 'return':  could not find deserializer for type {urn:GoogleSearch}GoogleSearchResult)
>
>
>
>Looks like it can't find my classes anymore. Is there any change in loading the classes for the mapping in the new build of WSIF?
>  
>
i do not think there was any architectural change - how to reproduce 
your error (in few easy steps ...)?

thanks,

alek

-- 
The best way to predict the future is to invent it - Alan Kay
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.