/// <summary>
		/// Outputs the supplied <see cref="Spring.Context.IMessageSourceResolvable"/>
		/// as a nicely formatted <see cref="System.String"/>.
		/// </summary>
		/// <param name="resolvable">
		/// The <see cref="Spring.Context.IMessageSourceResolvable"/> to output.
		/// </param>
		public string VisitMessageSourceResolvableString(
			IMessageSourceResolvable resolvable)
		{
			StringBuilder builder = new StringBuilder();
			builder.Append("codes=[");
			builder.Append(StringUtils.ArrayToDelimitedString(resolvable.GetCodes(), ","));
			builder.Append("]; arguments=[");
			if (resolvable.GetArguments() == null)
			{
				builder.Append("null");
			}
			else
			{
				object[] arguments = resolvable.GetArguments();
				for (int i = 0; i < arguments.Length; i++)
				{
					builder.Append("(");
					builder.Append(arguments[i].GetType().Name);
					builder.Append(")[");
					builder.Append(arguments[i]);
					builder.Append("]");
					if (i < arguments.Length - 1)
					{
						builder.Append(", ");
					}
				}
			}
			builder.Append("]; defaultMessage=[");
			builder.Append(resolvable.DefaultMessage);
			builder.Append("]");
			return builder.ToString();
		}
        /// <summary>
        /// Outputs the supplied <see cref="Oragon.Spring.Context.IMessageSourceResolvable"/>
        /// as a nicely formatted <see cref="System.String"/>.
        /// </summary>
        /// <param name="resolvable">
        /// The <see cref="Oragon.Spring.Context.IMessageSourceResolvable"/> to output.
        /// </param>
        public string VisitMessageSourceResolvableString(
            IMessageSourceResolvable resolvable)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("codes=[");
            builder.Append(StringUtils.ArrayToDelimitedString(resolvable.GetCodes(), ","));
            builder.Append("]; arguments=[");
            if (resolvable.GetArguments() == null)
            {
                builder.Append("null");
            }
            else
            {
                object[] arguments = resolvable.GetArguments();
                for (int i = 0; i < arguments.Length; i++)
                {
                    builder.Append("(");
                    builder.Append(arguments[i].GetType().Name);
                    builder.Append(")[");
                    builder.Append(arguments[i]);
                    builder.Append("]");
                    if (i < arguments.Length - 1)
                    {
                        builder.Append(", ");
                    }
                }
            }
            builder.Append("]; defaultMessage=[");
            builder.Append(resolvable.DefaultMessage);
            builder.Append("]");
            return(builder.ToString());
        }
 /// <summary>
 /// Resolve the message using all of the attributes contained within
 /// the supplied <see cref="Spring.Context.IMessageSourceResolvable"/>
 /// argument.
 /// </summary>
 /// <param name="resolvable">The value object storing those attributes that are required to
 /// properly resolve a message.</param>
 /// <param name="culture">The <see cref="System.Globalization.CultureInfo"/> that represents
 /// the culture for which the resource is localized.</param>
 /// <returns>
 /// The resolved message if the lookup was successful.
 /// </returns>
 /// <exception cref="Spring.Context.NoSuchMessageException">
 /// If the message could not be resolved.
 /// </exception>
 public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture)
 {
     string[] codes = resolvable.GetCodes();
     if (codes == null)
     {
         codes = new string[0];
     }
     for (int i = 0; i < codes.Length; i++)
     {
         string msg = GetMessageInternal(codes[i], resolvable.GetArguments(), culture);
         if (msg != null)
         {
             return(msg);
         }
     }
     if (resolvable.DefaultMessage != null)
     {
         return(RenderDefaultMessage(resolvable.DefaultMessage, resolvable.GetArguments(), culture));
     }
     if (codes.Length > 0)
     {
         string fallback = GetDefaultMessage(codes[0]);
         if (fallback != null)
         {
             return(fallback);
         }
     }
     throw new NoSuchMessageException(codes.Length > 0 ? codes[codes.Length - 1] : null, culture);
 }
        public void GetMessageWithResolvableArguments()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.GetCodes()).Returns(new string[] { "code1" });
            A.CallTo(() => res.GetArguments()).Returns(new object[] { "my", "resolvable" });

            Assert.AreEqual("spring my resolvable", GetMessage("code2", CultureInfo.CurrentCulture, new object[] { "spring", res }), "Resolve");
        }
        public void GetMessageResolvableValidMessageAndCodeNullCulture()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.GetCodes()).Returns(new string[] { "code1" });
            A.CallTo(() => res.GetArguments()).Returns(new object[] { "my", "arguments" });

            Assert.AreEqual("my arguments", GetMessage(res, null), "Resolve");
        }
        public void GetMessageResolvableDefaultMessage()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.DefaultMessage).Returns("MyDefaultMessage");
            A.CallTo(() => res.GetCodes()).Returns(null);
            A.CallTo(() => res.GetArguments()).Returns(null);

            Assert.AreEqual("MyDefaultMessage", GetMessage(res, CultureInfo.CurrentCulture), "Default");
        }
        public void GetMessageResolvableValidMessageAndCodNullMessageFormat()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.DefaultMessage).Returns("myDefaultMessage");
            A.CallTo(() => res.GetCodes()).Returns(new string[] { "nullCode" });
            A.CallTo(() => res.GetArguments()).Returns(null);

            Assert.AreEqual("myDefaultMessage", GetMessage(res, null), "Resolve");
        }
        public void GetMessageResolvableValidMessageAndCode()
        {
            IMessageSourceResolvable res = (IMessageSourceResolvable)mocks.CreateMock(typeof(IMessageSourceResolvable));

            Expect.Call(res.GetCodes()).Return(new string[] { "code1" });
            Expect.Call(res.GetArguments()).Return(new object[] { "my", "arguments" }).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            Assert.AreEqual("my arguments", GetMessage(res, CultureInfo.CurrentCulture), "Resolve");
            mocks.VerifyAll();
        }
        public void GetMessageResolvableNoValidMessage()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.DefaultMessage).Returns(null);
            A.CallTo(() => res.GetCodes()).Returns(null);
            A.CallTo(() => res.GetArguments()).Returns(null);

            Assert.Throws <NoSuchMessageException>(() => GetMessage(res, CultureInfo.CurrentCulture));
        }
