@@ -62,7 +62,7 @@ ClassMethod DeleteProductionDefinitionShards(productionClass As %String, deleteM
62
62
while rs .%Next (.sc ) {
63
63
quit :$$$ISERR(sc )
64
64
set ptdFilename = rs .Data (" Name" )
65
- set sc = ##class ( %Studio.SourceControl.Production ) .ParseExternalName (ptdFilename , .ptdInternalName )
65
+ set sc = . .ParseExternalName (ptdFilename , .ptdInternalName )
66
66
quit :$$$ISERR(sc )
67
67
// TODO: Consider reverting delete if any ptd is not editable by current user
68
68
set sc = $method (%SourceControl , deleteMethod , ptdInternalName )
@@ -371,26 +371,32 @@ ClassMethod IsProductionClass(className As %String, nameMethod As %String) As %B
371
371
ClassMethod ParseExternalName (externalName , Output internalName = " " , Output productionName = " " ) As %Status
372
372
{
373
373
set sc = $$$OK
374
- set extNameNormalized = $replace (externalName , " \" , " /" )
375
- set file = $piece (extNameNormalized , " /" , *)
376
- if $extract (file ,1 ,9 ) = " ProdStgs-" {
377
- set productionName = $replace ($extract (file ,10 ,*-4 ), " _" , " ." )
378
- set internalName = ..CreateInternalName (productionName ,,,1 )
379
- } else {
380
- if ##class (%File ).Exists (externalName ) {
381
- // Special case for Config Item Settings PTD, requires checking PTD CDATA for Item and Class name
382
- set deployDoc = ##class (EnsLib.EDI.XML.Document ).%New (externalName )
383
- set exportNotesPTDText = $ZCVT (deployDoc .GetValueAt (" /Export/Document[1]/1" )," I" ," XML" )
384
- set exportNotesPTD = ##class (EnsLib.EDI.XML.Document ).%New (exportNotesPTDText )
385
- set productionName = exportNotesPTD .GetValueAt (" /Deployment/Creation/SourceProduction" )
386
- set settingsPTDText = $zconvert (deployDoc .GetValueAt (" /Export/Document[2]/1" )," I" ," XML" )
387
- set settingsPTD = ##class (EnsLib.EDI.XML.Document ).%New (settingsPTDText )
388
- set itemClass = settingsPTD .GetValueAt (" /Item/@ClassName" )
389
- set itemName = settingsPTD .GetValueAt (" /Item/@Name" )
390
- set internalName = ..CreateInternalName (productionName , itemName , itemClass , 0 )
391
- } else {
392
- set sc = $$$ERROR($$$GeneralError, " Item settings PTD file " _ externalName _ " does not exist. Cannot parse external name." )
393
- }
374
+ try {
375
+ set extNameNormalized = $replace (externalName , " \" , " /" )
376
+ set file = $piece (extNameNormalized , " /" , *)
377
+ if $extract (file ,1 ,9 ) = " ProdStgs-" {
378
+ set productionName = $replace ($extract (file ,10 ,*-4 ), " _" , " ." )
379
+ set internalName = ..CreateInternalName (productionName ,,,1 )
380
+ } else {
381
+ if ##class (%File ).Exists (externalName ) {
382
+ // Special case for Config Item Settings PTD, requires checking PTD CDATA for Item and Class name
383
+ set deployDoc = ##class (EnsLib.EDI.XML.Document ).%New (externalName )
384
+ set exportNotesPTDText = $ZCVT (deployDoc .GetValueAt (" /Export/Document[1]/1" )," I" ," XML" )
385
+ set exportNotesPTD = ##class (EnsLib.EDI.XML.Document ).%New (exportNotesPTDText )
386
+ set productionName = exportNotesPTD .GetValueAt (" /Deployment/Creation/SourceProduction" )
387
+ set settingsPTDText = $zconvert (deployDoc .GetValueAt (" /Export/Document[2]/1" )," I" ," XML" )
388
+ // unquote embedded CDATA close markers - see Ens.Util.ProjectTextDocument StreamToGbl method
389
+ set settingsPTDText = $replace (settingsPTDText ," ]*]>" , " ]]>" )
390
+ set settingsPTD = ##class (EnsLib.EDI.XML.Document ).%New (settingsPTDText )
391
+ set itemClass = settingsPTD .GetValueAt (" /Item/@ClassName" )
392
+ set itemName = settingsPTD .GetValueAt (" /Item/@Name" )
393
+ set internalName = ..CreateInternalName (productionName , itemName , itemClass , 0 )
394
+ } else {
395
+ set sc = $$$ERROR($$$GeneralError, " Item settings PTD file " _ externalName _ " does not exist. Cannot parse external name." )
396
+ }
397
+ }
398
+ } catch err {
399
+ set sc = err .AsStatus ()
394
400
}
395
401
return sc
396
402
}
0 commit comments