Giter VIP home page Giter VIP logo

enunciate's People

Contributors

agaengel avatar anton-johansson avatar cboehme avatar craftmaster2190 avatar darmbrust avatar dependabot[bot] avatar dyoma avatar estebistec avatar fhm84 avatar holmes avatar hordijk avatar jskov-jyskebank-dk avatar justincy avatar justintangren avatar lbndev avatar martin-magakian avatar nfalco79 avatar panchenko avatar redbugz avatar ripdajacker avatar saikirandaripelli avatar samion avatar schteff avatar simondehero avatar sourcepond avatar spoonman avatar steinsag avatar stevenschlansker avatar stoicflame avatar volkanto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enunciate's Issues

ImportedClassesClasspathHandler.handleResource can't handle a scala main class

Api docs was working just fine until I bring this dependency in my maven pom:

org.apache.kafka
kafka_2.10
0.8.0

mvn compile -X
<...>
[DEBUG] Noticed class kafka.Kafka. in .m2\repository\org\apache\kafka\kafka_2.10\0.8.0\kafka_2.10-0.8.0.jar.
<...>
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at org.codehaus.enunciate.main.ImportedClassesClasspathHandler.handleResource(ImportedClassesClasspathHandler.java:55)

When decompiling the JAR, here is the name of this class: kafka.Kafka$

Incorrect handling of List of objects in Response Body

I have the following API:

/**
 * [...]
 * @return the list of some data corresponding to the given name
 * @HTTP 404 if no data are found for this name
 */
@GET
@Path(RestConstant.PATH_DATA)
public List<SomeData> findSomeDataByName(@QueryParam("name") String name)
{
   [...]
}

This results in the following Response Body

element:    (custom)
media types:    application/json

the list of some data corresponding to the given name

Ie. my List<SomeData> is shown as (custom).

SomeData is a Pojo class with an @XmlRootElement annotation. It is correctly listed in another API returning one instance of this class.

I would expect the information to look like:

Response Body
element:    List of someData
media types:    application/json

