/// <summary>
        /// Applies attributes to the proxied method's return type.
        /// </summary>
        /// <param name="methodBuilder">The method builder to use.</param>
        /// <param name="targetMethod">The proxied method.</param>
        /// <see cref="IProxyTypeBuilder.ProxyTargetAttributes"/>
        protected virtual void ApplyMethodReturnTypeAttributes(MethodBuilder methodBuilder, MethodInfo targetMethod)
        {
            ParameterBuilder parameterBuilder = methodBuilder.DefineParameter(0, ParameterAttributes.Retval, null);

            foreach (object attr in GetMethodReturnTypeAttributes(targetMethod))
            {
                if (attr is CustomAttributeBuilder)
                {
                    parameterBuilder.SetCustomAttribute((CustomAttributeBuilder)attr);
                }
                else if (attr is CustomAttributeData)
                {
                    parameterBuilder.SetCustomAttribute(
                        ReflectionUtils.CreateCustomAttribute((CustomAttributeData)attr));
                }
                else if (attr is Attribute)
                {
                    parameterBuilder.SetCustomAttribute(
                        ReflectionUtils.CreateCustomAttribute((Attribute)attr));
                }
            }
        }
        public void TestThrowsExceptionForNegativePosition()
        {
            string strParamName = null;
            int    paramPos     = 0;

            strParamName = TestLibrary.Generator.GetString(false, false, true, MinStringLength, MaxStringLength);
            paramPos     = TestLibrary.Generator.GetInt32();
            if (paramPos > 0)
            {
                paramPos = 0 - paramPos;
            }

            TypeBuilder   typeBuilder = GetTestTypeBuilder();
            MethodBuilder builder     = typeBuilder.DefineMethod(
                PosTestDynamicMethodName,
                TestMethodAttributes);

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                ParameterBuilder paramBuilder = builder.DefineParameter(paramPos, ParameterAttributes.HasDefault, strParamName);
            });
        }
