/// <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); }
/// <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> /// 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(); }
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 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 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 GetResolvableNullCodes() { IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>(); Expect.Call(res.GetCodes()).Return(null); Expect.Call(res.DefaultMessage).Return(null); mocks.ReplayAll(); GetMessage(res, CultureInfo.CurrentCulture); mocks.VerifyAll(); }
public void GetResolvableNullCodes() { IMessageSourceResolvable res = (IMessageSourceResolvable)mocks.CreateMock(typeof(IMessageSourceResolvable)); Expect.Call(res.GetCodes()).Return(null); Expect.Call(res.DefaultMessage).Return(null); mocks.ReplayAll(); GetMessage(res, CultureInfo.CurrentCulture); mocks.VerifyAll(); }
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)); }
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)); }
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 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 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(); }
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 GetResolvableNullCodes() { IMessageSourceResolvable res = mocks.StrictMock <IMessageSourceResolvable>(); Expect.Call(res.GetCodes()).Return(null); Expect.Call(res.DefaultMessage).Return(null); mocks.ReplayAll(); Assert.Throws <NoSuchMessageException>(() => GetMessage(res, CultureInfo.CurrentCulture)); mocks.VerifyAll(); }
public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture) { if (StringUtils.HasText(resolvable.DefaultMessage)) { return(resolvable.DefaultMessage); } string[] codes = resolvable.GetCodes(); string code = (codes != null && codes.Length > 0 ? codes[0] : string.Empty); throw new NoSuchMessageException(code, culture); }
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"); }
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(); }
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(); }
public void GetMessageWithNoParentMessageSourceAndMessageSourceResolvableAndCulture() { const string expectedName = "Rick Evans"; IMessageSourceResolvable resolvable = A.Fake <IMessageSourceResolvable>(); A.CallTo(() => resolvable.DefaultMessage).Returns(expectedName); DelegatingMessageSource source = new DelegatingMessageSource(); string name = source.GetMessage(resolvable, CultureInfo.InvariantCulture); Assert.AreEqual(expectedName, name); }
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(); }
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 GetMessageWithNoParentMessageSourceAndMessageSourceResolvableAndCulture() { const string expectedName = "Rick Evans"; IMessageSourceResolvable resolvable = mocks.StrictMock <IMessageSourceResolvable>(); Expect.Call(resolvable.DefaultMessage).Return(expectedName); Expect.Call(resolvable.DefaultMessage).Return(expectedName); DelegatingMessageSource source = new DelegatingMessageSource(); mocks.ReplayAll(); string name = source.GetMessage(resolvable, CultureInfo.InvariantCulture); Assert.AreEqual(expectedName, name); //mock.Verify(); 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"); }
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> /// Search through the given array of objects, find any /// MessageSourceResolvable objects and resolve them. /// </summary> /// <remarks> /// Allows for messages to have MessageSourceResolvables as arguments. /// </remarks> /// /// <param name="args">The array of arguments for a message.</param> /// <param name="culture">The <see cref="System.Globalization.CultureInfo"/> with which the /// resource is associated.</param> /// <returns>An array of arguments with any IMessageSourceResolvables resolved</returns> protected virtual object[] ResolveArguments(object[] args, CultureInfo culture) { if (args == null) { return(new object[0]); } object[] resolvedArgs = new object[args.Length]; for (int i = 0; i < args.Length; i++) { IMessageSourceResolvable resolvable = args[i] as IMessageSourceResolvable; if (resolvable != null) { resolvedArgs[i] = GetMessage(resolvable, culture); } else { resolvedArgs[i] = args[i]; } } return(resolvedArgs); }
/// <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 (see above for /// the return value in the case of an unsuccessful lookup). /// </returns> /// <exception cref="Spring.Context.NoSuchMessageException"> /// If the message could not be resolved. /// </exception> /// <exception cref="Spring.Context.NoSuchMessageException"> /// If the message could not be resolved. /// </exception> /// <seealso cref="Spring.Context.IMessageSource.GetMessage(IMessageSourceResolvable, CultureInfo)"/> public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture) { return(ParentMessageSource.GetMessage(resolvable, culture)); }
/// <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 (see above for /// the return value in the case of an unsuccessful lookup). /// </returns> /// <exception cref="Spring.Context.NoSuchMessageException"> /// If the message could not be resolved. /// </exception> /// <seealso cref="Spring.Context.IMessageSource.GetMessage(IMessageSourceResolvable, CultureInfo)"/> public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture) { return MessageSource.GetMessage(resolvable, culture); }
public void SetUp() { mocks = new MockRepository(); mockMsgSource = mocks.StrictMock <IMessageSource>(); mockMsgSourceResolvable = mocks.StrictMock <IMessageSourceResolvable>(); }
/// <summary> /// Retrieve a mesage using the given /// <see cref="Spring.Context.IMessageSourceResolvable"/>. /// </summary> /// <param name="resolvable"> /// The <see cref="Spring.Context.IMessageSourceResolvable"/>. /// </param> /// <returns>The message.</returns> /// <exception cref="NoSuchMessageException"> /// If the message could not be found. /// </exception> public string GetMessage(IMessageSourceResolvable resolvable) { return GetMessage(resolvable, _defaultCultureInfo); }
/// <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 SetUp() { mocks = new MockRepository(); mockMsgSource = mocks.StrictMock<IMessageSource>(); mockMsgSourceResolvable = mocks.StrictMock<IMessageSourceResolvable>(); }
public void SetUp() { mocks = new MockRepository(); mockMsgSource = (IMessageSource) mocks.CreateMock(typeof(IMessageSource)); mockMsgSourceResolvable = (IMessageSourceResolvable) mocks.CreateMock(typeof(IMessageSourceResolvable)); }
public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture) { if (StringUtils.HasText(resolvable.DefaultMessage)) { return resolvable.DefaultMessage; } IList<string> codes = resolvable.GetCodes(); string code = (codes != null && codes.Count > 0 ? codes[0] : string.Empty); throw new NoSuchMessageException(code, culture); }
public void SetUp() { mocks = new MockRepository(); mockMsgSource = (IMessageSource)mocks.CreateMock(typeof(IMessageSource)); mockMsgSourceResolvable = (IMessageSourceResolvable)mocks.CreateMock(typeof(IMessageSourceResolvable)); }
public string GetMessage(IMessageSourceResolvable resolvable, CultureInfo culture) { return null; }