or similar ("Array of" is OK too, http://json.org/ uses the terms interchangeably.

Ie. this issue suggests that types List and Map should be handled gracefully when their generic type is known by Enunciate, as they are base Json types.

Mixed @Form and @FormParam

Mixing @Form and @FormParam generates the error message:
An entity parameter must be of type MultivaluedMap<String, String> if there is another parameter annotated with @FormParam.
as found in DefaultValidator.java:222

RESTEasy seems to have no problem with a declaration of the form:
public String myMethod(..., @Form MyClass, @FormParam("var1") String var1, @FormParam("var2") String var2) { ... }

required = true does not reflect into Swagger documentation

If annotating a getter for a non-primitive type, e.g. String, as required=true, then the Enunciate generated documentation will state that min/max occurs is 1/1, but the JSON document generated for Swagger has "required" : false

For the AddressBook example:

@xmlelement(required = true)
public String getName() {
return name;
}

results in:
"name" : {
"required" : false,
"description" : "The get return name of the contact.",
"type" : "string"
}

@throws not used when on new line

Javadoc @throws description is not used when on new line :

/**
 * ...
 * @throws InvalidParameterException
 *         if the given parameter is invalid
 */

It works if on the same line :

/**
 * ...
 * @throws InvalidParameterException if the given parameter is invalid
 */

Upgrade to latest Swagger-UI version

The Swagger-UI version currently being used in enunciate is old. The latest version supports using custom headers, etc. for making requests through the UI. Would be great to have those features out of the box when enunciate populates the swagger-ui.

If that is too much work, it might make sense to allow users to just take a dump of the generated swagger schema, and then plugin their own customized version of the swagger-ui.

Pre/Code Tags Collapsed For Parameters

Hi there!

When generating for JAX-RS off of the Javadoc the pre/code tags that are contained within a @param tag are generated as single-line only. While the same code in a return statement generates multi-line as expected.

This is being generated with Default settings and default configuration settings. Screenshot attached for reference.

@Path("/test")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public interface TestRestService {

    /**
     * <p>
     * This is some text.
     * </p>
     * 
     * @param testQueryParam
     *            <em>Required</em> <strong>string</strong> Test Parameter.
     * @param testJaxbObject
     *            <p>
     *            The test object
     *            </p>
     * 
     * <pre><code>&lt;codes>
     * &lt;code>This&lt;/code>
     * &lt;code>is&lt;/code>
     * &lt;code>a&lt;/code>
     * &lt;code>multiline&lt;/code>
     * &lt;code>test.&lt;/code>
     * &lt;/codes></code></pre>
     * 
     * @since v1
     * @return <p>
     *         a response
     *         </p>
     * 
     * <pre><code>&lt;codes>
     * &lt;code>This&lt;/code>
     * &lt;code>is&lt;/code>
     * &lt;code>another&lt;/code>
     * &lt;code>multiline&lt;/code>
     * &lt;code>test.&lt;/code>
     * &lt;/codes></code></pre>
     */
    @GET
    public TestJaxbObject test(@QueryParam("testQueryParam") String testQueryParam, TestJaxbObject testJaxbObject);
}

testrestservice

need more enunciate documentation

Hi there! I love the tool, but running into a lot of wasted time due to limited documentation. A lot of the features such as where the "Request Body", "Response Body" and other such fields come from I'm stuck with guessing until I eventually find how it is mapped.

Hoping that some verbiage could be added to explain these mappings and make it easier for use.

option for not prepending namespace prefix in generated swagger model name

Model names in the swagger json schema get generated with name = prefix + "_" + qname.getLocalPart(); ^1

This becomes a bit ugly in the generated documentation, as names become things like ns0_download, ns0_onlineResource, and so on.

It would be nice if this could be disabled, so that model names become Download, OnlineResource, ...

Double call of xmlTextReaderAdvanceToNextStartOrEndElement

Hi,
we have a problem with the XML parsing in the IOS driver. I took a lock =
in the git repo and think there is a bug in client-complex-type.fmt:

Starting from line 931 we have the following code:

else {
       //end wrapper element =
"{${element.wrapperNamespace!""}}${element.wrapperName}"
       status =3D xmlTextReaderAdvanceToNextStartOrEndElement(reader);
     }

But we already moved to the next start or end element in line 919/920:

   [#if element.wrapped]
       status =3D xmlTextReaderAdvanceToNextStartOrEndElement(reader);

This causes if we have 2 child element one after another only the first =
gets parsed correct. For example if we have the following XML:

<Product>
.
.
.
<Variants>
    <Variant>...</Variant>
    <Variant>...</Variant>
</Variants>
<Choices>
    <Choice>...
</Choices>
..
</Product>

And we parse the "Variant" block. The line in 920 moves to "Variants"
after that the xmlTextReaderAdvanceToNextStartOrEndElement in line 933
moves to "Choices" which is wrong. Is there a reason for the else part
starting from 931?

Greetings
Alex

Incorrect WADL representation for requests and responses

Having this kind of method

@POST
@Consumes(MediaType.APPLICATION_JSON)
@TypeHint(Data.class)
public void myMethod(final Data data) {...}

the WADL generated by Enunciate is

<wadl:request>
<wadl:representation mediaType="application/json"/>
</wadl:request>

instead of

<wadl:request>
<wadl:representation mediaType="application/json" element="data" />
</wadl:request>

if I remove @Consumes(MediaType.APPLICATION_JSON)

then I get

<wadl:request>
<wadl:representation mediaType="*/*" element="data"/>
<wadl:representation mediaType="application/xml" element="data"/>
</wadl:request>

(FurtherMore the wadl also generates a

<wadl:response>
<wadl:representation mediaType="*/*" element="data"/>
<wadl:representation mediaType="application/xml" element="data"/>
</wadl:response>

while the java method has void return type)

Facet support for Java abstract class

I tried to put the Facet annotation in a "Data Model" class but I get:

Failed to execute goal org.codehaus.enunciate:maven-enunciate-plugin:1.27:assemble (default) on project gui: Problem assembling the enunciate app. compile failed. -> [Help 1]

So probably I misunderstood the usage of Facet but it's really useful for us if it is possible to drop abstract classes from the Data Model documentation

enunciate and Spring 3.xx support

Hi Ryan

First thanks for this package (enunciate) .

However unfortunately I can't use it! a it is developed with Spring 2.5.4 and I have to use it with Spring 3.0.5.RELEASE.

I have tried to use 3.0.5.RELEASE but then there is a certain subtle bug
that if one accesses Soup service and then a Rest service, a following exception occurs within enunciate framework (stack trace below)

This defect is reproducible and I traced it to Spring libraries dependencies (switching to 2.5.4 completely) and doing maven overrides gets rid of the exception (but then of course if libraries are using Spring 3.x.x this will only work if methods coded are backwards compatible with Spring 2.5.4

Thanks and looking forward any suggestions (meantime I will be going with Apache WS for the time being)

org.springframework spring-aspects 2.5.4 org.springframework spring-context-support 2.5.4 org.springframework spring-core 2.5.4 org.springframework spring-beans 2.5.4

stack trace:

HTTP ERROR 500

Problem accessing /numbers-appfuse-services/api/numbers/results. Reason:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf-NumbersService': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /services/NumbersService

Caused by:

java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf-NumbersService': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /services/NumbersService
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:96)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
at org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java:142)
at org.apache.cxf.transport.servlet.CXFServlet.loadSpringBus(CXFServlet.java:104)
at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:73)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:84)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
at org.codehaus.enunciate.modules.cxf.CXFAdaptedServletFilter.doFilter(CXFAdaptedServletFilter.java:32)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.codehaus.enunciate.modules.cxf.CXFAdaptedServletFilter.doFilter(CXFAdaptedServletFilter.java:32)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.codehaus.enunciate.modules.cxf.CXFAdaptedServletFilter.doFilter(CXFAdaptedServletFilter.java:32)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.codehaus.enunciate.webapp.HTTPRequestContextFilter.doFilter(HTTPRequestContextFilter.java:36)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Compile errors when building Objective-C module.