Example #3
0
        public void ParseStageOpdracht_ValidInputParameters_ReturnsStageopdracht()
        {
            //Arrange
            List <object> parameters = new List <object>();

            parameters.Add(ParameterBuilder.String()); //locatie
            var locatie              = ParameterBuilder.String();
            var omschrijving         = ParameterBuilder.String();
            var voorwaarden          = ParameterBuilder.String();
            var thema                = ParameterBuilder.String();
            var omschOmgeving        = ParameterBuilder.String();
            var omgeving             = ParameterBuilder.String();
            var aantalMederwerkersIt = ParameterBuilder.Int();
            var aantalMedewerkers    = ParameterBuilder.Int();
            var aantalStagiairs      = ParameterBuilder.Int();
            var afstudeerrichting    = ParameterBuilder.Afstudeerrichting();
            var inleidendeActiviteit = ParameterBuilder.InleidendeActiviteit();
            var opdrachtgeverId      = ParameterBuilder.Int();

            //Act
            var result = _parseService.ParseStageOpdracht(locatie, omschrijving, voorwaarden, thema, omschOmgeving,
                                                          omgeving, aantalMederwerkersIt, aantalMedewerkers, aantalStagiairs, afstudeerrichting,
                                                          inleidendeActiviteit, opdrachtgeverId) as Stageopdracht;

            //Assert
            Assert.That(result.Locatie, Is.EqualTo(locatie));
            Assert.That(result.Omschrijving, Is.EqualTo(omschrijving));
            Assert.That(result.Randvoorwaarden, Is.EqualTo(voorwaarden));
            Assert.That(result.Onderzoeksthema, Is.EqualTo(thema));
            Assert.That(result.BeschrijvingTechnischeOmgeving, Is.EqualTo(omschOmgeving));
            Assert.That(result.Omgeving, Is.EqualTo(omgeving));
            Assert.That(result.AantalITWerknemers, Is.EqualTo(aantalMederwerkersIt));
            Assert.That(result.AantalWerknemers, Is.EqualTo(aantalMedewerkers));
            Assert.That(result.AantalGewensteStagiairs, Is.EqualTo(aantalStagiairs));
            Assert.That(result.VoorkeurAfstudeerrichting, Is.EqualTo(afstudeerrichting));
            Assert.That(result.InleidendeActiviteiten, Is.EqualTo(inleidendeActiviteit));
            Assert.That(result.OpdrachtgeverId, Is.EqualTo(opdrachtgeverId));
        }
        /// <summary>
        /// Adds constructors to new type that match all constructors on base type.
        /// Parameters are passed to base type.
        /// </summary>
        /// <returns></returns>
        public IEmptyObject AddPassThroughCtors()
        {
            foreach (ConstructorInfo _ctor in _parentType.GetConstructors(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
            {
                ParameterInfo[]    _params       = _ctor.GetParameters();
                Type[]             _paramTypes   = _params.Select(p => p.ParameterType).ToArray();
                Type[][]           _reqModifiers = _params.Select(p => p.GetRequiredCustomModifiers()).ToArray();
                Type[][]           _optModifiers = _params.Select(p => p.GetOptionalCustomModifiers()).ToArray();
                ConstructorBuilder _ctorBuild    = _tBuilder.DefineConstructor(MethodAttributes.Public, _ctor.CallingConvention, _paramTypes, _reqModifiers, _optModifiers);
                for (int i = 0; i < _params.Length; i++)
                {
                    ParameterInfo    _param    = _params[i];
                    ParameterBuilder _prmBuild = _ctorBuild.DefineParameter(i + 1, _param.Attributes, _param.Name);
                    if (((int)_param.Attributes & (int)ParameterAttributes.HasDefault) != 0)
                    {
                        _prmBuild.SetConstant(_param.RawDefaultValue);
                    }

                    foreach (CustomAttributeBuilder _attr in GetCustomAttrBuilders(_param.CustomAttributes))
                    {
                        _prmBuild.SetCustomAttribute(_attr);
                    }
                }

                //ConstructorBuilder _cBuilder = _tBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Any, argTypes);
                ILGenerator _ctorGen = _ctorBuild.GetILGenerator();
                _ctorGen.Emit(OpCodes.Nop);
                //arg0=new obj, arg1-arg3=passed params. Push onto stack for call to base class
                _ctorGen.Emit(OpCodes.Ldarg_0);
                for (int i = 1; i <= _params.Length; i++)
                {
                    _ctorGen.Emit(OpCodes.Ldarg, i);
                }
                _ctorGen.Emit(OpCodes.Call, _ctor);
                _ctorGen.Emit(OpCodes.Ret);
            }
            return(this);
        }
Example #5
0
        public virtual void UpdateTaskSuspensionStateByProcessDefinitionKeyAndTenantId(string processDefinitionKey, string processDefinitionTenantId, ISuspensionState suspensionState)
        {
            //IDictionary<string, object> parameters = new Dictionary<string, object>();
            //parameters["processDefinitionKey"] = processDefinitionKey;
            //parameters["isProcessDefinitionTenantIdSet"] = true;
            //parameters["processDefinitionTenantId"] = processDefinitionTenantId;
            //parameters["suspensionState"] = suspensionState.StateCode;
            var predicateTask = ParameterBuilder.True <TaskEntity>();
            var predicateProc = ParameterBuilder.True <ProcessDefinitionEntity>();

            if (!string.IsNullOrEmpty(processDefinitionKey))
            {
                predicateProc = predicateProc.AndParam(c => c.Key == processDefinitionKey);
                predicateProc = !string.IsNullOrEmpty(processDefinitionTenantId) ? predicateProc.AndParam(c => c.TenantId == processDefinitionTenantId) : predicateProc.AndParam(c => c.TenantId == null);
                predicateTask = predicateTask.AndParam(c => DbContext.Set <ProcessDefinitionEntity>().Where(predicateProc).Select(p => p.Id).ToList().Contains(c.ProcessDefinitionId));
            }

            Find(predicateTask).ForEach(d =>
            {
                d.Revision        = d.RevisionNext;
                d.SuspensionState = suspensionState.StateCode;
            });
        }
Example #6
0
        /// <summary>
        ///  insert one SysGroup to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, SysGroupInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [sys_group] (");
            sb.Append("[group_id],");
            sb.Append("[group_name],");
            sb.Append("[is_admin],");
            sb.Append("[description] ");
            sb.Append(" ) values ( ");
            sb.Append("@GroupId,");
            sb.Append("@GroupName,");
            sb.Append("@IsAdmin,");
            sb.Append("@Description ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@GroupId", entity.GroupId);
            paramList.Add("@GroupName", entity.GroupName);
            paramList.Add("@IsAdmin", entity.IsAdmin);
            paramList.Add("@Description", entity.Description);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #7
0
        /// <summary>
        ///  insert one Form1 to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, Form1Info entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [form_1] (");
            sb.Append("[form_no],");
            sb.Append("[amount],");
            sb.Append("[leader],");
            sb.Append("[manager] ");
            sb.Append(" ) values ( ");
            sb.Append("@FormNo,");
            sb.Append("@Amount,");
            sb.Append("@Leader,");
            sb.Append("@Manager ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@FormNo", entity.FormNo);
            paramList.Add("@Amount", entity.Amount);
            paramList.Add("@Leader", entity.Leader);
            paramList.Add("@Manager", entity.Manager);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #8
0
        /// <summary>
        ///  insert one Participant to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, ParticipantInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [participant] (");
            sb.Append("[participant_id],");
            sb.Append("[participant_kind],");
            sb.Append("[relation_id],");
            sb.Append("[active_id] ");
            sb.Append(" ) values ( ");
            sb.Append("@ParticipantId,");
            sb.Append("@ParticipantKind,");
            sb.Append("@RelationId,");
            sb.Append("@ActiveId ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@ParticipantId", entity.ParticipantId);
            paramList.Add("@ParticipantKind", entity.ParticipantKind);
            paramList.Add("@RelationId", entity.RelationId);
            paramList.Add("@ActiveId", entity.ActiveId);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #9
0
        public void ParseBedrijfsPromotor_ValidInputParameters_ReturnsBedrijfsPromotor()
        {
            //Arrange
            var naam       = ParameterBuilder.String();
            var voornaam   = ParameterBuilder.String();
            var email      = ParameterBuilder.String();
            var telefoon   = ParameterBuilder.String();
            var titel      = ParameterBuilder.String();
            var bedrijfsId = ParameterBuilder.Int();

            //Act
            var result =
                _parseService.ParseBedrijfsPromotor(naam, voornaam, email, telefoon, titel, bedrijfsId) as
                Bedrijfspromotor;

            //Assert
            Assert.That(result.Achternaam, Is.EqualTo(naam));
            Assert.That(result.Voornaam, Is.EqualTo(voornaam));
            Assert.That(result.Email, Is.EqualTo(email));
            Assert.That(result.Telefoonnummer, Is.EqualTo(telefoon));
            Assert.That(result.Title, Is.EqualTo(titel));
            Assert.That(result.BedrijfInDienstId, Is.EqualTo(bedrijfsId));
        }
Example #10
0
        public virtual void UpdateExecutionSuspensionStateByProcessDefinitionKey(string processDefinitionKey, ISuspensionState suspensionState)
        {
            //IDictionary<string, object> parameters = new Dictionary<string, object>();
            //parameters["processDefinitionKey"] = processDefinitionKey;
            //parameters["isTenantIdSet"] = false;
            //parameters["suspensionState"] = suspensionState.StateCode
            //DbEntityManager.Update(typeof(ExecutionEntity), "updateExecutionSuspensionStateByParameters", ConfigureParameterizedQuery(parameters)); ;
            var predicateProc = ParameterBuilder.True <ProcessDefinitionEntity>();
            var predicateExec = ParameterBuilder.True <ExecutionEntity>();

            if (!string.IsNullOrEmpty(processDefinitionKey))
            {
                predicateProc = predicateProc.AndParam(c => c.Key == processDefinitionKey);
                predicateExec = predicateExec.AndParam(c => DbContext.Set <ProcessDefinitionEntity>().Where(predicateProc).Select(p => p.Id).ToList().Contains(c.ProcessDefinitionId));
            }

            Find(predicateExec).ForEach(d =>
            {
                d.Revision        = d.RevisionNext;
                d.SuspensionState = suspensionState.StateCode;
            });
            //DbContext.SaveChanges();
        }
        private static void DefineMethod(TypeBuilder proxyTB, IPersistentVector sig)
        {
            Symbol mname = (Symbol)sig.nth(0);

            Type[] paramTypes = GenClass.CreateTypeArray((ISeq)sig.nth(1));
            Type   retType    = (Type)sig.nth(2);
            ISeq   pmetas     = (ISeq)(sig.count() >= 4 ? sig.nth(3) : null);

            MethodBuilder mb = proxyTB.DefineMethod(mname.Name, MethodAttributes.Abstract | MethodAttributes.Public | MethodAttributes.Virtual, retType, paramTypes);

            SetCustomAttributes(mb, GenInterface.ExtractAttributes(RT.meta(mname)));
            int i = 1;

            for (ISeq s = pmetas; s != null; s = s.next(), i++)
            {
                IPersistentMap meta = GenInterface.ExtractAttributes((IPersistentMap)s.first());
                if (meta != null && meta.count() > 0)
                {
                    ParameterBuilder pb = mb.DefineParameter(i, ParameterAttributes.None, String.Format("p_{0}", i));
                    GenInterface.SetCustomAttributes(pb, meta);
                }
            }
        }
Example #12
0
        protected virtual SqlPreCommandSimple InsertRelationalTableScript(Table table, DatabaseName newDatabaseName, TableMList rt)
        {
            ParameterBuilder pb = Connector.Current.ParameterBuilder;
            var created         = table.Mixins[typeof(DisconnectedCreatedMixin)].Columns().Single();

            string command = @"INSERT INTO {0} ({1})
SELECT {2}
FROM {3} as [relationalTable]
JOIN {4} [table] on [relationalTable].{5} = [table].{6}
WHERE [table].{7} = 1".FormatWith(
                rt.Name,
                rt.Columns.Values.ToString(c => c.Name.SqlEscape(), ", "),
                rt.Columns.Values.ToString(c => "[relationalTable]." + c.Name.SqlEscape(), ", "),
                rt.Name.OnDatabase(newDatabaseName),
                table.Name.OnDatabase(newDatabaseName),
                rt.BackReference.Name.SqlEscape(),
                table.PrimaryKey.Name.SqlEscape(),
                created.Name.SqlEscape());

            var sql = new SqlPreCommandSimple(command);

            return(sql);
        }
Example #13
0
        public List <Transaction> Detail(string payout_id, PayoutReportDetailSearchParams searchParams)
        {
            string url = "/reports/payout/" + payout_id + "/detail";

            if (searchParams != null)
            {
                if (searchParams.Offset < 0)
                {
                    throw new ArgumentOutOfRangeException("offset");
                }
                if (searchParams.Limit < 1 || searchParams.Limit > 100)
                {
                    throw new ArgumentOutOfRangeException("limit");
                }
                url = ParameterBuilder.ApplyParameterToUrl(url, "limit", searchParams.Limit.ToString());
                url = ParameterBuilder.ApplyParameterToUrl(url, "offset", searchParams.Offset.ToString());
                if (searchParams.DetailType != null)
                {
                    url = ParameterBuilder.ApplyParameterToUrl(url, "detail_type", searchParams.DetailType);
                }
            }
            return(base.List <Transaction>(url));
        }
Example #14
0
        /// <summary>
        ///  insert one FormCodeList to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, FormCodeListInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [form_code_List] (");
            sb.Append("[form_kind],");
            sb.Append("[code_kind],");
            sb.Append("[code_detail_des],");
            sb.Append("[code_detail_value] ");
            sb.Append(" ) values ( ");
            sb.Append("@FormKind,");
            sb.Append("@CodeKind,");
            sb.Append("@CodeDetailDes,");
            sb.Append("@CodeDetailValue ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@FormKind", entity.FormKind);
            paramList.Add("@CodeKind", entity.CodeKind);
            paramList.Add("@CodeDetailDes", entity.CodeDetailDes);
            paramList.Add("@CodeDetailValue", entity.CodeDetailValue);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #15
0
        /// <summary>
        ///  insert one SysCodeList to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, SysCodeList entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [sys_code_list] (");
            sb.Append("[main_key],");
            sb.Append("[sub_key],");
            sb.Append("[content],");
            sb.Append("[description] ");
            sb.Append(" ) values ( ");
            sb.Append("@MainKey,");
            sb.Append("@SubKey,");
            sb.Append("@Content,");
            sb.Append("@Description ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@MainKey", entity.MainKey);
            paramList.Add("@SubKey", entity.SubKey);
            paramList.Add("@Content", entity.Content);
            paramList.Add("@Description", entity.Description);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #16
0
        public void Setup()
        {
            _mocker = AutoMock.GetLoose();
            var claimsPrincipal = new ClaimsPrincipalBuilder()
                                  .WithRole(AppRoles.JudgeRole)
                                  .WithClaim(ClaimTypes.GivenName, "John")
                                  .WithClaim(ClaimTypes.Surname, "Doe")
                                  .WithClaim("name", "John D")
                                  .Build();
            var context = new ControllerContext
            {
                HttpContext = new DefaultHttpContext
                {
                    User = claimsPrincipal
                }
            };

            _mocker.Mock <IMapperFactory>().Setup(x => x.Get <UserProfile, UserProfileResponse>()).Returns(_mocker.Create <UserProfileToUserProfileResponseMapper>());
            var parameters = new ParameterBuilder(_mocker).AddObject(new DictionaryUserCache()).Build();

            _sut = _mocker.Create <ProfilesController>(parameters);
            _sut.ControllerContext = context;
        }
Example #17
0
        /// <summary>
        ///  insert one SysDept to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, SysDeptInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [sys_dept] (");
            sb.Append("[dept_id],");
            sb.Append("[dept_code],");
            sb.Append("[dept_name],");
            sb.Append("[parent_id] ");
            sb.Append(" ) values ( ");
            sb.Append("@DeptId,");
            sb.Append("@DeptCode,");
            sb.Append("@DeptName,");
            sb.Append("@ParentId ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@DeptId", entity.DeptId);
            paramList.Add("@DeptCode", entity.DeptCode);
            paramList.Add("@DeptName", entity.DeptName);
            paramList.Add("@ParentId", entity.ParentId);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
        internal static void BuildParameter(ParameterBuilder builder, ParameterInfo parameter)
        {
            Debug.Assert(parameter != null);
            Debug.Assert(builder != null);

            //
            // Build...
            //

            builder.Name          = parameter.Name;
            builder.ParameterType = parameter.ParameterType;
            builder.IsParamArray  = parameter.IsDefined(typeof(ParamArrayAttribute), true);

            //
            // Modify...
            //

            object[] modifiers = GetCustomAttributes(parameter, typeof(IParameterModifier), true);
            foreach (IParameterModifier modifier in modifiers)
            {
                modifier.Modify(builder);
            }
        }
        /// <summary>
        ///  insert one WorkflowActivity to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, WorkflowActivityInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [WorkFlow_Activity] (");
            sb.Append("[ActivityID],");
            sb.Append("[ActivityName],");
            sb.Append("[WorkFlowID],");
            sb.Append("[ActivityType] ");
            sb.Append(" ) values ( ");
            sb.Append("@Activityid,");
            sb.Append("@Activityname,");
            sb.Append("@Workflowid,");
            sb.Append("@Activitytype ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@Activityid", entity.Activityid);
            paramList.Add("@Activityname", entity.Activityname);
            paramList.Add("@Workflowid", entity.Workflowid);
            paramList.Add("@Activitytype", entity.Activitytype);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #20
0
        /// <summary>
        ///  insert one Active to database
        /// </summary>
        public override void Insert(SqlTransaction transaction, ActiveInfo entity)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(200);
            sb.Append("insert into [active] (");
            sb.Append("[active_id],");
            sb.Append("[active_name],");
            sb.Append("[active_type],");
            sb.Append("[form_id] ");
            sb.Append(" ) values ( ");
            sb.Append("@ActiveId,");
            sb.Append("@ActiveName,");
            sb.Append("@ActiveType,");
            sb.Append("@FormId ) ");

            ParameterBuilder paramList = new ParameterBuilder(4);

            paramList.Add("@ActiveId", entity.ActiveId);
            paramList.Add("@ActiveName", entity.ActiveName);
            paramList.Add("@ActiveType", entity.ActiveType);
            paramList.Add("@FormId", entity.FormId);

            SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, sb.ToString(), paramList.ToArray());
        }
