Skip to content
This repository has been archived by the owner on Sep 21, 2022. It is now read-only.

The fluent plugin 2.0.3 generates bad code #5

Closed
glassfishrobot opened this issue Apr 19, 2007 · 18 comments
Closed

The fluent plugin 2.0.3 generates bad code #5

glassfishrobot opened this issue Apr 19, 2007 · 18 comments

Comments

@glassfishrobot
Copy link
Contributor

While generating Java code off XHTML schema with xjc, the fluent plugin generated:

class AType{
....

public AType withType(String[]... values) {
for (String value: values)

{ getType().add(value); }

return this;
}
}

but it should have generated "withType(String... values)". The resulting code
does not compile!

Environment

Operating System: All
Platform: All

Affected Versions

[current]

@glassfishrobot
Copy link
Contributor Author

Reported by hr_stoyanov

@glassfishrobot
Copy link
Contributor Author

Was assigned to hchar

@glassfishrobot
Copy link
Contributor Author

hchar said:
Can you please attach or provide a link to the specific xsd that triggered this
problem ? Thanks.

@glassfishrobot
Copy link
Contributor Author

hchar said:
I just tried the fluent api plugin against the xhtml xsd I could find at:

http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd

I could generate all the sources with the fluent API and compile succesfully. I
couldn't reproduce the problem you encountered.

Can you please attach or email me a copy of the XSD that caused you this problem
? Thanks.

@glassfishrobot
Copy link
Contributor Author

hchar said:
Reassign to myself

@glassfishrobot
Copy link
Contributor Author

hchar said:
I'll be closing this issue shortly, unless I can provided with an xsd that can
reproduce the problem.

@glassfishrobot
Copy link
Contributor Author

hchar said:
Closing issue. Feel free to reopen it if an XSD can be provided to have the
problem reproduced.

@glassfishrobot
Copy link
Contributor Author

hr_stoyanov said:
...Sorry I have missed your questions. In addition to the original report, I
also suspect that this generated code (one of many such) is wrong as well, but
it compiles at lease:

class CodeType{
.....
public CodeType withContent(Serializable[]... values) {
for (Serializable value: values)

{ getContent().add(value); }

return this;
}
...
}


I am using version 2.0.3 of the fluent API and the generated code is for the
XHTML schema found in here:
http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218/

Inside this page, there is a link for a zip archive. Unpack it and try this for
SCHEMA\xhtml11.xsd:


<schema dir="$

{basedir}

\download\schema" includes="*xhtml11.xsd"/>

@glassfishrobot
Copy link
Contributor Author

hchar said:
Your xjc ant target makes me wonder which version of jaxb/xjc you are using, for
there is no "target" attribute for the "xjc" ant task, "destdir" rather. See
http://java.sun.com/webservices/docs/2.0/jaxb/xjcTask.html

Anyway, I just tried out the fluent api plugins both on jaxb-ri-20070413 (ie
jaxb 2.1.3), jaxb-ri-20061211 (ie jaxb 2.1) and jaxb-ri-20070122 (ie jaxb 2.0.5)
against xhtml11.xsd and they all work as expected. Note I changed the xjc ant
target to become something like:

<xjc destdir="$

{src.dir}

"
removeOldOutput="yes" package="com.peruncs.jaxb_xhtml">


Using jaxb-fluent-api-2.0.3.jar, it generates:

public CodeType withContent(Serializable... values) {
for (Serializable value: values)

{ getContent().add(value); }

return this;
}

Using jaxb-fluent-api-2.1.3.jar, it generates:

public CodeType withContent(Serializable... values) {
if (values!= null) {
for (Serializable value: values)

{ getContent().add(value); }

}
return this;
}

@glassfishrobot
Copy link
Contributor Author

hchar said:
For some reason I don't seem to be able to reproduce this problem. I wonder if
anyone else has encountered it.

@glassfishrobot
Copy link
Contributor Author

hr_stoyanov said:
I use the JAXB2.0 library in NetBeans 5.5. The problem still exists even if I
upgrade to the 2.1.3 fluent api. Otherwise, I tried to upgrade to Jaxb 2.1.3 and
changed the task to be:


<schema dir="$

{basedir}

\download\schema" includes="*xhtml11.xsd"/>

----------------------------------------------

But then I started getting the below exception after running Ant (with the most
verbose option):

