Skip to content

Commit f4f0b84

Browse files
committed
JAVA-658: Making ReadPreference.primary == ReadPreference.primary() so that it's safe to do equality comparision
1 parent 1228cfe commit f4f0b84

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

src/main/com/mongodb/ReadPreference.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ public static TaggableReadPreference nearest(DBObject firstTagSet, DBObject... r
290290
* @deprecated As of release 2.9.0, replaced by {@code ReadPreference.primary()}
291291
*/
292292
@Deprecated
293-
public static final ReadPreference PRIMARY = new PrimaryReadPreference();
293+
public static final ReadPreference PRIMARY;
294294

295295
/**
296296
* A secondary-preferred read preference. Equivalent to calling
@@ -304,7 +304,7 @@ public static TaggableReadPreference nearest(DBObject firstTagSet, DBObject... r
304304
* @deprecated As of release 2.9.0, replaced by {@code ReadPreference.secondaryPreferred()}
305305
*/
306306
@Deprecated
307-
public static final ReadPreference SECONDARY = new TaggableReadPreference.SecondaryPreferredReadPreference();
307+
public static final ReadPreference SECONDARY;
308308

309309
/**
310310
* @deprecated As of release 2.9.0, replaced by
@@ -324,9 +324,20 @@ public static ReadPreference withTags( final DBObject tags ) {
324324
return new TaggedReadPreference( tags );
325325
}
326326

327-
private static final ReadPreference _PRIMARY = new PrimaryReadPreference();
328-
private static final ReadPreference _SECONDARY = new TaggableReadPreference.SecondaryReadPreference();
329-
private static final ReadPreference _SECONDARY_PREFERRED = new TaggableReadPreference.SecondaryPreferredReadPreference();
330-
private static final ReadPreference _PRIMARY_PREFERRED = new TaggableReadPreference.PrimaryPreferredReadPreference();
331-
private static final ReadPreference _NEAREST = new TaggableReadPreference.NearestReadPreference();
327+
private static final ReadPreference _PRIMARY;
328+
private static final ReadPreference _SECONDARY;
329+
private static final ReadPreference _SECONDARY_PREFERRED;
330+
private static final ReadPreference _PRIMARY_PREFERRED;
331+
private static final ReadPreference _NEAREST;
332+
333+
static {
334+
_PRIMARY = new PrimaryReadPreference();
335+
_SECONDARY = new TaggableReadPreference.SecondaryReadPreference();
336+
_SECONDARY_PREFERRED = new TaggableReadPreference.SecondaryPreferredReadPreference();
337+
_PRIMARY_PREFERRED = new TaggableReadPreference.PrimaryPreferredReadPreference();
338+
_NEAREST = new TaggableReadPreference.NearestReadPreference();
339+
340+
PRIMARY = _PRIMARY;
341+
SECONDARY = _SECONDARY_PREFERRED; // this is not a bug. See SECONDARY Javadoc.
342+
}
332343
}

src/main/com/mongodb/util/MyAsserts.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ public static void assertEquals( String a , Object b ){
8888
_assertEquals( a , b == null ? null : b.toString() );
8989
}
9090

91+
public static void assertSame(Object a, Object b) {
92+
if ( a != b )
93+
throw new MyAssert( a + " != " + b );
94+
}
95+
9196
public static void assertEquals( Object a , Object b ){
9297
_assertEquals( a , b );
9398
}

src/test/com/mongodb/ReadPreferenceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ public ReadPreferenceTest() throws IOException, MongoException {
6262
@Test
6363
@SuppressWarnings("deprecation")
6464
public void testDeprecatedStaticMembers() {
65-
assertEquals(ReadPreference.primary(), ReadPreference.PRIMARY);
66-
assertEquals(ReadPreference.secondaryPreferred(), ReadPreference.SECONDARY);
65+
assertSame(ReadPreference.primary(), ReadPreference.PRIMARY);
66+
assertSame(ReadPreference.secondaryPreferred(), ReadPreference.SECONDARY);
6767
}
6868

6969
@Test
@@ -76,7 +76,7 @@ public void testStaticPreferences() {
7676
}
7777

7878
@Test
79-
public void testPrimaryReadPreference(){
79+
public void testPrimaryReadPreference() {
8080
assertEquals(_primary, ReadPreference.primary().getNode(_set));
8181
assertNull(ReadPreference.primary().getNode(_setNoPrimary));
8282
assertEquals("{ \"mode\" : \"primary\"}", ReadPreference.primary().toDBObject().toString());

0 commit comments

Comments
 (0)