Example #21
0
        public void TestForEveryParameterAtributeFlag()
        {
            string strParamName = null;

            ParameterAttributes[] attributes = new ParameterAttributes[] {
                ParameterAttributes.HasDefault,
                ParameterAttributes.HasFieldMarshal,
                ParameterAttributes.In,
                ParameterAttributes.None,
                ParameterAttributes.Optional,
                ParameterAttributes.Out,
                ParameterAttributes.Retval
            };

            Type[] paramTypes = new Type[attributes.Length];
            for (int i = 0; i < paramTypes.Length; ++i)
            {
                paramTypes[i] = typeof(int);
            }

            TypeBuilder   typeBuilder = GetTestTypeBuilder();
            MethodBuilder builder     = typeBuilder.DefineMethod(
                PosTestDynamicMethodName,
                TestMethodAttributes,
                typeof(void),
                paramTypes);

            for (int i = 1; i < attributes.Length; ++i)
            {
                strParamName = _generator.GetString(false, false, true, MinStringLength, MaxStringLength);

                ParameterBuilder paramBuilder = builder.DefineParameter(i, attributes[i], strParamName);

                Assert.NotNull(paramBuilder);
                VerifyParameterBuilder(paramBuilder, strParamName, attributes[i], i);
            }
        }
Example #22
0
        public void LoadArticles()
        {
            var mockService = new Mock <IArticleService>();

            var testArticles = new List <Article>()
            {
                new Article()
                {
                    Id          = 1,
                    Text        = "Bla",
                    Heading     = "Heading",
                    CreatedAt   = DateTime.Now,
                    CreatedById = 1
                }
            };

            mockService.Setup(x => x.GetAll()).Returns(testArticles);

            var testParameter = new ArticlesOverviewParameter()
            {
                BackgroundColorHex = "#cccccc"
            };

            var testModule = new Domain.Module()
            {
                Parameter = ParameterBuilder.Serialize(testParameter)
            };


            var fakeView  = new FakeArticlesView();
            var presenter = new ArticleOverviewPresenter(fakeView, testModule, mockService.Object);

            presenter.LoadArticles();

            Assert.AreEqual(fakeView.Articles.Count, testArticles.Count);
            Assert.AreEqual(fakeView.BackgroundColorHex, testParameter.BackgroundColorHex);
        }