The following errors cause the Objective-C module to fail when building enunciate version 1.27:

     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate.m:5690:80: error: format specifies type 'char *' but the argument has type 'NSString *' [-Werror,-Wformat]
     [exec]   NSLog(@"Attempt to read enum value failed: %s doesn't match an enum value.", _color);
     [exec]                                              ~~                                ^~~~~~
     [exec]                                              %@
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate.m:6652:80: error: format specifies type 'char *' but the argument has type 'NSString *' [-Werror,-Wformat]
     [exec]   NSLog(@"Attempt to read enum value failed: %s doesn't match an enum value.", _lineStyle);
     [exec]                                              ~~                                ^~~~~~~~~~
     [exec]                                              %@
     [exec] 2 errors generated.
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:98: error: values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                        ~~~~                                      ^~~~
     [exec]                                                        %04li                                     (long)
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:104: error: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                             ~~~~                                       ^~~~~
     [exec]                                                             %02lu                                      (unsigned long)
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:111: error: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                                  ~~~~                                         ^~~
     [exec]                                                                  %02lu                                        (unsigned long)
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:116: error: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                                       ~~~~                                         ^~~~
     [exec]                                                                       %02lu                                        (unsigned long)
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:122: error: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                                            ~~~~                                          ^~~~~~
     [exec]                                                                            %02lu                                         (unsigned long)
     [exec] /Users/furtim/GitCode/enunciate/obj-c/target/enunciate/gen/obj-c/enunciate-common.m:1363:130: error: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Werror,-Wformat]
     [exec]   NSString *dateString = [NSString stringWithFormat: @"%04i-%02i-%02i %02i:%02i:%02i %+03i%02i", year, month, day, hour, minute, second, offset_hour, offset_minute];
     [exec]                                                                                 ~~~~                                             ^~~~~~
     [exec]                                                                                 %02lu                                            (unsigned long)
     [exec] 6 errors generated.

This appears to be similar to the followed Fixed issue I found on JIRA: http://jira.codehaus.org/browse/ENUNCIATE-403

At the moment, I'm working around this by modifying the generated obj-c source files enunciate.m and enunciate-common.m. The fixes are as follows.

obj-c/target/enunciate/gen/obj-c/enunciate.m (5960, 6652): Add .UTF8String to the _color and _lineStyle arguments of NSLog().
obj-c/target/enunciate/gen/obj-c/enunciate-common.m (1363): Add .intValue to the various date component arguments of [NSString stringWithFormat:]

Of course, running a clean build removes those changes, so there probably needs to be a fix implemented back at the generate-sources phase.

enunciate1.29 compilation issue with JDK7

HI,
I am using enunciate 1.29 to generate the document. Below snippet is from ant and usig JDK 7.

i am getting getting below exception
C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java>ant generate-document -Denunciate.javac.check=true
Buildfile: C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java\build.xml
[mkdir] Created dir: C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java\lib
[mkdir] Created dir: C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java\lib\ext

