import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.sonar.api.ServerExtension;
private RequestHandler handler;
private Map<String, NewParam> newParams = Maps.newHashMap();
private URL responseExample = null;
- private String responseExampleFormat = null;
private NewAction(String key) {
this.key = key;
return this;
}
- /**
- * Used only if {@link #setResponseExample(java.net.URL)} is set. Example of values: "xml", "json", "txt", "csv".
- *
- * @since 4.4
- */
- public NewAction setResponseExampleFormat(@Nullable String format) {
- this.responseExampleFormat = format;
- return this;
- }
-
public NewParam createParam(String paramKey) {
if (newParams.containsKey(paramKey)) {
throw new IllegalStateException(
private final RequestHandler handler;
private final Map<String, Param> params;
private final URL responseExample;
- private final String responseExampleFormat;
private Action(Controller controller, NewAction newAction) {
this.key = newAction.key;
this.post = newAction.post;
this.isInternal = newAction.isInternal;
this.responseExample = newAction.responseExample;
- this.responseExampleFormat = newAction.responseExampleFormat;
if (newAction.handler == null) {
throw new IllegalArgumentException("RequestHandler is not set on action " + path);
}
/**
- * @see org.sonar.api.server.ws.WebService.NewAction#setResponseExampleFormat(String)
+ * @see org.sonar.api.server.ws.WebService.NewAction#setResponseExample(java.net.URL)
*/
@CheckForNull
public String responseExampleFormat() {
- return responseExampleFormat;
+ if (responseExample != null) {
+ return StringUtils.lowerCase(FilenameUtils.getExtension(responseExample.getFile()));
+ }
+ return null;
}
@CheckForNull
.setSince("4.1")
.setPost(true)
.setInternal(true)
- .setResponseExampleFormat("txt")
.setResponseExample(getClass().getResource("/org/sonar/api/server/ws/WebServiceTest/response-example.txt"))
.setHandler(new RequestHandler() {
@Override
assertThat(showAction.key()).isEqualTo("show");
assertThat(showAction.description()).isEqualTo("Show metric");
assertThat(showAction.handler()).isNotNull();
+ assertThat(showAction.responseExample()).isNull();
+ assertThat(showAction.responseExampleFormat()).isNull();
+ assertThat(showAction.responseExampleAsString()).isNull();
// same as controller
assertThat(showAction.since()).isEqualTo("3.2");
assertThat(showAction.isPost()).isFalse();
*/
package org.sonar.server.source.ws;
+import com.google.common.io.Resources;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.RequestHandler;
import org.sonar.api.server.ws.Response;
.setDescription("Get source code. Parameter 'output' with value 'raw' is missing before being marked as a public WS.")
.setSince("4.2")
.setInternal(true)
- .setResponseExampleFormat("json")
- .setResponseExample(getClass().getResource("/org/sonar/server/source/ws/example-show.json"))
+ .setResponseExample(Resources.getResource(getClass(), "example-show.json"))
.setHandler(this);
action