Esempio n. 10
0
        public void GetMessageWithResolvableArguments()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.GetCodes()).Return(new string[] { "code1" });
            Expect.Call(res.GetArguments()).Return(new object[] { "my", "resolvable" }).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            Assert.AreEqual("spring my resolvable", GetMessage("code2", CultureInfo.CurrentCulture, new object[] { "spring", res }), "Resolve");
            mocks.VerifyAll();
        }
Esempio n. 11
0
        public void GetMessageResolvableNoValidMessage()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.DefaultMessage).Return(null).Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(null);
            Expect.Call(res.GetArguments()).Return(null).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            Assert.Throws <NoSuchMessageException>(() => GetMessage(res, CultureInfo.CurrentCulture));
        }
Esempio n. 12
0
        public void GetMessageResolvableValidMessageAndCodeNullCulture()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.GetCodes()).Return(new string[] { "code1" });
            Expect.Call(res.GetArguments()).Return(new object[] { "my", "arguments" }).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            Assert.AreEqual("my arguments", GetMessage(res, null), "Resolve");
            mocks.VerifyAll();
        }
        public void GetMessageResolvableNoValidMessage()
        {
            IMessageSourceResolvable res = (IMessageSourceResolvable)mocks.CreateMock(typeof(IMessageSourceResolvable));

            Expect.Call(res.DefaultMessage).Return(null).Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(null);
            Expect.Call(res.GetArguments()).Return(null).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            GetMessage(res, CultureInfo.CurrentCulture);
        }
        public void GetMessageResolvableReturnsFirstCode()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.DefaultMessage).Returns(null);
            A.CallTo(() => res.GetCodes()).Returns(new string[] { "null" });
            A.CallTo(() => res.GetArguments()).Returns(null);

            UseCodeAsDefaultMessage = true;
            Assert.AreEqual("null", GetMessage(res, CultureInfo.CurrentCulture), "Code");
        }