generate-document:
Loading modules from the specified classpath....
Discovered module c
Discovered module csharp
Discovered module docs
Discovered module java-client
Discovered module jaxws-ri
Discovered module jaxws-support
Discovered module jersey
Discovered module obj-c
Discovered module php
Discovered module ruby
Discovered module xml
Loading config C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java\enunciate-full.xml
initializing enunciate.
invoking enunciate:generate step...
[enunciate]
[enunciate] warning: The apt tool and its associated API are planned to be
[enunciate] removed in the next major JDK release. These features have been
[enunciate] superseded by javac and the standardized annotation processing API,
[enunciate] javax.annotation.processing and javax.lang.model. Users are
[enunciate] recommended to migrate to the annotation processing features of
[enunciate] javac; see the javac man page for more information.
[enunciate] An exception has occurred in apt (1.7.0_80-ea). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
[enunciate] java.lang.NullPointerException
[enunciate] at com.sun.tools.apt.comp.Apt$AptTreeScanner.visitAnnotation(Apt.java:180)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2004)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitNewArray(TreeScanner.java:212)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCNewArray.accept(JCTree.java:1412)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitAssign(TreeScanner.java:221)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1466)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitAnnotation(TreeScanner.java:300)
[enunciate] at com.sun.tools.apt.comp.Apt$AptTreeScanner.visitAnnotation(Apt.java:179)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2004)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitModifiers(TreeScanner.java:295)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCModifiers.accept(JCTree.java:2029)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitMethodDef(TreeScanner.java:84)
[enunciate] at com.sun.tools.apt.comp.Apt$AptTreeScanner.visitMethodDef(Apt.java:171)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:669)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitClassDef(TreeScanner.java:80)
[enunciate] at com.sun.tools.apt.comp.Apt$AptTreeScanner.visitClassDef(Apt.java:165)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:591)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
[enunciate] at com.sun.tools.javac.tree.TreeScanner.visitTopLevel(TreeScanner.java:68)
[enunciate] at com.sun.tools.apt.comp.Apt$AptTreeScanner.visitTopLevel(Apt.java:143)
[enunciate] at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:459)
[enunciate] at com.sun.tools.apt.comp.Apt.main(Apt.java:232)
[enunciate] at com.sun.tools.apt.main.AptJavaCompiler.compile(AptJavaCompiler.java:270)
[enunciate] at com.sun.tools.apt.main.Main.compile(Main.java:1127)
[enunciate] at com.sun.tools.apt.main.Main.compile(Main.java:989)
[enunciate] at com.sun.tools.apt.Main.processing(Main.java:113)
[enunciate] at com.sun.tools.apt.Main.process(Main.java:103)
[enunciate] at com.sun.tools.apt.Main.process(Main.java:85)
[enunciate] at org.codehaus.enunciate.main.Enunciate.invokeApt(Enunciate.java:817)
[enunciate] at org.codehaus.enunciate.main.Enunciate.doGenerate(Enunciate.java:401)
[enunciate] at org.codehaus.enunciate.main.Enunciate$Stepper.step(Enunciate.java:1799)
[enunciate] at org.codehaus.enunciate.main.Enunciate$Stepper.stepTo(Enunciate.java:1831)
[enunciate] at org.codehaus.enunciate.main.Enunciate.execute(Enunciate.java:181)
[enunciate] at org.codehaus.enunciate.main.EnunciateTask.execute(EnunciateTask.java:170)
[enunciate] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
[enunciate] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[enunciate] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[enunciate] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[enunciate] at java.lang.reflect.Method.invoke(Method.java:606)
[enunciate] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[enunciate] at org.apache.tools.ant.Task.perform(Task.java:348)
[enunciate] at org.apache.tools.ant.Target.execute(Target.java:435)
[enunciate] at org.apache.tools.ant.Target.performTasks(Target.java:456)
[enunciate] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
[enunciate] at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
[enunciate] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[enunciate] at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
[enunciate] at org.apache.tools.ant.Main.runBuild(Main.java:851)
[enunciate] at org.apache.tools.ant.Main.startAnt(Main.java:235)
[enunciate] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[enunciate] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

BUILD FAILED
C:\Users\Downloads\swagger\swagger-java-sample-app-master\swagger-java-sample-app-master\src\main\java\build.xml:129: org.codehaus.enunciate.EnunciateException: The invocation of APT has failed. See http://jira.codehaus.org/browse/ENUNCIATE-771 for a case where this has been seen. There is no explanation for this error.
at org.codehaus.enunciate.main.Enunciate.invokeApt(Enunciate.java:819)
at org.codehaus.enunciate.main.Enunciate.doGenerate(Enunciate.java:401)
at org.codehaus.enunciate.main.Enunciate$Stepper.step(Enunciate.java:1799)
at org.codehaus.enunciate.main.Enunciate$Stepper.stepTo(Enunciate.java:1831)
at org.codehaus.enunciate.main.Enunciate.execute(Enunciate.java:181)
at org.codehaus.enunciate.main.EnunciateTask.execute(EnunciateTask.java:170)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 2 seconds

