Subscriptions in the new version of IS are now permanent with
respect to the life time of the IS servers. That was done to
simplify development of partition independent application like
GUIs and statistics collectors. If an application subscribes to
one or multiple IS servers, it does not need to follow their state
any more, as if those servers are restarted the client will be
re-subscribed automatically and will continue receiving updates
when they are produced.
- The run() and stop() functions have been removed from the ISInfoReceiver class. In reality they have not been really necessary as of 2005 when we had moved form the old CORBA implementation to the new one (omniORB). Since that time the run() function simple blocked the current thread and the stop() one unblocked it. They were kept for backward compatibility but now it's good time to get rid of them.
- The subscribe() functions of the ISInfoReceiver class got an extra argument. It can be used to define what kind of events the caller wants to receive. There are 4 possible events declared in the ISInfo::Reason enumeration:
The new argument is tha last one and has default value {ISInfo::Created, ISInfo::Updated, ISInfo::Deleted}, which is compatible with the previous IS version. One can change that by providing another list of events to the subscribe functions.
- ISInfo::Created - information has been created. The callback contains the initial information value.
- ISInfo::Updated - information has been updated. The callback contains the new information value.
- ISInfo::Deleted - information has been deleted. The callback contains the last information value.
- ISInfo::Subscribed - callback is called immediately after establishing the subscription. The callback contains the actual information value.
- destroy() function has been removed from the is.InfoList as it's not anymore necessary.
- The is.Criteria constructor expects its first parameter to be of a java.util.regex.Pattern class instead of a String as it was before
- New class called is.InfoEnumeration has been added. It uses the same API as the is.InfoList class but differs by the implementation. Instead of reading complete objects from the IS repository as is.InfoList does, the is.InfoEnumeration constructor reads only names and time stamps of them. If one asks for a value of an information which is contained in this enumeration, a new request to the IS server will be made to read this value. Given that it's recommended to use this class only if you need to enumerate certain type of IS objects without getting their values. If objects values will be used, it's much more efficient to use the is.InfoList instead.