Hi

Thanks for your help and atention.
I found a solution:  all documentations about integrating cocoon with exist (at cocoon wiki and also eXist wiki)
say that you should configure exist in cocoon.xconf like this:

<component-instance
class="org.apache.cocoon.components.source.impl.XMLDBSourceFactory"
name="xmldb">
   <driver class="org.exist.xmldb.DatabaseImpl" type="exist"/>
</component-instance>

but this is not the correct way, exist has its own source factory (org.exist.cocoon.XMLDBSourceFactory)
that is a modified version of (org.apache.cocoon.components.source.impl.XMLDBSourceFactory)
so the correct configuration is

<component-instance class="org.exist.cocoon.XMLDBSourceFactory" name="xmldb">
<driver class="org.exist.xmldb.DatabaseImpl" type="exist"/>
...

which works correctly and has no encoding problem.
I think that we should correct related documantation at both cocoon and exist site.
thanks
Abbas


Christofer Dutz <[EMAIL PROTECTED]> wrote:
Ok … I have to admit I haven’t used Modifyable Souces yet. I am used to XQuery with update extensions and XML-DB api. I would check if it is possible to set the encoding for the XML-Serializer. Since it is what generates the output.
 
Chris
 
 

Von: Abbas Mousavi [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 24. Mai 2006 18:04
An:
users@cocoon.apache.org
Betreff: Re: AW: AW: encoding problem with eXist database
 
Hi

I dont know how to use
String.getBytes(encoding) or XMLResourc.setContent(xml-string) , I explain my whole word:

I have this in the sitemap

<map:match pattern="*/*.xml">
                <map:generate type="html" src=""/>
                <map:transform src=""/>
                <map:serialize type="xml"/>
            </map:match>
that reads a html file from the disk and generates an xml

and I have this function in my flowscript. I call it when I want to
write to a source.

function write(){
var home = cocoon.parameters.home;
var name = cocoon.parameters.name;
//writeDoc('webdav://[EMAIL PROTECTED]:8080/exist-webdav/db/'+home+'/'+name+'.xml',name+'.xml');
writeDoc('xmldb:exist:///db/'+home+'/'+name+'.xml',name+'.xml');
writeDoc(name+'.htm',name+'.htm');
cocoon.redirectTo("");
}

function writeDoc(doc, pipeline) {
    var resolver = null;
    var source = null;
    var output = null;
   
    try {
        resolver = cocoon.getComponent(Packages.org.apache.excalibur.source.SourceResolver.ROLE);
        source = resolver.resolveURI(doc);


        if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource) {
            output = source.getOutputStream();
            cocoon.processPipelineTo(pipeline, {}, output);
            output.close();
        } else {
            cocoon.log.error("Cannot write to " + doc + ": not a modifiable source");
        }
    } catch (error) {
        cocoon.log.error("Error getting output stream: " + error);
    } finally {
        if (source != null) resolver.release(source);
        cocoon.releaseComponent(resolver);
        if (output != null) {
            try {
                output.close();
            } catch (error) {
                cocoon.log.error("Error closing output stream: " + error);
            }
        }
    }
}

as I said the first and second writeDoc() work but write wrong encoding
and the next writeDoc() works correct.


and another thing:

org.exist.cocoon.XMLDBSource has a setEncoding() method that sets the default encoding of outputstream
but the cocoon source resolver returns  
org.apache.cocoon.components.source.impl.XMLDBSource
which has not such method. Is there any way to use
org.exist.cocoon.XMLDBSource
instead of
org.apache.cocoon.components.source.impl.XMLDBSource ?
thanks.
Abbas




Christofer Dutz <[EMAIL PROTECTED]> wrote:
How exactly do you stroe your data? Do you use XMLResourc.setContent(xml-string)? You could try explicitly seting the input-Strings encoding using the String.getBytes(encoding) method.
 
If this doesn’t help. I’d try the exist mailinglist, the guys there should be able to help you solve your problems.
 
Chris
 
[ c h r i s t o f e r   d u t z ]

IT-Berater
univativ GmbH & Co. KG
Robert-Bosch-Str.
7, 64293 Darmstadt

fon:  0 61 51 / 66 717 -0
fax:  0 61 51 / 66 717 -29
email:  [EMAIL PROTECTED]
http://www.univativ.de

Darmstadt, Stuttgart, Karlsruhe, Düsseldorf
 
 

Von: Abbas Mousavi [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 24. Mai 2006 16:59
An: users@cocoon.apache.org
Betreff: Re: AW: encoding problem with eXist database
 
Hi chris

I have set container-encoding and form encoding and serializer encoding to utf-8.

also I can write the same pipeline to other sources (for example to hard disk)
truly by the same mechanism.

I think this problem has some thing related to eXist because I have tested the webdav interface to eXist and it was the same as xmldb: protocol: wrong encoding.

Christofer Dutz <[EMAIL PROTECTED]> wrote:
Hi Abbas,
 
I think you should check the settings in your web.xml (container-encoding and form-encoding) and the serializer settings in the sitemap.xmap. I think I remember having some encoding-problems with CForms. I guess cocoon will provide content encoded in the format set here. And since you are using cocoon to generate the document stored in the db, I’d give it a try.
 
Chris
 
[ c h r i s t o f e r   d u t z ]

IT-Berater
univativ GmbH & Co. KG
Robert-Bosch-Str.
7, 64293 Darmstadt

fon:  0 61 51 / 66 717 -0
fax:  0 61 51 / 66 717 -29
email:  [EMAIL PROTECTED]
http://www.univativ.de

Darmstadt, Stuttgart, Karlsruhe, D�sseldorf
 
 

Von: Abbas Mousavi [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 24. Mai 2006 15:11
An: users@cocoon.apache.org
Betreff: encoding problem with eXist database
 
Hi

I am using eXist with cocoon as my xml database. I can copy xml documents to eXist by a webdav client and exist admin client, and also can retrieve them correctly
by xmldb:exist://  protocol, but when I want to write documents to exist with flowscript it does not writes the unicode documents correctly.

I use

 resolver = cocoon.getComponent(Packages.org.apache.excalibur.source.SourceResolver.ROLE);
        source = resolver.resolveURI('xmldb:exist:///db/collection/document.xml');

 if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource) {
            output = source.getOutputStream();
            cocoon.processPipelineTo(pipeline, {}, output);
            output.close();
        }

It writes the document to the database but with wrong encoding.
is there any way for fixing this problem?

Blab-away for as little as 1�/min. Make PC-to-Phone Calls using Yahoo! Messenger with Voice.
 
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
 

How low will we go? Check out Yahoo! Messenger’s low PC-to-Phone call rates.


Be a chatter box. Enjoy free PC-to-PC calls with Yahoo! Messenger with Voice.

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

Reply via email to