bool OverrideWithGroupPoliciesForOracleConnection(OracleConnectionData connectionData,
                                                          bool readGroupPolicies,
                                                          IRegistryKey machineKey,
                                                          IRegistryKey userKey)
        {
            if (readGroupPolicies)
            {
                IRegistryKey policyKey = machineKey ?? userKey;
                if (policyKey != null)
                {
                    if (policyKey.IsPolicyKey && !policyKey.GetBoolValue(PolicyValueName).Value)
                    {
                        return(false);
                    }
                    try
                    {
                        String packagesOverride = policyKey.GetStringValue(PackagesPropertyName);

                        connectionData.Packages.Clear();
                        Dictionary <String, String> packagesDictionary = new Dictionary <string, string>();
                        KeyValuePairParser.ExtractKeyValueEntries(packagesOverride, packagesDictionary);
                        foreach (KeyValuePair <String, String> kvp in packagesDictionary)
                        {
                            connectionData.Packages.Add(new OraclePackageData(kvp.Key, kvp.Value));
                        }
                    }
                    catch (RegistryAccessException ex)
                    {
                        LogExceptionWhileOverriding(ex);
                    }
                }
            }

            return(true);
        }
Example #2
0
        public void ParseThrowsSyntaxError(string expression, int pos)
        {
            // Arrange & Act & Assert
            Action test = () => KeyValuePairParser.Parse(expression);

            ExceptionAssert.Throws <ODataException>(test, string.Format("Syntax error at position {0} in '{1}'.", pos, expression));
        }
Example #3
0
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            configurationObject.PropertyMappings.Add(new FaultContractExceptionHandlerMappingData("name1", "value1"));
            configurationObject.PropertyMappings.Add(new FaultContractExceptionHandlerMappingData("name2", "value2"));
            configurationObject.ExceptionMessage  = "message";
            configurationObject.FaultContractType = "fault contract";

            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            contentBuilder.StartCategory("category");
            contentBuilder.StartPolicy("policy", "policy key");
            provider.InvokeAddAdministrativeTemplateDirectives(contentBuilder, configurationObject, configurationSource, "TestApp");
            contentBuilder.EndPolicy();
            contentBuilder.EndCategory();

            MockAdmContent            content = contentBuilder.GetMockContent();
            IEnumerator <AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();

            categoriesEnumerator.MoveNext();
            IEnumerator <AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            policiesEnumerator.MoveNext();
            IEnumerator <AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(String.Format(Resources.HandlerPartNameTemplate, configurationObject.Name),
                            partsEnumerator.Current.PartName);

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(Resources.FaultContractExceptionHandlerExceptionMessagePartName, partsEnumerator.Current.PartName);
            Assert.IsNotNull(partsEnumerator.Current.KeyName);
            Assert.AreEqual(FaultContractExceptionHandlerDataManageabilityProvider.ExceptionMessagePropertyName,
                            partsEnumerator.Current.ValueName);

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(Resources.FaultContractExceptionHandlerFaultContractTypePartName, partsEnumerator.Current.PartName);
            Assert.IsNotNull(partsEnumerator.Current.KeyName);
            Assert.AreEqual(FaultContractExceptionHandlerDataManageabilityProvider.FaultContractTypePropertyName,
                            partsEnumerator.Current.ValueName);

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(Resources.FaultContractExceptionHandlerAttributesPartName, partsEnumerator.Current.PartName);
            Assert.AreEqual(FaultContractExceptionHandlerDataManageabilityProvider.AttributesPropertyName,
                            partsEnumerator.Current.ValueName);
            Assert.IsNotNull(((AdmEditTextPart)partsEnumerator.Current).KeyName);
            IDictionary <String, String> attributes = new Dictionary <String, String>();

            KeyValuePairParser.ExtractKeyValueEntries(((AdmEditTextPart)partsEnumerator.Current).DefaultValue, attributes);
            Assert.AreEqual(2, attributes.Count);
            Assert.AreEqual("value1", attributes["name1"]);
            Assert.AreEqual("value2", attributes["name2"]);

            Assert.IsFalse(partsEnumerator.MoveNext());
        }
Example #4
0
        public void ParseThrowsMultipleLiteralsNotAllowed()
        {
            // Arrange & Act & Assert
            Action test = () => KeyValuePairParser.Parse(" inOffice , xzg  ");

            ExceptionAssert.Throws <ODataException>(test, "' inOffice , xzg  ' is not a valid expression.Single literal is only for single key. Multiple keys should use key=value.");
        }
