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);
}

@@ -536,11 +536,1009 @@
 Object);
+%0A%0A%09/**%0A%09 * An abstract adapter class for visiting GeoJson objects.%0A%09 * The methods in this class are empty.%0A%09 * This class exists as convenience for creating listener objects.%0A%09 *%0A%09 * @param %3CT%3E Return type of the visitor%0A   */%0A%09class Adapter%3CT%3E implements GeoJsonObjectVisitor%3CT%3E %7B%0A%0A%09%09@Override%0A%09%09public T visit(GeometryCollection geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(FeatureCollection geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(Point geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(Feature geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(MultiLineString geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(Polygon geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(MultiPolygon geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(MultiPoint geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%0A%09%09@Override%0A%09%09public T visit(LineString geoJsonObject) %7B%0A%09%09%09return null;%0A%09%09%7D%0A%09%7D
 %0A%7D%0A

add GeoJsonObjectVisitor.Adapter