Important: The information in this document is obsolete and should not be used for new development.
Summary of the Edition Manager
Pascal Summary
Constants
CONST {resource types} rSectionType = 'sect'; {resource type for a } { section} {section types} stSubscriber = $01; {subscriber section type} stPublisher = $0A; {publisher section type} {update modes} sumAutomatic = 0; {subscriber receives new } { editions automatically} sumManual = 1; {subscriber receives new } { editions manually} pumOnSave = 0; {publisher sends new } { editions on save} pumManual = 1; {publisher does not send } { new editions until user } { request} {edition container subpart number} kPartsNotUsed = 0; {edition is the whole file} kPartNumberUnknown = -1; {not used in version 7.0} {preview size} kPreviewWidth = 120; {preview width} kPreviewHeight = 120; {preview height} {special formats} kPublisherDocAliasFormat = 'alis'; {alias record from the } { edition to publisher} kPreviewFormat = 'prvw'; {'PICT' thumbnail sketch} kFormatListFormat = 'fmts'; {list of all available } { formats and their sizes} {bits for formatMask} kPICTformatMask = 1; {graphics format} kTEXTformatMask = 2; {text format} ksndFormatMask = 4; {sound format} {Finder types for edition files} kPICTEditionFileType = 'edtp'; {contains 'PICT', } kTEXTEditionFileType = 'edtt'; { 'TEXT', and } ksndEditionFileType = 'edts'; { 'snd ' file types} kUnknownEditionFileType = 'edtu'; {unknown file type} {miscellaneous} kFormatLengthUnknown = -1; {length of format unknown} {message IDs for Apple events sent by the Edition Manager} sectionEventMsgClass = 'sect'; {Apple events sent by the } { Edition Manager} sectionReadMsgID = 'read'; {Section Read events} sectionWriteMsgID = 'writ'; {Section Write events} sectionScrollMsgID = 'scrl'; {Section Scroll events} sectionCancelMsgID = 'cncl'; {Section Cancel events} {refCon field when displaying stacked dialog boxes} sfMainDialogRefCon = 'stdf'; {new publisher and } { new subscriber} sfNewFolderDialogRefCon = 'nfdr'; {new folder} sfReplaceDialogRefCon = 'rplc'; {replace dialog} sfStatWarnDialogRefCon = 'stat'; {warning dialog} sfErrorDialogRefCon = 'err '; {error dialog} emOptionsDialogRefCon = 'optn'; {options dialog} emCancelSectionDialogRefCon = 'cncl'; {cancel section} emGotoPubErrDialogRefCon = 'gerr'; {locate publisher} {pseudo-item hits for dialogHooks} emHookRedrawPreview = 150; {for NewPublisher or } { NewSubscriber dialogs} emHookCancelSection = 160; {for SectionOptions dialog} emHookGoToPublisher = 161; {for SectionOptions dialog} emHookGetEditionNow = 162; {for SectionOptions dialog} emHookSendEditionNow = 162; {for SectionOptions dialog} emHookManualUpdateMode = 163; {for SectionOptions dialog} emHookAutoUpdateMode = 164; {for SectionOptions dialog}Data Types
TYPE TimeStamp = LongInt; {seconds since 1904} EditionRefNum = Handle; {for use in Edition I/O} UpdateMode = Integer; {sumAutomatic, } { sumManual, } { pumOnSave, pumManual} SectionType = SignedByte; {stSubscriber or } { stPublisher} FormatType = PACKED ARRAY[1..4] OF CHAR; {similar to ResType used } { by the Scrap Manager} SectionHandle = ^SectionPtr; SectionPtr = ^SectionRecord; SectionRecord = RECORD version: SignedByte; {always 1 in version 7.0} kind: SectionType; {publisher or subscriber} mode: UpdateMode; {automatic or manual} mdDate: TimeStamp; {last change to section} sectionID: LongInt; {application-specific, } { unique per document} refCon: LongInt; {application-specific} alias: AliasHandle; {handle to alias record} {The following fields are private and are set up by the } { RegisterSection function.} subPart: LongInt; {private} nextSection: SectionHandle; {private} controlBlock: Handle; {private} refNum: EditionRefNum; {private} END; EditionContainerSpecPtr =^EditionContainerSpec; EditionContainerSpec = RECORD theFile: FSSpec; {file containing edition } { data} theFileScript: ScriptCode; {script code of filename} thePart: LongInt; {which part of file, } { always kPartsNotUsed} thePartName: Str31; {reserved} thePartScript: ScriptCode; {reserved} END; FormatsAvailable = ARRAY[0..0] OF RECORD theType: FormatType; {format type for an } { edition} theLength: LongInt; {length of edition format } { type} END; EditionInfoRecord = RECORD crDate: TimeStamp; {date edition container } { was created} mdDate: TimeStamp; {date of last change} fdCreator: OSType; {file creator} fdType: OSType; {file type} container: EditionContainerSpec; {the edition} END; NewPublisherReply = RECORD canceled: Boolean; {user canceled dialog box} replacing: Boolean; {user chose existing } { filename for an edition} usePart: Boolean; {always FALSE in version 7.0} preview: Handle; {handle to 'prvw', 'PICT',} { 'TEXT', or 'snd ' data} previewFormat: FormatType; {type of preview} container: EditionContainerSpec; {edition chosen} END; NewSubscriberReply = RECORD canceled: Boolean; {user canceled dialog box} formatsMask: SignedByte; {formats required} container: EditionContainerSpec; {edition selected} END; SectionOptionsReply = RECORD canceled: Boolean; {user canceled dialog box} changed: Boolean; {changed the section } { record} sectionH: SectionHandle; {handle to the specified } { section record} action: ResType; {action codes} END; EditionOpenerVerb= (eoOpen, eoClose, eoOpenNew, eoCloseNew, eoCanSubscribe); EditionOpenerParamBlock = RECORD info: EditionInfoRecord; {edition container to } { be subscribed to} sectionH: SectionHandle; {publisher or subscriber } { requesting open} document: FSSpecPtr; {document passed} fdCreator: OSType; {Finder creator type} ioRefNum: LongInt; {reference number} ioProc: FormatIOProcPtr; {routine to read formats} success: Boolean; {reading or writing was } { successful} formatsMask: SignedByte; {formats required to } { subscribe} END; FormatIOVerb = (ioHasFormat, ioReadFormat, ioNewFormat, ioWriteFormat); FormatIOParamBlock = RECORD ioRefNum: LongInt; {reference number} format: FormatType; {edition format type} formatIndex: LongInt; {opener-specific enumeration } { of formats} offset: LongInt; {offset into format} buffPtr: Ptr; {data starts here} buffLen: LongInt; {length of data} END;Edition Manager Routines
Initializing the Edition Manager
FUNCTION InitEditionPack : OSErr;Creating and Registering a Section
FUNCTION NewSection(container: EditionContainerSpec; sectionDocument: FSSpecPtr; kind: SectionType; sectionID: LongInt; initialMode: UpdateMode; VAR sectionH: SectionHandle): OSErr; FUNCTION RegisterSection(sectionDocument: FSSpec; sectionH: SectionHandle; VAR aliasWasUpdated: Boolean) : OSErr; FUNCTION UnRegisterSection(sectionH: SectionHandle): OSErr; FUNCTION IsRegisteredSection (sectionH: SectionHandle): OSErr; FUNCTION AssociateSection(sectionH: SectionHandle; newSectionDocument: FSSpecPtr): OSErr;Creating and Deleting an Edition Container
FUNCTION CreateEditionContainerFile (editionFile: FSSpec; fdCreator: OSType; editionFileNameScript: ScriptCode): OSErr; FUNCTION DeleteEditionContainerFile (editionFile: FSSpec): OSErr;Setting and Getting a Format Mark
FUNCTION SetEditionFormatMark (whichEdition: EditionRefNum; whichFormat: FormatType; setMarkTo: LongInt): OSErr; FUNCTION GetEditionFormatMark (whichEdition: EditionRefNum; whichFormat: FormatType; VAR currentMark: LongInt): OSErr;Reading in Edition Data
FUNCTION OpenEdition(subscriberSectionH: SectionHandle; VAR refNum: EditionRefNum): OSErr; FUNCTION EditionHasFormat(whichEdition: EditionRefNum; whichFormat: FormatType; VAR formatSize: Size): OSErr; FUNCTION ReadEdition(whichEdition: EditionRefNum; whichFormat: FormatType; buffPtr: UNIV Ptr; VAR buffLen: Size): OSErr;Writing out Edition Data
FUNCTION OpenNewEdition(publisherSectionH: SectionHandle; fdCreator: OSType; publisherSectionDocument: FSSpecPtr; VAR refNum: EditionRefNum): OSErr; FUNCTION WriteEdition(whichEdition: EditionRefNum; whichFormat: FormatType; buffPtr: UNIV Ptr; buffLen: Size): OSErr;Closing an Edition After Reading or Writing
FUNCTION CloseEdition(whichEdition: EditionRefNum; successful: Boolean): OSErr;Displaying Dialog Boxes
FUNCTION GetLastEditionContainerUsed (VAR container: EditionContainerSpec): OSErr; FUNCTION NewSubscriberDialog (VAR reply: NewSubscriberReply): OSErr; FUNCTION NewPublisherDialog(VAR reply: NewPublisherReply): OSErr; FUNCTION SectionOptionsDialog (VAR reply: SectionOptionsReply): OSErr; FUNCTION NewSubscriberExpDialog (VAR reply: NewSubscriberReply; where: Point; expansionDITLresID: Integer; dlgHook: ExpDlgHookProcPtr; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr; FUNCTION NewPublisherExpDialog (VAR reply: NewPublisherReply; where: Point; expansionDITLresID: Integer; dlgHook: ExpDlgHookProcPtr; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr; FUNCTION SectionOptionsExpDialog (VAR reply: SectionOptionsReply; where: Point; expansionDITLresID: Integer; dlgHook: ExpDlgHookProcPtr; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr;Locating a Publisher and Edition From a Subscriber
FUNCTION GetEditionInfo(sectionH: SectionHandle; VAR editionInfo: EditionInfoRecord): OSErr; FUNCTION GoToPublisherSection (container: EditionContainerSpec): OSErr;Edition Container Formats
FUNCTION GetStandardFormats(container: EditionContainerSpec; VAR previewFormat: FormatType; preview, publisherAlias, formats: Handle): OSErr;Reading and Writing Non-Edition files
FUNCTION GetEditionOpenerProc (VAR opener: EditionOpenerProcPtr): OSErr; FUNCTION SetEditionOpenerProc (opener: EditionOpenerProcPtr): OSErr; FUNCTION CallEditionOpenerProc (selector: EditionOpenerVerb; VAR PB: EditionOpenerParamBlock; routine: EditionOpenerProcPtr): OSErr; FUNCTION CallFormatIOProc(selector: FormatIOVerb; VAR PB: FormatIOParamBlock; routine: FormatIOProcPtr): OSErr;Application-Defined Routines
FUNCTION MyExpDlgHook(itemOffset: Integer; itemHit: Integer; theDialog: DialogPtr; yourDataPtr: Ptr): Integer; FUNCTION MyExpModalFilter(theDialog: DialogPtr; VAR theEvent: EventRecord; itemOffset: Integer; VAR itemHit: Integer; yourDataPtr: Ptr): Boolean; FUNCTION MyOpener(selector: EditionOpenerVerb; VAR PB: EditionOpenerParamBlock): OSErr; FUNCTION MyIO(selector: FormatIOVerb; VAR PB: FormatIOParamBlock): OSErr;C Summary
Constants
CONST enum { /*resource types*/ #define rSectionType 'sect' /*resource type for a */ /* section*/ /*section types*/ stSubscriber = 0x01, /*subscriber section type*/ stPublisher = 0x0A, /*publisher section type*/ /*update modes*/ sumAutomatic = 0, /*subscriber receives new */ /* editions automatically*/ sumManual = 1, /*subscriber receives new */ /* editions manually*/ pumOnSave = 0, /*publisher sends new */ /* editions on save*/ pumManual = 1, /*publisher does not send */ /* new editions until user */ /* request*/ /*edition container subpart number*/ kPartsNotUsed = 0, /*edition is the whole file*/ kPartNumberUnknown = -1, /*not used in version 7.0*/ /*preview size*/ kPreviewWidth = 120, /*preview width*/ kPreviewHeight = 120, /*preview height*/ /*special formats*/ #define kPublisherDocAliasFormat 'alis' /*alias record from the */ /* edition to publisher*/ #define kPreviewFormat 'prvw' /*'PICT' thumbnail sketch*/ #define kFormatListFormat 'fmts' /*list of all available */ /* formats and their sizes*/ /*bits for formatMask*/ kPICTformatMask = 1, /*graphics format*/ kTEXTformatMask = 2, /*text format*/ ksndFormatMask = 4, /*sound format*/ /*Finder types for edition files*/ #define kPICTEditionFileType 'edtp' /*contains 'PICT', */ #define kTEXTEditionFileType 'edtt' /* 'TEXT', and */ #define ksndEditionFileType 'edts' /* 'snd ' file types*/ #define kUnknownEditionFileType 'edtu' /*unknown file type*/ /*pseudo-item hits for dialogHooks*/ emHookRedrawPreview = 150, /*for NewPublisher or */ /* NewSubscriber dialogs*/ emHookCancelSection = 160, /*for SectionOptions dialog*/ emHookGoToPublisher = 161, /*for SectionOptions dialog*/ emHookGetEditionNow = 162, /*for SectionOptions dialog*/ emHookSendEditionNow = 162, /*for SectionOptions dialog*/ emHookManualUpdateMode = 163, /*for SectionOptions dialog*/ emHookAutoUpdateMode = 164 /*for SectionOptions dialog*/ }; /*edition opener verbs*/ enum {eoOpen, eoClose, eoOpenNew, eoCloseNew, eoCanSubscribe}; enum { /*refCon field when displaying stacked dialog boxes*/ #define emOptionsDialogRefCon 'optn' /*options dialog*/ #define emCancelSectionDialogRefCon 'cncl' /*cancel section*/ #define emGotoPubErrDialogRefCon 'gerr' /*locate publisher*/ kFormatLengthUnknown = -1 /*length of format unknown*/ }; /*refCon field when displaying stacked dialog boxes*/ #define sfMainDialogRefCon 'stdf' {new publisher and } { new subscriber} #define sfNewFolderDialogRefCon'nfdr' {new folder} #define sfReplaceDialogRefCon 'rplc' {replace dialog} #define sfStatWarnDialogRefCon 'stat' {warning dialog} #define sfErrorDialogRefCon 'err ' {error dialog} /*message IDs for Apple events sent by the Edition Manager*/ #define sectionEventMsgClass 'sect' /*Apple events sent by the */ /* Edition Manager*/ #define sectionReadMsgID 'read' /*Section Read events*/ #define sectionWriteMsgID 'writ' /*Section Write events*/ #define sectionScrollMsgID 'scrl' /*Section Scroll events*/ #define sectionCancelMsgID 'cncl' /*Section Cancel events*/Data Types
typedef unsigned long TimeStamp; /*seconds since 1904*/ typedef Handle EditionRefNum;` /*used in Edition I/O*/ typedef short UpdateMode; /*update mode: sumAutomatic, */ /* sumManual, */ /* pumOnSave, pumManual*/ typedef char SectionType; /*one byte, stSubscriber */ /* or stPublisher*/ typedef unsigned long FormatType; /*similar to ResType*/ struct SectionRecord { SignedByte version; /*always 1x01 in version 7.0*/ SectionType kind; /*stPublisher or */ /* stSubscriber*/ UpdateMode mode; /*automatic or manual*/ TimeStamp mdDate; /*last change to section*/ long sectionID; /*application-specific, */ /* unique per document*/ long refCon; /*application-specific*/ AliasHandle alias; /*handle to alias record*/ long subPart; /*private*/ struct SectionRecord **nextSection; /*private*/ Handle controlBlock; /*private*/ EditionRefNum refNum; /*private*/ }; typedef struct SectionRecord SectionRecord; typedef SectionRecord *SectionPtr, **SectionHandle; struct EditionContainerSpec { FSSpec theFile; /*file containing */ /* edition data*/ ScriptCode theFileScript; /*script code of filename*/ long thePart; /*which part of file, */ /* always kPartsNotUsed*/ Str31 thePartName; /*reserved*/ ScriptCode thePartScript; /*reserved*/ }; typedef struct EditionContainerSpec EditionContainerSpec; typedef EditionContainerSpec *EditionContainerSpecPtr; struct EditionInfoRecord { TimeStamp crDate; /*date edition container */ /* was created*/ TimeStamp mdDate; /*date of last change*/ OSType fdCreator; /*file creator*/ OSType fdType; /*file type*/ EditionContainerSpec container; /*the edition*/ }; typedef struct EditionInfoRecord EditionInfoRecord; struct NewPublisherReply { Boolean canceled; /*user canceled dialog box*/ Boolean replacing; /*user chose existing */ /* filename for an edition*/ Boolean usePart; /*always FALSE in version */ /* 7.0*/ Handle preview; /*handle to 'prvw', 'PICT',*/ /* 'TEXT', or 'snd ' data*/ FormatType previewFormat; /*type of preview*/ EditionContainerSpec container; /*edition chosen*/ }; typedef struct NewPublisherReply NewPublisherReply; struct NewSubscriberReply { Boolean canceled; /*user canceled dialog box*/ unsigned char formatsMask; /*formats required*/ EditionContainerSpec container; /*edition selected*/ }; typedef struct NewSubscriberReply NewSubscriberReply; struct SectionOptionsReply { Boolean canceled; /*user canceled dialog box*/ Boolean changed; /*changed the section */ /* record*/ SectionHandle sectionH; /*handle to the specified */ /* section record*/ ResType action; /*action codes*/ }; typedef struct SectionOptionsReply SectionOptionsReply; typedef pascal Boolean (*ExpModalFilterProcPtr) (DialogPtr theDialog, EventRecord *theEvent, short itemOffset, short *itemHit, Ptr yourDataPtr); typedef pascal short (*ExpDlgHookProcPtr) (short itemOffset, short itemHit, DialogPtr theDialog, Ptr yourDataPtr); typedef unsigned char EditionOpenerVerb; struct EditionOpenerParamBlock { EditionInfoRecord info; /*edition container to */ /* be subscribed to*/ SectionHandle sectionH; /*publisher or subscriber */ /* requesting open*/ FSSpecPtr document; /*document passed*/ OSType fdCreator; /*Finder creator type*/ long ioRefNum; /*reference number*/ FormatIOProcPtr ioProc; /*routine to read formats*/ Boolean success; /*reading or writing was */ /* successful*/ unsigned char formatsMask; /*formats required to */ /* subscribe*/ }; typedef struct EditionOpenerParamBlock EditionOpenerParamBlock; typedef pascal short (*EditionOpenerProcPtr) (EditionOpenerVerb selector, FormatIOParamBlock *PB); enum {ioHasFormat, ioReadFormat, ioNewFormat, ioWriteFormat}; typedef unsigned char FormatIOVerb; struct FormatIOParamBlock { long ioRefNum; /*reference number*/ FormatType format; /*edition format type*/ long formatIndex; /* opener-specific */ /* enumeration */ /* of formats*/ unsigned long offset; /*offset into format*/ Ptr buffPtr; /*data starts here*/ unsigned long buffLen; /*length of data*/ }; typedef struct FormatIOParamBlock FormatIOParamBlock; typedef pascal short (*FormatIOProcPtr) (FormatIOVerb selector, FormatIOParamBlock *PB);Edition Manager Routines
Initializing the Edition Manager
pascal OSErr InitEditionPack(void)Creating and Registering a Section
pascal OSErr NewSection(const EditionContainerSpec *container, const FSSpec *sectionDocument, SectionType kind, long sectionID, UpdateMode initialMode, SectionHandle *sectionH); pascal OSErr RegisterSection (const FSSpec *sectionDocument, SectionHandle sectionH, Boolean *aliasWasUpdated); pascal OSErr UnRegisterSection (SectionHandle sectionH); pascal OSErr IsRegisteredSection (SectionHandle sectionH); pascal OSErr AssociateSection (SectionHandle sectionH, const FSSpec *newSectionDocument);Creating and Deleting an Edition Container
pascal OSErr CreateEditionContainerFile (const FSSpec *editionFile, OSType fdCreator, ScriptCode editionFileNameScript); pascal OSErr DeleteEditionContainerFile (const FSSpec *editionFile);Setting and Getting a Format Mark
pascal OSErr SetEditionFormatMark (EditionRefNum whichEdition, FormatType whichFormat, unsigned long setMarkTo); pascal OSErr GetEditionFormatMark (EditionRefNum whichEdition, FormatType whichFormat, unsigned long *currentMark);Reading in Edition Data
pascal OSErr OpenEdition(SectionHandle subscriberSectionH, EditionRefNum *refNum); pascal OSErr EditionHasFormat (EditionRefNum whichEdition, FormatType whichFormat, Size *formatSize); pascal OSErr ReadEdition(EditionRefNum whichEdition, FormatType whichFormat, void *buffPtr, Size *buffLen);Writing out Edition Data
pascal OSErr OpenNewEdition(SectionHandle publisherSectionH, OSType fdCreator, const FSSpec *publisherSectionDocument, EditionRefNum *refNum); pascal OSErr WriteEdition(EditionRefNum whichEdition, FormatType whichFormat, const void *buffPtr, Size *buffLen);Closing an Edition After Reading or Writing
pascal OSErr CloseEdition(EditionRefNum whichEdition, Boolean successful);Displaying Dialog Boxes
pascal OSErr GetLastEditionContainerUsed (EditionContainerSpec *container); pascal OSErr NewSubscriberDialog (NewSubscriberReply *reply); pascal OSErr NewPublisherDialog (NewPublisherReply *reply); pascal OSErr SectionOptionsDialog (SectionOptionsReply *reply); pascal OSErr NewSubscriberExpDialog (NewSubscriberReply *reply, Point where, short expansionDITLresID, ExpDlgHookProcPtr dlgHook, ExpModalFilterProcPtr filterProc, void *yourDataPtr); pascal OSErr NewPublisherExpDialog (NewPublisherReply *reply, Point where, short expansionDITLresID, ExpDlgHookProcPtr dlgHook, ExpModalFilterProcPtr filterProc, void *yourDataPtr); pascal OSErr SectionOptionsExpDialog (SectionOptionsReply *reply, Point where, short expansionDITLresID, ExpDlgHookProcPtr dlgHook, ExpModalFilterProcPtr filterProc, void *yourDataPtr);Locating a Publisher and Edition From a Subscriber
pascal OSErr GetEditionInfo(const SectionHandle sectionH, EditionInfoRecord *editionInfo); pascal OSErr GoToPublisherSection (const EditionContainerSpec *container);Edition Container Formats
pascal OSErr GetStandardFormats (const EditionContainerSpec *container, FormatType *previewFormat, Handle preview, Handle publisherAlias, Handle formats);Reading and Writing Non-Edition files
pascal OSErr GetEditionOpenerProc (EditionOpenerProcPtr *opener); pascal OSErr SetEditionOpenerProc (EditionOpenerProcPtr opener); pascal OSErr CallEditionOpenerProc (EditionOpenerVerb selector, EditionOpenerParamBlock *PB, EditionOpenerProcPtr routine); pascal OSErr CallFormatIOProc (FormatIOVerb selector, FormatIOParamBlock *PB, FormatIOProcPtr routine);Application-Defined Routines
pascal OSErr MyExpDlgHook(short itemOffset, short itemHit, DialogPtr theDialog, Ptr yourDataPtr); pascal OSErr MyExpModalFilter (DialogPtr theDialog, EventRecord *theEvent, short itemOffset, short *itemHit, Ptr yourDataPtr); pascal OSErr MyOpener(EditionOpenerVerb selector, EditionOpenerParamBlock *PB); pascal OSErr MyIO(FormatIOVerb selector, FormatIOParamBlock *PB);Result Codes
noErr 0 No error abortErr -27 Publisher has written a new edition dskFulErr -34 Disk is full nsvErr -35 No such volume ioErr -36 I/O error bdNamErr -37 Bad filename fnOpnErr -38 File not open eofErr -39 No additional data in the format fnfErr -43 Edition container not found flLckedErr -45 Publisher writing to an edition fBsyErr -47 Section doing I/O paramErr -50 Invalid parameter rfNumErr -51 Bad edition reference number permErr -54 Not a subscriber wrPermErr -61 Not a publisher noTypeErr -102 Format not available memFullErr -108 Memory full dirNFErr -120 Directory not found userCanceledErr -128 User clicked Cancel in dialog box editionMgrInitErr -450 Manager not initialized or could not load package badSectionErr -451 Not a valid section type notRegisteredSectionErr -452 Not registered badSubPartErr -454 Bad edition container spec or invalid edition container multiplePublisherWrn -460 Already is a publisher containerNotFoundWrn -461 Alias was not resolved notThePublisherWrn -463 Not the publisher