Example #23
0
        private void ResolveProjection(ParameterBuilder builder, LambdaExpression lambdaExpression, Type sourceType)
        {
            Contract.Requires(lambdaExpression != null);

            var selectFunction = lambdaExpression.Body as NewExpression;

            if (selectFunction != null)
            {
#if !NETFX_CORE
                var properties = sourceType.GetProperties();
#else
                var properties = sourceType.GetTypeInfo().DeclaredProperties;
#endif
                var members = selectFunction.Members
                              .Select(x => properties.FirstOrDefault(y => y.Name == x.Name) ?? x)
                              .Select(x => _memberNameResolver.ResolveName(x))
                              .ToArray();
                var args = selectFunction.Arguments.OfType <MemberExpression>()
                           .Select(x => properties.FirstOrDefault(y => y.Name == x.Member.Name) ?? x.Member)
                           .Select(x => _memberNameResolver.ResolveName(x))
                           .ToArray();
                if (members.Intersect(args).Count() != members.Length)
                {
                    throw new InvalidOperationException("Projection into new member names is not supported.");
                }

                builder.SelectParameter = string.Join(",", args);
            }

            var propertyExpression = lambdaExpression.Body as MemberExpression;
            if (propertyExpression != null)
            {
                builder.SelectParameter = string.IsNullOrWhiteSpace(builder.SelectParameter)
                                        ? _memberNameResolver.ResolveName(propertyExpression.Member)
                                        : builder.SelectParameter + "," + _memberNameResolver.ResolveName(propertyExpression.Member);
            }
        }
        /// <summary>
        /// Copies parameter attributes. This is used to copy marshalling attributes and other relevant data.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="parameter"></param>
        private static void CopyParameterAttributes(ParameterBuilder builder, ParameterInfo parameter)
        {
#if NET35
            var attribData = CustomAttributeData.GetCustomAttributes(parameter);
#else
            var attribData = parameter.GetCustomAttributesData();
#endif

            foreach (var attrib in attribData) //.CustomAttributes)
            {
                if (attrib.NamedArguments == null || attrib.NamedArguments.Count == 0)
                {
                    continue;
                }

                // The marshaller will prefer to use the MarshalType over MarshalTypeRef.
                // and will automatically set MarshalType if you specify MarshalTypeRef.
                // this will make it unable to locate the type (since without assembly specification, it will look in the dynamic assembly)
                // Therefore we have to remove MarshalType if both MarshalType and MarshalTypeRef is set.
                var namedArguments = FixMarshalTypeAttributes(attrib.NamedArguments).ToArray();
                var attribBuilder  = new CustomAttributeBuilder(
                    attrib.Constructor,
                    attrib.ConstructorArguments.Select(a => a.Value).ToArray(),
                    attrib.NamedArguments.Where(a => a.MemberInfo.MemberType != MemberTypes.Field)
                    .Select(s => s.MemberInfo)
                    .OfType <PropertyInfo>()
                    .ToArray(),
                    attrib.NamedArguments.Where(a => a.MemberInfo.MemberType != MemberTypes.Field)
                    .Select(s => s.TypedValue)
                    .Select(s => s.Value)
                    .ToArray(),
                    namedArguments.Where(a => a.MemberInfo.MemberType == MemberTypes.Field).Select(s => s.MemberInfo).OfType <FieldInfo>().ToArray(),
                    namedArguments.Where(a => a.MemberInfo.MemberType == MemberTypes.Field).Select(s => s.TypedValue).Select(s => s.Value).ToArray());

                builder.SetCustomAttribute(attribBuilder);
            }
        }
