Пример #1
0
        public RulesetValidator(IValidationRuleset ruleset, string text) :
            this(ruleset)
        {
            iCalendarText = text;

            try
            {
                iCalendarSerializer serializer = new iCalendarSerializer();

                // Turn off speed optimization so line/col from
                // antlr are accurate.
                serializer.OptimizeForSpeed = false;

                iCalendar = serializer.Deserialize(new StringReader(text), typeof(iCalendar)) as iCalendar;
            }
            catch (antlr.RecognitionException ex)
            {
                _RecognitionError = new ValidationErrorWithLookup(
                    "calendarParseError",
                    ValidationErrorType.Error,
                    true,
                    ex.line,
                    ex.column);
            }
        }
Пример #2
0
        public RulesetValidator(IValidationRuleset ruleset, string text) :
            this(ruleset)
        {
            iCalendarText = text;

            try
            {
                iCalendarSerializer serializer = new iCalendarSerializer();
                
                // Turn off speed optimization so line/col from
                // antlr are accurate.
                serializer.OptimizeForSpeed = false;

                iCalendar = serializer.Deserialize(new StringReader(text), typeof(iCalendar)) as iCalendar;                
            }
            catch (antlr.RecognitionException ex)
            {
                _RecognitionError = new ValidationErrorWithLookup(
                    "calendarParseError", 
                    ValidationErrorType.Error, 
                    true, 
                    ex.line, 
                    ex.column);
            }
        }
Пример #3
0
 public TextValidationSerializer(
     IValidationRuleset ruleset,
     IValidationResult[] validationResults) :
     this()
 {
     Ruleset = ruleset;
     ValidationResults = validationResults;
 }
 public TextValidationSerializer(
     IValidationRuleset ruleset,
     IValidationResult[] validationResults) :
     this()
 {
     Ruleset           = ruleset;
     ValidationResults = validationResults;
 }
Пример #5
0
        public RulesetValidator(IResourceManager mgr, ILogger logger, IValidationRuleset ruleset, string text, bool verifyValidatorsExist)
            : this(mgr, logger, ruleset)
        {
            iCalendarText = text;

            if (verifyValidatorsExist)
                VerifyValidatorsExist();
        }
Пример #6
0
 public TextValidationSerializer(
     IValidationRuleset ruleset,
     ITestResult[] testResults) :
     this()
 {
     Ruleset = ruleset;
     TestResults = testResults;
 }
 public TextValidationSerializer(
     IValidationRuleset ruleset,
     ITestResult[] testResults) :
     this()
 {
     Ruleset     = ruleset;
     TestResults = testResults;
 }
 public TextValidationSerializer(
     IResourceManager mgr,
     IValidationRuleset ruleset,
     IValidationResultCollection validationResults)
     : this(mgr)
 {
     Ruleset = ruleset;
     ValidationResults = validationResults;
 }
 public TextValidationSerializer(
     IResourceManager mgr,
     IValidationRuleset ruleset,
     ITestResult[] testResults)
     : this(mgr)
 {
     Ruleset = ruleset;
     TestResults = testResults;
 }
Пример #10
0
 public XmlValidationSerializer(
     IXmlDocumentProvider docProvider,
     IValidationRuleset ruleset,
     IValidationResult[] validationResults) :
     this(docProvider)
 {
     Ruleset = ruleset;
     ValidationResults = validationResults;
 }
Пример #11
0
 public XmlValidationSerializer(
     IXmlDocumentProvider docProvider,
     IValidationRuleset ruleset,
     IValidationResult[] validationResults) :
     this(docProvider)
 {
     Ruleset           = ruleset;
     ValidationResults = validationResults;
 }
 public XmlValidationSerializer(
     IResourceManager mgr,
     IXmlDocumentProvider docProvider,
     IValidationRuleset ruleset,
     ITestResult[] testResults)
     : this(mgr, docProvider)
 {
     Ruleset = ruleset;
     TestResults = testResults;
 }
 public XmlValidationSerializer(
     IResourceManager mgr,
     IXmlDocumentProvider docProvider,
     IValidationRuleset ruleset,
     IValidationResultCollection validationResults)
     : this(mgr, docProvider)
 {
     Ruleset = ruleset;
     ValidationResults = validationResults;
 }