Please guide me to solve this issue.

Document generation fails in integration-tests/

Hi,

I'm trying enunciate and do not succeed to make it work in the directory integration-tests/:

git clone https://github.com/stoicflame/enunciate
cd cd enunciate/integration-tests
mvn enunciate:docs

Maven does not find 1.30-SNAPSHOT:

[WARNING] The POM for org.codehaus.enunciate:maven-enunciate-cxf-plugin:jar:1.30-SNAPSHOT is missing, no dependency information available
[WARNING] Failed to retrieve plugin descriptor for org.codehaus.enunciate:maven-enunciate-cxf-plugin:1.30-SNAPSHOT: Plugin org.codehaus.enunciate:maven-enunciate-cxf-plugin:1.30-SNAPSHOT or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.enunciate:maven-enunciate-cxf-plugin:jar:1.30-SNAPSHOT

namespace for JAX-RS endpoints

Hi.

I'm trying to get rid of the generic ns0 namespace (and so ns0.xsd) that is used during the documentation generation. Like described here:

http://docs.codehaus.org/display/ENUNCIATE/Customizing+Namespace+Prefixes

This should work for @webservice. But I'm using REST with JSON only. How do I specify a namespace in REST so enunciate will pick it up?

I tried to define the @XmlSchema in a package-info.java in the package of the JAX-RS interfaces - like described in the docs. But this doesn't seem to be taken into account (except for the splash documentation provided as javadoc there). I also put the tags into enunciate.xml like described.

Any idea what I'm missing?

Thanks!
Veit

Enunciate 1.29 Maven

Hi Ryan, I saw that version 1.29 is available, however I can't seem to be able to add it through Maven.
Is version 1.29 in the Maven repository?

long on Java and Objective-c have different size

Hi,
we have a problem with the IOS driver. The problem is, that a Java long value is 64bit and an Objective-C long is only 32bit. So if we try to send long values we have to change the client files to use a "long long" value. Is it somehow possible to change the type the driver use?

Greetings
Alex

no documentation provided on parameters for subresource locators

Hi.

I'm using enunciate 1.30 for generating documentation for my REST api.
Somehow parameters on my subresource locators aren't found for documentation:

public interface SubResource {
/**
* Gets the sub sub resource.
*
* @param myId the id of the sub sub resource to get.
* @return the sub sub resource.
*/
@path("{myId}")
SubSubResource getSubSubResource(@PathParam("myId") String myId);
}

When I look at the generated documentation for the SubSubResource, myId states (no documentation provided).
I am missing something?

Thanks.
Veit

javac apt tool

Hello,

i'm trying to use the last version of the enunciate maven plugin :

<build>
    <plugins>
            <plugin>
                <groupId>org.codehaus.enunciate</groupId>
                <artifactId>maven-enunciate-plugin</artifactId>
                <version>1.28</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>docs</goal>
                        </goals>
                        <configuration>
                            <!-- the directory where to put the docs -->
                            <docsDir>${project.build.directory}/docs</docsDir>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    </plugins>
</build>

But when i launch the docs goal of this plugin with maven 3 (Jdk 7), i have this kind of error :

warning: The apt tool and its associated API are planned to be
removed in the next major JDK release.  These features have been
superseded by javac and the standardized annotation processing API,
javax.annotation.processing and javax.lang.model.  Users are
recommended to migrate to the annotation processing features of
javac; see the javac man page for more information.

i have try to pass javacArguments in the configuration of the plugin without any success.

Problem trying to document JSON REST services in Spring 3

I am running into problems trying to configure enunciate against a Spring 3 application. I have a set of RESTful endoints that are annotated as @controller but when I include enunciate in my pom along with the config file, the only thing that gets generated against are some random XML schema elements.

Is there some additional dependencies needed in my pom to get spring (and swagger) to parse out.

From the pom, my plugin is as follows:

org.codehaus.enunciate
maven-enunciate-spring-plugin
1.27

enunciate.xml




assemble



And my enunciate.xml is:














Any pointers would be gratefully received! Thanks

