@@ -195,4 +195,70 @@ public void testLongKeys() {
195195 assertEquals (lyrics , recovered );
196196 }
197197
198+ @ Test
199+ public void testClassesInSamePackage () {
200+ final String blueDog = "lazy" , blueFox = "quick" ;
201+ final String redDog = "friendly" , redCat = "snuggly" ;
202+
203+ assertNull (prefService .get (BlueNode .class , "cat" ));
204+ assertNull (prefService .get (BlueNode .class , "dog" ));
205+ assertNull (prefService .get (BlueNode .class , "fox" ));
206+ assertNull (prefService .get (RedNode .class , "cat" ));
207+ assertNull (prefService .get (RedNode .class , "dog" ));
208+ assertNull (prefService .get (RedNode .class , "fox" ));
209+
210+ prefService .put (BlueNode .class , "dog" , "lazy" );
211+ prefService .put (BlueNode .class , "fox" , "quick" );
212+
213+ assertNull (prefService .get (BlueNode .class , "cat" ));
214+ assertEquals (blueDog , prefService .get (BlueNode .class , "dog" ));
215+ assertEquals (blueFox , prefService .get (BlueNode .class , "fox" ));
216+ assertNull (prefService .get (RedNode .class , "cat" ));
217+ assertNull (prefService .get (RedNode .class , "dog" ));
218+ assertNull (prefService .get (RedNode .class , "fox" ));
219+
220+ prefService .put (RedNode .class , "dog" , redDog );
221+ prefService .put (RedNode .class , "cat" , redCat );
222+
223+ assertNull (prefService .get (BlueNode .class , "cat" ));
224+ assertEquals (blueDog , prefService .get (BlueNode .class , "dog" ));
225+ assertEquals (blueFox , prefService .get (BlueNode .class , "fox" ));
226+ assertEquals (redCat , prefService .get (RedNode .class , "cat" ));
227+ assertEquals (redDog , prefService .get (RedNode .class , "dog" ));
228+ assertNull (prefService .get (RedNode .class , "fox" ));
229+
230+ prefService .clear (BlueNode .class );
231+
232+ assertNull (prefService .get (BlueNode .class , "cat" ));
233+ assertNull (prefService .get (BlueNode .class , "dog" ));
234+ assertNull (prefService .get (BlueNode .class , "fox" ));
235+ assertEquals (redCat , prefService .get (RedNode .class , "cat" ));
236+ assertEquals (redDog , prefService .get (RedNode .class , "dog" ));
237+ assertNull (prefService .get (RedNode .class , "fox" ));
238+
239+ prefService .clear (RedNode .class );
240+
241+ assertNull (prefService .get (BlueNode .class , "cat" ));
242+ assertNull (prefService .get (BlueNode .class , "dog" ));
243+ assertNull (prefService .get (BlueNode .class , "fox" ));
244+ assertNull (prefService .get (RedNode .class , "cat" ));
245+ assertNull (prefService .get (RedNode .class , "dog" ));
246+ assertNull (prefService .get (RedNode .class , "fox" ));
247+ }
248+
249+ // -- Helper classes --
250+
251+ /**
252+ * A class to use for anchoring preferences. Needed to test that preferences
253+ * are stored with each class specifically, rather than the package as a
254+ * whole. (Because the Java Preferences API uses packages for nodes, a
255+ * potential pitfall here is that clear(Class) might delete too much.)
256+ */
257+ private interface BlueNode {}
258+
259+ /**
260+ * Another class for anchoring preferences, in the same package as
261+ * {@link BlueNode}.
262+ */
263+ private interface RedNode {}
198264}
0 commit comments