Пример #14
0
        static void Main(string[] args)
        {
            try
            {
                _Arguments = new CommandLineArgumentList(args, StringComparison.CurrentCultureIgnoreCase);

                IXmlDocumentProvider docProvider = null;

                // Initialize our xml document provider
                if (File.Exists("icalvalidSchema.zip"))
                {
                    docProvider = new XmlDocumentZipExtractor("icalvalidSchema.zip");
                }
                else if (Directory.Exists("icalvalidSchema"))
                {
                    docProvider = new LocalXmlDocumentProvider("icalvalidSchema");
                }
                else
                {
                    throw new Exception("A valid schema directory or zip file could not be located!");
                }

                // Setup the language to use for validation/tests
                SetupLanguage(docProvider);
                IValidationRuleset selectedRuleset = LoadRuleset(docProvider);

                if (_Arguments.Contains(_SchemaValidationArgument))
                {
                    SchemaTest(docProvider);
                    LanguageKeyValidation(docProvider);
                }
                else
                {
                    // Determine whether we are performing a self test, or
                    // validating an iCalendar file...
                    if (_Arguments.Contains(_TestArgument))
                    {
                        SelfTest(docProvider, selectedRuleset);
                    }
                    else
                    {
                        ValidateFile(docProvider, selectedRuleset);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Пример #15
0
        static void SelfTest(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);

            if (serializer != null)
            {
                Stream   stream;
                Encoding encoding;
                SetupStream(serializer, out stream, out encoding);

                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    RulesetValidator validator = new RulesetValidator(selectedRuleset);

                    Console.Write(string.Format(
                                      ResourceManager.GetString("performingSelfTest"),
                                      ResourceManager.GetString(selectedRuleset.NameString))
                                  );

                    serializer.TestResults = validator.Test();

                    Console.WriteLine(ResourceManager.GetString("done"));
                }

                try
                {
                    serializer.Serialize(stream, encoding);
                }
                finally
                {
                    stream.Close();
                }
            }
        }
Пример #16
0
        static IValidationRuleset LoadRuleset(IXmlDocumentProvider docProvider)
        {
            // Load some rulesets
            XmlValidationRulesetLoader loader   = new XmlValidationRulesetLoader(docProvider);
            List <IValidationRuleset>  rulesets = new List <IValidationRuleset>(loader.Load());

            // Determine a validation ruleset to use
            string validatorName = "Strict_2_0";

            if (_Arguments.Contains(_ValidatorArgument))
            {
                validatorName = _Arguments[_ValidatorArgument].Value;
            }

            // Select the ruleset
            IValidationRuleset selectedRuleset = rulesets.Find(
                delegate(IValidationRuleset rs)
            {
                return(string.Equals(rs.Name, validatorName, StringComparison.CurrentCultureIgnoreCase));
            }
                );

            return(selectedRuleset);
        }
Пример #17
0
 public RulesetValidator(IResourceManager mgr, IValidationRuleset ruleset, string text)
     : this(mgr, new NullLogger(), ruleset, text, false)
 {
 }
Пример #18
0
        static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            bool needsMoreArguments          = false;

            if (serializer != null)
            {
                string iCalText = null;
                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    if (_Arguments.Contains(_FileArgument))
                    {
                        // Load the calendar from a local file
                        Console.Write(ResourceManager.GetString("loadingCalendar"));
                        FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read);
                        if (fs != null)
                        {
                            StreamReader sr = new StreamReader(fs);
                            iCalText = sr.ReadToEnd();
                            sr.Close();
                        }
                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else if (_Arguments.Contains(_UriArgument))
                    {
                        // Load the calendar from a Uri
                        Console.Write(ResourceManager.GetString("loadingCalendar"));
                        Uri uri = new Uri(_Arguments[_UriArgument].Value);
                        string
                            username = null,
                            password = null;

                        if (_Arguments.Contains(_UsernameArgument))
                        {
                            username = _Arguments[_UsernameArgument].Value;
                            if (_Arguments.Contains(_PasswordArgument))
                            {
                                password = _Arguments[_PasswordArgument].Value;
                            }
                        }

                        WebClient client = new WebClient();
                        if (username != null && password != null)
                        {
                            client.Credentials = new System.Net.NetworkCredential(username, password);
                        }

                        iCalText = client.DownloadString(uri);
                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else
                    {
                        needsMoreArguments = true;
                    }

                    if (needsMoreArguments)
                    {
                        WriteDescription();
                    }
                    else
                    {
                        if (iCalText == null)
                        {
                            throw new Exception(ResourceManager.GetString("calendarNotFound"));
                        }
                        else
                        {
                            RulesetValidator rulesetValidator = new RulesetValidator(selectedRuleset, iCalText);

                            if (rulesetValidator != null)
                            {
                                Console.Write(string.Format(
                                                  ResourceManager.GetString("validatingCalendar"),
                                                  ResourceManager.GetString(selectedRuleset.NameString)
                                                  ));

                                serializer.ValidationResults = rulesetValidator.Validate();

                                Console.WriteLine(ResourceManager.GetString("done"));
                            }
                        }
                    }
                }

                Stream   stream;
                Encoding encoding;
                SetupStream(serializer, out stream, out encoding);

                try
                {
                    serializer.Serialize(stream, encoding);
                }
                finally
                {
                    stream.Close();
                }
            }
        }
Пример #19
0
 public RulesetValidator(IResourceManager mgr, ILogger logger, IValidationRuleset ruleset, string text)
     : this(mgr, logger, ruleset, text, false)
 {
 }
Пример #20
0
 public RulesetValidator(IValidationRuleset ruleset)
 {
     _Ruleset = ruleset;
 }
Пример #21
0
        protected byte[] Setup()
        {
            byte[] bytes = new byte[0];

            Debug = new Debug();
            Debug.Initialize();

            ISerializationSettings settings = SerializationContext.Default.GetService<ISerializationSettings>();
            settings.ParsingMode = ParsingModeType.Loose;
            settings.EnsureAccurateLineNumbers = true;
            settings.StoreExtraSerializationData = true;

            DocumentProvider = new DirectoryXmlDocumentProvider(Path.Combine(Request.PhysicalApplicationPath, "icalvalidSchema"));

            SelectedRuleset = null;
            try
            {
                ResourceManager = new ResourceManager();

                // Setup the language to use for validation/tests
                SetupLanguage();
                SelectedRuleset = LoadRuleset();
            }
            catch (ValidationRuleLoadException e)
            {
                Utils.StoreExceptionBlob("Setup: " + e.Message + e.StackTrace);
                bytes = Response.Output.Encoding.GetBytes(e.Message);
            }

            return bytes;
        }
Пример #22
0
        static void ValidateFile(string filename, IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            bool needsMoreArguments = false;

            if (serializer != null)
            {
                string iCalText = null;
                long byteCount = 0;

                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    // Load the calendar from a local file
                    Console.Write(ResourceManager.GetString("loadingCalendar"));
                    FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (fs != null)
                    {
                        // Get the calendar path so it can be reported later
                        _CalendarPath = Path.GetFullPath(filename);

                        StreamReader sr = new StreamReader(fs);
                        byteCount = fs.Length;
                        iCalText = sr.ReadToEnd();
                        sr.Close();
                    }
                    Console.WriteLine(ResourceManager.GetString("Done"));

                    if (iCalText == null)
                    {
                        throw new Exception(ResourceManager.GetString("calendarNotFound"));
                    }
                    else
                    {
                        RulesetValidator rulesetValidator = new RulesetValidator(ResourceManager, selectedRuleset, iCalText);

                        if (rulesetValidator != null)
                        {
                            Console.Write(string.Format(
                                ResourceManager.GetString("validatingCalendar"),
                                ResourceManager.GetString(selectedRuleset.NameString)
                            ));

                            serializer.ValidationResults = rulesetValidator.Validate();

                            // Set the original text for the validation
                            serializer.ValidationResults.CalendarPath = _CalendarPath;
                            serializer.ValidationResults.CalendarText = iCalText;
                            serializer.ValidationResults.ByteCount = byteCount;

                            Console.WriteLine(ResourceManager.GetString("done"));
                        }
                    }

                    Stream stream;
                    Encoding encoding;
                    SetupStream(serializer, out stream, out encoding);

                    try
                    {
                        serializer.Serialize(stream, encoding, permalink: "");
                    }
                    finally
                    {
                        stream.Close();
                    }
                }
            }
        }
