Breaking Changes for v2008 vol.2 (frameworks)

ctodx
30 June 2008

These are the breaking changes for the the frameworks (eXpress Persistent Objects, XPO, and eXpressApp Framework, XAF) in v2008 vol.2. Breaking changes for the UI controls will be discussed in another post.

XPO

  • IXPSimpleObject is now derived from IXPClassInfoAndSessionProvider. This may affect those who implement their own base object, however, typically people don't implement that interface.
  • Additional checks on the correctness of actions has been added. This should proactively reduce the number of 'objects with duplicate keys', 'not a clonable hierarchy' and suchlike exceptions. Against that, this could break some cases that seem to work ("seem" being the operative word). Also, XPBaseObject.IsLoading behavior has changed; it is now it just an alias to Session.IsObjectsLoading.
  • XPClassInfo.GetMember does not return nulls anymore, instead throwing PropertyMissingException instead. Use XPClassInfo.FindMember when you prefer getting null instead of an exception.
  • PropertyTypeMismatchException has been deprecated in favor of the more general AssociationInvalidException.
  • XPCollections participating in associations (refcollections) are not dropped anymore on IXPObject.OnLoading.
  • S19881 (was Q103543): using non-associated collections in criteria is not allowed any longer. It was not designed to work before, but would sometimes coincidentally work.

eXpressApp Framework

  • The NewObjectViewController's ProcessNewObject event has been removed. To change a newly created object, use the ObjectCreated event. To change the way the new object is added to a collection, use the CustomAddObjectToCollection event.
  • The ListView.ProcessSelectedItemAction and ListEditor.ProcessSelectedItemAction properties should not be used anymore. You should use the ListViewProcessCurrentObjectController.CustomProcessSelectedItem event instead.
  • We have created a base DevExpress.ExpressApp.Scheduler.v8.2.dll assembly for the WindowsForms and ASP.NET Scheduler modules. In your projects that use DevExpress.ExpressApp.Scheduler.Win.v8.2.dll assembly, just add a reference to the DevExpress.ExpressApp.Scheduler.v8.2.dll assembly.
  • The LocalizedClassInfoTypeConverter class has been moved from the DevExpress.ExpressApp to the DevExpress.Persistent.Base assembly. Add the corresponding reference if needed.
  • The S30087 ("Security: Roles that do not have Read access to object should not see Navigation items") suggestion has been implemented, but there are breaking changes. Before v2008.2, the "Read" access level included reading objects and navigating to them via the navigation control. From v2008.2 onwards, the "Navigate" operation is managed by the Navigate item of the ObjectAccess enumeration. For backwards compatibility, previously created security settings ("v7" or "v8.1") are automatically extended with the "Navigate" access level if the "Read" access level is granted. However, when creating new security permissions, you should manually grant the "Navigate" access level in addition to the "Read" access, except for the case when you specify the "AllAccess" level.
  • The ItemBase class' CreateControl abstract method has been renamed to CreateControlCore
  • The PropertyCollectionSource class' "XPMemberInfo.PropertyInfo" is replaced with the "IMemberInfo.MemberInfo" member.
  • The ExecuteSetFilter method in the FilterController class has been removed. The SetFilter method should be used instead.
  • The ExecuteFullTextSearch method in the FilterController class has been removed. The FullTextSearch method should be used instead.
  • The Manager property in the Frame class has been removed. The Application property should be used instead.
  • The DialogController.IsAppropriateContext property does not work at all now.
  • The IsValid(object target) method of the IRule interface and the RuleBase class was replaced with the Validate(object target) method that returns a RuleValidationResult value instead of a bool.
  • The Properties property of the IRuleBaseProperties type has been added to the IRule interface. It is used to automatically show a rule's properties in the Application Model's Validation node. If you implement the IRule interface, you can return an instance of the built-in RuleBaseProperties class. This class contains all the basic properties such as Id, TargetContexts, TargetObjectType, Criteria and so on. If your rule needs additional properties, implement a descendant of the RuleBaseProperties class and declare your properties. These properties will automatically be added to the Application Model for each instance of your rule.
  • The IRule.Contexts property has been removed. Use the IRuleBaseProperties.TargetContextIDs property of the object that is set for a rule's Properties property instead.
  • The IRule.Description property has been removed. Use the IRuleBaseProperties.CustomMessageTemplate property of the object that is set for a rule's Properties property instead.
  • The IRule.DetailedDescription property has been  removed. Use the IRuleBaseProperties.CustomMessageTemplate property of the object that is set for a rule's Properties property instead.
  • The IRule.Error property has been removed. Instead, use the IRuleBaseProperties.CustomMessageTemplate property of the object that is set for a rule's Properties property, and the result value of the IRule.Validate method instead.
  • The IRule.GetErrorMessage method has been removed. Instead, use the result value of the IRule.Validate method instead.
  • The IRule.ToString method has been removed. It is no longer supported.
  • The SkipNullOrEmptyValues property is now checked in the RuleSet class instead of the RuleBase class. So, if you call the Validate method of a particular rule directly, the SkipNullOrEmptyValues property won't be considered. To check this property, create a temporary RuleSet object, register the required rule within it and call one of the RuleSet's validation methods.

[ Bookmark with: Delicious, Digg, Reddit, StumbleUpon ]

8 comment(s)
Geoff Davis
Geoff Davis

Hmmmm, I'm hoping that there are some nice new features for both XPO and the eXpressFramework in the next release; not just a bunch of refactoring! IMO...

Is XPO and the eXpressFramework going to get any love this time around?

30 June, 2008
Dan Arnold
Dan Arnold

Any idea on the release date for the beta?

1 July, 2008
Geoff Davis
Geoff Davis

Sorry Julian, You meant code breaking changes, doh!

Still like to know what's coming up for XPO and eXpressFramework though ;-)

1 July, 2008
Julian Bucknall (DevExpress)
Julian Bucknall (DevExpress)

Geoff: No problem. You get to have your own paragraph in part 2 of the list though :)

Dan: Because I'm posting these lists, it means it's very close. Probably tomorrow, I'm told.

Cheers, Julian

1 July, 2008
Keith Puckett
Keith Puckett

Holding my Breath - Holding my Breath....

1 July, 2008
Dan Arnold
Dan Arnold

Tomorrow never comes...

Re: Julian M Bucknall said:

Geoff: No problem. You get to have your own paragraph in part 2 of the list though :)

Dan: Because I'm posting these lists, it means it's very close. Probably tomorrow, I'm told.

Cheers, Julian

2 July, 2008
thaibinh soft
thaibinh soft

I hope that Validation rules   integratet with XPO in next version.

Thaibinhsoft

8 July, 2008
zacarias de prado habela
zacarias de prado habela

I'm surprised and desperado.

The problems related to the view detail, in master-detail, they have not been solved:

Editors in line, configuration of the grid (persistence), menus popup...

Everything is still equal. When they are going to solve this problem?

31 July, 2008

Please login or register to post comments.