You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Jos Snellings <Jo...@pandora.be> on 2009/11/30 07:35:24 UTC

Re: REST / Can't find URLResponseBuilder

If I understand you well, your assignment is to:

* catch a get URL emitted by Google Earch
* this url contains coordinates
* on the basis of these coordinates you lookup things in an XML file.

Here's my advice: forget about the RESTController and just write a
generator, like:
public class SehensWuerdigkeitenGenerator extends AbstractSAXGenerator
implements CachingPipelineComponent {
  
    @SitemapParameter
    private String language;
  
    @SitemapParameter
    private String cmd;
    
    private String pur;
    private String par;
    
    private HttpServletRequest request;

And you do the interesting bits within: 

public void execute() {
  -> read your bits	
    SAXConsumer consumer = this.getSAXConsumer();
        try {
            consumer.startDocument();

            consumer.startElement("", "page", "page", new
AttributesImpl());
             ---> do the interesting stuff to be sent to XSLT
}

Oh, by the way, another possibility: just read your XML file if it's
just one. And extract the chunks you need in the XSLT transform, with
XPath. The last could be the shorter.

Mmmm you are a student. I am an old man and I would say: bear in mind
that 'REST' is just another concept, sometimes java people like to make
things complicated... "Why make things simple and efficient if you can
make them complex and wonderful".
By the way, I will redirect this discussion to cocoon users. 

Cheers,
Jos





On Sun, 2009-11-29 at 13:19 +0100, Johannes Lichtenberger wrote:
> On Sun, 2009-11-29 at 07:32 +0100, Jos Snellings wrote:
> > In the samples, a typical use of StringTemplate is shown: a page is to
> > be interpreted by the StringTemplate engine, and a number of properties
> > are passed via the hashtable.
> > The idea is that you would open a view on the object.
> > So, 
> > - the query points to a resource
> > - the controller decodes what the resource is and what you want (view
> > it, update it?)
> > - the way to view it could be: pass my resource to a StringTemplate
> > invocation:  new Page('stringtemplateinvocation',resource);
> >  
> > However, I have not tried to elaborate this so far. Shall I post it when
> > i have a useable example?
> 
> Yes it would be great. My concern is that I don't want to display a
> template page. I want to process the request (the parameters Google
> Earth sends when zooming in) and within my Generator query a native XML
> database system and built the algorithmic logic inside the generator
> (what data out of the shreddered xml file is needed and has to be
> transformed with an XSLT stylesheet). So I basically know how RESTful
> webservices work, but I don't know how to use cocoon3 in this case (I
> assume new Page(...) isn't the right thing to return when I just want to
> pass the request params to my generator. So I don't want to use
> StringTemplate in this case (but it's nontheless a great thing). So the
> query points to a controller, which decides that it's a GET request
> (view) and passes the parameters on to my generator (which I still have
> to write). 
> 
> Would be great if you or someone else could help me out (it's a project
> in a course of our university ;-) and I thought cocoon is great for this
> concern (get RESTful parameters, hand it on to a generator which selects
> the needed data out of a shreddered xml file according to the
> parameters, then transform the xml fragments with a XSLT stylesheet and
> serialize the result, so that Google Earth can use the KML fragments
> generated).
> 
> Thank you,
> Johannes
> 
> 



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


Re: REST / Can't find URLResponseBuilder

Posted by Jos Snellings <Jo...@pandora.be>.
O yes, you are right! It dates from a couple of trials in alpha-1,
when I was having trouble to make setup() work. Thanks.

Jos

On Tue, 2009-12-01 at 22:21 +0100, Steven Dolg wrote:
> Jos Snellings schrieb:
> > If I understand you well, your assignment is to:
> >
> > * catch a get URL emitted by Google Earch
> > * this url contains coordinates
> > * on the basis of these coordinates you lookup things in an XML file.
> >
> > Here's my advice: forget about the RESTController and just write a
> > generator, like:
> > public class SehensWuerdigkeitenGenerator extends AbstractSAXGenerator
> > implements CachingPipelineComponent {
> >   
> >     @SitemapParameter
> >     private String language;
> >   
> >     @SitemapParameter
> >     private String cmd;
> >     
> >     private String pur;
> >     private String par;
> >     
> >     private HttpServletRequest request;
> >   
> 
> Well I agree that this looks very nice, unfortunately the 
> @SitemapParameter annotation is only available in the REST module of 
> Cocoon and only working for Controllers.
> A meaningful explanation would include the layered approach and 
> assumptions about the environment - I'll do this another time.
> 
> However the intended way would be:
> 
> for Parameters retrieved through the sitemap
> 
>     @Override
>     public void setConfiguration(Map<String, ? extends Object> parameters) {
>         this.language = (String) parameters.get("language");
>     }
> 
> 
> for Parameters retrieved through the actual invocation (e.g. HTTP request)
> 
>     @Override
>     public void setup(Map<String, Object> parameters) {
>         this.cmd = (String)parameters.get("cmd");
>     }
> 
> 
> 
> > And you do the interesting bits within: 
> >
> > public void execute() {
> >   -> read your bits	
> >     SAXConsumer consumer = this.getSAXConsumer();
> >         try {
> >             consumer.startDocument();
> >
> >             consumer.startElement("", "page", "page", new
> > AttributesImpl());
> >              ---> do the interesting stuff to be sent to XSLT
> > }
> >
> > Oh, by the way, another possibility: just read your XML file if it's
> > just one. And extract the chunks you need in the XSLT transform, with
> > XPath. The last could be the shorter.
> >
> > Mmmm you are a student. I am an old man and I would say: bear in mind
> > that 'REST' is just another concept, sometimes java people like to make
> > things complicated... "Why make things simple and efficient if you can
> > make them complex and wonderful".
> >   
> 
> And now I know where this marvelous quote is from.
> Well done, old man! :-P
> 
> 
> Steven
> 
> > By the way, I will redirect this discussion to cocoon users. 
> >
> > Cheers,
> > Jos
> >
> >
> >
> >
> >
> > On Sun, 2009-11-29 at 13:19 +0100, Johannes Lichtenberger wrote:
> >   
> >> On Sun, 2009-11-29 at 07:32 +0100, Jos Snellings wrote:
> >>     
> >>> In the samples, a typical use of StringTemplate is shown: a page is to
> >>> be interpreted by the StringTemplate engine, and a number of properties
> >>> are passed via the hashtable.
> >>> The idea is that you would open a view on the object.
> >>> So, 
> >>> - the query points to a resource
> >>> - the controller decodes what the resource is and what you want (view
> >>> it, update it?)
> >>> - the way to view it could be: pass my resource to a StringTemplate
> >>> invocation:  new Page('stringtemplateinvocation',resource);
> >>>  
> >>> However, I have not tried to elaborate this so far. Shall I post it when
> >>> i have a useable example?
> >>>       
> >> Yes it would be great. My concern is that I don't want to display a
> >> template page. I want to process the request (the parameters Google
> >> Earth sends when zooming in) and within my Generator query a native XML
> >> database system and built the algorithmic logic inside the generator
> >> (what data out of the shreddered xml file is needed and has to be
> >> transformed with an XSLT stylesheet). So I basically know how RESTful
> >> webservices work, but I don't know how to use cocoon3 in this case (I
> >> assume new Page(...) isn't the right thing to return when I just want to
> >> pass the request params to my generator. So I don't want to use
> >> StringTemplate in this case (but it's nontheless a great thing). So the
> >> query points to a controller, which decides that it's a GET request
> >> (view) and passes the parameters on to my generator (which I still have
> >> to write). 
> >>
> >> Would be great if you or someone else could help me out (it's a project
> >> in a course of our university ;-) and I thought cocoon is great for this
> >> concern (get RESTful parameters, hand it on to a generator which selects
> >> the needed data out of a shreddered xml file according to the
> >> parameters, then transform the xml fragments with a XSLT stylesheet and
> >> serialize the result, so that Google Earth can use the KML fragments
> >> generated).
> >>
> >> Thank you,
> >> Johannes
> >>
> >>
> >>     
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> > For additional commands, e-mail: users-help@cocoon.apache.org
> >
> >
> >   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 



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


Re: REST / Can't find URLResponseBuilder

Posted by Steven Dolg <st...@indoqa.com>.
Jos Snellings schrieb:
> If I understand you well, your assignment is to:
>
> * catch a get URL emitted by Google Earch
> * this url contains coordinates
> * on the basis of these coordinates you lookup things in an XML file.
>
> Here's my advice: forget about the RESTController and just write a
> generator, like:
> public class SehensWuerdigkeitenGenerator extends AbstractSAXGenerator
> implements CachingPipelineComponent {
>   
>     @SitemapParameter
>     private String language;
>   
>     @SitemapParameter
>     private String cmd;
>     
>     private String pur;
>     private String par;
>     
>     private HttpServletRequest request;
>   

Well I agree that this looks very nice, unfortunately the 
@SitemapParameter annotation is only available in the REST module of 
Cocoon and only working for Controllers.
A meaningful explanation would include the layered approach and 
assumptions about the environment - I'll do this another time.

However the intended way would be:

for Parameters retrieved through the sitemap

    @Override
    public void setConfiguration(Map<String, ? extends Object> parameters) {
        this.language = (String) parameters.get("language");
    }


for Parameters retrieved through the actual invocation (e.g. HTTP request)

    @Override
    public void setup(Map<String, Object> parameters) {
        this.cmd = (String)parameters.get("cmd");
    }



> And you do the interesting bits within: 
>
> public void execute() {
>   -> read your bits	
>     SAXConsumer consumer = this.getSAXConsumer();
>         try {
>             consumer.startDocument();
>
>             consumer.startElement("", "page", "page", new
> AttributesImpl());
>              ---> do the interesting stuff to be sent to XSLT
> }
>
> Oh, by the way, another possibility: just read your XML file if it's
> just one. And extract the chunks you need in the XSLT transform, with
> XPath. The last could be the shorter.
>
> Mmmm you are a student. I am an old man and I would say: bear in mind
> that 'REST' is just another concept, sometimes java people like to make
> things complicated... "Why make things simple and efficient if you can
> make them complex and wonderful".
>   

And now I know where this marvelous quote is from.
Well done, old man! :-P


Steven

> By the way, I will redirect this discussion to cocoon users. 
>
> Cheers,
> Jos
>
>
>
>
>
> On Sun, 2009-11-29 at 13:19 +0100, Johannes Lichtenberger wrote:
>   
>> On Sun, 2009-11-29 at 07:32 +0100, Jos Snellings wrote:
>>     
>>> In the samples, a typical use of StringTemplate is shown: a page is to
>>> be interpreted by the StringTemplate engine, and a number of properties
>>> are passed via the hashtable.
>>> The idea is that you would open a view on the object.
>>> So, 
>>> - the query points to a resource
>>> - the controller decodes what the resource is and what you want (view
>>> it, update it?)
>>> - the way to view it could be: pass my resource to a StringTemplate
>>> invocation:  new Page('stringtemplateinvocation',resource);
>>>  
>>> However, I have not tried to elaborate this so far. Shall I post it when
>>> i have a useable example?
>>>       
>> Yes it would be great. My concern is that I don't want to display a
>> template page. I want to process the request (the parameters Google
>> Earth sends when zooming in) and within my Generator query a native XML
>> database system and built the algorithmic logic inside the generator
>> (what data out of the shreddered xml file is needed and has to be
>> transformed with an XSLT stylesheet). So I basically know how RESTful
>> webservices work, but I don't know how to use cocoon3 in this case (I
>> assume new Page(...) isn't the right thing to return when I just want to
>> pass the request params to my generator. So I don't want to use
>> StringTemplate in this case (but it's nontheless a great thing). So the
>> query points to a controller, which decides that it's a GET request
>> (view) and passes the parameters on to my generator (which I still have
>> to write). 
>>
>> Would be great if you or someone else could help me out (it's a project
>> in a course of our university ;-) and I thought cocoon is great for this
>> concern (get RESTful parameters, hand it on to a generator which selects
>> the needed data out of a shreddered xml file according to the
>> parameters, then transform the xml fragments with a XSLT stylesheet and
>> serialize the result, so that Google Earth can use the KML fragments
>> generated).
>>
>> Thank you,
>> Johannes
>>
>>
>>     
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>   


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