Enunciate - Swagger : dynamic URL generation

Hi,

I am trying to work out if its possible to have a dynamic URL which will be used for the JSON generation.

deployment protocol="http" host="server" context="/context"/

gives a hard url to the specified server, but i want it to be the same url as where swagger has been deployed.

I will deploy the application on 3 environments (dev/acc/prod) and want the swagger documentation to reflect this. Now i need to make 3 seperate builds to change the url used for swagger.

I want either to use a relative url or a list of urls (which fetches the resources on that url). Is this possible or am i asking too much?

Note: the localhost:8080 default isnt working for me for the default :(

TypeHint doesn't work across projects

The example in issue #6 that you give also works fine for me.

However when the class which you are providing the type hint for exists in a different Maven project then you get the output:
element: (custom)

I am including my other Maven project as a dependency e.g
<dependency>
<groupId>uk.co.somecompany.db</groupId>
<artifactId>someDb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

The class being used for the type hint is
uk.co.somecompany.db.value.Device

The class is annotated with @XmlRootElement

At my RESTful endpoint the annotations are
@get
@path("{id: [0-9]*}")
@produces(MediaType.APPLICATION_JSON)
@typehint(Device.class)

public Response read( @PathParam( "id" ) long id )

Am missing something?

Ability to show capture expressions

In our REST api we are using capture expressions on the path

/resource/v2/user/{userBy: (id|name)}/

The capture regular expressions do not get translated into the documentation. Is this by design or is there an option I am missing that will allow me to make this show up?

Or an annotation that would allow me to specify a valid list of options for some of these?

If this could be done then it would be useful to have the ability to put this into the swagger resource files with an enum type allowing for swagger to have a drop down of the possible options

Deprecated fields excluded from Example XML and Example JSON

We use the jaxws module of Enunciate. To prevent our API users to use deprecated fields, it would be nice if these fields were excluded from the Example XML and Example JSON outputs. Other parts of the documentation already show deprecated fields with a red background and our JavaDocs states the reason for the deprecation. But for the examples, it would be very nice to exclude them.

Starting Enunciate out of Eclipse

Hello together,

I want to customize some parts of enunciate, but therefore I must debug enunciate to find the right way. I checked out the source. But if I start enunciate out of Eclipse to document your sample project "wannabecool" it doesn't generate a API. It will be generated a war file without any html files inside only. If I start enunciate out of maven (mvn clean install the "wannabecool" project), the API-Html files will be generated. I do not really know, what I did wrong....

I am using following configuration to start enunciate out of eclipse:
-vv
-f C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\conf\enunciate.xml
-g C:\temp\enunciate\work\generated
-c C:\temp\enunciate\work\compiled
-b C:\temp\enunciate\work\build
-p C:\temp\enunciate\work\package
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\api\ExclusiveGroupException.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\api\PermissionDeniedException.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\api\PersonaService.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\api\SocialGroupService.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\domain\link\Link.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\domain\link\SocialGroup.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\domain\persona\Name.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\domain\persona\Persona.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\impl\PersonaServiceImpl.java
C:\temp\enunciate\enunciate-1.30-RC1\enunciate-1.30-RC1\samples\wannabecool\src\main\java\org\codehaus\enunciate\impl\SocialGroupServiceImpl.java

Eclipse starts the enunciate project, but the produced war file hasn't any html files inside. There are no errors in the log.

Could anybody helps me?

Greetings
Fival

Support for grouping JAX-RS by Facet

Hi,

I've had a few issues related to Facets which weren't occuring when I was using DocumentationGroups.

  1. I've tried grouping the docs by facet using the configuration XML file and defining the groupRestResources attribute in the docs module as follows:

<docs groupRestResources="http://domain.com/facets#myfacet"/>

Unfortunately, the following XSD validation fails as the groupRestResources value is enumerated and can only contain either byPath or byDocumentationGroup:

http://enunciate.codehaus.org/schemas/enunciate-1.27.xsd

  1. I can't seem to override the default value for the org.codehaus.enunciate.contract.jaxrs.Resource value nor am I able to add any other Facet to a REST endpoint, they are simply ignored.

@org.codehaus.enunciate.jaxrs.TypeHint does not appear to have any effect

When using the @org.codehaus.enunciate.jaxrs.TypeHint annotation decorate a method which returns a javax.ws.rs.core.Response, it does not appear that Enunciate uses this annotation to determine the response type for the service method.

E.g.

@GET
@Path("{customerId}")
@Produces(MediaType.APPLICATION_JSON)
@org.codehaus.enunciate.jaxrs.TypeHint(CustomerData.class)
public Response getCustomer(@PathParam("customerId")

Does not produce output with the correct response type.

@GET
@Path("{customerId}")
@Produces(MediaType.APPLICATION_JSON)
public CustomerData getCustomer(@PathParam("customerId")

Does produce the desired result.

Integrate into the WADL file the @Form and @FormParam annotations

Currently, only the @QueryParam and @PathParam are taken into account in the WADL (AFAIK).

Example:

@Path("/share")
public class SharingResource {

@POST
@Path("/{shareMethod}")
public ShareResponse sendShare(@PathParam("shareMethod") String method, 
        @FormParam("itemId") List<Long> itemIds, 
        @FormParam("recipient") List<String> recipients) {
    ...

The generated WADL, without the itemId and recipient parameters:

<wadl:resource path="/share/{shareMethod}">
    <wadl:param name="shareMethod" style="template"/>
    <wadl:method name="POST">
        <wadl:request/>
        <wadl:response>
            <wadl:representation mediaType="*/*"/>
            <wadl:representation mediaType="application/xml"/>
        </wadl:response>
    </wadl:method>
</wadl:resource>

In the documentation the form parameters are described perfectly.

According to the WADL specs the form-encoded parameters should have the following representation, inside the request element:

<request>
    <representation mediaType="application/x-www-form-urlencoded">
        <name="itemId" style="query"/>
        <name="recipient" style="query"/>
    </representation>
</request>

I would love to see the form parameters included in the WADL. Why I care about this? ApiGee Console on the go seems awesome, and it is the only missing piece from your generated WADL.

Cheers,
Omar

JAX-RS: enunciate fails when a comma separated list of types is used in @Consumes and @Produces

@Consumes and @Produces allow comma separated lists of types to be used:

A list of media types. Each entry may specify a single type or consist of a comma separated list of types. E.g. {"image/jpeg,image/gif", "image/png"}. Use of the comma-separated form allows definition of a common string constant for use on multiple targets.

When trying to process a REST service using this syntax with enunciate, it fails with an error like the following:

[jersey] Invalid produces MIME type: application/json,application/xml(Error parsing media type 'application/json,application/xml').

java.lang.NoSuchMethodException: No such accessible method: addClientPackageConversion()

I'm trying to upgrade maven-enunciate-plugin from 1.2.0 to 1.2.1 or latter and getting this error:

[INFO] --- maven-enunciate-plugin:1.30.1:assemble (default) @ exammple-integration ---
Mar 31, 2015 6:23:44 PM org.apache.commons.digester.Digester endElement
SEVERE: End event threw exception
java.lang.NoSuchMethodException: No such accessible method: addClientPackageConversion() on object: org.codehaus.enunciate.modules.java_client.config.ClientPackageConversion
    at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:279)
    at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:220)
    at org.apache.commons.digester.Rule.end(Rule.java:257)
    at org.apache.commons.digester.Digester.endElement(Digester.java:1345)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:607)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1323)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2750)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:828)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:757)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:133)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1211)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:551)
    at org.apache.commons.digester.Digester.parse(Digester.java:1940)
    at org.codehaus.enunciate.config.EnunciateConfiguration.load(EnunciateConfiguration.java:893)
    at org.codehaus.enunciate.config.EnunciateConfiguration.load(EnunciateConfiguration.java:749)
    at org.codehaus.enunciate.config.EnunciateConfiguration.load(EnunciateConfiguration.java:740)
    at org.codehaus.enunciate.ConfigMojo.loadConfig(ConfigMojo.java:490)
    at org.codehaus.enunciate.ConfigMojo.execute(ConfigMojo.java:332)
    at org.codehaus.enunciate.AssembleMojo.execute(AssembleMojo.java:56)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] -------------------------------------------------------------