Esempio n. 15
0
        public void GetMessageResolvableValidMessageAndCodNullMessageFormat()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.DefaultMessage).Return("myDefaultMessage").Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(new string[] { "nullCode" });
            Expect.Call(res.GetArguments()).Return(null).Repeat.AtLeastOnce();
            mocks.ReplayAll();

            Assert.AreEqual("myDefaultMessage", GetMessage(res, null), "Resolve");
            mocks.VerifyAll();
        }
Esempio n. 16
0
        public void GetMessageResolvableReturnsFirstCode()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.DefaultMessage).Return(null).Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(new string[] { "null" });
            Expect.Call(res.GetArguments()).Return(null).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            UseCodeAsDefaultMessage = true;
            Assert.AreEqual("null", GetMessage(res, CultureInfo.CurrentCulture), "Code");
            mocks.VerifyAll();
        }
Esempio n. 17
0
        public void GetMessageResolvableDefaultMessage()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.DefaultMessage).Return("MyDefaultMessage").Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(null);
            Expect.Call(res.GetArguments()).Return(null);
            mocks.ReplayAll();

            Assert.AreEqual("MyDefaultMessage", GetMessage(res, CultureInfo.CurrentCulture), "Default");

            mocks.VerifyAll();
        }
Esempio n. 18
0
        public void DefaultResolvableFromExistingResolvable()
        {
            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.DefaultMessage).Returns("defaultMessageFromMock");
            A.CallTo(() => res.GetCodes()).Returns(new string[] { "code1FromMock" });
            A.CallTo(() => res.GetArguments()).Returns(new object[] { "ArgumentFromMock" });

            DefaultMessageSourceResolvable dmr = new DefaultMessageSourceResolvable(res);

            Assert.AreEqual("defaultMessageFromMock", dmr.DefaultMessage, "default");
            Assert.AreEqual("code1FromMock", dmr.LastCode, "codes");
            Assert.AreEqual("ArgumentFromMock", (dmr.GetArguments())[0], "arguments");
        }
        public void DefaultResolvableFromExistingResolvable()
        {
            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.DefaultMessage).Return("defaultMessageFromMock").Repeat.AtLeastOnce();
            Expect.Call(res.GetCodes()).Return(new string[] { "code1FromMock" });
            Expect.Call(res.GetArguments()).Return(new object[] { "ArgumentFromMock" }).Repeat.AtLeastOnce();
            mocks.ReplayAll();
            DefaultMessageSourceResolvable dmr = new DefaultMessageSourceResolvable(res);

            Assert.AreEqual("defaultMessageFromMock", dmr.DefaultMessage, "default");
            Assert.AreEqual("code1FromMock", dmr.LastCode, "codes");
            Assert.AreEqual("ArgumentFromMock", (dmr.GetArguments())[0], "arguments");
            mocks.VerifyAll();
        }
        public void GetResolvableDefaultsToParentMessageSource()
        {
            string MSGCODE = "nullCode";

            object[] MSGARGS = new object[] { "arg1", "arg2" };

            IMessageSourceResolvable res = A.Fake <IMessageSourceResolvable>();

            A.CallTo(() => res.GetArguments()).Returns(MSGARGS);
            A.CallTo(() => res.GetCodes()).Returns(new string[] { MSGCODE }).Once();

            IMessageSource parentSource = A.Fake <IMessageSource>();

            A.CallTo(() => parentSource.GetMessage(MSGCODE, null, CultureInfo.CurrentCulture, A <object[]> ._)).Returns("MockMessageSource");
            ParentMessageSource = parentSource;

            Assert.AreEqual("MockMessageSource", GetMessage(res, CultureInfo.CurrentCulture), "My Message");
        }