Пример #23
0
 public RulesetValidator(IValidationRuleset ruleset)
 {
     _Ruleset = ruleset;
 }
Пример #24
0
        static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            bool needsMoreArguments = false;

            if (serializer != null)
            {
                string iCalText = null;
                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    if (_Arguments.Contains(_FileArgument))
                    {
                        // Load the calendar from a local file
                        Console.Write(ResourceManager.GetString("loadingCalendar"));
                        FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read);
                        if (fs != null)
                        {
                            StreamReader sr = new StreamReader(fs);
                            iCalText = sr.ReadToEnd();
                            sr.Close();
                        }
                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else if (_Arguments.Contains(_UriArgument))
                    {
                        // Load the calendar from a Uri
                        Console.Write(ResourceManager.GetString("loadingCalendar"));
                        Uri uri = new Uri(_Arguments[_UriArgument].Value);
                        string
                            username = null,
                            password = null;

                        if (_Arguments.Contains(_UsernameArgument))
                        {
                            username = _Arguments[_UsernameArgument].Value;
                            if (_Arguments.Contains(_PasswordArgument))
                                password = _Arguments[_PasswordArgument].Value;
                        }

                        WebClient client = new WebClient();
                        if (username != null && password != null)
                            client.Credentials = new System.Net.NetworkCredential(username, password);

                        iCalText = client.DownloadString(uri);
                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else
                    {
                        needsMoreArguments = true;
                    }

                    if (needsMoreArguments)
                    {
                        WriteDescription();
                    }
                    else
                    {
                        if (iCalText == null)
                        {
                            throw new Exception(ResourceManager.GetString("calendarNotFound"));
                        }
                        else
                        {
                            RulesetValidator rulesetValidator = new RulesetValidator(selectedRuleset, iCalText);

                            if (rulesetValidator != null)
                            {
                                Console.Write(string.Format(
                                    ResourceManager.GetString("validatingCalendar"),
                                    ResourceManager.GetString(selectedRuleset.NameString)
                                ));

                                serializer.ValidationResults = rulesetValidator.Validate();

                                Console.WriteLine(ResourceManager.GetString("done"));
                            }
                        }
                    }
                }

                Stream stream;
                Encoding encoding;
                SetupStream(serializer, out stream, out encoding);

                try
                {
                    serializer.Serialize(stream, encoding);
                }
                finally
                {
                    stream.Close();
                }
            }
        }
