Hi All,

I've recently upgraded an old ActiveRecord/Monorail application to
ActiveRecord 2.0 (RTM) & Monorail trunk.

Everything went pretty smoothly - but I'm now getting some data
binding issues when using [ARDataBind] - as part of the upgrade I now
have to specify what proxy factory NHibernate should use, and it seems
like the proxy is causing some unwanted side effects when it comes to
binding?  Interestingly - swapping between Linfu and Dynamic proxy
also changes the nature of the error, as below...

If I use LinFu dynamic proxy w/Nhibernate, I get an exception thrown
on invoking an action with an [ARDataBind] parameter:

Castle.MonoRail.Framework.MonoRailException: Error processing MonoRail
request. Action Save on controller Product --->
Castle.MonoRail.Framework.MonoRailException: Error building method
arguments. Last param analyzed was product with value '' --->
Castle.Components.Binder.BindingException: Unexpected item on the
stack: found Seller, expecting Product
   at Castle.Components.Binder.DataBinder.PopInstance(Object instance,
String prefix)
   at Castle.MonoRail.ActiveRecordSupport.ARDataBinder.PopInstance
(Object instance, String prefix)
   at
Castle.Components.Binder.DataBinder.InternalRecursiveBindObjectInstance
(Object instance, String prefix, CompositeNode node)
   at
Castle.Components.Binder.DataBinder.InternalRecursiveBindObjectInstance
(Object instance, String prefix, Node node)
   at Castle.Components.Binder.DataBinder.InternalBindObject(Type
instanceType, String paramPrefix, Node node, Boolean& succeeded)
   at Castle.Components.Binder.DataBinder.InternalBindObject(Type
instanceType, String paramPrefix, Node node)
   at Castle.Components.Binder.DataBinder.BindObject(Type targetType,
String prefix, String excludedProperties, String allowedProperties,
CompositeNode treeRoot)
   at Castle.MonoRail.ActiveRecordSupport.ARDataBinder.BindObject(Type
targetType, String prefix, String exclude, String allow, String
expect, CompositeNode treeRoot)
   at Castle.MonoRail.ActiveRecordSupport.ARDataBindAttribute.Bind
(IEngineContext context, IController controller, IControllerContext
controllerContext, ParameterInfo parameterInfo)
   at
Castle.MonoRail.Framework.SmartDispatcherController.BuildMethodArguments
(ParameterInfo[] parameters, IRequest request, IDictionary`2
actionArgs)
   --- End of inner exception stack trace ---
   at
Castle.MonoRail.Framework.SmartDispatcherController.BuildMethodArguments
(ParameterInfo[] parameters, IRequest request, IDictionary`2
actionArgs)
   at Castle.MonoRail.Framework.ExtJSController.InvokeMethod
(MethodInfo method, IRequest request, IDictionary`2 actionArgs) in C:
\dev\Projects\Catch\EnterpriseTester\app\src\MonoRail.ModuleFramework
\ExtJS\ExtJSController.cs:line 181
   at Castle.MonoRail.Framework.ActionMethodExecutorCompatible.Execute
(IEngineContext engineContext, IController controller,
IControllerContext context)
   at Castle.MonoRail.Framework.Controller.RunActionAndRenderView()
   at Castle.MonoRail.Framework.Controller.Process(IEngineContext
engineContext, IControllerContext context)
   at Castle.MonoRail.Framework.BaseHttpHandler.Process(HttpContext
context)
   --- End of inner exception stack trace ---
   at Castle.MonoRail.Framework.BaseHttpHandler.Process(HttpContext
context)
   at Castle.MonoRail.Framework.BaseHttpHandler.ProcessRequest
(HttpContext context)
   at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute
()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
Boolean& completedSynchronously)

Closest thing I could find related to this issue was:

http://markmail.org/message/zcqsbvywmjx267gg#query:Unexpected%20item%20on%20the%20stack%20castle%20project+page:1+mid:2vktx5aqxoc3j3hm+state:results

But that was related to a class where GetHashCode/Equals was
overridden, where as my ActiveRecord models don't implement either of
those methods...

Now, If instead I use Castle Dynamic Proxy w/ Nhibernate the Action
does not throw an exception, but I get a data binding error:

"NHibernate.Proxy.INHibernateProxy.HibernateLazyInitializer" => "node
is not Composite but still need to recurse to
Proxy.INHibernateProxy.HibernateLazyInitializer"

Closest thing I Could find related to this issue was:

http://markmail.org/message/6yr64gvtn65cek5x

But this was fixed in Trunk ages ago...

Any thoughts/suggestions on what my problem might be? We have other
projects running off Monorail/ActiveRecord trunk without issues.

--

You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.


Reply via email to