Skip to content

Commit

Permalink
fun with lamdas changing signature
Browse files Browse the repository at this point in the history
  • Loading branch information
jodygarnett committed Apr 7, 2017
1 parent fb73b67 commit 9c6fd98
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 41 deletions.
Expand Up @@ -4,27 +4,40 @@
*/
package org.geoserver.importer.rest;

import java.io.IOException;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;

import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.importer.*;
import org.geoserver.rest.catalog.CatalogController;
import org.geoserver.importer.ImportContext;
import org.geoserver.importer.ImportData;
import org.geoserver.importer.ImportFilter;
import org.geoserver.importer.Importer;
import org.geoserver.importer.ValidationException;
import org.geoserver.rest.RequestInfo;
import org.geoserver.rest.RestBaseController;
import org.geoserver.rest.RestException;
import org.geoserver.rest.catalog.CatalogController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;

import java.io.IOException;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;

@RestController
@RequestMapping(path = RestBaseController.ROOT_PATH+"/imports", produces = {
MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_HTML_VALUE })
Expand Down Expand Up @@ -75,7 +88,7 @@ public ImportWrapper getImports() {
// this means a specific lookup failed
throw new RestException("Failed to find import context", HttpStatus.NOT_FOUND);
} else {
return (writer, converter) -> converter.contexts((Iterator<ImportContext>)lookupContext, converter.expand(0));
return (writer, builder, converter) -> converter.contexts(builder,(Iterator<ImportContext>)lookupContext, converter.expand(0));
}
}

Expand Down
Expand Up @@ -6,6 +6,7 @@

import net.sf.json.JSONObject;
import org.geoserver.importer.rest.converters.ImportJSONWriter;
import org.geoserver.importer.rest.converters.ImportJSONWriter.FlushableJSONBuilder;

import java.io.IOException;
import java.io.Writer;
Expand All @@ -18,7 +19,7 @@ public ImportJSONWrapper(JSONObject json) {
}

