package org.fcrepo.server.rest.cxf;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
public class WadlGenerator extends
org.apache.cxf.jaxrs.model.wadl.WadlGenerator {
public WadlGenerator() {
super();
}
public WadlGenerator(org.apache.cxf.jaxrs.model.wadl.WadlGenerator other) {
super(other);
}
@Override
public Response handleRequest(Message message, ClassResourceInfo resource) {
if (getPath(message).endsWith("/application.wadl")) {
String query = (String) message.get(Message.QUERY_STRING);
if (query == null) {
message.put(Message.QUERY_STRING, "_wadl=&_type=xml");
} else {
if (query.indexOf("_wadl=") < 0) message.put(Message.QUERY_STRING, query + "&_wadl=&_type=xml");
}
}
return super.handleRequest(message, resource);
}
private static String getPath(Message message) {
String address = HttpUtils.getEndpointAddress(message);
if (MessageUtils.isRequestor(message)) {
return address;
}
String path = HttpUtils.getPathToMatch(message, false);
return address + path;
}
}