I'm trying to solve an issue I posted about earlier, where a call to a
method of a ColdFusion CFC resulted in an error saying that the required
parameter - Estimate - was missing, even though I could see through
ServiceCapture that the object was, in fact, being sent.

I'm working on the theory that it's an object translation problem. So I'm
testing by calling a getEstimate() method on the CFC as the Flex app starts
up, which should return an empty instance of an Estimate. However, the
incoming result is being identified as an ObjectProxy, rather than being
matched to the Estimate.as VO. And for the life of me, I can't figure out
why. I have many other VO/CFC combinations in the application, all being
matched up correctly. But the Estimate object just won't fly.

I'm hoping someone here can help me figure it out.

For reference, here's Estimate.as:
========================
package model
{
    [RemoteClass(alias="meridien.model.estimate")]


    [Bindable]
    public class Estimate
    {
        public var estimateID:int = 0;
        public var order:Order = new Order;
        public var customer:Customer = new Customer;
        public var configAC:ArrayCollection = new ArrayCollection;

        public function Estimate(data:Object = null)
        {
            }
        }

    }
}
=========================

Here's estimate.cfc
=========================
<cfcomponent output="false">
    <cfproperty name="estimateID" type="numeric" default="0" />
    <cfproperty name="order" type="meridien.model.products.order" />
    <cfproperty name="customer" type="meridien.model.customer.customer" />
    <cfproperty name="configAC" type="array" default="">
</cfcomponent>
=========================

In my getEstimate() method, I have tried creating the object which I sent to
Flex in two ways:
=========================
    <cffunction name="getEstimate" access="remote" output="false"
returntype="any">
        <cfset var estimate =
createObject("component","meridien.model.estimate")>
        <cfreturn estimate />
    </cffunction>

... and

    <cffunction name="getEstimate" access="remote" output="false"
returntype="any">
        <cfset var estimate = structNew()/>
        <cfset estimate['__type__'] = "meridien.model.estimate">
        <cfset estimate['estimateID'] = 1 />
        <cfset estimate['order'] =
createObject("component","meridien.model.products.order") />
        <cfset estimate['customer'] =
createObject("component","meridien.model.customer.customer") />
        <cfset estimate['configAC'] = arrayNew(1) />
        <cfreturn estimate />
    </cffunction>
=============================

Neither work. The nested objects -- Customer and Order -- are recognized and
translated in Flex. But the outer Estimate object isn't.

Can anyone see what I'm doing wrong here? (All paths are correct, by the
way.)

-- 
Thanks,

Tom

Tom McNeer
MediumCool
http://www.mediumcool.com
1735 Johnson Road NE
Atlanta, GA 30306
404.589.0560

Reply via email to