package org.neo4j.smack.test.util; import java.net.URI; import java.util.List; import java.util.Map; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.core.util.StringKeyObjectValueIgnoreCaseMultivaluedMap; public class JaxRsResponse extends Response { private final int status; private final MultivaluedMap<String,Object> metaData; private final MultivaluedMap<String, String> headers; private final URI location; private String data; private MediaType type; public JaxRsResponse( ClientResponse response ) { this(response, extractContent(response)); } private static String extractContent(ClientResponse response) { if (response.getStatus() == Status.NO_CONTENT.getStatusCode()) return null; return response.getEntity(String.class); } public JaxRsResponse(ClientResponse response, String entity) { status = response.getStatus(); metaData = extractMetaData(response); headers = extractHeaders(response); location = response.getLocation(); type = response.getType(); data = entity; response.close(); } @Override public String getEntity() { return data; } @Override public int getStatus() { return status; } @Override public MultivaluedMap<String, Object> getMetadata() { return metaData; } private MultivaluedMap<String, Object> extractMetaData(ClientResponse jettyResponse) { MultivaluedMap<String, Object> metadata = new StringKeyObjectValueIgnoreCaseMultivaluedMap(); for ( Map.Entry<String, List<String>> header : jettyResponse.getHeaders() .entrySet() ) { for ( Object value : header.getValue() ) { metadata.putSingle( header.getKey(), value ); } } return metadata; } public MultivaluedMap<String, String> getHeaders() { return headers; } private MultivaluedMap<String, String> extractHeaders(ClientResponse jettyResponse) { return jettyResponse.getHeaders(); } // new URI( getHeaders().get( HttpHeaders.LOCATION ).get(0)); public URI getLocation() { return location; } public void close() { } public static JaxRsResponse extractFrom(ClientResponse clientResponse) { return new JaxRsResponse(clientResponse); } public MediaType getType() { return type; } public String getEntity(Class<String> type) { return getEntity(); } }