Details
-
Type:
New Feature
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.23
-
Component/s: documentation
-
Labels:None
-
Number of attachments :
Description
@XmlElements and @XmlElementRefs don't seem to be supported in the enunciate docs generation step. The following docs module config is used:
<docs
title="REST API"
copyright="Scott"
includeDefaultDownloads="true"
includeExampleXml="true"
includeExampleJson="false"
docsDir="api_docs"
xslt="src/enunciate/docs.xslt">
</docs>
And the following stacktrace is generated:
May 23, 2011 11:41:15 AM freemarker.log.JDK14LoggerFactory$JDK14Logger error
SEVERE:
Method public java.lang.String org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson() threw an exception when invoked on Foo
The problematic instruction:
----------
==> $
in user-directive forEachSchema [on line 19, column 1 in jar:file:/C:/Users/Scott/.m2/repository/org/codehaus/enunciate/enunciate-docs/1.22/enunciate-docs-1.22.jar!/org/codehaus/enunciate/modules/docs/docs.xml.fmt]
in user-directive file [on line 5, column 1 in jar:file:/C:/Users/Scott/.m2/repository/org/codehaus/enunciate/enunciate-docs/1.22/enunciate-docs-1.22.jar!/org/codehaus/enunciate/modules/docs/docs.xml.fmt]
----------
Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Method public java.lang.String org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson() threw an exception when invoked on Foo
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freemarker.core.Environment.visit(Environment.java:415)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.visit(Environment.java:297)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.visit(Environment.java:297)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.process(Environment.java:188)
at freemarker.template.Template.process(Template.java:237)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:106)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:85)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:70)
at org.codehaus.enunciate.modules.docs.DocumentationDeploymentModule.doFreemarkerGenerate(DocumentationDeploymentModule.java:656)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.doGenerate(FreemarkerDeploymentModule.java:51)
at org.codehaus.enunciate.modules.BasicDeploymentModule.step(BasicDeploymentModule.java:107)
at org.codehaus.enunciate.apt.EnunciateAnnotationProcessor.process(EnunciateAnnotationProcessor.java:113)
at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
at com.sun.tools.apt.main.Main.compile(Main.java:1102)
at com.sun.tools.apt.main.Main.compile(Main.java:964)
at com.sun.tools.apt.Main.processing(Main.java:95)
at com.sun.tools.apt.Main.process(Main.java:85)
at com.sun.tools.apt.Main.process(Main.java:67)
at org.codehaus.enunciate.main.Enunciate.invokeApt(Enunciate.java:766)
at org.codehaus.enunciate.main.Enunciate.doGenerate(Enunciate.java:365)
at org.codehaus.enunciate.ConfigMojo$MavenSpecificEnunciate.doGenerate(ConfigMojo.java:631)
at org.codehaus.enunciate.main.Enunciate$Stepper.step(Enunciate.java:1696)
at org.codehaus.enunciate.main.Enunciate$Stepper.stepTo(Enunciate.java:1728)
at org.codehaus.enunciate.AssembleMojo.execute(AssembleMojo.java:70)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.RuntimeException: java.lang.UnsupportedOperationException: No single reference for this element: multiple choices.
at org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson(RootElementDeclaration.java:204)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:836)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 76 more
Caused by: java.lang.UnsupportedOperationException: No single reference for this element: multiple choices.
at org.codehaus.enunciate.contract.jaxb.ElementRef.getRef(ElementRef.java:251)
at org.codehaus.enunciate.contract.jaxb.Element.generateExampleJson(Element.java:561)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:723)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:705)
at org.codehaus.enunciate.contract.jaxb.types.XmlClassType.generateExampleJson(XmlClassType.java:106)
at org.codehaus.enunciate.contract.jaxb.Element.generateExampleJson(Element.java:562)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:723)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:705)
at org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson(RootElementDeclaration.java:194)
... 82 more
Method public java.lang.String org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson() threw an exception when invoked on Foo
The problematic instruction:
----------
==> ${element.generateExampleJson()?trim}
[on line 114, column 33 in jar:file:/C:/Users/Scott/.m2/repository/org/codehaus/enunciate/enunciate-docs/1.22/enunciate-docs-1.22.jar!/org/codehaus/enunciate/modules/docs/docs.xml.fmt]
in user-directive forEachSchema [on line 19, column 1 in jar:file:/C:/Users/Scott/.m2/repository/org/codehaus/enunciate/enunciate-docs/1.22/enunciate-docs-1.22.jar!/org/codehaus/enunciate/modules/docs/docs.xml.fmt]
in user-directive file [on line 5, column 1 in jar:file:/C:/Users/Scott/.m2/repository/org/codehaus/enunciate/enunciate-docs/1.22/enunciate-docs-1.22.jar!/org/codehaus/enunciate/modules/docs/docs.xml.fmt]
----------
Java backtrace for programmers:
----------
freemarker.template.TemplateModelException: Method public java.lang.String org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson() threw an exception when invoked on Foo
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.StringBuiltins$StringBuiltIn._getAsTemplateModel(StringBuiltins.java:71)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freemarker.core.Environment.visit(Environment.java:415)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.visit(Environment.java:297)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.visit(Environment.java:297)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:208)
at freemarker.core.Environment.process(Environment.java:188)
at freemarker.template.Template.process(Template.java:237)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:106)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:85)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.processTemplate(FreemarkerDeploymentModule.java:70)
at org.codehaus.enunciate.modules.docs.DocumentationDeploymentModule.doFreemarkerGenerate(DocumentationDeploymentModule.java:656)
at org.codehaus.enunciate.modules.FreemarkerDeploymentModule.doGenerate(FreemarkerDeploymentModule.java:51)
at org.codehaus.enunciate.modules.BasicDeploymentModule.step(BasicDeploymentModule.java:107)
at org.codehaus.enunciate.apt.EnunciateAnnotationProcessor.process(EnunciateAnnotationProcessor.java:113)
at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
at com.sun.tools.apt.main.Main.compile(Main.java:1102)
at com.sun.tools.apt.main.Main.compile(Main.java:964)
at com.sun.tools.apt.Main.processing(Main.java:95)
at com.sun.tools.apt.Main.process(Main.java:85)
at com.sun.tools.apt.Main.process(Main.java:67)
at org.codehaus.enunciate.main.Enunciate.invokeApt(Enunciate.java:766)
at org.codehaus.enunciate.main.Enunciate.doGenerate(Enunciate.java:365)
at org.codehaus.enunciate.ConfigMojo$MavenSpecificEnunciate.doGenerate(ConfigMojo.java:631)
at org.codehaus.enunciate.main.Enunciate$Stepper.step(Enunciate.java:1696)
at org.codehaus.enunciate.main.Enunciate$Stepper.stepTo(Enunciate.java:1728)
at org.codehaus.enunciate.AssembleMojo.execute(AssembleMojo.java:70)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.RuntimeException: java.lang.UnsupportedOperationException: No single reference for this element: multiple choices.
at org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson(RootElementDeclaration.java:204)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:836)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 76 more
Caused by: java.lang.UnsupportedOperationException: No single reference for this element: multiple choices.
at org.codehaus.enunciate.contract.jaxb.ElementRef.getRef(ElementRef.java:251)
at org.codehaus.enunciate.contract.jaxb.Element.generateExampleJson(Element.java:561)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:723)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:705)
at org.codehaus.enunciate.contract.jaxb.types.XmlClassType.generateExampleJson(XmlClassType.java:106)
at org.codehaus.enunciate.contract.jaxb.Element.generateExampleJson(Element.java:562)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:723)
at org.codehaus.enunciate.contract.jaxb.TypeDefinition.generateExampleJson(TypeDefinition.java:705)
at org.codehaus.enunciate.contract.jaxb.RootElementDeclaration.generateExampleJson(RootElementDeclaration.java:194)
... 82 more
Yuck.
Thanks for the report. I suppose for now the workaround is to disable the example json output...