Example #5
0
        public ArgKeyValuePairs ParseToKeyValuePairs(params string[] args)
        {
            var parser    = new KeyValuePairParser();
            var jointArgs = string.Join(" ", args);

            return(parser.Parse(jointArgs));
        }
        public void can_parse_a_single_pair()
        {
            var first = KeyValuePairParser.Parse("\"first\"=123").SingleOrDefault();

            Assert.AreEqual("first", first.Key, "first.Key");
            Assert.AreEqual(123, first.Value, "first.Value");
        }
        public void can_lex_string(string input, string expected)
        {
            var token = KeyValuePairParser.Lex(input).FirstOrDefault();

            Assert.AreEqual(TokenType.String, token.Type);
            Assert.AreEqual(expected, token.Value);
        }
Example #8
0
        public void ParseMethodShouldReturnEmptyCollectionWhenArgsAreEmptyString(string args)
        {
            var collection = new KeyValuePairParser().Parse(args);

            collection.Should().NotBeNull();
            collection.Count.Should().Be(0);
        }
        public void can_lex_single_null()
        {
            var token = KeyValuePairParser.Lex("null").FirstOrDefault();

            Assert.AreEqual(TokenType.Null, token.Type);
            Assert.AreEqual(null, token.Value);
        }
Example #10
0
        public void ParseThrowsUnterminatedStringLiteral()
        {
            // Arrange & Act & Assert
            Action test = () => KeyValuePairParser.Parse(" inOffice='xzg  ");

            ExceptionAssert.Throws <ODataException>(test, "There is an unterminated string literal at position 16 in ' inOffice='xzg  '.");
        }
Example #11
0
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();

            OracleConnectionData data1 = new OracleConnectionData();

            section.OracleConnectionsData.Add(data1);
            data1.Name = "data1";
            data1.Packages.Add(new OraclePackageData("name1", "prefix1"));
            data1.Packages.Add(new OraclePackageData("name2", "pre;fix2"));
            OracleConnectionData data2 = new OracleConnectionData();

            section.OracleConnectionsData.Add(data2);
            data2.Name = "data2";

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            provider.InvokeAddAdministrativeTemplateDirectives(contentBuilder, section, configurationSource, "TestApp");

            MockAdmContent            content = contentBuilder.GetMockContent();
            IEnumerator <AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();

            Assert.IsTrue(categoriesEnumerator.MoveNext());
            Assert.AreEqual(Resources.DatabaseCategoryName, categoriesEnumerator.Current.Name);
            IEnumerator <AdmCategory> subCategoriesEnumerator = categoriesEnumerator.Current.Categories.GetEnumerator();

            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            Assert.AreEqual(Resources.OracleConnectionsCategoryName, subCategoriesEnumerator.Current.Name);
            IEnumerator <AdmPolicy> policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();

            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual(String.Format(Resources.OracleConnectionPolicyNameTemplate, data1.Name),
                            policiesEnumerator.Current.Name);
            IEnumerator <AdmPart> oracleDataPartsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(oracleDataPartsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), oracleDataPartsEnumerator.Current.GetType());
            Assert.IsNull(oracleDataPartsEnumerator.Current.KeyName);
            Assert.AreEqual(OracleConnectionSettingsManageabilityProvider.PackagesPropertyName,
                            oracleDataPartsEnumerator.Current.ValueName);
            Assert.AreEqual(Resources.OracleConnectionPackagesPartName,
                            oracleDataPartsEnumerator.Current.PartName);
            IDictionary <String, String> packages = new Dictionary <String, String>();

            KeyValuePairParser.ExtractKeyValueEntries(((AdmEditTextPart)oracleDataPartsEnumerator.Current).DefaultValue, packages);
            Assert.AreEqual(2, packages.Count);
            Assert.AreEqual("prefix1", packages["name1"]);
            Assert.AreEqual("pre;fix2", packages["name2"]);

            Assert.IsFalse(oracleDataPartsEnumerator.MoveNext());
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.IsFalse(policiesEnumerator.MoveNext());

            Assert.IsFalse(subCategoriesEnumerator.MoveNext());
            IEnumerator <AdmPolicy> sectionPoliciesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            Assert.IsFalse(sectionPoliciesEnumerator.MoveNext());
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
        public void ParseReturnsNullForNullEmptyOrWhitespaceString(string expression)
        {
            // Arrange & Act
            IDictionary <string, string> pairs = KeyValuePairParser.Parse(expression);

            // Assert
            Assert.Null(pairs);
        }
        public void can_lex_single_token(string input, object expected)
        {
            TokenType expectedTT = (TokenType)expected;
            var       token      = KeyValuePairParser.Lex(input).FirstOrDefault();

            Assert.AreEqual(expectedTT, token.Type);
            Assert.AreEqual(input, token.Value);
        }
