[ http://jira.codehaus.org/browse/XFIRE-806?page=comments#action_84910 ] Geert Engels commented on XFIRE-806: ------------------------------------
This is still an issue in XFire 1.2.4, BTW. I worked around it by means of the following. In org.codehaus.xfire.gen.jsr181.AbstractServiceGenerator, around line 252, add the an instanceof check for JClass, like this: try { JClass holder = context.getCodeModel().ref("javax.xml.ws.Holder"); if( genericType instanceof JClass ) { holder = holder.narrow((JClass) genericType); } return holder; } catch (Exception e) { throw new GenerationException("Could not find holder type.", e); } That works for me, for now. > wsgen ClassCastException from JPrimitiveType to JClass > ------------------------------------------------------ > > Key: XFIRE-806 > URL: http://jira.codehaus.org/browse/XFIRE-806 > Project: XFire > Issue Type: Bug > Components: Generator > Affects Versions: 1.2.3 > Environment: Windows, Ant > Reporter: Geert Engels > Assigned To: Dan Diephouse > > Using Ant wsgen task from xfire 1.2.3 against WSDL from > https://adwords.google.com/api/adwords/v8/CampaignService?wsdl I get: > [wsgen] 15-Dec-2006 09:20:04 org.codehaus.xfire.gen.Wsdl11Generator > generate > [wsgen] INFO: Generating code for WSDL at > file:/c:/work/workspace/bcp/src/etc/wsdl/ggl/CampaignService.wsdl with a ba > e URI of file:/c:/work/workspace/bcp/src/etc/wsdl/ggl/CampaignService.wsdl > [wsgen] 15-Dec-2006 09:20:04 > org.codehaus.xfire.gen.jsr181.AbstractServiceGenerator generate > [wsgen] INFO: Creating class com.teracode.bcp.api.ggl.CampaignInterface > BUILD FAILED > C:\work\workspace\bcp\build\build.xml:72: > org.codehaus.xfire.gen.GenerationException: Could not find holder type. > This seems to be the same as question posted on Nov 2nd here > http://www.mail-archive.com/user@xfire.codehaus.org/msg01259.html to which > there never was a reply. > Running the Ant task through a debugger, I can intercept an embedded > ClassCastException, which originates at line > org.codehaus.xfire.gen.jsr181.AbstractServiceGenerator.java:252. > The code there is as follows: > protected JType getHolderType(GenerationContext context,MessagePartInfo part) > throws GenerationException > { > JType genericType = context.getSchemaGenerator().getType(context, > part.getName(), part.getSchemaType().getSchemaType()); > > try { > JClass holder = context.getCodeModel().ref("javax.xml.ws.Holder"); > holder = holder.narrow((JClass) genericType); /* THIS IS WHERE > THE CLASSCASTEXCEPTION OCCURS */ > return holder; > } catch (Exception e) { > throw new GenerationException("Could not find holder type.", e); > } > } > The MessagePartInfo, when the ClassCast is thrown, contains a schemaType > which stringifies to > "org.codehaus.xfire.aegis.type.basic.ObjectType[class=<null>, > QName={https://adwords.google.com/api/adwords/v8}responseTime]". > The ClassCastException is from JPrimitiveType to JClass. > Anybody know how to get Xfire wsgen to work with this WSDL? All others from > WSDLs from Google AdWords API, not only this service but all others, and not > only v8 but v7 and v6 as well, fail in the same way. > It's easy to reproduce, using a testcase as per below: > import junit.framework.TestCase; > public class WsGenTest extends TestCase { > > public void testIt() throws Exception { > WsGenTask task = new WsGenTask(); > task.setOutputDirectory("C:/EXT"); > > task.setWsdl("https://adwords.google.com/api/adwords/v8/CampaignService?wsdl"); > task.setPackage("blah"); > task.setOverwrite(true); > task.setGenerateServerStubs(false); > //task.setCaseSensitive(false); > //task.setDefaultexcludes(false); > try { > task.execute(); > } catch( Throwable t ) { > t.printStackTrace(); > fail(t.toString()); > } > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email