Example #25
0
        public void Should_return_response_with_settings()
        {
            var securitySettings = new AzureAdConfiguration
            {
                ClientId            = "ClientId",
                ClientSecret        = "ClientSecret",
                TenantId            = "TenantId",
                Authority           = "Authority",
                ApplicationInsights = new ApplicationInsightsConfiguration {
                    InstrumentationKey = "AiKey"
                }
            };

            var servicesConfiguration = new HearingServicesConfiguration
            {
                VideoApiUrl = "https://vh-video-api/"
            };

            var kinlyConfiguration = new KinlyConfiguration
            {
                JoinByPhoneFromDate = "2021-02-09"
            };

            var parameters = new ParameterBuilder(_mocker).AddObject(Options.Create(securitySettings))
                             .AddObject(Options.Create(servicesConfiguration))
                             .AddObject(kinlyConfiguration).Build();

            var configSettingsController = _mocker.Create <ConfigSettingsController>(parameters);

            var actionResult   = (OkObjectResult)configSettingsController.GetClientConfigurationSettings().Result;
            var clientSettings = (ClientSettingsResponse)actionResult.Value;

            clientSettings.ClientId.Should().Be(securitySettings.ClientId);
            clientSettings.TenantId.Should().Be(securitySettings.TenantId);
            clientSettings.VideoApiUrl.Should().Be(servicesConfiguration.VideoApiUrl);
            clientSettings.JoinByPhoneFromDate.Should().Be(kinlyConfiguration.JoinByPhoneFromDate);
        }
Example #26
0
        public RawImageDialog()
        {
            InitializeComponent();

            _encodingsBuilder   = new ParameterBuilder(encodingParameters);
            _palEncodingBuilder = new ParameterBuilder(palEncodingParameters);
            _swizzlesBuilder    = new ParameterBuilder(swizzleParameters);

            _encodingsBuilder.ValueChanged += _encodingsBuilder_ValueChanged;
            _swizzlesBuilder.ValueChanged  += _swizzlesBuilder_ValueChanged;

            encodings.DataStore    = GetEncodings().Select(x => new ExtensionTypeElement(x)).ToList();
            palEncodings.DataStore = GetPaletteEncodings().Select(x => new ExtensionTypeElement(x)).ToList();
            swizzles.DataStore     = GetSwizzles().Select(x => new ExtensionTypeElement(x)).ToList();

            encodings.SelectedValueChanged    += Encodings_SelectedValueChanged;
            palEncodings.SelectedValueChanged += PalEncodings_SelectedValueChanged;
            swizzles.SelectedValueChanged     += Swizzles_SelectedValueChanged;

            encodings.SelectedValue    = encodings.DataStore.First();
            palEncodings.SelectedValue = palEncodings.DataStore.First();
            swizzles.SelectedValue     = swizzles.DataStore.First();

            widthText.TextChanged     += WidthText_TextChanged;
            heightText.TextChanged    += HeightText_TextChanged;
            offsetText.TextChanged    += OffsetText_TextChanged;
            palOffsetText.TextChanged += PalOffsetText_TextChanged;;

            #region Commands

            openFileCommand.Executed     += OpenFileCommand_Executed;
            closeFileCommand.Executed    += CloseFileCommand_Executed;
            extractImageCommand.Executed += ExtractImageCommand_Executed;
            processCommand.Executed      += ProcessCommand_Executed;

            #endregion
        }
Example #27
0
        /// <inheritdoc/>
        public IParameterBuilderWithParameter And <TParam, TValue>(params Expression <Func <TParam, TValue> >[] accessorExpressions)
        {
            if (accessorExpressions == null)
            {
                throw new ArgumentNullException("accessorExpressions");
            }

            ParameterBuilder builder = this;

            foreach (var a in accessorExpressions)
            {
                // attempt to get the name of the parameter off of a simple expression
                string           alias      = null;
                MemberExpression expression = a.Body as MemberExpression;
                if (expression != null)
                {
                    alias = expression.Member.Name;
                }

                builder = AndImpl(null, alias, a);
            }

            return(builder);
        }
Example #28
0
        public void ParseBedrijf_ValidInputParameters_ReturnsBedrijf()
        {
            //Arrange
            var name        = ParameterBuilder.String();
            var adress      = ParameterBuilder.String();
            var postalCode  = ParameterBuilder.Int();
            var city        = ParameterBuilder.String();
            var phoneNumber = ParameterBuilder.String();
            var email       = ParameterBuilder.String();
            var handShake   = ParameterBuilder.Bool();

            //Act
            var result = _parseService.ParseBedrijf
                             (name, adress, postalCode, city, phoneNumber, email, handShake) as Bedrijf;

            //Assert
            Assert.That(result.Bedrijfsnaam, Is.EqualTo(name));
            Assert.That(result.Adres, Is.EqualTo(adress));
            Assert.That(result.Postcode, Is.EqualTo(postalCode));
            Assert.That(result.Gemeente, Is.EqualTo(city));
            Assert.That(result.Telefoonnummer, Is.EqualTo(phoneNumber));
            Assert.That(result.Email, Is.EqualTo(email));
            Assert.That(result.AanwezigheidHandshake, Is.EqualTo(handShake));
        }
Example #29
0
        /// <inheritdoc />
        public IParameterBuilder BuildParameter(ICommandBuilder command, ParameterInfo parameterInfo)
        {
            command.NotNull(nameof(command));
            parameterInfo.NotNull(nameof(parameterInfo));

            if (!IsParameter(command, parameterInfo))
            {
                throw new ArgumentException(nameof(parameterInfo), $"{parameterInfo.Name} is not a valid parameter.");
            }

            var name           = GetName(parameterInfo);
            var description    = GetDescription(parameterInfo);
            var remarks        = GetRemarks(parameterInfo);
            var isRemainder    = GetRemainder(parameterInfo);
            var isParams       = GetParams(parameterInfo);
            var isOptional     = GetOptional(parameterInfo);
            var defaultValue   = GetDefaultValue(parameterInfo);
            var typeParserType = GetTypeParserType(parameterInfo);
            var attributes     = GetAttributes(parameterInfo);
            var preconditions  = GetPreconditions(attributes);

            var builder = new ParameterBuilder()
                          .WithParameterInfo(parameterInfo)
                          .WithName(name)
                          .WithDescription(description)
                          .WithRemarks(remarks)
                          .WithRemainder(isRemainder)
                          .WithParams(isParams)
                          .WithOptional(isOptional)
                          .WithDefaultValue(defaultValue)
                          .WithTypeParserType(typeParserType)
                          .WithAttributes(attributes)
                          .WithPreconditions(preconditions);

            return(builder);
        }
