restlet / restlet-framework-java

The first REST API framework for Java
https://restlet.talend.com
645 stars 284 forks source link

Restlet 2.3.2 jee apispark Swagger integration broken #1068

Open bill-okara opened 9 years ago

bill-okara commented 9 years ago

org.restlet.jee:org.restlet.ext.swagger:jar:2.3.2 has a dependency on: com.wordnik:swagger-models:jar:1.5.3-M1 com.wordnik:swagger-annotations:jar:1.5.3-M1

But swagger-annotations-1.5.3 has changed the ApiOperation.tags from: String tags() to String[] tags()

As a result, the code in:

org.restlet.ext.apispark.internal.introspection.helper.SwaggerAnnotationUtils

    public static void processApiOperation(ApiOperation apiOperation,
            Resource resource, Operation operation) {
        ...
        if (!StringUtils.isNullOrEmpty(apiOperation.tags())) {
            List<String> tags = StringUtils.splitAndTrim(apiOperation.tags());
            for (String tag : tags) {
                if (!resource.getSections().contains(tag)) {
                    resource.getSections().add(tag);
                }
            }
        }
        ...
    }

will generate errors:

java.lang.NoSuchMethodError: com.wordnik.swagger.annotations.ApiOperation.tags()Ljava/lang/String;
    at org.restlet.ext.apispark.internal.introspection.helper.SwaggerAnnotationUtils.processApiOperation(SwaggerAnnotationUtils.java:194)
    at org.restlet.ext.apispark.internal.introspection.helper.SwaggerAnnotationIntrospectionHelper.processOperation(SwaggerAnnotationIntrospectionHelper.java:70)
    at org.restlet.ext.apispark.internal.introspection.application.ResourceCollector.collectResource(ResourceCollector.java:129)
bill-okara commented 9 years ago

turns out this could be a maven dependency issue, that is, in maven, swagger-models 1.5.3-M1 depends on swagger-annotations 1.5.3-M1

[INFO] | +- com.wordnik:swagger-models:jar:1.5.3-M1:compile [INFO] | | - com.wordnik:swagger-annotations:jar:1.5.3-M1:compile

but APISpark seems to only want swagger-models 1.5 and swagger-annotations 1.3...

org.restlet.ext.apispark (Restlet Extension - APISpark)