InfiniTec - Henning Krauses Blog

Don't adjust your mind - it's reality that is malfunctioning

InfiniTec.Exchange 0.99.4 released

This release brings a bunch of bugfixes and some new features: The Subscription and SubscriptionCollection classes implement the WebDAV push event feature: Now you can subscribe to changes made to folders and elements. Here's a diagram of the system:


Class diagram of the Subscription management (click to enlarge)

Access to the SubscriptionCollection is exposed via the Connection Class, although you are free to create your own instance. By default, it binds to a local port between 1024 and 5000, but you can specify a fixed port also. An example is not yed available.

Another cool new feature is the incorporation of my little Expression classes. These classes allow you to easily build expressions for filter items in a ItemCollection or Searcher class. A typical example would be to filter all appointments in a folder between a specified date range. You can do this now very easily:

    1     Expression expression = Expression.And(Expression.Equals(WellknownProperties.Appointment.Starttime, DateTime.Now),

    2                                        Expression.Equals(WellknownProperties.Appointment.EndTime, DateTime.Now.AddDays(3)));

    3 

    4 using (Connection connection = newConnection(server, ConnectionProtocol.Default, newCredential(username, password, AuthenticationType.Ntlm)))

    5 {

    6     Mailbox mbx = newMailbox("exchange/administrator", connection);

    7     mbx.Refresh();

    8 

    9     mbx.Calendar.Items.ConstraintExpression += expression;

   10     mbx.Calendar.Items.Refresh();

   11 

   12     foreach (CalendarItem item in mbx.Calendar.Items)

   13     {

   14         ProcessItem(item);

   15     }

   16 }

One special thing about this: You can concatenate two expressions by using the plus operator. This will result in both expressions being ANDed.

No more worrying about casting properties to the right type and such. You don't even have to worry about time zones - all handled automagically.

Here is a small overview over the expression classes:


Class diagram for the expression classes (click to enlarge)

Changelog

  • Fixed a bug in the FolderCollection class
  • Fixed a bug in the TaskItem.PreSave() method which caused the Content class of the item not to be set.
  • Fixed a bug in the TaskItem.PreSave() method which prevented a successful modification of the TaskStatus (Would not work if PercentComplete was not set)
  • The Searcher<ItemType> now get the correct set of properties for the specific item types.
  • Changed the type of TaskItem.PercentComplete from float to double
  • Exchange 'float' datatype is now handled as 'System.Double' instead of 'System.Float'
  • New method ApplyInheritedSecurity(FolderSecurity): Clears all security descriptor entries and applies the security settings from the specified descriptor. (Experimental!)
  • SchemaClass attribute is now public
  • The ItemCollection and ItemCollection<ItemType> classes now expose a IList<string> PropertiesToLoad property
  • Renamed ChildItems and ChildFolders of the Folder and Folder<ItemType> classes to Items and Folders.
  • Moved the IsRead property from MessageItem to Item
  • Made the IsRead property writable
  • Fixed a bug in the Property class which prevented setting propertyvalues to 0 or false
  • Replaced the HttpStatus class with a PropertyStatus enumeration. HttpStatus was used with the Property.Status property.
  • Added support for InfiniTec.Expressions on the Searcher, Item- and FolderCollections. Constraints can now be either specified using the Constraints property or the ConstraintExpression property.
  • SubscriptionCollection and Subscription implement WebDAV events

Downloads

ReleaseBuild.zip (497,091 Bytes)
Optimized build with a strong name and AuthentiCode signature
SourceAndDemoApplication.zip (496,678 Bytes)
The source files and the demo application
Documentation.zip (2,087,722 Bytes)
The documentation as CHM file

Technorati:

Posted by Henning Krause on Monday, April 9, 2007 12:00 AM, last modified on Monday, April 9, 2007 12:00 PM
Permalink | Post RSSRSS comment feed

Comments (5) -

On 9/17/2008 4:47:59 AM Vincent United Kingdom wrote:

Vincent

Hi, thanks for your library, it&amp;#39;s awesome! I have one question regarding use this library with asp.net application. The .net application use windows authentication, it seems both &amp;amp;quot;NTLM and Kerberos&amp;amp;quot; are not working under asp.net app, can you tell me how to solve this problem? Thanks

On 10/21/2008 11:24:49 AM vishal tanwar India wrote:

vishal tanwar

I am unable to unzip SourceAndDemoApplication.zip, Seems zip file is corrupted. I Downloaded it many times but failed to unzip all files. Giving lot of error.

On 11/7/2008 8:22:28 AM vishal tanwar India wrote:

vishal tanwar

is InfiniTec.Exchange 0.99.4 Open Source ?

On 3/15/2009 6:15:22 PM Andy United Kingdom wrote:

Andy

I would really like to know the license terms of the library too - I cant find anything here, or in the source?  As it is released without any license attached, is it safe to assume it can be used freely?

On 3/26/2012 7:06:04 AM Fırat Esmer wrote:

Fırat Esmer

Thanks for helping me!