1111
1212import java .util .ArrayList ;
1313import java .util .List ;
14- import java .util .prefs .Preferences ;
14+ import java .util .Map ;
15+ import java .util .concurrent .ConcurrentHashMap ;
1516
1617import org .apache .commons .lang3 .StringUtils ;
1718
18- import com .mirth .connect .client .ui .Mirth ;
1919import com .mirth .connect .model .converters .ObjectXMLSerializer ;
2020import com .mirth .connect .model .filters .MessageFilter ;
2121
2222class MessageBrowserRecentFilterStore {
2323 private static final int MAX_RECENT_FILTERS = 10 ;
2424 private static final String RECENT_FILTERS_PREFERENCE_PREFIX = "messageBrowserRecentFilters." ;
25+ // TODO: Replace with a cross-session time-limited encrypted store
26+ // (In-memory assuming text searches represent PHI)
27+ private static final Map <String , String > RECENT_FILTERS_BY_CHANNEL = new ConcurrentHashMap <>();
2528
2629 private final String prefKey ;
2730
@@ -31,7 +34,7 @@ public MessageBrowserRecentFilterStore(String channelId) {
3134
3235 public List <MessageFilter > getRecentFilters () {
3336 try {
34- String serialized = Preferences . userNodeForPackage ( Mirth . class ). get (prefKey , "" );
37+ String serialized = RECENT_FILTERS_BY_CHANNEL . getOrDefault (prefKey , "" );
3538 if (StringUtils .isBlank (serialized )) return List .of ();
3639
3740 var result = ObjectXMLSerializer .getInstance ().deserialize (serialized , List .class );
@@ -62,8 +65,7 @@ public void addRecentFilter(MessageFilter filter) {
6265 }
6366
6467 try {
65- var preferences = Preferences .userNodeForPackage (Mirth .class );
66- preferences .put (prefKey , ObjectXMLSerializer .getInstance ().serialize (filters ));
68+ RECENT_FILTERS_BY_CHANNEL .put (prefKey , ObjectXMLSerializer .getInstance ().serialize (filters ));
6769 } catch (Exception e ) {
6870 e .printStackTrace ();
6971 }
0 commit comments