Example #14
0
        public void ParseMethodShouldParseSingleKeyValueParameterWithDoubleSlash(string args, string expectedKey, string expectedValue)
        {
            var collection = new KeyValuePairParser().Parse(args);

            collection.Should().NotBeNull();
            collection.Count.Should().Be(1);
            collection[0].Key.Should().Be(expectedKey);
            collection[0].Value.Should().Be(expectedValue);
        }
Example #15
0
        public void ParseForParameterAliasWorks(string expression)
        {
            // Arrange & Act
            IDictionary <string, string> pairs = KeyValuePairParser.Parse(expression);

            Assert.NotNull(pairs);
            Assert.Equal(2, pairs.Count);
            Assert.Equal("@p1", pairs["123"]);
            Assert.Equal("@p2", pairs["myname"]);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="routeValues"></param>
        /// <param name="parameterMappings"></param>
        /// <returns></returns>
        internal static bool IsMatchParameters(RouteValueDictionary routeValues, IDictionary <string, string> parameterMappings)
        {
            Contract.Assert(routeValues != null);
            Contract.Assert(parameterMappings != null);

            // If we have a function(p1, p2, p3), where p3 is optinal parameter.
            // In controller, we may have two functions:
            // IActionResult function(p1, p2)   --> #1
            // IActionResult function(p1, p2, p3)  --> #2
            // #1  can match request like: ~/function(p1=a, p2=b) , where p1=a, p2=b   (----a)
            // It also match request like: ~/function(p1=a,p2=b,p3=c), where p2="b,p3=c".  (----b)
            // However, b request should match the #2 method and skip the #1 method.
            // Here is a workaround:
            // 1) We get all the parameters from the function and all parameter values from routeValue.
            // Combine them as a string. so, actualParameters = "p1=a,p2=b,p3=c"

            IDictionary <string, string> actualParameters = new Dictionary <string, string>();

            foreach (var parameter in parameterMappings)
            {
                // For a parameter mapping like: minSalary={min}
                // and a request like: ~/MyFunction(minSalary=2)
                // the routeValue includes the [min=2], so we should use the mapping name to retrieve the value.
                string parameterTemp = parameter.Value;
                if (routeValues.TryGetValue(parameterTemp, out object rawValue))
                {
                    actualParameters[parameterTemp] = rawValue as string;
                }
            }

            if (!actualParameters.Any())
            {
                if (parameterMappings.Any())
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            string combintes = string.Join(",", actualParameters.Select(kvp => kvp.Key + "=" + kvp.Value));

            // 2) Extract the key/value pairs
            //   p1=a    p2=b    p3=c
            if (!KeyValuePairParser.TryParse(combintes, out IDictionary <string, string> parsedKeyValues))
            {
                return(false);
            }

            // 3) now the RequiredParameters (p1, p3) is not equal to actualParameters (p1, p2, p3)
            return(parameterMappings.Count == actualParameters.Keys.Count);
        }
Example #17
0
        /// <summary>
        /// Try to parse the route key value from route values and save the parsed values into update values.
        /// </summary>
        /// <param name="routeValues">The original route value from request.</param>
        /// <param name="updateValues">The updated/parsed route value.</param>
        /// <param name="parameterMappings">The parameter (request key) and argument (parameter name in the action) mapping.</param>
        /// <returns>true/false.</returns>
        public static bool TryParseRouteKey(RouteValueDictionary routeValues, RouteValueDictionary updateValues, IDictionary <string, string> parameterMappings)
        {
            if (routeValues == null)
            {
                throw Error.ArgumentNull(nameof(routeValues));
            }

            if (updateValues == null)
            {
                throw Error.ArgumentNull(nameof(updateValues));
            }

            // format the route key
            string routeKey = parameterMappings.BuildRouteKey();

            if (routeValues.TryGetValue(routeKey, out var value) && value != null)
            {
                string parameterValueString = Convert.ToString(value, CultureInfo.InvariantCulture);
                if (parameterValueString == null)
                {
                    return(false);
                }

                // Parse the string from request into key/value pairs
                if (KeyValuePairParser.TryParse(parameterValueString, out IDictionary <string, string> parsedKeyValues))
                {
                    // for single key pattern
                    if (parsedKeyValues.Count == 1 && parsedKeyValues.ContainsKey(string.Empty) &&
                        parameterMappings.Count == 1)
                    {
                        updateValues[parameterMappings.First().Value] = parsedKeyValues[string.Empty];
                        return(true);
                    }

                    // We should compare the parameters from request and parameter/template mapping.
                    if (!IsRouteKeyAndParameterMatch(parameterMappings, parsedKeyValues))
                    {
                        return(false);
                    }

                    foreach (var parameter in parsedKeyValues)
                    {
                        // We don't need to verify {parameter.Key} whether it's in the parameterMappings or not.
                        // Because we did it in "IsRouteKeyAndParameterMatch" method
                        string templateName = parameterMappings[parameter.Key];
                        updateValues[templateName] = parameter.Value;
                    }

                    return(true);
                }
            }

            return(false);
        }
Example #18
0
        public void ParseComplexFunctionParametersWorks(string expression)
        {
            // Arrange & Act
            IDictionary <string, string> pairs = KeyValuePairParser.Parse(expression);

            Assert.NotNull(pairs);
            Assert.Equal(3, pairs.Count);
            Assert.Equal("true", pairs["123"]);
            Assert.Equal("12345", pairs["inOffice"]);
            Assert.Equal("'abc,''efg'", pairs["name"]);
        }
Example #19
0
        public void ParseRetunsCorrectlyForSingleLiteralAndKeyValue(string expression)
        {
            // Arrange & Act
            IDictionary <string, string> pairs = KeyValuePairParser.Parse(expression);

            // Assert
            Assert.NotNull(pairs);
            Assert.Equal(2, pairs.Count);
            Assert.Equal("xzg", pairs[string.Empty]);
            Assert.Equal("1", pairs["inOffice"]);
        }
Example #20
0
        public void ParseMethodShouldParseDoubleKeyValueParameterWithEqualsSign(string args, int expectedLength, string[] expectedKeys, string[] expectedValues)
        {
            var collection = new KeyValuePairParser().Parse(args);

            collection.Should().NotBeNull();
            collection.Count.Should().Be(expectedLength);

            for (var i = 0; i < collection.Count; i++)
            {
                collection[i].Key.Should().Be(expectedKeys[i]);
                collection[i].Value.Should().Be(expectedValues[i]);
            }
        }
Example #21
0
        public void ParseMethodShouldBeAbleToParseDistinctTypes(string args, int expectedLength, string[] expectedKeys, string[] expectedValues)
        {
            var collection = new KeyValuePairParser().Parse(args);

            collection.Should().NotBeNull();
            collection.Count.Should().Be(expectedLength);

            for (var i = 0; i < collection.Count; i++)
            {
                collection[i].Key.Should().Be(expectedKeys[i]);
                collection[i].Value.Should().Be(expectedValues[i]);
            }
        }
Example #22
0
        private List <Dictionary <string, string> > ParseApplicableInstructions()
        {
            List <Dictionary <string, string> > instructions = new List <Dictionary <string, string> >();

            foreach (string platformName in this.ApplicablePlatformNamesMostGeneralFirst)
            {
                string resourceManifest = this.library.Metadata.ReadFile(false, "native/" + platformName + "/manifest.txt", true).Trim();
                if (resourceManifest.Length == 0)
                {
                    continue;
                }

                foreach (string lineRaw in resourceManifest.Split('\n'))
                {
                    string line = lineRaw.Trim();
                    if (line.Length == 0 || line[0] == '#')
                    {
                        continue;                                     // blank or comment
                    }
                    string[] parts = line.Split(COLON_CHAR, 2);

                    string command = parts[0].ToUpperInvariant().Trim();

                    Dictionary <string, string> values = KeyValuePairParser.Parse(parts[1]);
                    if (values == null)
                    {
                        throw new InvalidOperationException("The library '" + this.library.Metadata.ID + "' has a malformed copy instruction on the following line: " + lineRaw);
                    }
                    values["TYPE"] = command;

                    // pre-pend the current directory to any attributes that have a path. Currently this is just "from".
                    switch (command)
                    {
                    case "COPY_FILE":
                    case "COPY_FILES":
                    case "EMBED_FILE":
                    case "EMBED_FILES":
                    case "DOTNET_DLL":
                        if (values.ContainsKey("from"))
                        {
                            values["from"] = platformName + "/" + values["from"];
                        }
                        break;
                    }
                    instructions.Add(values);
                }
            }
            return(instructions);
        }
Example #23
0
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();

            configurationObject.Type = typeof(object);
            configurationObject.Attributes.Add("name1", "valu;e1");
            configurationObject.Attributes.Add("name2", "value2");

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            contentBuilder.StartCategory("category");
            contentBuilder.StartPolicy("policy", "policy key");
            provider.AddAdministrativeTemplateDirectives(contentBuilder, configurationObject, configurationSource, "TestApp");
            contentBuilder.EndPolicy();
            contentBuilder.EndCategory();

            MockAdmContent            content = contentBuilder.GetMockContent();
            IEnumerator <AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();

            categoriesEnumerator.MoveNext();
            IEnumerator <AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            policiesEnumerator.MoveNext();
            IEnumerator <AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmTextPart), partsEnumerator.Current.GetType());

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(CustomHandlerDataManageabilityProvider.ProviderTypePropertyName,
                            partsEnumerator.Current.ValueName);
            Assert.IsNotNull(partsEnumerator.Current.KeyName);
            Assert.AreEqual(typeof(object).AssemblyQualifiedName, ((AdmEditTextPart)partsEnumerator.Current).DefaultValue);

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual(CustomHandlerDataManageabilityProvider.AttributesPropertyName,
                            partsEnumerator.Current.ValueName);
            Assert.IsNotNull(partsEnumerator.Current.KeyName);
            IDictionary <String, String> attributes = new Dictionary <String, String>();

            KeyValuePairParser.ExtractKeyValueEntries(((AdmEditTextPart)partsEnumerator.Current).DefaultValue, attributes);
            Assert.AreEqual(2, attributes.Count);
            Assert.AreEqual("valu;e1", attributes["name1"]);
            Assert.AreEqual("value2", attributes["name2"]);

            Assert.IsFalse(partsEnumerator.MoveNext());
        }
        public void can_parse_a_multiple_pairs()
        {
            var seq   = KeyValuePairParser.Parse("\"first\"=123,\"second\"=true");
            var first = seq.ElementAt(0);

            Assert.AreEqual("first", first.Key, "first.Key");
            Assert.AreEqual(123, first.Value, "first.Value");

            var second = seq.ElementAt(1);

            Assert.AreEqual("second", second.Key, "second.Key");
            Assert.AreEqual(true, second.Value, "second.Value");

            Assert.AreEqual(2, seq.Count());
        }
