cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andre Juffer <ajuf...@sun3.oulu.fi>
Subject Re: Using business objects instead of XML
Date Sat, 02 Apr 2005 16:38:53 GMT
Leszek, and Others,

I have tried the following as well (flow script):

function DomainObject()
{
}
DomainObject.prototype.id;
DomainObject.prototype.name;

function something()
{
     ....

     // Get the request parameters.
     var domainObject = new DomainObject();
     domainObject.name = cocoon.request.getParameter("name");
     domainObject.id = 1000;
     cocoon.sendPage("page", { "DomainObject" : domainObject } );
}

The result of this is

org.apache.cocoon.ProcessingException: Exception during source 
resolving.: org.apache.excalibur.source.SourceException: The object 
type: class org.mozilla.javascript.NativeObject could not be serialized 
as a InputStream [object Object]

If I use one of my own domainObjects, that is, I have now

var domainObject = com.foo.SomeClass.doSomething()

the result is very similar:

org.apache.cocoon.ProcessingException: Exception during source 
resolving.: org.apache.excalibur.source.SourceException: The object 
type: class com.foo.DomainObject could not be serialized as a 
InputStream DomainObject - name: jfifiikss, id: 1000

(The last line is produced by the toString() method of the 
com.foo.DomainObject class.)

So, the key problem is that objects cannot be serialized as an 
InputStream for the pipeline, which occurs at

<map:generate src="module:flow-attr:DomainObject" />

in the sitemap.

Anybody any ideas about this? The basic question here is how exactly one 
can process objects instantiated in a flowscrip by the sitemap?

(Cocoon version 2.1.7)

Thanks,
Andre.

Leszek Gawron wrote:
> Andre Juffer wrote:
> 
>> Dear List,
>>
>> I am trying to insert a domain object into the pipiline with control 
>> flow following a suggestion given earlier on this list:
>>
>> http://www.mail-archive.com/users@cocoon.apache.org/msg23293.html
>>
>> Suppose, I return some object from a domain class instance, like
>>
>> var domainObject = com.foo.myClass.doSomething();
>>
>> The domainObject has all the getters available, e.g. getName(), etc, 
>> so it acts like a regular bean.
>>
>> Now, I would like insert this object in the pipeline with
>>
>> cocoon.sendPage ("page", domainObject);
> 
> try:
> cocoon.sendPage( "page", { "domainObject" : domainObject } );
> If you pass it as you previously did your domain object is the main 
> context. flow-attr:domainObject looks for an object "domainObject" in 
> main context so in fact in your case it queries for 
> /domainObject/domainObject which is incorrect
> 
>>
>> In the sitemap, I have
>>
>> <map:match pattern="page">
>>   <map:generate src="module:flow-attr:domainObject" />
>>   <map:serialize type="xml" />
>> </map:match>
> 
> 
>>
>> (This is just to see how it looks like.)
>>
>> The result of all this is an error of the form:
>>
>> org.apache.cocoon.ProcessingException: Exception during source 
>> resolving.: org.apache.excalibur.source.SourceException: The 
>> attribute: domainObject is empty
>>
>> This looks obvious to me, since it is probably not clear that the 
>> domainObject in facts represents some class, defined in 
>> com.foo.myClass. So, I tried to define the DomainObject class in 
>> JavaScripy, like
>>
>> function DomainObject()
>> {
>> }
>> DomainObject.prototype.name;
>>
>> and populate the object manually before calling cocoon.sendPage. The 
>> result is however the same.
>>
>> I am using cocoon 2.1.7.
>>
>> Could anyone point out in some detail how exactly I should do this.
>>
>> Thanks,
>>
> 
> 


-- 
Andre H. Juffer              | Phone: +358-8-553 1161
The Biocenter and            | Fax: +358-8-553-1141
     the Dep. of Biochemistry | Email: Andre.Juffer@oulu.fi
University of Oulu, Finland  | WWW: www.biochem.oulu.fi/Biocomputing/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message