Skip to content

Commit

Permalink
Fix test cases, mostly arguing over mime types
Browse files Browse the repository at this point in the history
  • Loading branch information
jodygarnett committed Apr 7, 2017
1 parent 9c6fd98 commit a2c91fd
Show file tree
Hide file tree
Showing 13 changed files with 75 additions and 65 deletions.
Expand Up @@ -1336,14 +1336,13 @@ public void setContent(byte[] body) {
myBody = body;
}

// @Override
// public void setContent(String body) {
// myBody = body.getBytes();
// }

public ServletInputStream getInputStream(){
return new GeoServerDelegatingServletInputStream(myBody);
}
@Override
public String toString() {
return "GeoServerMockHttpServletRequest "+getMethod()+ " "+getRequestURI();
}
}

private static class GeoServerDelegatingServletInputStream extends ServletInputStream {
Expand Down
Expand Up @@ -2009,13 +2009,6 @@ public void setContent(byte[] body) {
myBody = body;
}

// @Override
// public void setBodyContent(String body) {
// myBody = body.getBytes();
// }



@Override
public BufferedReader getReader() {
if (null == myBody)
Expand All @@ -2026,6 +2019,11 @@ public BufferedReader getReader() {
public ServletInputStream getInputStream() {
return new GeoServerDelegatingServletInputStream(myBody);
}

@Override
public String toString() {
return "GeoServerMockHttpServletRequest "+getMethod()+ " "+getRequestURI();
}
}

private static class GeoServerDelegatingServletInputStream extends ServletInputStream {
Expand Down
Expand Up @@ -9,6 +9,8 @@
import java.util.Collection;
import java.util.List;

import javax.print.attribute.standard.Media;

import org.geoserver.config.util.SecureXStream;
import org.geoserver.config.util.XStreamPersister;
import org.geoserver.ows.util.OwsUtils;
Expand Down Expand Up @@ -40,31 +42,29 @@ public XStreamCatalogListConverter(MediaType... supportedMediaTypes) {

@Override
protected boolean supports(Class<?> clazz) {
return RestListWrapper.class.isAssignableFrom(clazz);
return RestListWrapper.class.isAssignableFrom(clazz); // can write RestListWrapper
}

//
// reading
//
@Override
protected boolean canRead(MediaType mediaType) {
public boolean canRead(Class<?> clazz, MediaType mediaType) {
return false;
}
//
// writing
//


@Override
public RestListWrapper<?> readInternal(Class<? extends RestListWrapper<?>> clazz,
HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
throw new HttpMessageNotReadableException(
getClass().getName() + " does not support deserialization of catalog lists");
}

//
// writing
//
@Override
public void writeInternal(RestListWrapper<?> wrapper, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {

XStream xstream = this.createXStreamInstance();

Class<?> targetClass = wrapper.getObjectClass();
Expand Down Expand Up @@ -154,7 +154,7 @@ protected String getItemName(XStreamPersister xp, Class<?> clazz) {
public static class XMLXStreamListConverter extends XStreamCatalogListConverter {

public XMLXStreamListConverter() {
super();
super(MediaType.APPLICATION_XML, MediaType.TEXT_XML);
}

@Override
Expand All @@ -172,11 +172,6 @@ public void encodeCollectionLink(String link, HierarchicalStreamWriter writer) {
encodeAlternateAtomLink(link, writer);
}

@Override
public List<MediaType> getSupportedMediaTypes() {
return Arrays.asList(MediaType.APPLICATION_XML, MediaType.TEXT_XML);
}

@Override
public String getMediaType() {
return MediaType.APPLICATION_ATOM_XML_VALUE;
Expand All @@ -191,7 +186,7 @@ public String getExtension() {
public static class JSONXStreamListConverter extends XStreamCatalogListConverter {

public JSONXStreamListConverter() {
super();
super(MediaType.APPLICATION_JSON,XStreamJSONMessageConverter.TEXT_JSON);
}

@Override
Expand Down Expand Up @@ -220,10 +215,5 @@ public String getExtension() {
public String getMediaType() {
return MediaType.APPLICATION_JSON_VALUE;
}

@Override
public List<MediaType> getSupportedMediaTypes() {
return Arrays.asList(MediaType.APPLICATION_JSON);
}
}
}
Expand Up @@ -39,16 +39,10 @@ public String getMediaType() {

@Override
protected boolean supports(Class<?> clazz) {
/*
* Actually, this should largely be dependent on clazz and not by the passed in media type.
*
* During my research I found that:
*
* - Unless "produces" was set on the controller object, the passed media type was null
* - So, you can't actually rely on media type not being null
* - BUT, this method is only called anyway if they requested media type (via Accepts header) is in the list of getSupportedMediaTypes
*/
return RestWrapper.class.isAssignableFrom(clazz) && !RestListWrapper.class.isAssignableFrom(clazz);
// if( RestWrapper.class.isAssignableFrom(clazz) ){
// return !RestListWrapper.class.isAssignableFrom(clazz); // we can only write RestWrapper, not RestListWrapper
// }
return true; // reading objects is fine
}
//
// reading
Expand All @@ -69,6 +63,13 @@ public Object readInternal(Class<?> clazz, HttpInputMessage inputMessage)
// writing
//
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
if( RestListWrapper.class.isAssignableFrom(clazz) ){
return false; // we can only write RestWrapper, not RestListWrapper
}
return RestWrapper.class.isAssignableFrom(clazz) && canWrite(mediaType);
}
@Override
public void writeInternal(Object o, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
XStreamPersister xmlPersister = xpf.createJSONPersister();
Expand Down
Expand Up @@ -30,14 +30,19 @@ public XStreamXMLMessageConverter() {

@Override
protected boolean supports(Class<?> clazz) {
return RestWrapper.class.isAssignableFrom(clazz) && !RestListWrapper.class.isAssignableFrom(clazz);
if( RestWrapper.class.isAssignableFrom(clazz) ){
return !RestListWrapper.class.isAssignableFrom(clazz); // we can only read RestWrapper, not RestListWrapper
}
return true; // reading objects is fine
}

@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
return !RestListWrapper.class.isAssignableFrom(clazz) && canRead(mediaType);
}

//
// reading
//
// @Override
// public boolean canRead(Class<?> clazz, MediaType mediaType) {
// return !RestListWrapper.class.isAssignableFrom(clazz) && canRead(mediaType);
// }


@Override
Expand All @@ -50,8 +55,17 @@ protected Object readInternal(Class<? extends Object> clazz, HttpInputMessage in
p.setCatalog(catalog);
return p.load(inputMessage.getBody(), clazz);
}



//
// writing
//
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
if( RestListWrapper.class.isAssignableFrom(clazz) ){
return false; // we can only write RestWrapper, not RestListWrapper
}
return RestWrapper.class.isAssignableFrom(clazz) && canWrite(mediaType);
}
@Override
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
Expand All @@ -74,7 +88,7 @@ public String getExtension() {

@Override
public String getMediaType() {
return MediaType.TEXT_XML_VALUE;
return MediaType.APPLICATION_XML_VALUE;
}

@Override
Expand Down
Expand Up @@ -43,6 +43,8 @@ public abstract class CatalogController extends RestBaseController {
*/
public static final String TEXT_XML = "text/xml";

public static final MediaType MEDIATYPE_TEXT_XML = MediaType.valueOf(TEXT_XML);

/**
* Not an official MIME type, but GeoServer used to support it
*/
Expand Down
Expand Up @@ -30,11 +30,16 @@ protected boolean supports(Class<?> clazz) {
return SimpleFeatureCollection.class.isAssignableFrom(clazz)
|| JSONCollectionWrapper.class.isAssignableFrom(clazz);
}
//
// reading
//
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
return false;
}

//
// writing
//
protected void writeGeoJsonl(SimpleFeatureCollection features, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
final FeatureJSON json = new FeatureJSON();
Expand Down
Expand Up @@ -6,6 +6,7 @@

import java.io.IOException;

import org.geoserver.rest.catalog.FormatCollectionWrapper.JSONCollectionWrapper;
import org.geoserver.rest.catalog.FormatCollectionWrapper.XMLCollectionWrapper;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.springframework.http.HttpOutputMessage;
Expand All @@ -21,24 +22,24 @@ public class FormatCollectionWrapperConverter
extends FeatureCollectionConverter<FormatCollectionWrapper> {

public FormatCollectionWrapperConverter() {
super(MediaType.APPLICATION_XML);
super(MediaType.APPLICATION_XML, CatalogController.MEDIATYPE_TEXT_XML,
CatalogController.MEDIATYPE_TEXT_JSON, MediaType.APPLICATION_JSON);
}

@Override
protected void writeInternal(FormatCollectionWrapper content, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
MediaType mediaType = outputMessage.getHeaders().getContentType();
if (MediaType.APPLICATION_JSON.includes(mediaType)
|| CatalogController.MEDIATYPE_TEXT_JSON.includes(mediaType)) {
if (MediaType.APPLICATION_JSON.includes(mediaType) || CatalogController.MEDIATYPE_TEXT_JSON.includes(mediaType)) {
writeGeoJsonl(content.getCollection(), outputMessage);
} else if (MediaType.APPLICATION_XML.includes(mediaType)) {
} else if (MediaType.APPLICATION_XML.includes(mediaType) || CatalogController.MEDIATYPE_TEXT_JSON.includes(mediaType) ) {
writeGML(content.getCollection(), outputMessage);
}
}

@Override
protected boolean supports(Class<?> clazz) {
return XMLCollectionWrapper.class.isAssignableFrom(clazz);
return FormatCollectionWrapper.class.isAssignableFrom(clazz);
}

}
Expand Up @@ -64,7 +64,7 @@ public LayerGroupController(@Qualifier("catalog") Catalog catalog) {
}

@GetMapping
public RestWrapper layerGroupsGet(@PathVariable(required = false) String workspaceName) {
public RestWrapper<?> getLayerGroups(@PathVariable(required = false) String workspaceName) {

if(workspaceName != null && catalog.getWorkspaceByName(workspaceName) == null) {
throw new ResourceNotFoundException("Workspace " + workspaceName + " not found");
Expand All @@ -75,7 +75,7 @@ public RestWrapper layerGroupsGet(@PathVariable(required = false) String workspa
}

@GetMapping(value = "{layerGroupName}")
public RestWrapper layerGroupGet(
public RestWrapper<?> getLayerGroup(
@PathVariable String layerGroupName,
@PathVariable(required = false) String workspaceName,
@RequestParam(name = "quietOnNotFound", required = false) Boolean quietOnNotFound) {
Expand Down
Expand Up @@ -36,7 +36,7 @@ protected boolean supports(Class<?> clazz) {
// superclass generates a generic JSON map, we need a specific one to please Spring

@SuppressWarnings("unchecked")
Map<String, String> source = (Map<String, String>) super.read(clazz, inputMessage);
Map<String, String> source = (Map<String, String>) super.readInternal(clazz, inputMessage);
return new RuleMap<String,String>(source);
}
}
Expand Up @@ -85,7 +85,7 @@ public void testGetAsManifestsHTML() throws Exception {
public void testGetAsVersionsJSON() throws Exception {
// make the request, parsing the result into a json object
JSONObject json = (JSONObject) getAsJSON(BASEPATH + "/about/version.json");
print(json);
//print(json);
checkJSONModel(json);
}

Expand Down Expand Up @@ -186,7 +186,7 @@ protected static void serializeXML(Document domDoc) throws TransformerException

txformer.transform(domSrc, sr);

System.out.println(sw.toString());
//System.out.println(sw.toString());
} catch (TransformerConfigurationException ex) {
ex.printStackTrace();
throw ex;
Expand Down
Expand Up @@ -182,7 +182,7 @@ public void testIndexResourcesJSON() throws Exception {
assertEquals("com.vividsolutions.jts.geom.MultiPolygon", attributes.getJSONObject(0).get("binding"));

json = (JSONObject) getAsJSON(RestBaseController.ROOT_PATH + "/workspaces/wcs/coveragestores/watertemp/coverages/watertemp/index/granules.json");
print(json);
// print(json);
JSONArray features = json.getJSONArray("features");
String octoberId = null;
for (int i = 0; i < features.size(); i++) {
Expand All @@ -193,7 +193,7 @@ public void testIndexResourcesJSON() throws Exception {
}
}

json = (JSONObject) getAsJSON( RestBaseController.ROOT_PATH + "/workspaces/wcs/coveragestores/watertemp/coverages/watertemp/index/granules/" + octoberId + ".json");
json = (JSONObject) getAsJSON( RestBaseController.ROOT_PATH + "/workspaces/wcs/coveragestores/watertemp/coverages/watertemp/index/granules/" + octoberId + ".json", 200);
// print(json);
features = json.getJSONArray("features");
assertEquals(1, features.size());
Expand Down
Expand Up @@ -23,7 +23,7 @@
import net.sf.json.JSONObject;

/**
* Test for {@link DataAccessControlResource},{@link ServiceAccessControlResource} and {@link RESTAccessControlResource}
* Test for {@link DataAccessController},{@link ServiceAccessController} and {@link RestAccessController}
*
* @author christian
*
Expand Down

0 comments on commit a2c91fd

Please sign in to comment.