I changed the '' to {} like u said, not needed because when I dont use the thread it works. Same with the pipelines, they work when I don't use the thread (use_background_thread=false). I think I just need to be able to set the environment (context?) inside the thread, check the exceptions I get in the first message: "org.apache.avalon.framework.context.ContextException: Unable to locate object-model (No environment available)"

Relevant sitemap sections (which work when not using the thread):

<map:match pattern="pdf2_pipe/**">
<map:generate src="cocoon:/xsl-fo/{1}"/>
<map:serialize type="fo2pdf"/>
</map:match>

<map:match pattern="*.pdf2">
<map:call function="create_pdf">
<map:parameter name="report" value="{1}"/>
<map:parameter name="format" value="pdf2"/>
</map:call>
</map:match>

<map:match pattern="pdf2_display/**">
<map:read src="module:flow-attribute:file_name" mime-type="application/pdf" />
</map:match>



On 3/19/2010 2:12 PM, Robby Pelssers wrote:
function create_pdf() {
      var use_background_thread=true;
      var path=cocoon.parameters["report"];
      var fmt=cocoon.parameters["format"];
      var queryInfo=getRequestParameters();
      var url=path+"?"+queryInfo;
      var output_file=java.io.File.createTempFile(path,".pdf");
      var output_stream=new 
com.spectron.io.FileProgressOutputStream(output_file);

      if(use_background_thread){
          var r = new java.lang.Runnable() {
              run: function() {
                  // gives an exception here on the console
                  cocoon.processPipelineTo(fmt+"_pipe/"+url,'',output_stream);  
//COMMENT: CAN I SEE relevant sitemap snippets and corresponding generator for this 
pipeline?? And still replace the '' by {} just to be sure
                  output_stream.close();
              }
          };
          new java.lang.Thread(r).start();
          // this works, just never finishes because of exception in thread
          while(!output_stream.isClosed()) {
              cocoon.sendPageAndWait(
                  "progress.jx",
                   {
                       "length" : output_file.length(),
                       "output_path" : output_file.getCanonicalPath(), 
//COMMENT: REMOVE the COMMA
                   }
              );
          }
      } else{
          cocoon.processPipelineTo(fmt+"_pipe/"+url,'',output_stream);  
//COMMENT: And still replace the '' by {} just to be sure
          output_stream.close();
      }
      cocoon.sendPage(
            fmt+"_pipe/"+url,
            {
                file_name : output_file.getCanonicalPath()
            }
       );
}

-----Original Message-----
From: Fawzib Rojas [mailto:[email protected]]
Sent: Friday, March 19, 2010 7:00 PM
To: [email protected]
Subject: Re: Runnable in flowscript?

On 3/19/2010 1:56 PM, Robby Pelssers wrote:
Function processPipelineTo([String] uri, [Object] bizData, 
[java.io.OutputStream] stream)

The api says is should be an object...

So maybe try

cocoon.processPipelineTo(fmt+"_pipe/"+url, {} ,output_stream); //using object 
literal


Thats not it, because when I set use_background_thread to false to do it
directly without a thread (the else) it works.

I don't know if you need a context but you sure aren't setting any...


I'm not setting a context in the thread, I guess I need to use the
context from the create_pdf function. How would I do that? Is there some
documentation for that somewhere?

Cheers,
Robby



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to