Example #25
0
        public void TryParseWorksForSingleKeyString(string expression)
        {
            // Arrange & Act
            IDictionary <string, string> pairs1 = KeyValuePairParser.Parse(expression);
            bool result = KeyValuePairParser.TryParse(expression, out IDictionary <string, string> pairs2);

            // Assert
            Assert.True(result);
            Assert.Equal(pairs1, pairs2);

            KeyValuePair <string, string> keyValue = Assert.Single(pairs1);

            Assert.Equal(string.Empty, keyValue.Key);
            Assert.Equal("'abc'", keyValue.Value);
        }
Example #26
0
        protected override void OverrideWithGroupPolicies(AuthorizationRuleProviderData configurationObject, IRegistryKey policyKey)
        {
            String rulesOverride = policyKey.GetStringValue(RulesPropertyName);

            if (rulesOverride != null)
            {
                configurationObject.Rules.Clear();

                Dictionary <String, String> attributesDictionary = new Dictionary <string, string>();
                KeyValuePairParser.ExtractKeyValueEntries(rulesOverride, attributesDictionary);
                foreach (KeyValuePair <String, String> kvp in attributesDictionary)
                {
                    configurationObject.Rules.Add(new AuthorizationRuleData(kvp.Key, kvp.Value));
                }
            }
        }
