/// <summary> /// Creates the service caller. /// </summary> /// <param name="callDefinition">The call definition.</param> /// <returns>IServiceCaller.</returns> /// <exception cref="System.ArgumentNullException">callDefinition</exception> /// <exception cref="System.ArgumentException">Invalid service definition.;callDefinition</exception> public IServiceCaller CreateServiceCaller(IServiceCallDefinition callDefinition) { if (callDefinition == null) throw new ArgumentNullException("callDefinition"); var webMethodCallDefinition = callDefinition as WebMethodCallDefinition; if (webMethodCallDefinition != null) { var result = WebMethodServiceCallerFactory.CreateExport().Value; result.Initialize(webMethodCallDefinition); return result; } var urlCallDefinition = callDefinition as UrlCallDefinition; if (urlCallDefinition != null) { var result = UrlServiceCallerFactory.CreateExport().Value; result.Initialize(urlCallDefinition); return result; } throw new ArgumentException("Invalid service definition.", "callDefinition"); }
/// <summary> /// Initializes the view-model. /// </summary> /// <param name="commandDefinition"> /// The command definition. /// </param> /// <param name="detailsViewModel"> /// The details view-model. /// </param> /// <exception cref="ArgumentNullException"> /// The <paramref name="commandDefinition"/> parameter is null. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="detailsViewModel"/> parameter is null. /// </exception> public void Initialize(ExecuteServiceCommandDefinition commandDefinition, IDetailsViewModel detailsViewModel) { if (commandDefinition == null) throw new ArgumentNullException("commandDefinition"); if (detailsViewModel == null) throw new ArgumentNullException("detailsViewModel"); _commandDefinition = commandDefinition; _detailsViewModel = detailsViewModel; _canExecuteRule = new HasAccessToExecuteCommandValidator(commandDefinition.SecurityConfigurations.ToArray()); var serviceManager = DynamicTypeManager.GetIntegrationServiceCallsManager(detailsViewModel.ProcessName); if (serviceManager.ContainsService(_commandDefinition.ServiceGuid)) _callDefinition = serviceManager.GetCallDefinition(_commandDefinition.ServiceGuid); CreateDetailsPropertyChangedListener(); }
/// <summary> /// Creates the lazy service caller. /// </summary> /// <param name="callDefinition"> /// The call definition. /// </param> /// <returns>The service caller.</returns> private Lazy<IServiceCaller> CreateLazyServiceCaller(IServiceCallDefinition callDefinition) { return new Lazy<IServiceCaller>( () => { try { return ServiceCallerFactory.CreateServiceCaller(callDefinition); } catch (Exception ex) { Logger.Log(LogSeverity.Error, "Integration service initialization", ex); } return null; }); }
/// <summary> /// Determines whether this instance can execute the specified call definition. /// </summary> /// <param name="callDefinition">The call definition.</param> /// <param name="item">The source item.</param> /// <param name="oldItem">The old item.</param> /// <returns><c>true</c> if this instance can execute the specified call definition; otherwise, <c>false</c>.</returns> private static bool CanExecute(IServiceCallDefinition callDefinition, IEditableRoot item, IEditableRoot oldItem) { return !ServiceCallContext.IsExecutingService(callDefinition.Guid) && callDefinition.Rules.Any(r => r.CanExecute(item, oldItem)); }
/// <summary> /// Gets the service caller. /// </summary> /// <param name="callDefinition"> /// The call definition. /// </param> /// <returns> /// The <see cref="IServiceCaller"/>. /// </returns> /// <exception cref="System.InvalidOperationException"> /// The service could not be initialized. /// </exception> private IServiceCaller GetServiceCaller(IServiceCallDefinition callDefinition) { var serviceCaller = _serviceCallers[callDefinition].Value; if (serviceCaller == null) throw new InvalidOperationException( string.Format(CultureInfo.InvariantCulture, "Service \"{0}\" could not be initialized.", callDefinition.Name)); return serviceCaller; }