Configuration in pom.xml looks like

   <plugin>
                <groupId>org.codehaus.enunciate</groupId>
                <artifactId>maven-enunciate-plugin</artifactId>
                <version>1.30.1</version>
                <extensions>true</extensions>
                <configuration>
                    <configFile>enunciate.xml</configFile>
                    <generateDir>${project.build.directory}/enunciate-generate</generateDir>
                    <compileDir>${project.build.directory}/enunciate-compile</compileDir>
                    <buildDir>${project.build.directory}/enunciate-build</buildDir>
                    <packageDir>${project.build.directory}/enunciate-package</packageDir>
                    <outputDir>${project.build.directory}</outputDir>
                    <artifacts>
                        <artifact>
                            <enunciateArtifactId>client.jdk15.library.binaries</enunciateArtifactId>
                            <artifactType>jar</artifactType>
                            <classifier>client</classifier>
                        </artifact>
                        <artifact>
                            <enunciateArtifactId>jaxws.client.library.binaries</enunciateArtifactId>
                            <artifactType>jar</artifactType>
                            <classifier>jaxws-client</classifier>
                        </artifact>
                        <artifact>
                            <enunciateArtifactId>docs</enunciateArtifactId>
                            <artifactType>zip</artifactType>
                            <classifier>docs</classifier>
                        </artifact>
                    </artifacts>
                    <exports>
                        <docs>${project.build.finalName}-docs.zip</docs>
                    </exports>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.enunciate</groupId>
                        <artifactId>enunciate-xfire</artifactId>
                        <version>1.20</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.enunciate</groupId>
                        <artifactId>enunciate-jaxws-client</artifactId>
                        <version>1.20fix01</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun</groupId>
                        <artifactId>tools</artifactId>
                        <version>1.6.0</version>
                        <scope>system</scope>
                        <systemPath>${java.home}/../lib/tools.jar</systemPath>
                    </dependency>
                </dependencies>
            </plugin>