Пример #25
0
        static void SelfTest(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            if (serializer != null)
            {
                Stream stream;
                Encoding encoding;
                SetupStream(serializer, out stream, out encoding);

                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    RulesetValidator validator = new RulesetValidator(selectedRuleset);

                    Console.Write(string.Format(
                        ResourceManager.GetString("performingSelfTest"),
                        ResourceManager.GetString(selectedRuleset.NameString))
                    );

                    serializer.TestResults = validator.Test();

                    Console.WriteLine(ResourceManager.GetString("done"));
                }

                try
                {
                    serializer.Serialize(stream, encoding);
                }
                finally
                {
                    stream.Close();
                }
            }            
        }
Пример #26
0
        static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            bool needsMoreArguments = false;

            if (serializer != null)
            {
                string iCalText = null;
                long byteCount = 0;

                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    if (_Arguments.Contains(_FileArgument))
                    {
                        // Load the calendar from a local file
                        Console.Write(ResourceManager.GetString("loadingCalendar"));
                        FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read);
                        if (fs != null)
                        {
                            // Get the calendar path so it can be reported later
                            _CalendarPath = Path.GetFullPath(_Arguments[_FileArgument].Value);

                            StreamReader sr = new StreamReader(fs);
                            byteCount = fs.Length;
                            iCalText = sr.ReadToEnd();
                            sr.Close();
                        }
                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else if (_Arguments.Contains(_UriArgument))
                    {
                        // Load the calendar from a Uri
                        Console.Write(ResourceManager.GetString("loadingCalendar"));

                        Uri uri = new Uri(_Arguments[_UriArgument].Value);
                        string
                            username = null,
                            password = null;

                        // Determine if credentials were included in the Uri
                        // NOTE: this is not recommended practice for numerous
                        // security reasons.
                        if (!string.IsNullOrEmpty(uri.UserInfo))
                        {
                            // Extract the embedded credentials from the Uri
                            string[] parts = uri.UserInfo.Split(':');
                            if (parts.Length == 2)
                            {
                                username = parts[0];
                                password = parts[1];
                            }
                        }

                        if (_Arguments.Contains(_UsernameArgument))
                        {
                            username = _Arguments[_UsernameArgument].Value;
                            if (_Arguments.Contains(_PasswordArgument))
                                password = _Arguments[_PasswordArgument].Value;
                        }

                        WebClient client = new WebClient();
                        if (username != null && password != null)
                            client.Credentials = new System.Net.NetworkCredential(username, password);

                        // Get the calendar path so it can be reported later
                        _CalendarPath = uri.OriginalString;
                        iCalText = client.DownloadString(uri);
                        byteCount = client.Encoding.GetByteCount(iCalText);

                        Console.WriteLine(ResourceManager.GetString("Done"));
                    }
                    else
                    {
                        needsMoreArguments = true;
                    }

                    if (needsMoreArguments)
                    {
                        WriteDescription();
                    }
                    else
                    {
                        if (iCalText == null)
                        {
                            throw new Exception(ResourceManager.GetString("calendarNotFound"));
                        }
                        else
                        {
                            RulesetValidator rulesetValidator = new RulesetValidator(ResourceManager, selectedRuleset, iCalText);

                            if (rulesetValidator != null)
                            {
                                Console.Write(string.Format(
                                    ResourceManager.GetString("validatingCalendar"),
                                    ResourceManager.GetString(selectedRuleset.NameString)
                                ));

                                serializer.ValidationResults = rulesetValidator.Validate();

                                // Set the original text for the validation
                                serializer.ValidationResults.CalendarPath = _CalendarPath;
                                serializer.ValidationResults.CalendarText = iCalText;
                                serializer.ValidationResults.ByteCount = byteCount;

                                Console.WriteLine(ResourceManager.GetString("done"));
                            }
                        }

                        Stream stream;
                        Encoding encoding;
                        SetupStream(serializer, out stream, out encoding);

                        try
                        {
                            serializer.Serialize(stream, encoding, permalink: "");
                        }
                        finally
                        {
                            stream.Close();
                        }

                        // Open the output file, if requested
                        OpenOutputFile(serializer);
                    }
                }
            }
        }