Example #30
0
        public void TestWithGenericAndNonGenericParameters()
        {
            string methodName   = null;
            string strParamName = null;

            methodName   = TestLibrary.Generator.GetString(false, false, true, MinStringLength, MaxStringLength);
            strParamName = TestLibrary.Generator.GetString(false, false, true, MinStringLength, MaxStringLength);
            Type[]        paramTypes  = new Type[] { typeof(int) };
            TypeBuilder   typeBuilder = GetTestTypeBuilder();
            MethodBuilder builder     = typeBuilder.DefineMethod(
                methodName,
                TestMethodAttributes,
                typeof(void),
                paramTypes);

            string[] typeParamNames = { "T" };
            GenericTypeParameterBuilder[] parameters = builder.DefineGenericParameters(typeParamNames);
            ParameterBuilder paramBuilder            = builder.DefineParameter(
                1,
                ParameterAttributes.HasDefault,
                strParamName);

            Assert.True(builder.IsGenericMethodDefinition);
        }
 /// <summary>
 /// Add a parameter for this operation
 /// </summary>
 /// <param name="parameter">
 /// The parameter.
 /// </param>
 /// <returns>
 /// The <see cref="OperationBuilder"/>.
 /// </returns>
 public OperationBuilder Parameter(Action<ParameterBuilder> parameter)
 {
     var builder = new ParameterBuilder();
     parameter(builder);
     return this.Parameter(builder.Build());
 }
Example #32
0
 public JunctionBuilder(JunctionType type, ParameterBuilder other)
     : this(type)
 {
     Other = other;
 }