@Override
public void write(Writer writer, ImportJSONWriter converter) throws IOException {
public void write(Writer writer, FlushableJSONBuilder json, ImportJSONWriter builder) throws IOException {
writer.write(json.toString());
}
}
Expand Up @@ -63,7 +63,7 @@ protected ImportTaskController(Importer importer) {
@GetMapping(path = "", produces = { MediaType.APPLICATION_JSON_VALUE,
CatalogController.TEXT_JSON , MediaType.TEXT_HTML_VALUE})
public ImportWrapper tasksGet(@PathVariable Long id) {
return (writer, converter) -> converter.tasks(context(id).getTasks(), true, converter.expand(0));
return (writer, builder, converter) -> converter.tasks(builder,context(id).getTasks(), true, converter.expand(0));
}

@GetMapping(path = "/{taskId}", produces = { MediaType.APPLICATION_JSON_VALUE,
Expand Down Expand Up @@ -106,15 +106,15 @@ public ImportWrapper targetGet(@PathVariable Long id, @PathVariable Integer task
if (task.getStore() == null) {
throw new RestException("Task has no target store", HttpStatus.NOT_FOUND);
}
return (writer, converter) -> converter.store(task.getStore(), task, true, converter.expand(1));
return (writer, builder, converter) -> converter.store(builder,task.getStore(), task, true, converter.expand(1));

}

@GetMapping(path = {"/{taskId}/layer"}, produces = { MediaType.APPLICATION_JSON_VALUE,
CatalogController.TEXT_JSON , MediaType.TEXT_HTML_VALUE})
public ImportWrapper layersGet(@PathVariable Long id, @PathVariable Integer taskId) {
ImportTask task = task(id, taskId);
return (writer, converter) -> converter.layer(task, true, converter.expand(1));
return (writer, builder, converter) -> converter.layer(builder,task, true, converter.expand(1));
}

@PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_FORM_URLENCODED_VALUE},
Expand Down Expand Up @@ -145,7 +145,7 @@ public Object taskPost(@PathVariable Long id, HttpServletRequest request, HttpSe

@PutMapping(path = "/{taskId}", consumes = {MediaType.APPLICATION_JSON_VALUE, CatalogController.TEXT_JSON})
public ImportWrapper taskPut(@PathVariable Long id, @PathVariable Integer taskId, HttpServletRequest request, HttpServletResponse response) {
return (writer, converter) -> handleTaskPut(id, taskId, request, response, converter);
return (writer, builder, converter) -> handleTaskPut(id, taskId, request, response, converter);
}

/**
Expand Down Expand Up @@ -187,10 +187,10 @@ public void targetPut(@PathVariable Long id, @PathVariable Integer taskId, @Requ
public ImportWrapper layerPut(@PathVariable Long id, @PathVariable Integer taskId, @RequestBody LayerInfo layer) {
ImportTask task = task(id, taskId);

return (writer, converter) -> {
return (writer, builder, converter) -> {
updateLayer(task, layer, importer, converter);
importer.changed(task);
converter.task(task, true, converter.expand(1));
converter.task(builder,task, true, converter.expand(1));
};
}

Expand Down Expand Up @@ -219,12 +219,12 @@ public Object acceptData(ImportData data, ImportContext context, HttpServletResp
}
response.setStatus(HttpStatus.CREATED.value());

return (ImportWrapper) (writer, converter) -> {
return (ImportWrapper) (writer, builder,converter) -> {
if (result.size() == 1) {
converter.task(result.get(0), true, converter.expand(1));
converter.task(builder,result.get(0), true, converter.expand(1));
}
else {
converter.tasks(result, true, converter.expand(0));
converter.tasks(builder,result, true, converter.expand(0));
}
};
}
Expand Down
Expand Up @@ -67,15 +67,15 @@ public ImportWrapper getTransform(@PathVariable("importId") Long importId, @Path
@PathVariable(value = "transformId", required = false) Integer transformId,
@RequestParam(value = "expand", required = false) String expand, HttpServletRequest request) {

return (writer, converter) -> {
return (writer, builder, converter) -> {
ImportTransform tx = transform(importId, taskId, transformId, true);
if (tx == null) {
converter.transformChain(task(importId, taskId), true, converter.expand(1));
converter.transformChain(builder,task(importId, taskId), true, converter.expand(1));
} else {
ImportTask task = task(importId, taskId);
int index = task.getTransform().getTransforms().indexOf(tx);

converter.transform(tx, index, task, true, converter.expand(1));
converter.transform(builder, tx, index, task, true, converter.expand(1));
}
};
}
Expand All @@ -91,11 +91,11 @@ public ImportWrapper putTransform(@PathVariable("importId") Long importId,
ImportTransform orig = transform(importId, taskId, transformId);
OwsUtils.copy(importTransform, orig, (Class) orig.getClass());

return (writer, converter) -> {
return (writer, builder, converter) -> {
ImportTask task = task(importId, taskId);
int index = task.getTransform().getTransforms().indexOf(orig);

converter.transform(orig, index, task, true, converter.expand(1));
converter.transform(builder, orig, index, task, true, converter.expand(1));
};
}

Expand Down
Expand Up @@ -4,12 +4,15 @@
*/
package org.geoserver.importer.rest;

import java.io.IOException;
import java.io.Writer;

import org.geoserver.importer.rest.converters.ImportJSONWriter;
import org.geoserver.importer.rest.converters.ImportJSONWriter.FlushableJSONBuilder;

/**
* Wrapper used by {@link ImportJSONWriter} to write custom json content
*/
public interface ImportWrapper {
void write(FlushableJSONBuilder json, ImportJSONWriter builder );
void write(Writer writer, FlushableJSONBuilder json, ImportJSONWriter builder ) throws IOException;
}
Expand Up @@ -160,7 +160,7 @@ protected void writeInternal(FlushableJSONBuilder json, Object t, HttpOutputMess
remote(json, (RemoteData) data, parent, expand);
}
} else if (ImportWrapper.class.isAssignableFrom(t.getClass())) {
((ImportWrapper) t).write(json, this);
((ImportWrapper) t).write(writer,json, this);
} else {
throw new RestException("Trying to write an unknown object " + t,
HttpStatus.I_AM_A_TEAPOT);
Expand Down
Expand Up @@ -77,11 +77,11 @@ private void writeHTML(ImportWrapper wrapper, OutputStreamWriter outputWriter)
outputWriter.write("</pre></body></html>");
}

private void writeJSON(ImportWrapper wrapper, OutputStreamWriter outputWriter) {
private void writeJSON(ImportWrapper wrapper, OutputStreamWriter outputWriter) throws IOException {
FlushableJSONBuilder json = new FlushableJSONBuilder(outputWriter);
ImportJSONWriter writer = new ImportJSONWriter(importer);

wrapper.write(json, writer);
wrapper.write(outputWriter, json, writer);
}

}
Expand Up @@ -5,30 +5,28 @@
*/
package org.geoserver.importer.rest;

import junit.framework.TestCase;
import net.sf.json.JSONObject;
import static org.easymock.classextension.EasyMock.createNiceMock;
import static org.easymock.classextension.EasyMock.replay;

import java.beans.PropertyDescriptor;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.WriterOutputStream;
import org.geoserver.importer.ImportContext;
import org.geoserver.importer.ImportTask;
import org.geoserver.importer.Importer;
import org.geoserver.importer.rest.converters.ImportJSONReader;
import org.geoserver.importer.rest.converters.ImportJSONWriter;
import org.geoserver.importer.rest.converters.ImportJSONWriter.FlushableJSONBuilder;
import org.geoserver.importer.transform.ImportTransform;
import org.geoserver.rest.RequestInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.context.request.AbstractRequestAttributes;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;

import java.beans.PropertyDescriptor;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import static org.easymock.classextension.EasyMock.createNiceMock;
import static org.easymock.classextension.EasyMock.replay;
import junit.framework.TestCase;

/**
*
Expand All @@ -49,12 +47,13 @@ public void doJSONTest(ImportTransform transform) throws Exception {

RequestInfo.set(ri);

ImportJSONWriter jsonio = new ImportJSONWriter(im, new WriterOutputStream(buffer));
ImportJSONWriter jsonio = new ImportJSONWriter(im);
FlushableJSONBuilder builder = new FlushableJSONBuilder(buffer);

ImportContext c = new ImportContext(0);
c.addTask(new ImportTask());

jsonio.transform(transform, 0, c.task(0), true, 1);
jsonio.transform(builder,transform, 0, c.task(0), true, 1);

ImportJSONReader reader = new ImportJSONReader(im);
ImportTransform transform2 = reader.transform(buffer.toString());
Expand Down

0 comments on commit 9c6fd98

Please sign in to comment.