package com.wordnik.sample; import io.swagger.jaxrs.ext.AbstractSwaggerExtension; import io.swagger.jaxrs.ext.SwaggerExtension; import io.swagger.models.Operation; import io.swagger.models.Response; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @see com.wordnik.jaxrs.VendorExtensionsJaxrsReader * @see com.wordnik.springmvc.VendorExtensionsSpringMvcReader */ public class TestVendorExtension extends AbstractSwaggerExtension { private static final String RESPONSE_DESCRIPTION = "Some vendor error description"; private static final String RESPONSE_STATUS_401 = "401"; @Override public void decorateOperation(final Operation operation, final Method method, final Iterator<SwaggerExtension> chain) { final TestVendorAnnotation annotation = method.getAnnotation(TestVendorAnnotation.class); if (annotation != null) { Map<String, Response> map = new HashMap<String, Response>(operation.getResponses()); final Response value = new Response(); value.setDescription(RESPONSE_DESCRIPTION); map.put(RESPONSE_STATUS_401, value); operation.setResponses(map); } if (chain.hasNext()) { chain.next().decorateOperation(operation, method, chain); } } /** * Processed by {@link TestVendorExtension} */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface TestVendorAnnotation {} }