Example #33
0
    //Examples of generated code
    //     public static XWeak constructor1(XComponentContext ctx)
    //     {
    //         XMultiComponentFactory factory = ctx.getServiceManager();
    //         if (factory == null)
    //             throw new com.sun.star.uno.DeploymentException("bla", null);
    //         return (XWeak) factory.createInstanceWithContext("service_specifier", ctx);
    //     }
    //     public static XWeak constructor2(XComponentContext ctx, int a, int b)
    //     {
    //         XMultiComponentFactory factory = ctx.getServiceManager();
    //         if (factory == null)
    //             throw new com.sun.star.uno.DeploymentException("bla", null);
    //         Any a1;
    //         a1 = new Any( typeof(int), a);
    //         Any a2;
    //         a2 = new Any( typeof(int), b);
    //         Any[] arAny = new Any[2];
    //         arAny[0] = a1;
    //         arAny[1] = a2;
    //         return (XWeak) factory.createInstanceWithArgumentsAndContext("service_specifier", arAny, ctx);
    //     }
    //     public static XWeak constructor3(XComponentContext ctx, params Any[] c)
    //     {
    //         XMultiComponentFactory factory = ctx.getServiceManager();
    //         if (factory == null)
    //             throw new com.sun.star.uno.DeploymentException("bla", null);
    //         return (XWeak) factory.createInstanceWithArgumentsAndContext("service_specifier", c, ctx);
    //     }
    Type complete_service_type(service_entry entry)
    {
        TypeBuilder type_builder = entry.m_type_builder;
        XServiceTypeDescription2 xServiceType = entry.m_xType;

        // Create the private default constructor
        ConstructorBuilder ctor_builder =
            type_builder.DefineConstructor(
                (MethodAttributes.Private |
                 MethodAttributes.HideBySig |
                 MethodAttributes.SpecialName |
                 MethodAttributes.RTSpecialName),
                CallingConventions.Standard, null);

        ILGenerator code = ctor_builder.GetILGenerator();
        code.Emit(OpCodes.Ldarg_0); // push this
        code.Emit(OpCodes.Call,
                  type_builder.BaseType.GetConstructor(new Type[0]));
        code.Emit(OpCodes.Ret);

        // Create the service constructors.
        // optain the interface which makes up this service, it is the
        // return type of the constructor functions
        XInterfaceTypeDescription2 xIfaceType =
            xServiceType.getInterface() as XInterfaceTypeDescription2;
        if (xIfaceType == null)
            xIfaceType = resolveInterfaceTypedef(xServiceType.getInterface());
        Type retType = get_type(xIfaceType);

        // Create the ConstructorInfo for a DeploymentException
        Type typeDeploymentExc =
            get_type("unoidl.com.sun.star.uno.DeploymentException", true);

        Type[] typeCtor = new Type[] { typeof(System.String),
                                       typeof(System.Object) };
        ConstructorInfo ctorDeploymentException =
            typeDeploymentExc.GetConstructor(typeCtor);

        XServiceConstructorDescription[] ctors =
            xServiceType.getConstructors();

        Type type_uno_exception =
            get_type("unoidl.com.sun.star.uno.Exception", true);

        for (int i = ctors.Length - 1; i >= 0; --i)
        {
            bool bParameterArray = false;
            Type typeAny = typeof(uno.Any);
            XServiceConstructorDescription ctorDes = ctors[i];
            // obtain the parameter types
            XParameter[] xParams = ctorDes.getParameters();
            Type[] typeParameters = new Type[xParams.Length + 1];
            typeParameters[0] =
                get_type("unoidl.com.sun.star.uno.XComponentContext", true);
            for (int iparam = 0; iparam != xParams.Length; ++iparam)
            {
                if (xParams[iparam].isRestParameter())
                    typeParameters[iparam + 1] = typeof(uno.Any[]);
                else
                    typeParameters[iparam + 1] =
                        get_type(xParams[iparam].getType());
            }

            // define method
            string ctorName;
            if (ctorDes.isDefaultConstructor())
                ctorName = "create";
            else
                ctorName = ctorDes.getName();
            MethodBuilder method_builder = type_builder.DefineMethod(
                ctorName,
                (MethodAttributes.Public |
                 MethodAttributes.HideBySig |
                 MethodAttributes.Static),
                retType,
                typeParameters);

            // define UNO exception attribute (exceptions)
            CustomAttributeBuilder attrBuilder =
                get_service_exception_attribute(ctorDes);
            if (attrBuilder != null)
                method_builder.SetCustomAttribute(attrBuilder);

            // define parameter attributes (paramarray), names etc.
            // The first parameter is the XComponentContext, which cannot be
            // obtained from reflection.
            // The context is not part of the idl description
            /* ParameterBuilder param_builder = */
            method_builder.DefineParameter(
                1, ParameterAttributes.In, "the_context");

            ParameterBuilder[] parameterBuilders =
                new ParameterBuilder[xParams.Length];
            for (int iparam = 0; iparam != xParams.Length + 1; ++iparam)
            {
                parameterBuilders[iparam] = method_builder.DefineParameter(
                    iparam + 2, ParameterAttributes.In,
                    xParams[iparam].getName());

                if (xParams[iparam].isRestParameter())
                {
                    bParameterArray = true;
                    // set the ParameterArrayAttribute
                    ConstructorInfo ctor_info =
                        typeof(System.ParamArrayAttribute).GetConstructor(
                            new Type[0]);
                    CustomAttributeBuilder attr_builder =
                        new CustomAttributeBuilder(ctor_info, new object[0]);
                    parameterBuilders[iparam].SetCustomAttribute(attr_builder);
                    break;
                }
            }

            ILGenerator ilGen = method_builder.GetILGenerator();

            // Define locals
            // XMultiComponentFactory
            LocalBuilder local_factory = ilGen.DeclareLocal(
                get_type("unoidl.com.sun.star.lang.XMultiComponentFactory",
                         true));

            // The return type
            LocalBuilder local_return_val = ilGen.DeclareLocal(retType);

            // Obtain the XMultiComponentFactory and throw an exception if we
            // do not get one
            ilGen.Emit(OpCodes.Ldarg_0);

            MethodInfo methodGetServiceManager = get_type(
                "unoidl.com.sun.star.uno.XComponentContext", true)
                .GetMethod("getServiceManager");
            ilGen.Emit(OpCodes.Callvirt, methodGetServiceManager);
            ilGen.Emit(OpCodes.Stloc, local_factory);
            ilGen.Emit(OpCodes.Ldloc, local_factory);
            Label label1 = ilGen.DefineLabel();
            ilGen.Emit(OpCodes.Brtrue, label1);
            ilGen.Emit(OpCodes.Ldstr,
                       String.Format("The service unoidl.{0} could not be created. The context failed to supply the service manager.",
                                     xServiceType.getName()));
            ilGen.Emit(OpCodes.Ldarg_0);
            ilGen.Emit(OpCodes.Newobj, ctorDeploymentException);
            ilGen.Emit(OpCodes.Throw);
            ilGen.MarkLabel(label1);

            // We create a try/catch around the createInstanceWithContext,
            // etc. functions

            // There are 3 cases

            // 1. function do not specify exceptions. Then
            //    RuntimeExceptions are retrhown and other exceptions
            //    produce a DeploymentException.

            // 2. function specify Exception. Then all exceptions fly
            //    through

            // 3. function specifies exceptions but no Exception. Then
            //    these are rethrown and other exceptions, except
            //    RuntimeException, produce a deployment exception.

            // In case there are no parameters we call
            // XMultiComponentFactory.createInstanceWithContext

            ArrayList exceptionTypes =
                get_service_ctor_method_exceptions_reduced(
                    ctorDes.getExceptions());
            if (! exceptionTypes.Contains(type_uno_exception))
            {
                ilGen.BeginExceptionBlock();
            }
            if (xParams.Length == 0)
            {
                ilGen.Emit(OpCodes.Ldloc, local_factory);
                ilGen.Emit(OpCodes.Ldstr, to_cts_name(xServiceType.getName()));
                ilGen.Emit(OpCodes.Ldarg_0);

                MethodInfo methodCIWAAC =
                    local_factory.LocalType.GetMethod(
                        "createInstanceWithArgumentsAndContext");
                ilGen.Emit(OpCodes.Callvirt, methodCIWAAC);
            }
            else if (bParameterArray)
            {
                // Service constructor with parameter array
                ilGen.Emit(OpCodes.Ldloc, local_factory);
                ilGen.Emit(OpCodes.Ldstr, to_cts_name(xServiceType.getName()));
                ilGen.Emit(OpCodes.Ldarg_1);
                ilGen.Emit(OpCodes.Ldarg_0);
                MethodInfo methodCIWAAC =
                    local_factory.LocalType.GetMethod(
                        "createInstanceWithArgumentsAndContext");
                ilGen.Emit(OpCodes.Callvirt, methodCIWAAC);
            }
            else
            {
                // Any param1, Any param2, etc.
                // For each parameter, except the component context, and
                // the parameter array an Any is created.
                LocalBuilder[] localAnys = new LocalBuilder[xParams.Length];

                for (int iparam = 0; iparam < xParams.Length; ++iparam)
                {
                    localAnys[iparam] = ilGen.DeclareLocal(typeAny);
                }

                // Any[]. This array is filled with the created Anys
                // which contain the parameters and the values
                // contained in the parameter array
                LocalBuilder local_anyParams =
                    ilGen.DeclareLocal(typeof(uno.Any[]));

                // Create the Any for every argument, except for the
                // parameter array. localAnys contains the LocalBuilder for
                // all these parameters. We call the ctor Any(Type, Object)
                Type[] typesCtorAny = { typeof(System.Type),
                                        typeof(System.Object) };
                ConstructorInfo ctorAny =
                    typeAny.GetConstructor(typesCtorAny);
                for (int j = 0; j < localAnys.Length; ++j)
                {
                    ilGen.Emit(OpCodes.Ldloca, localAnys[j]);
                    ilGen.Emit(OpCodes.Ldtoken, typeParameters[j+1]);

                    Type[] typeParams = { typeof(System.RuntimeTypeHandle) };

                    ilGen.Emit(OpCodes.Call,
                               typeof(System.Type).GetMethod(
                                   "GetTypeFromHandle", typeParams));
                    ilGen.Emit(OpCodes.Ldarg, j + 1);
                    // if the parameter is a value type then we need
                    // to box it, because the Any ctor takes an Object
                    if (typeParameters[j+1].IsValueType)
                        ilGen.Emit(OpCodes.Box, typeParameters[j+1]);
                    ilGen.Emit(OpCodes.Call, ctorAny);
                }

                // Create the Any[] that is passed to the
                // createInstanceWithContext[AndArguments] function
                ilGen.Emit(OpCodes.Ldc_I4, localAnys.Length);
                ilGen.Emit(OpCodes.Newarr, typeAny);
                ilGen.Emit(OpCodes.Stloc, local_anyParams);

                // Assign all anys created from the parameters array
                // to the Any[]
                for (int j = 0; j < localAnys.Length; ++j)
                {
                    ilGen.Emit(OpCodes.Ldloc, local_anyParams);
                    ilGen.Emit(OpCodes.Ldc_I4, j);
                    ilGen.Emit(OpCodes.Ldelema, typeAny);
                    ilGen.Emit(OpCodes.Ldloc, localAnys[j]);
                    ilGen.Emit(OpCodes.Stobj, typeAny);
                }

                // call createInstanceWithContextAndArguments
                ilGen.Emit(OpCodes.Ldloc, local_factory);
                ilGen.Emit(OpCodes.Ldstr, to_cts_name(xServiceType.getName()));
                ilGen.Emit(OpCodes.Ldloc, local_anyParams);
                ilGen.Emit(OpCodes.Ldarg_0);
                MethodInfo methodCIWAAC =
                    local_factory.LocalType.GetMethod(
                        "createInstanceWithArgumentsAndContext");
                ilGen.Emit(OpCodes.Callvirt, methodCIWAAC);
            }

            // cast the object returned by the functions
            // createInstanceWithContext or
            // createInstanceWithArgumentsAndContext to the interface type
            ilGen.Emit(OpCodes.Castclass, retType);
            ilGen.Emit(OpCodes.Stloc, local_return_val);

            // catch exceptions thrown by createInstanceWithArgumentsAndContext
            // and createInstanceWithContext
            if (!exceptionTypes.Contains(type_uno_exception))
            {
                // catch (unoidl.com.sun.star.uno.RuntimeException) {throw;}
                ilGen.BeginCatchBlock(
                    get_type(
                        "unoidl.com.sun.star.uno.RuntimeException", true));
                ilGen.Emit(OpCodes.Pop);
                ilGen.Emit(OpCodes.Rethrow);

                // catch and rethrow all other defined Exceptions
                foreach (Type excType in exceptionTypes)
                {
                    if (excType.IsInstanceOfType(
                            get_type(
                                "unoidl.com.sun.star.uno.RuntimeException",
                                true)))
                    {
                        // we have a catch for RuntimeException already defined
                        continue;
                    }

                    // catch Exception and rethrow
                    ilGen.BeginCatchBlock(excType);
                    ilGen.Emit(OpCodes.Pop);
                    ilGen.Emit(OpCodes.Rethrow);
                }

                // catch (unoidl.com.sun.star.uno.Exception)
                // { throw DeploymentException... }
                ilGen.BeginCatchBlock(type_uno_exception);

                // define the local variable that keeps the exception
                LocalBuilder local_exception = ilGen.DeclareLocal(
                    type_uno_exception);

                // Store the exception
                ilGen.Emit(OpCodes.Stloc, local_exception);

                // prepare the construction of the exception
                ilGen.Emit(OpCodes.Ldstr,
                           "The context (com.sun.star.uno.XComponentContext)" +
                           "failed to supply the service " +
                           to_cts_name(xServiceType.getName()) +
                           ": ");

                // add to the string the Exception.Message
                ilGen.Emit(OpCodes.Ldloc, local_exception);
                ilGen.Emit(OpCodes.Callvirt,
                           type_uno_exception.GetProperty("Message")
                           .GetGetMethod());
                Type[] concatParams = new Type[] { typeof(System.String),
                                                   typeof(System.String) };
                ilGen.Emit(OpCodes.Call,
                           typeof(System.String).GetMethod("Concat",
                                                           concatParams));
                // load context argument
                ilGen.Emit(OpCodes.Ldarg_0);
                ilGen.Emit(OpCodes.Newobj, ctorDeploymentException);
                ilGen.Emit(OpCodes.Throw); // Exception(typeDeploymentExc);

                ilGen.EndExceptionBlock();
            }

            // Check if the service instance was create and throw an
            // exception if not.
            Label label_service_created = ilGen.DefineLabel();
            ilGen.Emit(OpCodes.Ldloc, local_return_val);
            ilGen.Emit(OpCodes.Brtrue_S, label_service_created);

            ilGen.Emit(OpCodes.Ldstr,
                       "The context (com.sun.star.uno.XComponentContext)" +
                       "failed to supply the service unoidl." +
                       to_cts_name(xServiceType.getName()) +
                       ".");
            ilGen.Emit(OpCodes.Ldarg_0);
            ilGen.Emit(OpCodes.Newobj, ctorDeploymentException);
            ilGen.Emit(OpCodes.Throw); // Exception(typeDeploymentExc);

            ilGen.MarkLabel(label_service_created);
            ilGen.Emit(OpCodes.Ldloc, local_return_val);
            ilGen.Emit(OpCodes.Ret);
        }

        // remove from incomplete types map
        m_incomplete_services.Remove(type_builder.FullName);

        if (Climaker.g_verbose)
        {
            Console.WriteLine("> emitting service type {0}",
                              type_builder.FullName);
        }

        return type_builder.CreateType();
    }
        private static void VerifyParameterBuilder(ParameterBuilder parameter, string expectedName, ParameterAttributes expectedAttributes, int expectedPosition)
        {
            // This constant maps to ParameterAttributes.ReservedMask that is not available in the contract.
            const int ReservedMaskParameterAttribute = 0xF000;
            Assert.Equal(expectedName, parameter.Name);

            int removedReservedAttributes = (int)expectedAttributes & ~ReservedMaskParameterAttribute;
            Assert.Equal(removedReservedAttributes, (parameter.Attributes & removedReservedAttributes));
            Assert.Equal(expectedPosition, parameter.Position);
        }