Example #27
0
        public static bool SaveChanges(OracleConnectionSetting setting, ConfigurationElement sourceElement)
        {
            OracleConnectionData        element            = (OracleConnectionData)sourceElement;
            Dictionary <String, String> packagesDictionary = new Dictionary <string, string>();

            foreach (string encodedKeyValuePair in setting.Packages)
            {
                KeyValuePairParser.ExtractKeyValueEntries(encodedKeyValuePair, packagesDictionary);
            }
            element.Packages.Clear();
            foreach (KeyValuePair <String, String> kvp in packagesDictionary)
            {
                element.Packages.Add(new OraclePackageData(kvp.Key, kvp.Value));
            }
            return(true);
        }
        protected override void OverrideWithGroupPolicies(FaultContractExceptionHandlerData configurationObject, IRegistryKey policyKey)
        {
            String attributesOverride        = policyKey.GetStringValue(AttributesPropertyName);
            String exceptionMessageOverride  = policyKey.GetStringValue(ExceptionMessagePropertyName);
            String faultContractTypeOverride = policyKey.GetStringValue(FaultContractTypePropertyName);

            configurationObject.ExceptionMessage  = exceptionMessageOverride;
            configurationObject.FaultContractType = faultContractTypeOverride;
            configurationObject.PropertyMappings.Clear();
            Dictionary <String, String> attributesDictionary = new Dictionary <string, string>();

            KeyValuePairParser.ExtractKeyValueEntries(attributesOverride, attributesDictionary);
            foreach (KeyValuePair <String, String> kvp in attributesDictionary)
            {
                configurationObject.PropertyMappings.Add(new FaultContractExceptionHandlerMappingData(kvp.Key, kvp.Value));
            }
        }
        public void can_lex_sequence_of_tokens()
        {
            var tokens = KeyValuePairParser.Lex("\"first\"=123,\"second\"=true").GetEnumerator();

            Assert.AreEqual(true, tokens.MoveNext(), "first");
            Assert.AreEqual(new Token("first", TokenType.String), tokens.Current);
            Assert.AreEqual(true, tokens.MoveNext(), "=");
            Assert.AreEqual(new Token("=", TokenType.Equals), tokens.Current);
            Assert.AreEqual(true, tokens.MoveNext(), "123");
            Assert.AreEqual(new Token("123", TokenType.Number), tokens.Current);
            Assert.AreEqual(true, tokens.MoveNext(), ",");
            Assert.AreEqual(new Token(",", TokenType.Comma), tokens.Current);

            Assert.AreEqual(true, tokens.MoveNext(), "second");
            Assert.AreEqual(new Token("second", TokenType.String), tokens.Current);
            Assert.AreEqual(true, tokens.MoveNext(), "=");
            Assert.AreEqual(new Token("=", TokenType.Equals), tokens.Current);
            Assert.AreEqual(true, tokens.MoveNext(), "true");
            Assert.AreEqual(new Token("true", TokenType.True), tokens.Current);
            Assert.AreEqual(false, tokens.MoveNext(), "end");
        }
