@Override
public GeometryAttribute createGeometryAttribute(Object value, GeometryDescriptor descriptor,
String id, CoordinateReferenceSystem crs) {
if (crs != null && !(crs.equals(descriptor.getCoordinateReferenceSystem()))) {
// update CRS
GeometryType origType = (GeometryType) descriptor.getType();
GeometryType geomType = new GeometryTypeImpl(origType.getName(), origType.getBinding(),
crs, origType.isIdentified(), origType.isAbstract(),
origType.getRestrictions(), origType.getSuper(), origType.getDescription());
geomType.getUserData().putAll(origType.getUserData());
descriptor = new GeometryDescriptorImpl(geomType, descriptor.getName(), descriptor
.getMinOccurs(), descriptor.getMaxOccurs(), descriptor.isNillable(),
((GeometryDescriptor) descriptor).getDefaultValue());
descriptor.getUserData().putAll(descriptor.getUserData());