static void ForEachApplicationData(string contextUri, ProcessApplicationData callback) { var client = GetNewClient(); try { ForEachApplicationData(client, contextUri, callback); } finally { if (client is CoreServiceClient) { ((CoreServiceClient)client).Close(); } ((IDisposable)client).Dispose(); } }
static void ForEachApplicationData(ICoreService client, string itemUri, ProcessApplicationData callback) { foreach (var appData in client.ReadAllApplicationData(itemUri)) { callback(itemUri, appData, client); } var context = client.Read(itemUri, DEFAULT_READ_OPTIONS); if (context is OrganizationalItemData) // TODO: also handle Publication { var filter = new OrganizationalItemItemsFilterData(); //filter.Recursive = true; // faster, but order is undefined var items = client.GetListXml(itemUri, filter).Elements(TRIDION_NAMESPACE + "Item"); foreach (var element in items) { var childUri = element.Attribute("ID").Value; ForEachApplicationData(client, childUri, callback); } } }
static void ForEachApplicationDataThatMatches(string contextUri, string applicationId, ProcessApplicationData callback) { System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(applicationId); ForEachApplicationData(contextUri, (itemUri, appData, client) => { if (regex.IsMatch(appData.ApplicationId)) { callback(itemUri, appData, client); } }); }
static void ForEachApplicationData(string contextUri, ProcessApplicationData callback) { var client = GetNewClient(); try { ForEachApplicationData(client, contextUri, callback); } finally { if (client is CoreServiceClient) ((CoreServiceClient)client).Close(); ((IDisposable)client).Dispose(); } }