Example #30
0
        private bool OverrideWithGroupPoliciesAndGenerateWmiObjectsForOracleConnection(OracleConnectionData connectionData,
                                                                                       bool readGroupPolicies, IRegistryKey machineKey, IRegistryKey userKey,
                                                                                       bool generateWmiObjects, ICollection <ConfigurationSetting> wmiSettings)
        {
            if (readGroupPolicies)
            {
                IRegistryKey policyKey = machineKey != null ? machineKey : userKey;
                if (policyKey != null)
                {
                    if (policyKey.IsPolicyKey && !policyKey.GetBoolValue(PolicyValueName).Value)
                    {
                        return(false);
                    }
                    try
                    {
                        String packagesOverride = policyKey.GetStringValue(PackagesPropertyName);

                        connectionData.Packages.Clear();
                        Dictionary <String, String> packagesDictionary = new Dictionary <string, string>();
                        KeyValuePairParser.ExtractKeyValueEntries(packagesOverride, packagesDictionary);
                        foreach (KeyValuePair <String, String> kvp in packagesDictionary)
                        {
                            connectionData.Packages.Add(new OraclePackageData(kvp.Key, kvp.Value));
                        }
                    }
                    catch (RegistryAccessException ex)
                    {
                        LogExceptionWhileOverriding(ex);
                    }
                }
            }
            if (generateWmiObjects)
            {
                String[] packages = GeneratePackagesArray(connectionData.Packages);

                wmiSettings.Add(new OracleConnectionSetting(connectionData.Name, packages));
            }

            return(true);
        }