private void ProcessProperty() { if (isQueryParameter) { queryParameter.AddProperty(propertyName, tempValue.ToString()); } else if (isHeaderParameter) { headerParameter.AddProperty(propertyName, tempValue.ToString()); } else if (isRequest) { request.AddProperty(propertyName, tempValue.ToString()); } else { serviceDescriptor.AddProperty(propertyName, tempValue.ToString()); } }
/// <summary> /// It handles the service request /// </summary> /// <param name="service">Service instance</param> /// <exception cref="Siminov.Connect.Exception.ServiceException">If any exception occur while handling the service request</exception> public void Handle(IService service) { ServiceDescriptor serviceDescriptor = service.GetServiceDescriptor(); if (serviceDescriptor == null) { serviceDescriptor = resourceManager.RequiredServiceDescriptorBasedOnName(service.GetService()); service.SetServiceDescriptor(serviceDescriptor); } IEnumerator <String> resources = service.GetResources(); while (resources.MoveNext()) { String resourceName = resources.Current; Object resourceValue = service.GetResource(resourceName); if (resourceValue is String) { serviceDescriptor.AddProperty(resourceName, (String)resourceValue); } } Connect.Model.ServiceDescriptor.Request request = serviceDescriptor.GetRequest(service.GetRequest()); var serviceDescriptors = new List <Core.Model.IDescriptor>(); serviceDescriptors.Add(serviceDescriptor); String mode = ResourceUtils.Resolve(request.GetMode(), serviceDescriptors.ToArray()); if (mode.Equals(Constants.SERVICE_DESCRIPTOR_REQUEST_SYNC_REQUEST_MODE, StringComparison.OrdinalIgnoreCase)) { ResourceUtils.Resolve(service); syncServiceWorker.Process(service); } else if (mode.Equals(Constants.SERVICE_DESCRIPTOR_REQUEST_ASYNC_REQUEST_MODE, StringComparison.OrdinalIgnoreCase)) { asyncServiceWorker.AddRequest(service); } }
/// <summary> /// It resolve service descriptor instance /// </summary> /// <param name="service">Service instance</param> /// <exception cref="Siminov.Connect.Exception.ServiceException">If any exception occur while resolving dynamic resources</exception> public static void Resolve(IService service) { /* * Resolve Service Descriptor Properties */ ServiceDescriptor serviceDescriptor = service.GetServiceDescriptor(); IEnumerator <String> resources = service.GetResources(); while (resources.MoveNext()) { String resourceName = resources.Current; Object resourceValue = service.GetResource(resourceName); if (resourceValue is String) { serviceDescriptor.AddProperty(resourceName, (String)resourceValue); } } IEnumerator <String> serviceDescriptorProperties = serviceDescriptor.GetProperties(); IDictionary <String, String> changedServiceDescriptorProperties = new Dictionary <String, String>(); while (serviceDescriptorProperties.MoveNext()) { String serviceDescriptorProperty = serviceDescriptorProperties.Current; String serviceDescriptorValue = serviceDescriptor.GetProperty(serviceDescriptorProperty); var serviceDescriptors = new List <IDescriptor>(); serviceDescriptors.Add(serviceDescriptor); serviceDescriptorValue = ResourceUtils.Resolve(serviceDescriptorValue, serviceDescriptors.ToArray()); changedServiceDescriptorProperties.Add(serviceDescriptorProperty, serviceDescriptorValue); } foreach (String changedServiceDescriptorProperty in changedServiceDescriptorProperties.Keys) { serviceDescriptor.AddProperty(changedServiceDescriptorProperty, changedServiceDescriptorProperties[changedServiceDescriptorProperty]); } /* * Resolve API Properties */ Connect.Model.ServiceDescriptor.Request request = serviceDescriptor.GetRequest(service.GetRequest()); IEnumerator <String> apiProperties = request.GetProperties(); IDictionary <String, String> changedApiProperties = new Dictionary <String, String>(); while (apiProperties.MoveNext()) { String apiProperty = apiProperties.Current; String apiValue = request.GetProperty(apiProperty); var serviceDescriptors = new List <IDescriptor>(); serviceDescriptors.Add(serviceDescriptor); apiValue = ResourceUtils.Resolve(apiValue, serviceDescriptors.ToArray()); changedApiProperties.Add(apiProperty, apiValue); } foreach (String changedApiProperty in changedApiProperties.Keys) { request.AddProperty(changedApiProperty, changedApiProperties[changedApiProperty]); } /* * Resolve API Query Parameters */ IEnumerator <Connect.Model.ServiceDescriptor.Request.QueryParameter> queryParameters = request.GetQueryParameters(); while (queryParameters.MoveNext()) { Connect.Model.ServiceDescriptor.Request.QueryParameter queryParameter = queryParameters.Current; String queryValue = queryParameter.GetValue(); var serviceDescriptors = new List <IDescriptor>(); serviceDescriptors.Add(serviceDescriptor); queryValue = ResourceUtils.Resolve(queryValue, serviceDescriptors.ToArray()); queryParameter.SetValue(queryValue); } /* * Resolve API Query Parameters */ IEnumerator <Connect.Model.ServiceDescriptor.Request.HeaderParameter> headerParameters = request.GetHeaderParameters(); while (headerParameters.MoveNext()) { Connect.Model.ServiceDescriptor.Request.HeaderParameter headerParameter = headerParameters.Current; String headerValue = headerParameter.GetValue(); var serviceDescriptors = new List <IDescriptor>(); serviceDescriptors.Add(serviceDescriptor); headerValue = ResourceUtils.Resolve(headerValue, serviceDescriptors.ToArray()); headerParameter.SetValue(headerValue); } }