package org.geojson;
/**
* Visitor to handle all different types of {@link GeoJsonObject}.
*
* @param <T>
* return type of the visitor.
*/
public interface GeoJsonObjectVisitor<T> {
T visit(GeometryCollection geoJsonObject);
T visit(FeatureCollection geoJsonObject);
T visit(Point geoJsonObject);
T visit(Feature geoJsonObject);
T visit(MultiLineString geoJsonObject);
T visit(Polygon geoJsonObject);
T visit(MultiPolygon geoJsonObject);
T visit(MultiPoint geoJsonObject);
T visit(LineString geoJsonObject);
/**
* An abstract adapter class for visiting GeoJson objects.
* The methods in this class are empty.
* This class exists as convenience for creating listener objects.
*
* @param <T> Return type of the visitor
*/
class Adapter<T> implements GeoJsonObjectVisitor<T> {
@Override
public T visit(GeometryCollection geoJsonObject) {
return null;
}
@Override
public T visit(FeatureCollection geoJsonObject) {
return null;
}
@Override
public T visit(Point geoJsonObject) {
return null;
}
@Override
public T visit(Feature geoJsonObject) {
return null;
}
@Override
public T visit(MultiLineString geoJsonObject) {
return null;
}
@Override
public T visit(Polygon geoJsonObject) {
return null;
}
@Override
public T visit(MultiPolygon geoJsonObject) {
return null;
}
@Override
public T visit(MultiPoint geoJsonObject) {
return null;
}
@Override
public T visit(LineString geoJsonObject) {
return null;
}
}
}