...
Finding class org.jvnet.jaxb2_commons.tools.xjc.plugin.fluent_api.XjcFluentApiPlugin
Loaded from C:\projects\trunk\jaxbfluent213_wrapper\jaxb-fluent-api-2.1.3.jar
org/jvnet/jaxb2_commons/tools/xjc/plugin/fluent_api/XjcFluentApiPlugin.class
Finding class com.sun.tools.xjc.Plugin
Loaded from C:\projects\trunk\jaxws211_wrapper\lib\jaxb-xjc.jar
com/sun/tools/xjc/Plugin.class
Class com.sun.tools.xjc.Plugin loaded from ant loader (parentFirst)
Class org.jvnet.jaxb2_commons.tools.xjc.plugin.fluent_api.XjcFluentApiPlugin
loaded from ant loader (parentFirst)
Resource com/sun/tools/xjc/addon/locator/SourceLocationAddOn.class loaded from
ant loader
Resource com/sun/tools/xjc/addon/sync/SynchronizedMethodAddOn.class loaded from
ant loader
Resource com/sun/tools/xjc/addon/at_generated/PluginImpl.class loaded from ant
loader
Resource com/sun/tools/xjc/addon/episode/PluginImpl.class loaded from ant loader
Resource com/sun/tools/xjc/addon/episode/PluginImpl$1.class loaded from ant loader
Resource com/sun/xml/xsom/visitor/XSFunction.class loaded from ant loader
Resource com/sun/xml/xsom/visitor/XSContentTypeFunction.class loaded from ant loader
Resource com/sun/xml/xsom/visitor/XSTermFunction.class loaded from ant loader
Class java.lang.reflect.Array loaded from parent loader (parentFirst)
Resource com/sun/tools/xjc/BadCommandLineException.class loaded from ant loader
Class java.lang.Exception loaded from parent loader (parentFirst)
failure in the XJC task. Use the Ant -verbose switch for more details
Class java.lang.UnsupportedClassVersionError loaded from parent loader (parentFirst)
Class java.lang.InstantiationException loaded from parent loader (parentFirst)
Class java.lang.IllegalAccessException loaded from parent loader (parentFirst)
Class java.io.IOException loaded from parent loader (parentFirst)
C:\projects\trunk\jaxb_xhtml11\build.xml:83: unrecognized parameter -Xfluent-api
at com.sun.tools.xjc.XJC2Task._doXJC(XJC2Task.java:428)
at com.sun.tools.xjc.XJC2Task.doXJC(XJC2Task.java:416)
at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:351)
at com.sun.istack.tools.ProtectedTask.execute(ProtectedTask.java:55)

I only re-open the issue so you could test it with NB 5.5, if you can ...

@glassfishrobot
Copy link
Contributor Author

hchar said:
No problem. Feel free to re-open this issue. However, it smells like a NetBean
specific problem. I never used NB but rather direct ant 1.6.5+ build with Java
5 and Jaxb 2.x.

@glassfishrobot
Copy link
Contributor Author

hr_stoyanov said:
Ok, but have you ever try it with JDK1.6 - this is what I am using?
I eliminated the NB5.5 JAXWS2.0 jars completely, suspecting they have bad/old
XJC code there. But how can you explain the 'unrecognized parameter
-Xfluent-api' problem?

My theory is that Sun made a huge mistake by including JAX-WS 2.0 in the jdk1.6.
Then they came up with a very ugly patch
(http://weblogs.java.net/blog/kohsuke/archive/2007/02/howitworks_runn.html) to
make the JAX-WS2.1 jars work. So I think the the above exception is due to some
classloader mess.

Btw, where is the link for 2.0.x fluent API download?

@glassfishrobot
Copy link
Contributor Author

hr_stoyanov said:
Ok. I got fluent-2.1.3 to work with Jaxb 2.0.5, eliminating the NB 5.5 bundled
JAXWS2.0 module. All under Java 6.

However, there still seems to be a problem with fluent-2.1.3 and JAxb-2.1.3
under java 6. I will file a separate issue for this, if it is not too much for
asking you to take a look at it. Thanks.

@glassfishrobot
Copy link
Contributor Author

hchar said:

have you ever try it with JDK1.6

No I haven't. I avoid using jdk1.6 and jaxb together. I concur that it is a
big mistake. Jaxb was going really well until it was included in the jdk. What
a mess

where is the link for 2.0.x fluent API download?

They are all located with URL of the pattern:

https://jaxb2-commons.dev.java.net/fluent-api/release/2.0.x/jaxb-fluent-api-2.0.x.jar

(Just substitute "x" with the actual version number)

@glassfishrobot
Copy link
Contributor Author

hchar said:
Since this is a Java 6 related issue, I am closing this issue for now, and leave
the other new issue (specific to the use of fluent API under Java 6) open.

@glassfishrobot
Copy link
Contributor Author

Marked as won't fix on Monday, May 14th 2007, 1:34:48 pm

@glassfishrobot
Copy link
Contributor Author

This issue was imported from java.net JIRA JAXB2_COMMONS-5

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant