Kod och objektmodelleringsförändringar mellan Dynamix 4 och Dynamix 5

Nedan beskrivs förändringar som kan påverka webbplatsimplementationer. Ofta räcker det att kompilera om projektet, men i vissa fall behöver koden förändras. Ett förslag på åtgärd listas med varje punkt nedan.

Objekt och objektlistor

Samtliga fält som för egenskapslagring har bytt namn från p_* till *Property, exempelvis skulle en egenskap som tidigare hette p_Name nu heta NameProperty

Åtgärd: Använd det nya egenskapsnamnet. Om referensen till egenskapen användes för att hitta en Comparer för sortering - överväg att använda OrderBy med get/set-metoden för egenskapen istället.

ObjectList.Add, ObjectList.Remove m fl – Ändrad parametertyp

Info: Varianterna med otypade parametrar kan inte längre användas.

Åtgärd: Använd typade parametrar. I vissa fall kan koden tidigare ha försökt lägga till andra typer som råkade vara Dynamix-objekt, t ex verktyg som gör list.Add( selectedItem ). Använd i dessa fall istället SelectedObject.

ObjectList.Add – ändrat returvärde/typ.

Info: Metoden returnerar inte längre positionen där objektet lagts till utan void.

Åtgärd Använd t ex IndexOf för att leta upp objektets position efter att det har lagts till.

ObjectList.BinarySearch( object value, IComparer comparer ) – metoden är borttagen

Åtgärd: Använd en annan sökmetod.

ObjectReference.GetReferences( IObject obj ) - returnvärdestyp ändrad

Info: Returvärdets typ har ändrats från ObjectReference[] till IEnumerable<ObjectReference>

Åtgärd: Ändra typ på variabler som lagrar resultatet.

ObjectReference.GetReferences( ICollection objects ) – returnvärdestyp och parametertyp ändrade

Info: Returnvärdets typ är nu IEnumerable<ObjectReference>, parameterns typ är nu ICollection<IObject>.

Åtgärd: Ändra typ på variabler som lagrar resultatet och på inparametrar.

Object.EnsureProperty, Object.LoadProperty – metoderna är borttagna

Åtgärd: Modellera om koden

Object.DB_ChangeUID – metoden är borttagen

Åtgärd: Modellera om koden

Object.CheckedOutBy, Object.CheckedOutDateTime, Object.IsCheckedOutByCurrentUser, Object.IsCheckedOut, Object.Checkout(), Object.Checkin() – egenskaper och metoder är flyttade

Åtgärd: Metoderna och egenskaperna ovan finns nu endast på VersionManager. Kontrollera att koden körs på objekt av rätt typ och använd eventuellt casts till VersionManager

Object.SetReferencedCascadedObjects och Object.MarkCascadedObjectsForDeletion – metoderna är borttagna

Åtgärd: Använd Object.UpdateCascadedReferences.

ObjectSaveContext.MarkNonReferencedObjectsForDeletion och ObjectSaveContext. MarkNonReferencedObjectForDeletion – metoderna är borttagna

Åtgärd: Använd Object.UpdateCascadedReferences respektive Object.UpdateCascadedReference.

Dynamix.Collections.ObjectTransformationCollection – ändrad implementation

Info: Klassen implementerar nu IEnumerable<Dynamix.Collections.ObjectTransformation> istället för att ärva från System.Collections.CollectionBase.

Åtgärd: Normalt ingen.

TreeObject.GetAllowedChildTypes() ändrat basreturvärde

Info: Basimplementationen returnerar nu en tom typlista istället för en lista som innehåller TreeObject och alla dess undertyper.

Åtgärd: Normalt krävs ingen åtgärd. Om man har lagt alla regler om tillåtna undertyper direkt i användargränssnittet behöver man implementera GetAllowedChildTypes för sina  subklasser och där returnera åtminstone de typer som användargränssnittet tillåter, annars kommer t ex trädbaserade verktyg att misslyckas med att lägga till nya underobjekt.

För nya objekt och för vidareutveckling av gamla rekommenderas att använda GetAllowedChildTypeInformation och att modellera verktyg med t ex TreeAndGridManageObjectsDialogCustomizers.

ObjectID används inte längre för att peka på objekttyper.Istället använd ObjectTypeID

Åtgärd: Använd denna typ istället.

Object. GetApplicablePrivileges() – ändrad returvärdestyp

Info: Metoden returnerar nu IEnumerable<Privilege> istället för ObjectList

Åtgärd: Ändra typ på variabler som lagrar returvärdet.

Object.UserHasImplicitPrivilege – egenskapen är borttagen

Åtgärd: Modellera om koden

Filer och mappar

DiskObject. GetReferencesIncludingChildren() – returntyp ändrad

Info: Returtypens värde har ändrats från ObjectReference[] till IEnumerable<ObjectReference>

Åtgärd: Ändra typ på eventuella överlagringar och variable som lagrar resultat.