Esempio n. 21
0
        public void GetResolvableDefaultsToParentMessageSource()
        {
            string MSGCODE = "nullCode";

            object[] MSGARGS = new object[] { "arg1", "arg2" };

            IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>();

            Expect.Call(res.GetArguments()).Return(MSGARGS);
            Expect.Call(res.GetCodes()).Return(new string[] { MSGCODE }).Repeat.Once();

            IMessageSource parentSource = mocks.StrictMock <IMessageSource>();

            Expect.Call(parentSource.GetMessage(MSGCODE, null, CultureInfo.CurrentCulture, MSGARGS)).Return(
                "MockMessageSource");
            ParentMessageSource = parentSource;

            mocks.ReplayAll();
            Assert.AreEqual("MockMessageSource", GetMessage(res, CultureInfo.CurrentCulture), "My Message");
            mocks.VerifyAll();
        }
		/// <summary>
		/// Creates a new instance of the
		/// <see cref="DefaultMessageSourceResolvable"/> class
		/// from another resolvable.
		/// </summary>
		/// <remarks>
		/// <p>
		/// This is the <i>copy constructor</i> for the
		/// <see cref="DefaultMessageSourceResolvable"/> class.
		/// </p>
		/// </remarks>
		/// <param name="resolvable">
		/// The <see cref="Spring.Context.IMessageSourceResolvable"/> to be copied.
		/// </param>
		/// <exception cref="System.NullReferenceException">
		/// If the supplied <paramref name="resolvable"/> is <see langword="null"/>.
		/// </exception>
		public DefaultMessageSourceResolvable(IMessageSourceResolvable resolvable)
			: this(resolvable.GetCodes(), resolvable.GetArguments(), resolvable.DefaultMessage)
		{
		}
Esempio n. 23
0
 /// <summary>
 /// Creates a new instance of the
 /// <see cref="DefaultMessageSourceResolvable"/> class
 /// from another resolvable.
 /// </summary>
 /// <remarks>
 /// <p>
 /// This is the <i>copy constructor</i> for the
 /// <see cref="DefaultMessageSourceResolvable"/> class.
 /// </p>
 /// </remarks>
 /// <param name="resolvable">
 /// The <see cref="Spring.Context.IMessageSourceResolvable"/> to be copied.
 /// </param>
 /// <exception cref="System.NullReferenceException">
 /// If the supplied <paramref name="resolvable"/> is <see langword="null"/>.
 /// </exception>
 public DefaultMessageSourceResolvable(IMessageSourceResolvable resolvable)
     : this(resolvable.GetCodes(), resolvable.GetArguments(), resolvable.DefaultMessage)
 {
 }
 /// <summary>
 /// Resolve the message using all of the attributes contained within
 /// the supplied <see cref="Spring.Context.IMessageSourceResolvable"/>
 /// argument.
 /// </summary>
 /// <param name="resolvable">The value object storing those attributes that are required to
 /// properly resolve a message.</param>
 /// <param name="culture">The <see cref="System.Globalization.CultureInfo"/> that represents
 /// the culture for which the resource is localized.</param>
 /// <returns>
 /// The resolved message if the lookup was successful.
 /// </returns>
 /// <exception cref="Spring.Context.NoSuchMessageException">
 /// If the message could not be resolved.
 /// </exception>
 public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture)
 {
     string[] codes = resolvable.GetCodes();
     if (codes == null) codes = new string[0];
     for (int i = 0; i < codes.Length; i++)
     {
         string msg = GetMessageInternal(codes[i], resolvable.GetArguments(), culture);
         if (msg != null) return msg;
     }
     if (resolvable.DefaultMessage != null)
         return RenderDefaultMessage(resolvable.DefaultMessage, resolvable.GetArguments(), culture);
     if (codes.Length > 0)
     {
         string fallback = GetDefaultMessage(codes[0]);
         if (fallback != null) return fallback;
     }
     throw new NoSuchMessageException(codes.Length > 0 ? codes[codes.Length - 1] : null, culture);
 }