public override bool Validate()
        {
            Log(LogMessage.SeverityType.Info, string.Format("Checking custom field for {0}...", containingTypeToken.Equals("Theme") ? "Feature Group" : containingTypeToken));

            if (!V1Processor.AttributeExists(containingTypeToken, fieldName))
            {
                Log(LogMessage.SeverityType.Error, string.Format("Custom field {0} is not assigned to type {1}", fieldName, containingTypeToken));
                return(false);
            }

            try {
                var availableValues = V1Processor.GetAvailableListValues(containingTypeToken, fieldName);

                if (listValueTokens != null && listValueTokens.Length > 0)
                {
                    foreach (var token in listValueTokens.Where(token => availableValues.Find(token) == null))
                    {
                        Log(LogMessage.SeverityType.Error, string.Format("Possible custom field value '{0}' is not within available values.", token));
                        return(false);
                    }
                }
            } catch (VersionOneException ex) {
                Log(LogMessage.SeverityType.Debug, "Exception during custom field validation: " + ex.Message + "; proceeding.");
                return(false);
            }

            Log(LogMessage.SeverityType.Info, "Custom field check successful.");
            return(true);
        }
        public override bool Validate()
        {
            Log(LogMessage.SeverityType.Info, string.Format("Checking {0} field...", description));

            if (string.IsNullOrEmpty(fieldName))
            {
                Log(LogMessage.SeverityType.Warning, "Field name is omitted, corresponding functionality will not run.");
                return(true);
            }

            if (!V1Processor.AttributeExists(containingTypeToken, fieldName))
            {
                Log(LogMessage.SeverityType.Error, string.Format("Custom field {0} is not assigned to type {1}", fieldName, containingTypeToken));
                return(false);
            }

            Log(LogMessage.SeverityType.Info, "Custom field check successful.");
            return(true);
        }
        public override bool Validate()
        {
            var typeWorkitem = containingTypeToken.Equals("Theme") ? "Feature Group" : containingTypeToken;

            Log(LogMessage.SeverityType.Info, string.Format("Checking custom field for {0}...", typeWorkitem));

            if (string.IsNullOrEmpty(fieldName))
            {
                Log(LogMessage.SeverityType.Error, "Configuration contains undefined or empty field name.");
                return(false);
            }

            if (!V1Processor.AttributeExists(containingTypeToken, fieldName))
            {
                Log(LogMessage.SeverityType.Error, string.Format("Custom field {0} is not assigned to type {1}", fieldName, containingTypeToken));
                return(false);
            }

            Log(LogMessage.SeverityType.Info, "Custom field check successful.");
            return(true);
        }