/******************************************************************************* * Copyright (c) 2015 VoyagerSearch * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License, Version 2.0 which * accompanies this distribution and is available at * http://www.apache.org/licenses/LICENSE-2.0.txt ******************************************************************************/ package org.locationtech.spatial4j.io; import java.io.IOException; import java.io.Reader; import java.text.ParseException; import org.locationtech.spatial4j.exception.InvalidShapeException; import org.locationtech.spatial4j.shape.Shape; /** * Implementations are expected to be thread safe */ public interface ShapeReader extends ShapeIO { /** * @param value -- the input value, could be a String or other object * @return a shape valid shape (not null) */ public Shape read(Object value) throws IOException, ParseException, InvalidShapeException; /** * @param value -- the input value, could be a String or other object * @return a shape or null, if the input was un readable. * * This will throw {@link InvalidShapeException} when we could read a shape, but it was * invalid */ public Shape readIfSupported(Object value) throws InvalidShapeException; /** * Read a {@link Shape} from the reader. * * @param reader -- the input. Note, it will not be closed by this function * @return a valid Shape (never null) * @throws IOException * @throws ParseException * @throws InvalidShapeException */ public Shape read(Reader reader) throws IOException, ParseException, InvalidShapeException; }