Move from APT to Javac to work with Java 8

From ENUNCIATE-701:
JDK 1.7 displays the following warning when using maven-enunciate-plugin 1.27:

[INFO] invoking enunciate:generate step...
warning: The apt tool and its associated API are planned to be removed in the next major JDK
release. These features have been superseded by javac and the standardized annotation processing
API, javax.annotation.processing and javax.lang.model. Users are recommended to migrate to the
annotation processing features of javac; see the javac man page for more information.*

In JDK 1.8 however, you get this:

Caused by: java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory
at org.codehaus.enunciate.DocsMojo.loadMavenSpecificEnunciate(DocsMojo.java:107)
at org.codehaus.enunciate.ConfigMojo.execute(ConfigMojo.java:326)
at org.codehaus.enunciate.DocsMojo.execute(DocsMojo.java:81)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
... 20 more
Caused by: java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
... 24 more

This is preventing projects from upgrading to Java 8.
See this discussion for more info.

DataModel documentation?

Hello, I discovered enunciate to document my SOAP service, and it is so much helpful. Many many thanks.

I'm wondering if there is currently a solution to document the JAXB data model with the javadoc or some annotations ?

If not, any hint on the complexity to extends enunciate to do so?

Milestone for v2.0

As I see, started work on migration to version 2.0
The main improvement of this version should be using of JSR 269 Annotation processing and JSR 166 Compiler API instead of deprecated and removed in JDK8 Sun APT tool.

Currently migrated modules are:

  <modules>
    <module>core-annotations</module>
    <module>models</module>
    <module>core</module>
    <module>jaxb</module>
  </modules>

I don't know are they completely migrated or not. If yes, could you release them to RC version?
Also I'm interested in maven-enunciate-slim-plugin and maven-enunciate-plugin bit as I see work wasn't started yet.

To track all work on this it would be great to create milestone in Github issues tracker

generate Mashery iodocs JSON

Mashery iodocs is a great way to document and provide sample invocation of REST services. It is nice because it is technology agnostic (node.js server/app that derives its information from JSON configuration files about the services).

The thinking was to make a new module/artifact for output from Enunciate that generates JSON configus in the iodocs format. This would allow easy integration and best of both worlds in my opinion. I have applications in various technologies and like iodocs for it's agnostic approach, but for my 75% heavy java community want them to use Enunciate for overall service stack and would like comments/information to flow clear through top to bottom.

IODocs General Info - http://mashery.com/solution/iodocs
GITHUB - https://github.com/mashery/iodocs
Example JSON - https://github.com/mashery/iodocs/blob/8e408c2a33d63f17c4eea9228b8890f2980c735a/config.json.sample

We might have an alternative as well Ryan. We're looking into contributing an enhancement to iodocs that would allow it to remotely parse a WADL file and translate to it's JSON configs. Since Enunciate generates WADL with documentation references throughout it that come from the relevant javadoc levels, that might turn into great fit for Enunciate since it already does it and also work for other languages/frameworks that either generate a WADL or people how create a WADL manually.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.