package com.revolsys.geometry.model.vertex; import com.revolsys.geometry.model.BoundingBox; import com.revolsys.geometry.model.Geometry; import com.revolsys.geometry.model.GeometryFactory; import com.revolsys.geometry.model.impl.AbstractPoint; public abstract class AbstractVertex extends AbstractPoint implements Vertex { private static final long serialVersionUID = 1L; protected final Geometry geometry; public AbstractVertex(final Geometry geometry) { this.geometry = geometry; } @Override public AbstractVertex clone() { return (AbstractVertex)super.clone(); } @Override public BoundingBox getBoundingBox() { final GeometryFactory geometryFactory = getGeometryFactory(); final double x = getX(); final double y = getY(); return geometryFactory.newBoundingBox(x, y); } @SuppressWarnings("unchecked") @Override public <V extends Geometry> V getGeometry() { return (V)this.geometry; } @Override public GeometryFactory getGeometryFactory() { return this.geometry.getGeometryFactory(); } }