Example #35
0
 /// <summary>
 /// Add a parameter for this operation
 /// </summary>
 /// <param name="parameter">
 /// The parameter.
 /// </param>
 /// <returns>
 /// The <see cref="PathItemBuilder"/>.
 /// </returns>
 public PathItemBuilder Parameter(ParameterBuilder parameter)
 {
     return this.Parameter(parameter.Build());
 }
Example #36
0
				internal override void Apply(ClassLoaderWrapper loader, ParameterBuilder pb, object annotation)
				{
					if (type.IsSubclassOf(Types.SecurityAttribute))
					{
						// you can't add declarative security to a parameter
					}
					else if (type == JVM.Import(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute)))
					{
						// TODO with the current custom attribute annotation restrictions it is impossible to use this CA,
						// but if we make it possible, we should also implement it here
						throw new NotImplementedException();
					}
					else
					{
						pb.SetCustomAttribute(MakeCustomAttributeBuilder(loader, annotation));
					}
				}
Example #37
0
					internal override void Apply(ClassLoaderWrapper loader, ParameterBuilder pb, object annotation)
					{
						Annotation annot = type.Annotation;
						foreach (object ann in UnwrapArray(annotation))
						{
							annot.Apply(loader, pb, ann);
						}
					}
Example #38
0
					internal override void Apply(ClassLoaderWrapper loader, ParameterBuilder pb, object annotation)
					{
					}
Example #39
0
					internal override void ApplyReturnValue(ClassLoaderWrapper loader, MethodBuilder mb, ref ParameterBuilder pb, object annotation)
					{
						// TODO make sure the descriptor is correct
						Annotation ann = type.Annotation;
						object[] arr = (object[])annotation;
						for (int i = 2; i < arr.Length; i += 2)
						{
							if ("value".Equals(arr[i]))
							{
								if (pb == null)
								{
									pb = mb.DefineParameter(0, ParameterAttributes.None, null);
								}
								object[] value = (object[])arr[i + 1];
								if (value[0].Equals(AnnotationDefaultAttribute.TAG_ANNOTATION))
								{
									ann.Apply(loader, pb, value);
								}
								else
								{
									for (int j = 1; j < value.Length; j++)
									{
										ann.Apply(loader, pb, value[j]);
									}
								}
								break;
							}
						}
					}