Пример #27
0
 public RulesetValidator(IResourceManager mgr, IValidationRuleset ruleset, string text, bool verifyValidatorsExist)
     : this(mgr, new NullLogger(), ruleset, text, verifyValidatorsExist)
 {
 }
Пример #28
0
        static void SelfTest(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset)
        {
            IValidationSerializer serializer = GetSerializer(docProvider);
            if (serializer != null)
            {
                Stream stream;
                Encoding encoding;
                SetupStream(serializer, out stream, out encoding);

                if (selectedRuleset != null)
                {
                    serializer.Ruleset = selectedRuleset;

                    Console.WriteLine(string.Format(
                        ResourceManager.GetString("performingSelfTest"),
                        ResourceManager.GetString(selectedRuleset.NameString))
                    );

                    RulesetValidator validator = new RulesetValidator(ResourceManager, selectedRuleset);
                    validator.TestProgress +=
                        delegate(object sender, TestProgressEventArgs e)
                        {
                            Console.CursorLeft = 0;
                            Console.Write(
                                string.Format(
                                    ResourceManager.GetString("testProgress"),
                                    e.Passed + e.Failed + e.NotRun,
                                    e.TotalTests
                                )
                            );
                        };

                    serializer.TestResults = validator.Test();
                }

                try
                {
                    serializer.Serialize(stream, encoding, permalink:"");
                }
                finally
                {
                    stream.Close();
                }

                // Open the output file, if requested
                OpenOutputFile(serializer);
            }
        }
Пример #29
0
 public RulesetValidator(IResourceManager mgr, ILogger logger, IValidationRuleset ruleset)
     : base(mgr, logger)
 {
     _Ruleset = ruleset;
 }