Closed pekam closed 3 years ago
To solve #23, the following API was added to CollaborationMap:
CollaborationMap
void setExpirationTimeout(Duration expirationTimeout); Optional<Duration> getExpirationTimeout();
It enables setting a timeout after the last connection to the topic when the map should be cleared. E.g. to clear the edited values in a collaborative form after no one has been editing it for 15 minutes, you can do this:
CollaborationEngine.getInstance().openTopicConnection(this, "topic-id", user, topicConnection -> { topicConnection .getNamedMap(CollaborationBinder.class.getName()) .setExpirationTimeout(Duration.ofMinutes(15)); return null; });
This works, but is not very convenient. We should add the same API directly to CollaborationBinder, so that you could do simply this:
CollaborationBinder
collaborationBinder.setExpirationTimeout(Duration.ofMinutes(15)
Since the same methods are then in two classes, we should create an interface to ensure those are in sync:
interface HasExpirationTimeout { void setExpirationTimeout(Duration expirationTimeout); Optional<Duration> getExpirationTimeout(); }
and make CollaborationMap and CollaborationBinder implement this interface.
Remember to override the JavaDocs to make sense for each implementer.
To solve #23, the following API was added to
CollaborationMap
:It enables setting a timeout after the last connection to the topic when the map should be cleared. E.g. to clear the edited values in a collaborative form after no one has been editing it for 15 minutes, you can do this:
This works, but is not very convenient. We should add the same API directly to
CollaborationBinder
, so that you could do simply this:Since the same methods are then in two classes, we should create an interface to ensure those are in sync:
and make
CollaborationMap
andCollaborationBinder
implement this interface.Remember to override the JavaDocs to make sense for each implementer.