DirectoryRoot, Directory och DiskObject - Konstruktor ändrad

Info: Parametern treeRoot har ändrat typ från TreeRoot till DiskObjectTreeRoot

Åtgärd: Normalt ingen

DirectoryRoot – klassen är nu abstrakt

Info: Klassen har delats upp i subklasserna PublicDirectoryRoot, PrivateDirectoryRoot och FileServerDirectoryRoot

Åtgärd: Använd de nya klasserna

DirectoryRoot.IsPublic – egenskapen är borttagen

Åtgärd: Använd subklasserna enligt ovan

DirectoryRoot.IsFileServer – egenskapen är borttagen

Åtgärd: Använd subklasserna enligt ovan

Användare, grupper och autentisering

User.Clipboard - egenskapen är borttagen

Åtgärd: Modellera om koden

Dynamix.Security.Authentication.Login( User user, bool createPersistentCookie, string userData ) – metoden är borttagen

Info: userData är inte längre skrivbar och kan därför inte sättas vid login

Åtgärd: Lagra eventuell egen infomation i t ex cookies eller session.

PasswordProperty – ändrad modellering

Info: Egenskapen innehåller nu en instans av Dynamix.Password istället för en sträng

Åtgärd: Ändra typ på eventuella variabler och anrop

Subject.DisplayName – egenskapen är borttagen/flyttad

Info: Egenskapen är nu uppdelad i Group.DisplayName och User.DisplayName. Den senare är inte skrivbar.

Åtgärd: Normalt ingen. Koden kan behöva modelleras om ifall User.DisplayName har satts av kod.

Mallar, sidor och innehåll

Template.Url är obsolete, Template.GetUrl() måste implementeras

Åtgärd: Implementera GetUrl() – normalt returneras det som Url brukade returnerar, i ett  Dynamix.Url-objekt

Template.Name och Template.Description används inte längre

Åtgärd: Implementera IName_Name respektiver IDescription_Description istället. Implentera också attributet Ui5.NameAttribute via developer tools eller explicit för att ge mallen ett namn i installationsdialoger.

NavigationItem.DB_Rename – metoden är borttagen

Åtgärd: Använd GetEditableCopy() – sätt Name  - DB_Save()

Javascript:dxOnLoad – metoden är borttagen

Åtgärd:  Ta bort eventuella anrop till dxOnLoad i mallar

Dynamix. FlowLayoutTemplateComponent – klassen är ersatt

Info: Flödesinnehåll modelleras nu av Dynamix.Content5. FlowLayoutTemplateComponent

Åtgärd: Använd den nya typen

ContentTemplate.AddFlowLayoutContentComponent(…) – metoden är ersatt

Info: Alla komponenter läggs nu till via [Template]Components.Add( … )

Åtgärd: Använd Components.Add( new Dynamix.Content5.FlowLayoutTemplateComponent(…) )

TemplateComponent – konstruktor ändrad

Info: Parametern page finns inte längre i någon konstruktor

Åtgärd: Använd konstruktorn med endast ”name” istället.

ContentTypeGroup.DB_AddContentType(Dynamix.ContentType) – metoden är ersatt

Info: Dynamix.ContentType är ersatt av Dynamix.Content5.ContentType.

Åtgärd: Använd DB_AddContentType(Dynamix.Content5.ContentType) istället.

Länkar

Dynamix.Links.Target.ModifyHref( string href ) – metoden borttagen

Åtgärd: Använd Dynamix.Links.Target.GetHref( string href, Link link )

Dynamix.Links.Target.TargetAttr – egenskapen är borttagen

Åtgärd: Använd Dynamix.Links.Target.GetTargetAttr( Link )

Användargränssnitt

Dynamix.Content.Form.EditableOptionsGrid – klassen är borttagen

Åtgärd: Använd en annan redigeringskontroll

Dynamix.UI.Controls.NavigationNameChooser  - klassen är borttagen

Åtgärd: Använd en annan redigeringskontroll

PageComponent – menyn är borttagen

Info: Det finns inte längre någon meny för sidkomponenters egenskaper. De kan istället lägga till sig i huvudverktygsfältet

Åtgärd: Överlagra CreateToolbarItems().  Anropa CreateStandardToolbarEditButton() eller skapa knappar enligt egen logik.

Util.SITE_FRAME_PATH har bytt namn till Util.SiteFramePath

Åtgärd: Använd det nya namnet

Util.RegisterNavigateJS – metoden har flyttats

Åtgärd: Använd Dynamix.Ui5.Interface.Interface.RegisterLoad

Diverse

Dynamix.Color – klassen är borttagen

Åtgärd: Lagra färger på annat sätt, t ex med ColorProperty

Clipboard och ContentClipboard – klasserna är borttagna

Åtgärd: Modellera om koden

Site.WaiSettings har flyttat till GlobalSettings.WaiSettings

Åtgärd: Modellera om koden

ExceptionLog – klassen har flyttats

Åtgärd: Använd ExceptionLogItem istället