Skip to content

Commit

Permalink
HSEARCH-2208 Make our custom DistanceQuery actually immutable
Browse files Browse the repository at this point in the history
  • Loading branch information
Sanne committed May 9, 2017
1 parent dd37a36 commit 61540cc
Showing 1 changed file with 13 additions and 18 deletions.
Expand Up @@ -38,12 +38,12 @@
*/
public final class DistanceQuery extends Query {

private Query approximationQuery;
private Point center;
private double radius;
private String coordinatesField;
private String latitudeField;
private String longitudeField;
private final Query approximationQuery;
private final Point center;
private final double radius;
private final String coordinatesField;
private final String latitudeField;
private final String longitudeField;

/**
* Construct a distance query to match document distant at most of radius from center Point
Expand All @@ -58,15 +58,7 @@ public final class DistanceQuery extends Query {
* @see org.hibernate.search.spatial.Coordinates
*/
public DistanceQuery(Query approximationQuery, Coordinates centerCoordinates, double radius, String coordinatesField) {
if ( approximationQuery == null ) {
this.approximationQuery = new MatchAllDocsQuery();
}
else {
this.approximationQuery = approximationQuery;
}
this.center = Point.fromCoordinates( centerCoordinates );
this.radius = radius;
this.coordinatesField = coordinatesField;
this( approximationQuery, centerCoordinates, radius, coordinatesField, null, null );
}

/**
Expand All @@ -83,6 +75,10 @@ public DistanceQuery(Query approximationQuery, Coordinates centerCoordinates, do
* @see org.hibernate.search.spatial.Coordinates
*/
public DistanceQuery(Query approximationQuery, Coordinates centerCoordinates, double radius, String latitudeField, String longitudeField) {
this( approximationQuery, centerCoordinates, radius, null, latitudeField, longitudeField );
}

private DistanceQuery(Query approximationQuery, Coordinates centerCoordinates, double radius, String coordinatesField, String latitudeField, String longitudeField) {
if ( approximationQuery == null ) {
this.approximationQuery = new MatchAllDocsQuery();
}
Expand All @@ -91,7 +87,7 @@ public DistanceQuery(Query approximationQuery, Coordinates centerCoordinates, do
}
this.center = Point.fromCoordinates( centerCoordinates );
this.radius = radius;
this.coordinatesField = null;
this.coordinatesField = coordinatesField;
this.latitudeField = latitudeField;
this.longitudeField = longitudeField;
}
Expand All @@ -104,8 +100,7 @@ public Query rewrite(IndexReader reader) throws IOException {
}
Query rewrittenApproximationQuery = approximationQuery.rewrite( reader );
if ( rewrittenApproximationQuery != approximationQuery ) {
DistanceQuery clone = (DistanceQuery) clone();
clone.approximationQuery = rewrittenApproximationQuery;
DistanceQuery clone = new DistanceQuery( rewrittenApproximationQuery, this.center, this.radius, this.coordinatesField, this.latitudeField, this.longitudeField );
return clone;
}
return this;
Expand Down

0 comments on commit 61540cc

Please sign in to comment.