/// <summary>
        /// Initialize
        /// </summary>
        private static void Initialize()
        {
            var configuration = (TranslatorProviderConfiguration)ConfigurationManager.GetSection("translatorProvider");

            if (configuration == null)
            {
                throw new ConfigurationErrorsException
                          ("SampleProvider configuration section is not set correctly.");
            }

            _providers = new TranslatorProviderCollection();
            ProvidersHelper.InstantiateProviders(configuration.Providers, _providers, typeof(TranslatorProvider));
            _providers.SetReadOnly();

            foreach (TranslatorProvider p in _providers)
            {
                p.CacheFilePath = configuration.CacheFilePath;
            }

            _defaultProvider = _providers[configuration.Default];
            if (_defaultProvider == null)
            {
                throw new Exception("defaultProvider");
            }
        }
コード例 #2
0
ファイル: XpandSystemModule.cs プロジェクト: landytest/eXpand
 static XpandSystemModule()
 {
     ParametersFactory.RegisterParameter(new MonthAgoParameter());
     TranslatorProvider.RegisterProvider(new GoogleTranslatorProvider());
     if (!InterfaceBuilder.RuntimeMode)
     {
         new XpandXpoTypeInfoSource((TypesInfo)XafTypesInfo.Instance).AssignAsPersistentEntityStore();
     }
 }
コード例 #3
0
        private static JavaScriptTranslator CreateTranslator(object[] translators)
        {
            var translatorProvider = new TranslatorProvider();

            translatorProvider.MethodCallTranslators.Add(new RegexTranslator());
            translatorProvider.MethodCallTranslators.Add(new DryvResultTranslator());
            translatorProvider.MethodCallTranslators.Add(new StringTranslator());
            translatorProvider.MethodCallTranslators.Add(new EnumerableTranslator());
            translatorProvider.GenericTranslators.Add(new RegexTranslator());
            translatorProvider.GenericTranslators.Add(new DryvResultTranslator());
            translatorProvider.GenericTranslators.Add(new ObjectTranslator());

            if (translators != null)
            {
                translatorProvider.MethodCallTranslators.AddRange(translators.OfType <IMethodCallTranslator>());
                translatorProvider.GenericTranslators.AddRange(translators.OfType <ICustomTranslator>());
            }

            return(new JavaScriptTranslator(translatorProvider));
        }
        /// <summary>
        /// Initialize
        /// </summary>
        private static void Initialize()
        {
            var configuration = (TranslatorProviderConfiguration)ConfigurationManager.GetSection("translatorProvider");

            if (configuration == null)
                throw new ConfigurationErrorsException
                    ("SampleProvider configuration section is not set correctly.");
           
            _providers = new TranslatorProviderCollection();
            ProvidersHelper.InstantiateProviders(configuration.Providers, _providers, typeof (TranslatorProvider));
            _providers.SetReadOnly();

            foreach (TranslatorProvider p in _providers)
            {
                p.CacheFilePath = configuration.CacheFilePath;
            }

            _defaultProvider = _providers[configuration.Default];
            if (_defaultProvider == null)
                throw new Exception("defaultProvider");
        }
コード例 #5
0
 /// <summary>
 /// Creates a new instance of the class.
 /// </summary>
 public TranslationContext()
 {
     _namespaces = new List<string>();
     _provider = new TranslatorProvider(null);
 }
コード例 #6
0
        public async Task <IHttpActionResult> Post(CancellationToken ct)
        {
            /**
             * - TenantFinder:  HttpRequest x HttpRequestContext -> Tenant
             * - CommandParser: Tenant -> HttpRequest -> ParsedCommand x CommandType x Version
             * - Translator:    Tenant -> ParsedCommand x CommandType x Version -> CommandEnvelope
             * - Sender: Tenant -> CommandEnvelope -> HttpResult
             */

            // Get tenantId for current request
            var tenantId = await TenantFinder.FindTenantAsync(Request, RequestContext, ct);

            if (tenantId == null)
            {
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.Forbidden, "Unknown Tenant".ToModelStateErrors())));
            }

            //var multi = await Request.Content.ReadAsMultipartAsync();

            // Parse incomming request as a command schema
            var parser = await ParserProvider.GetParserAsync(tenantId, ct);

            if (parser == null)
            {
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError, "Can not parse request".ToModelStateErrors())));
            }

            var parsedCommandResult = await parser.ParseAsync(Request, RequestContext, ct);

            if (!parsedCommandResult.Success)
            {
                return(BadRequest(parsedCommandResult.Errors.ToModelStateErrors()));
            }

            // Validate parsed command
            var translator = await TranslatorProvider.GetTranslatorAsync(tenantId, ct);

            if (translator == null)
            {
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError, "Can not recognize command".ToModelStateErrors())));
            }

            var translation = await translator.TranslateAsync(parsedCommandResult, ct);

            if (translation.Success)
            {
                // Now send command through the ICommandSender
                var sender = await CommandSenderProvider.GetSenderAsync(tenantId, ct);

                if (sender == null)
                {
                    return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                                            "Can not start processing command".ToModelStateErrors())));
                }

                var sendResult = await sender.SendCommandAsync(translation.CommandEnvelope, ct);

                if (sendResult.Success)
                {
                    switch (sendResult.Type)
                    {
                    case SendCommandResultType.Completed:
                        return(Ok());

                    case SendCommandResultType.Accepted:
                        return(StatusCode(HttpStatusCode.Accepted));

                    default:
                        return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                                                "Invalid response processing command".ToModelStateErrors())));
                    }
                }
                else
                {
                    switch (sendResult.Type)
                    {
                    case SendCommandResultType.ValidationFailed:
                        return(BadRequest(sendResult.Errors.ToModelStateErrors()));

                    case SendCommandResultType.BusinessPreconditionFailed:
                        return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.Forbidden, sendResult.Errors.ToModelStateErrors())));

                    case SendCommandResultType.ProcessingError:
                        return(InternalServerError(sendResult.Exception));

                    case SendCommandResultType.BusinessPostconditionFailed:
                        return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.Forbidden, sendResult.Errors.ToModelStateErrors())));

                    case SendCommandResultType.PersistenceFailed:
                        return(InternalServerError(sendResult.Exception));

                    default:
                        return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                                                "Invalid response processing command".ToModelStateErrors())));
                    }
                }
            }
            else
            {
                switch (translation.Type)
                {
                case TranslationResultType.BadRequest:
                    return(BadRequest(translation.ModelState.ToModelStateErrors()));

                case TranslationResultType.NotFound:
                    return(NotFound());

                case TranslationResultType.Obsolete:
                    return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.Gone, translation.ModelState.ToModelStateErrors())));

                default:
                    return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError, "Invalid response translating command".ToModelStateErrors())));
                }
            }
        }
コード例 #7
0
 static XpandSystemModule()
 {
     ParametersFactory.RegisterParameter(new MonthAgoParameter());
     TranslatorProvider.RegisterProvider(new GoogleTranslatorProvider());
 }