JsonProductSource.java
- /*
- * JsonProductSource
- */
- package gov.usgs.earthquake.product.io;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import javax.json.Json;
- import javax.json.JsonReader;
- import gov.usgs.util.StreamUtils;
- import gov.usgs.earthquake.product.Product;
- /**
- * Load a product from an InputStream containing Json.
- */
- public class JsonProductSource implements ProductSource {
- /** The input stream where Json is read. */
- private InputStream in;
- /**
- * Create a new JsonProductSource.
- *
- * @param in
- * the input stream where Json is read.
- */
- public JsonProductSource(final InputStream in) {
- this.in = in;
- }
- /**
- * Begin reading the input stream, sending events to out.
- *
- * @param out
- * the receiving ProductOutput.
- */
- public synchronized void streamTo(ProductHandler out) throws Exception {
- final Product product;
- try (final JsonReader reader = Json.createReader(new InputStreamReader(in))) {
- product = new JsonProduct().getProduct(reader.readObject());
- }
- final ObjectProductSource source = new ObjectProductSource(product);
- source.streamTo(out);
- }
- /**
- * Free any resources associated with this handler.
- */
- @Override
- public void close() {
- StreamUtils.closeStream(in);
- }
- }